Ensemble 요약

2019-09-10

Hands-On Machine Learning with Scikit-Learn and TensorFlow 책에서 설명하고 있는 앙상블 기법에 대한 요약입니다. 기록용으로 작성되었습니다.

Ensemble learning

  • 여러 예측기를 연결해서 더 나은 예측기를 만드는 방법.
  • 성능이 낮은 분류기라도 여러개를 모았을 때 좋은 성능을 발휘하는 경우가 많음.
  • 각 예측기가 가능한 한 서로 독립적일 때 최고의 성능을 발휘함.
  • 다양한 예측기를 만드는 방법으로는 각기 다른 알고리즘으로 학습시키거나, 다른 데이터셋으로 훈련하는 방법이 있음.

Ensemble methods

앙상블 학습을 하는 알고리즘

앙상블을 적용한 투표 기반 분류기

  • hard voting classifier: 각 분류기의 예측을 모아서 가장 많이 선택된 클래스를 예측하는 방법
  • soft voting classifier: 각 분류기에서 클래스 별 확률 값을 구할 수 있는 경우, 클래스 별 확률의 평균값으로 확률이 가장 높은 클래스를 예측하는 방법

bagging & pasting

원본 데이터 셋을 bagging이나 pasting을 활용하여 여러 개의 샘플 데이터 셋으로 나누고 각각의 모델에 학습 시킨 후, 분류기일 경우 최빈 클래스로 분류, 회귀일 경우 평균값으로 예측함

bagging(boostrap aggregating)

  • training set 에서 중복을 허용하여 샘플링하는 방식 (중복을 허용하는 리샘플링: boostraping)
  • 일반적으로 bagging이 pasting 보다 더 나은 성능을 보임

pasting

  • 중복을 허용하지 않고 샘플링 하는 방식

feature sampling

  • random subspaces method: feature sampling 만 사용
  • random patches method: training set sampling과 feature sampling을 모두 사용

boosting

  • 약한 학습기를 여러 개 연결하여 강한 학습기를 만드는 앙상블 방법. 앞의 모델을 보완해나가면서 일련의 예측기를 학습시키는 방법.

ada boost

  • 이전 모델이 under fitting 했던 훈련 샘플의 가중치를 더 높임.
  • 새로운 예측기는 학습하기 어려운 샘플에 점점 더 맞춰지게 됨.
  • 분류기를 연속적으로 학습해야 하기 때문에 병렬로 수행하지 못해 확장성이 떨어짐

샘플 → 분류기1 → 가중치샘플 → 분류기2 → .. → 최종 분류기

gradient boost

  • ada boost처럼 예측기를 순차적으로 추가하는 방식으로, 이전 예측기가 만든 잔여 오차(residual error)에 새로운 예측기를 추가하는 방식

classifier_n = y - classifier_n-1.predict(x)

y_pred = sum(classifier.predict(x) for classifier in classifiers)

  • stocastic gradient boosting: 훈련 샘플의 비율을 지정해서 각 분류기가 무작위로 샘플링한 훈련셋을 학습하게 함.

stacking & blending

앙상블에 속한 예측기들의 결과를 취합하는 모델을 학습시키는 방법

  • stacking: 훈련셋을 out-of-fold (cross-validation) 방식으로 나누어서 학습시킴
  • blending: 훈련셋을 hold-out 방식으로 나누어서 학습시킴

참고자료