-
데이터로 부터 학습하도록 컴퓨터를 프로그래밍하는 과학
-> 다양한 곳에서 말은 서로 다르지만, 공통적으로 '데이터' 부분은 들어간다.
목적
일반화(generalization) : 훈련 데이터로 학습하지만 새로운 데이터에 대한 예측이 최종 목표이다.
확장성 이슈?
알고리즘의 확장성: 알고리즘이 어느 정도 빨라져야, 나중에 다른 것을 추가할 수 있다.
머신러닝 시스템의 종류
지도 학습 vs 비지도 학습
지도 학습(supervised learning)
훈련 데이터 = 특성들(features) + 레이블(label)
레이블은 결과, 특성들은 변수라고 생각하면 편하다.
특성들로 레이블을 예측하는 수학적 모형을 훈련한다.
특성은 레이블을 설명하기 위한, 여러가지 변수들 이라고 생각하면 편하다.
분류
- 레이블(=target 변수)이 범주형인 경우
- 종양의 악성 여부, 스팸 메일 여부, 융자 상환 여부
회귀
레비블이 수치형(연속형)인 경우
개인 신용평가(credit scoring), 자산 평가, 판매량(재고), 강수량 예측
지도 학습 알고리즘
회귀 모형
선형 회귀 : 회귀 문제를 푸는 알고리즘이다.
로지스틱 회귀 : 분류 문제를 푸는 알고리즘이다.
- 신경망(Neural Networks)
- 서포트 벡터 머신(SVM : Support Vector Machines)
- 결정 트리(Decision Trees)
- k-최근접 이웃(k-Nearest Neighbors)
비지도 학습
특성들만 있고 레이블이 없다.
- 군집화(clustering) : k-평균(k-Means), 계층군집분석(HCA)
- 차원 축소(dimension reduction) : 주성분 분석(PCA)
- 연관 규칙 학습(association rule learning) : 장바구니분석, Apriori 알고리즘
- 이상치 탐색(anomaly detection) : 부정거래, 제조결함, 네트워크 침입 탐지
강화 학습
알파고가 여기에 속한다.
머신러닝 시스템의 종류
배치 학습(batch learning)
업데이트된 데이터로 훈련시키고 새 학습시스템으로 교체하는 것을 정기적으로 반복
온라인 학습(Online learning)
- 점진적 학습(incremental learning)
- 빠른 변화에 스스로 적응해야 하는 시스템에 적합
모형 기반 학습
훈련 시킨 모형을 레이블이 없는 새로운 샘플에 적용하여 추론
사례기반 학습
사례들간의 유사도(similarity)를 측정하여 새로운 데이터에 일반화시킴 (k-인접 이웃을 사용한다.)
주요 도전과제
훈련 데이터가 에러, 이상치, 심한 잡음이 있는 경우 데이터 정제가 필요하다.
- 특성 선택(feature selection) : 훈련에 유용한 특성 선택하기
- 특성 공학(feature engineering) : 학습에 사용할 좋은 특성을 찾아야 한다.
- 특성 추출(feature extraction) : 특성을 결합하여 더 유용한 특성 만들기
과데적합
너무 많이 훈련 데이터를 훈련한 것이다.
훈련 데이터에서는 높은 성과를 보여주지만, 새로운 데이터에는 그렇지 못하다.
과소적합
모형이 너무 단순해서 데이터의 내재된 구조를 학습하지 못하는 현상이다.
Scikit-Learn
머신러닝 툴킷이다.
입력 데이터
featrue matrix
- X로 표시한다.
- (샘플의 개수, 특성의 개수)
- NumPy 이차원 배열, Pandas DataFrame, SciPy sparse 행렬
-> numpy 배열이 더 빠르다.
label vector
- y로 표시한다.
- (샘플의 개수,)
- NumPy 일차원 배열, Pandas Series
Scikit-Learn API의 기본원칙(설계철학)
일관성 : 모든 객체가 일관되고 단순한 공통 인터페이스를 공유한다.
- 추정기 : 모델 훈련 -> fit() 메서드
- 변환기 : 데이터를 변환하는 추정기 -> transform() 메서드
- 예측기 : predict() 매서드, score() 매서드
검사 : 추정기의 모스는 공개 속성으로 노출 된다.
클래스 남용 방지 : 데이터셋은 numpy 배열 or Scipy 희소행렬, 하이퍼파라미터는 숫자 혹은 파이썬 문자열이다.
조합성 : 알고리즘의 시퀀스로 기존 구성요소를 최대한 재사용, 파이프라인
합리적 기본값 : 라이브러리가 적절한 기본값을 지정해 둠
전형적인 API 사용 단계
- 클래스를 임포트
- 모델 클래스를 인스턴스화(모델의 하이퍼파라미터 지정)
- 데이터를 특징 행렬과 타겟으로 배치
- fit() 메서드를 호출해서 모델을 학습
- predict() 메서드로 레이블(타겟) 예측
- score() 메서드를 사용하여 모형의 성능(정확도) 평가
단순선형모델
선형 회귀 모형 (linear regression model)
단순회귀 : 특성이 하나인 경우
최소제곱추정법(LSE) : 오차제곱합(SSE)을 최소로 한다.
최소제곱추정치
- yi : i번째 관측값
- y^i : i번째 예측값
- (yi - y^i) : 오차
- T : 전치
- -1 부분 : 역행렬
X~는 특성 행렬 X의 앞에 값이 1인 열이 추가된 행렬이다.
예측값 (predicted values) : y~ = X~B~