핸즈 온 머신러닝 (Hands-On Machine Learning with Scikit-Learn & TensorFlow) / 오렐리앙 제론 지음 , 박해선 옮김

을 읽고, 추후 기억을 되살릴 수 있게끔 나만의 방법으로 내용을 리뷰한다. 따라서 리뷰의 내용 별 비중이 주관적일 수 있다. 

 

챕터 1. 한눈에 보는 머신 러닝

 

1장에서는 전반적인 머신러닝의 정의와 종류에 대해 언급한다. 짧게 짧게 짚고 넘어가겠다.

 

1.1 머신러닝이란?

머신러닝은 데이터로부터 학습하도록 컴퓨터를 프로그래밍 하는 것이다.

또한 어떤 작업에서 경험을 통해 성능을 향상 시키는 과정이다.

 

1.2 왜 머신러닝을 사용하는가?

전통적인 접근 방법으로 스팸 필터링을 한다면 수동적이며 데이터의 변화에 적응하지 못한다.

반면 머신러닝 기반으로 필터링을 한다면 데이터의 업데이트에 따라 필터 알고리즘이 바뀌며 자동화된다.

또한 사람이 알 수 없는 규칙을 찾아낼 수도 있는데 이 것이 데이터 마이닝이다.

많은 수동 조정과 규칙이 필요했던 문제 / 전통적으로는 해결할 수 없는 문제 / 유동적으로 데이터에 적응하면 좋은 문제 등에 머신러닝을 활용하면 좋다.

 

1.3 머신러닝 시스템의 종류

(지도 / 비지도 / 준지도 /강화학습)

(온라인 학습 / 배치 학습)

(사례 기반 학습 / 모델 기반 학습)

 

크게 위의 세 가지 기준으로 분류 가능하다.

 

1.3.1 지도 학습과 비지도 학습

 

지도학습 : 훈련 데이터에 레이블이 있는 것. Classification, Regression 등이 있다.

비지도학습 : 훈련 데이터에 레이블이 없는 것. Clustering, Visualization, Rule mining 등이 있다.

준지도학습 : 일부 훈련 데이터에만 레이블이 있는 것. 구글의 포토 호스팅 서비스 등이 있다.

강화 학습 : 환경을 관찰해서 행동을 실행하고 보상을 받는 정책 (전략)을 학습. 대표적으로 알파고가 강화 학습이다.

 

1.3.2 배치 학습과 온라인 학습

 

배치학습 : 한번에 모든 훈련데이터로 학습 하는 것.

온라인 학습 : 데이터를 순차적으로 미니배치 단위로 학습하는 것. 정확히는 incremental learning 을 설명하려고 한 것 같다. 빠르게 변화하는 데이터를 학습할 때에 좋으며 learning late를 잘 정의하여 사용하여야 한다.

 

1.3.3 사례 기반 학습과 모델 기반 학습

 

사례 기반 학습 : KNN 등 훈련 데이터들 간의 similarity를 기반으로 학습 하는 것.

모델 기반 학습 : 훈련 데이터로 부터 모델을 만들어 학습하는 것. 모델의 종류 및 파라미터를 학습하며 학습이 얼마나 잘 되었는가는 cost function을 이용하여 판단한다.

 

1.4 머신러닝의 주요 도전 과제

머신러닝을 하며 해결해야 하는 과제들에 대해 논한다.

 

1.4.1 충분하지 않은 양의 훈련 데이터

 

알고리즘을 잘 만드는 것과 더불어 데이터의 양이 많은 것은 큰 도움이 된다.

 

1.4.2 대표성 없는 훈련 데이터

 

sampling noise : 샘플이 작아서 우연히 대표성이 없는 것

sampling bias : 표본 추출 방법이 잘못되어 대표성이 없는 것

 

위의 두 가지만 알고 넘어가자.

 

1.4.3 낮은 품질의 데이터

 

에러나 outlier를 잘 걸러낸 후 학습해야 한다.

 

1.4.4 관련 없는 특성

 

가장 의미있는 특성을 선택하고 추후 나올 PCA등을 이용하여 특성을 결합하여 해결한다.

 

1.4.5 훈련 데이터 과대적합

 

훈련 데이터에 너무 잘 맞아서 일반성이 떨어지는 경우로 모델에 제약을 가하여 regularization 하거나 더 간단한 모델을 사용해야 한다.

 

1.4.6 훈련 데이터 과소적합

 

과대적합의 반대로 더 강력한 모델을 사용하거나 제약을 줄이는 등의 해결 방안이 있다.

 

1.4.7 한걸음 물러서서

 

지금까지의 내용을 요약하여 설명되어 있다. 

1.5 테스트와 검증

데이터를 training data와 test data로 나누어 training data 로 학습 후 test data로 평가한다. 그러나 모델의 여러 hyper parameter를 설정해보며 가장 학습이 잘 되는 모델로 골라야 하므로, 이 과정에서는 validation data로 평가한다. 최종적으로 hyper parameter를 모두 결정하면, 그제서야 test data로 테스트해보면 된다. 데이터를 최대로 활용하려면 cross-validation 기법을 사용하여 training과 validation data를 번갈아 사용한다.

+ Recent posts