[Hands On ML] 한눈에 보는 머신러닝
💡 Hands On Machine Learning
오렐리앙 “핸즈온 머신러닝”을 보고 정리하였습니다.
한눈에 보는 머신러닝
머신러닝 시스템의 종류
지도학습과 비지도 학습
-
지도학습(supervised learning) : 정답이 훈련데이터에 포함되어 있음
-
분류(classification) - 스팸 필터
-
회귀(regression) - 중고차 가격 예측 (특성을 나타내는 예측변수를 사용해 가격이라는 타겟수치 예측)
-
-
비지도 학습(unsupervised learning) : 정답이 훈련데이터에 포함되어 있지 않음
-
군집(clustering) - 블로그 방문자들이 어떤 그룹에 속하는지
-
차원축소(dimensionality reduction) - 정보를 최대한 살리면서 데이터 간소화 ( = 특성추출, feature extraction)
-
시각화(visualization) - 정답이 없는 대규모의 고차원 데이터를 도식화 가능한 2D, 3D로 만들어줌
-
이상치 탐지(outlier detection) - 학습알고리즘에 주입하기 저, 데이터셋에서 이상한 값을 자동으로 제거
-
연관 규칙 학습(association rule learning) - 대량의 데이터에서 특성간 흥미로운 관계 찾음
-
-
준지도 학습(semisupervised learning) : 일부만 레이어가 있는 데이터를 훈련데이터로 사용 or 지도 학습 + 준지도 학습
-
호스팅 서비스
-
심층 신뢰 신경망(deep belidf network) - RBM이 순차적으로 비지도 학습 훈련한 뒤 전체가 지도 학습으로 조정됨
-
-
강화 학습(reinforcement learning) : 에이전트(학습하는 시스템), 환경을 관찰해서 행동하고 그 결과로 보상 또는 벌점을 받고 시간이 지나면서 가장 큰 보상을 얻기 위해 정책이라고 부르는 최상의 전략을 스스로 학습
배치 학습과 온라인 학습
-
배치학습(batch learning) : 시스템이 점진적으로 학습할 수 없으며 가용한 데이터를 모두 사용해 훈련하기 때문에 오프라인에서 수행, 새로운 종류의 스팸 데이터에 대해 학습하려면 전체 데이터(기존 + 새로운)로 훈련한뒤 교체해야 함
- 단점 : 많은 컴퓨팅 자원과 많은 비용이 발생
-
온라인 학습(online learning) : 데이터를 순차적으로 미니배치 단위로 주입하여 시스템을 훈련시킴, 매 학습 단계가 빠르고 비용이 적게 들어 데이터가 도착하는 대로 즉시 학습 가능, 중요한 파라미터는 변하는 데이터에 얼마나 빠르게 적응하는지를 나타낸 학습률(learning rate)
- 단점 : 나쁜 데이터가 들어왔을 때 성능이 점진적으로 감소함
사례 기반 학습과 모델 기반 학습 (어떻게 일반화 되는가)
- 사례 기반 학습 :
스팸 메일과 매우 유사한 메일을 구분하도록 프로그래밍 하고 두 메일 사이의 유사도를 측정
스팸 메일과 공통으로 가지고 있는 단어가 많으면 스팸으로 분류
- 모델 기반 학습 :
샘플들의 모델을 만들어 예측에 사용
삶의 만족도는국가의 1인당 GDP가 증가할 수록 선형적으로 올라감
-> 선형함수__로 모델링 , __“삶의_만족도 = $\theta_0+\theta_1~\times$ 1인당_GDP”
모델은 파라미터 $\theta_0, \theta_1$을 가지고, 이 파라미터에 따라 선형함수를 표현하는 모델을 얻을 수 있음
$\theta_0, \theta_1$를 정의할 땐, 모델의 비용함수를 정의해 비용함수가 최소가 되는 값을 찾는 훈련을 시킴
-
머신러닝 프로젝트의 형태
- 데이터 분석
- 모델 선택
- 훈련데이터로 모델 훈련 (비용함수를 최소화하는 모델 파라미터 탐색)
- 새로운 데이터 적용한 뒤 예측
머신러닝의 주요 도전 과제
-
충분하지 않은 양의 훈련 데이터 :
대부분의 머신러닝 알고리즘은 데이터가 많아야 잘 작동함
-
대표성 없는 훈련 데이터 :
일반화가 잘 되려면 훈련 데이터가 일반화하기 원하는 사례를 잘 대표하는 것이 중요함
(샘플이 작으면 sampling noise가 발생하고 큰 샘플이더라도 표본 추출 방법이 잘못되면 sampling bias가 발생할 수 있음)
-
낮음 품질의 데이터 :
낮은 품질의 데이터는 내제된 패턴을 찾기 어렵기 때문에 데이터 정제가 필요함
(일부 샘플이 이상치라는 게 명확할 경우, 결측치가 있을 경우 빠진 값을 채울지, 제외할지)
-
관련성 없는 특성 :
훈련에 사용할 좋은 특성을 찾는 것을 특성 공학(feature engineering)이라고 함
(feature selection - 가지고 있는 특성 중 훈련에 유용한 특성 선택, feature extraction - 특성을 결합하여 유용한 특성 만듦)
-
훈련 데이터 과대적합 :
훈련 데이터에만 특화된 알고리즘(일반성이 떨어짐)
해결방법
- 파라미터 수가 적은 모델 선택, 훈련 데이터 특성 수 줄이기, 모델 규제화
- 훈련 데이터를 더 많이 모으기
- 훈련데이터 잡음 줄이기
-
훈련 데이터 과소 적합 :
모델이 단순해 데이터의 내재된 구조를 학습하지 못할 때 발생
해결방법
- 모델 파라미터가 더 많은, 강력한 모델 선택
- 학습 알고리즘에 더 좋은 특성 제공(feature engineering)
- 모델 규제 x
테스트와 검증
모델이 새로운 샘플에 일반화가 잘 되는지 아는 방법은 새로운 샘플에 실제로 적용해 보는 것 ❗ -> 훈련데이터를 training set, test set으로 나눔
training set으로 모델을 훈련하고 test set으로 모델을 평가함으로써 오차에 대한 추정값을 얻음(새로운 샘플에 얼마나 잘 작동할지)
-
하이퍼파라미터 튜닝과 모델 선택
적용할 수 있는 하이퍼파라미터 100개 중 최적의 하이퍼파라미터를 찾기 위해 training set으로 훈련을 시키고 test set으로 평가하는 방법을 사용했을 때, 일반화 오차가 가장 낮은 모델을 만드는 하이퍼파라미터는 최적의 하이퍼파라미터라고 할 수 없음
( -> 일반화 오차를 test set에서 여러 번 측정했으므로 모델과 하이퍼파라미터가 test set에 최적화된 모델을 만들었기 때문)
해결방법
-
홀드아웃 검증(holdout validation) : training set의 일부를 떼어 validation set을 만들어 여러 후보 모델을 평가하고 가장 좋은 하나를 선택
단점 : validation set이 너무 작으면 정확하게 평가할 수 없음
-
교차 검증(cross-validation) : validation set마다 나머지 데이터에서 훈련한 모델을 해당 validation set에서 평가함
단점 : 훈련시간이 validations et의 개수에 비례해 늘어남
-
-
데이터 불일치 : 쉽게 많은 양의 훈련 데이터를 얻을 수 있지만 이 데이터가 실제 제품에 사용될 떼이터를 완벽하게 대표하지 못할 수 있음
-
예시 : 꽃 사진을 찍으면 꽃 이름을 자동으로 찾아주는 모바일 앱
웹에서 꽃 사진을 수백만개 다운로드 할 순 있지만 모바일 앱에서 실제로 유저들이 찍는 사진을 완벽하게 대신하지는 못함
대신할 수 있는 사진(실제 앱으로 찍은 사진)은 10,000개만 있을 수 있음
이런 경우 validation set과 test set가 실전에서 기대하는 데이터를 가능한 한 잘 대표해야 한다는 것이 중요함
-> validation set과 test set에 대표 사진이 배타적으로 포함되어야하기 때문에 반은 validation set에, 반은 test set에 넣음
하지만, 모델 성능이 낮을 때 training set에 과적합된 것인지, 웹사진과 모바일 앱 사진의 데이터가 불일치하기 때문인지 알기 어려움
해결방법
웹에서 다운로드한 training set의 일부를 떼어내 훈련-개발 세트(train-dev set)을 만들어, 모델을 training set으로 훈련시키고 trainig-dev set에서 평가함.
이 모델이 validation set에서 성능이 낮다면 문제는 데이터 불일치이고 성능이 높다면 training set에 과적합된 것
-
댓글남기기