Machine Learning 37

머신러닝 프로젝트 - 사이킷런의 설계철학

들어가며 지난 글에서 데이터 정제구간에서 사이킷런의 imputer를 사용하여 데이터셋을 갱신했습니다. 여기서 잠깐동안 사이킷런의 설계철학에 대해서 짚고 넘어가도록 하겠습니다. 1. 일관성 모든 객체가 단순하고 일관된 인터페이스를 제공합니다.(대부분 같은 함수나 파라미터를 사용합니다.) 추정기(estimator) : 데이터셋을 기반으로 일련의 모델 파라미터들을 추정하는 객체를 추정기라고 합니다. (ex.imputer는 데이터셋을 기반으로 누락된값을 추측하는 추정기입니다.) 추정자체는 fit() 메서드에 의해 수행되고 하나의 매개변수로 하나의 데이터셋만 전달합니다.(단, 지도학습에서는 레이블 때문에 두 개의 파라미터를 받습니다.) 변환기(transformer) : 데이터셋을 변환하는 추정기를 변환기라고 합니..

Machine Learning 2020.03.04

머신러닝 프로젝트 - 4.1 데이터 정제(누락된 데이터 다루기)

들어가며 지난 글까지 우리는 데이터를 탐색하는 과정을 거쳐 데이터를 정제할 필요성을 몇가지 알아보았습니다. 이번에는 실제로 데이터를 정제해보도록 하겠습니다. 데이터 준비하기과정에서 데이터 타입을 알아보며 total_bedrooms특성에 일부 null값이 존재하여 누락된 경우가 있습니다. null값을 모델에 그대로 학습시키면 오류가 발생하기에 이를 정제하는 방법에 대해서 알아봅시다. 4.1.1 해당 구역 전체 제거 dropna() 메서드를 사용하면 null값이 포함된 구역을 간단하게 제거 할 수 있습니다. https://colab.research.google.com/drive/1wWaPMCEb3ewf3CNKIeu262vQaCG36apw#scrollTo=bQghNsmruBUG&line=2&uniqifier=..

Machine Learning 2020.03.04

머신러닝 프로젝트 - 3. 데이터 탐색(피어슨의 상관계수),시각화, 특성 조합

들어가며 지난 글에서 데이터 스누핑이 일어나지 않기 위해 테스트 데이터를 추출하는과정을 진행했습니다. 이번에는 모델을 구상하기위해서 훈련 데이터만을 가지고 데이터에 대해 깊게 탐색해보도록 합시다. 훈련 데이터만을 가지고 탐색하는 것 또한 데이터 스누핑을 피하기 위해서 입니다. 만약 테스트 세트로 탐색을 할 경우 개발자는 데이터에 최적화된 알고리즘을 적용하려고 하므로 과대적합이 발생할 수 있기 때문입니다. 3.1 지리적 데이터의 시각화 경도와 위도에 대한 정보를 바탕으로 데이터를 산점도로 표현하여 지리적 데이터를 시각화 해봅시다. https://colab.research.google.com/drive/1wWaPMCEb3ewf3CNKIeu262vQaCG36apw#scrollTo=aroTxF3Ja5mD&lin..

Machine Learning 2020.03.01

머신러닝 프로젝트 - 계층적 샘플링(stratified sampling)

들어가며 지난 글에서는 최종적으로 해쉬를 이용해서 테스트 세트를 추출하는 방법을 알아보았습니다. 훈련이 잘 진행되기 위해서는 샘플링(추출)된 데이터의 분포가 기존의 데이터 분포와 유사해야 합니다. 이를 위해 계층적 샘플링을 사용할 수 있습니다. 계층이란? 계층은 전체모수를 동질의 그룹으로 나누는 기준입니다. 계층적 샘플링이 필요한 이유? 모델을 학습시키거나 테스트를 할 때 사용되는 데이터가 편향적으로 전체 모수에서 추출된 경우 학습의 일반화가 제대로 진행되지 않기 때문에 전체 모수를 계층에 따라 나누고 추출된 데이터가 각 계층을 대표하도록 하여 편향을 방지하기 위해서입니다. 예시 기존의 설루션을 담당하는 전문가가 주택 중간 가격은 중간 수입과의 관계가 중요하다고 합니다. 중간수입과의 관계에 대해서 잘 학..

Machine Learning 2020.02.29

머신러닝 프로젝트 - 2. 테스트 세트 추출하기

들어가며 지난 글에서는 모델을 구축하기 위한 주택 관련 데이터들을 다운로드하고 간단하게 데이터를 살펴보고 어떻게 데이터를 다룰지 알아보았습니다. 이번에는 데이터를 훈련 세트와 테스테 세트로 나누는 다양한 방법과 장단점에 대해서 설명하도록 하겠습니다. 2.1 테스트 세트를 만드는 이유 모델에 데이터를 훈련시키기 전에 주어진 데이터에서 테스트 세트를 추출하는 이유는 두 가지입니다. 첫째, 훈련 데이터로 학습된 모델을 평가하기 위해서입니다. 훈련 모델로만 학습된 모델이 얼마나 일반화되어있는지 평가하기 위해서는 훈련 데이터와 다른 데이터가 필요합니다. 둘째, 데이터 스누핑 편향(data snooping bias)을 방지하기 위해서 입니다. 만일 개발자가 모든 데이터를 이용해서 모델을 학습시키고 평가하여 정확도를..

Machine Learning 2020.02.29

머신러닝 프로젝트 - 1. 데이터 준비하기

들어가며 앞서 머신러닝을 위한 기본적인 상식과 구조에 대해서 알아보았습니다. 이번에는 실제 데이터를 이용해서 모델을 구축하는 과정에 대해서 설명하겠습니다. 이제부터 여러분이 머신러닝 개발자로서 주식회사에서 투자를 위한 캘리포니아 주택 가격 예측모델 제작 의뢰를 받았다고 가정하고 진행해보도록 하겠습니다. 1. 기본적인 준비 앞으로 모델을 구축하기 위해서는 colab을 사용할 것입니다. colab은 클라우드 기반으로 작업을 수행하기 때문에 공유하기도 쉽고 각자 컴퓨터의 기능에 구애받지 않기에 선택했습니다. colab을 사용하기 위한 방법은 구글링을 하시면 쉽게 알 수 있습니다. 1.1 설정 모델 구축을 위해서 공통 모듈을 임포트 하는 등 기본적인 설정을 위한 코드입니다. 제일 먼저 실행하시면 됩니다. 1 2..

Machine Learning 2020.02.28

머신러닝 프로젝트 개발 과정 - 0. 문제 정의

1. 비즈니스 목적 정의 첫 번째로 생각해야 할 것은 완성된 시스템의 비즈니스 목적이 무엇인지 알아야 합니다. 목적에 따라서 문제를 어떻게 구상할지, 어떤 알고리즘을 선택하고 어떤 성능지표를 사용할지 결정할 수 있기 때문입니다. 예를 들어 캘리포니아 구역의 데이터(인구수, 위치, 중간소득 등)를 받아서 해당 구역의 주택 가격을 예측하는 프로그램을 작성한다고 생각해봅시다. 파이프라인이란? 데이터 처리 컴포넌트(하나의 시스템)들이 연속되어 있는 것을 데이터 파이프라인이라고 합니다. 각각의 컴포넌트들을 결괏값을 도출하는데 소비되는 시간이 다릅니다. 따라서 각 컴포넌트는 비동기적으로 작동하게 되는데 이를 해결하기 위해서 파이프 라인을 사용합니다. 각 컴포넌트 사이에는 컴포넌트들의 결과값을 출력하여 DB에 저장하..

Machine Learning 2020.02.18

머신러닝 시스템의 종류( 지도, 비지도, 준지도, 강화, 배치/온라인, 사례/모델기반)

지도학습(supervised learning) 정의 머신러닝을 통해서 프로그램을 만들기 위해서 데이터의 샘플과 레이블(부가정보)을 주어 학습시키는 것을 의미합니다. 레이블을 쉽게 설명하자면 샘플의 부가정보이자 추후 새로운 데이터에서 알아내고 싶은 목표치입니다. 예를 들어 신발 매장에 가면 신발들(샘플)에는 가격표(레이블)가 하나씩 달려있는 것처럼 말이죠. 레이블에는 가격뿐만 아니라 신발의 사이즈, 바코드 등이 적혀있듯이 하나의 샘플에도 여러개의 레이블을 표시할 수 있습니다. 지도학습의 목표는 수많은 샘플&레이블 정보를 머신러닝 모델에 학습시켜 추후, 모델에 새로운 샘플 데이터가 들어왔을 때 레이블 정보를 예측하는 것입니다. 위와 똑같이 신발을 통해서 예시를 들자면 사람(머신러닝 모델)에게 수많은 샘플(신..

Machine Learning 2020.02.15

신경망 학습 - (4 - 3) AdaGrad(Adaptive Gradient)

지난 글 Momentum에 이어서 이번에는 AdaGrad라는 매개변수의 Optimizer에 대해서 알아보도록 하겠습니다. AdaGrad란? Adaptive Gradient의 줄임말로서 지금까지 많이 변화한 매개변수는 적게 변화하도록, 반대로 적게 변화한 매개변수는 많이 변화하도록 learning late의 값을 조절하는 개념을 기존의 SGD에 적용한 것입니다. AdaGrad의 장점 SGD에서 비등방성 함수의 경우 비효율적이라고 얘기하면서 예시를 보여드렸습니다. 지그재그로 계속 이동하게되어 실제 손실함수의 최솟값으로 이동하는데 비효율적인데 만약 학습률(learning late)을 낮춘다면 어떻게 될까요? SGD에서 손실함수의 기울기(gradient)는 벡터의 방향성을, 학습률은 벡터의 크기를 의미하는 바가..

Machine Learning 2020.01.28

신경망 학습 - (4 - 2) 모멘텀 (Momentum)

신경망 학습 - 4에서는 매개변수를 갱신하는 효율적인 방법에 대해서 알아보겠습니다. 지난번에서는 학습시간을 단축시키기 위해서 미니배치를 추출하여 학습하는 SGD, 확률적 경사하강법에 대해서 알아보았습니다. SGD는 비등방성 함수의 경우 문제점이 발생한다는 것을 알았으니 이번에는 이를 보완하기 위한 Momentum이라는 Optimizer(매개변수 갱신 방법)에 대해서 알아보도록 하겠습니다. 모멘텀이란? 모멘텀은 운동량을 의미하며 Momentum Optimizer는 매개변수의 이동에 속도를 부여하는 것을 의미합니다. 쉽게 말해서 구슬을 떨어트리면 급한 경사에서는 더 빨라지듯이 매개변수의 변화에도 속도를 부여하는 것입니다. 수식 위 수식을 보면 알겠지만 매개변수를 갱신 할 때마다 기존속도에 매개변수의 기울기값..

Machine Learning 2020.01.23