데이터과학 삼학년

AdaBoost (에이다부스트) 본문

Machine Learning

AdaBoost (에이다부스트)

Dan-k 2021. 8. 11. 19:49
반응형

AdaBoost

- 이전 모델이 과소적합(under fit)했던 학습 샘플의 가중치를 더 높여 다음 모델에서 다시 학습을 시키는 개념

- 새로운 예측기(모델)은 학습하기 어려웠던 데이터(샘플)에 대해 점점 더 잘 맞춰지는 모델로 만들 수 있음

- Adaboost 데이터 가중치 부여 예시

- stumps라는 작은 가지(max_depth=1)의 앙상블 형태라고 생각하면 됨 -> weak ensemble

Fully grown decision tree (left) vs three decision stumps (right) source : https://blog.paperspace.com/adaboost-optimizer/

Boosting VS Bagging

여기서, ensemble(bagging)과 다른점은 10개의 모델을 이용해 학습을 한다고 할때, bagging은 같은 (가중치가 부여되지 않은)학습 데이터에 대해 동시 학습하고, 예측결과를 종합하는 반면,

boosting인 Adaboost는 순차적으로 모델을 학습시키고, 각 모델의 결과를 종합하는 방법이라고 볼 수 있다.

--> 모델의 결과를 종합할때, 가중치가 적용된 훈련 세트의 전반적인 정화도에 따라 예측기(모델)마다 다른 가중치가 적용됨

AdaBoost 알고리즘

- 각 샘플의 가중치는 초기에 1/m 으로 초기화

- 첫번째 예측기(모델)이 학습되고, 가중치가 적용된 error rate r1이 훈련 세트에 대해 계산

- 모델이 정확할 수록 가중치가 더 높아지게 됨, 만약 무작위로 예측하는 모델이라면 가중치는 0에 가까워짐

- 샘플의 가중치를 업데이트 -> 아래 식 규칙에 따라

- 모델의 결과 종합

예시 코드

from sklearn.ensemble import AdaBoostClassifier
from sklearn.datasets import make_classification
X, y = make_classification(n_samples=1000, n_features=4,
                           n_informative=2, n_redundant=0,
                           random_state=0, shuffle=False)
clf = AdaBoostClassifier(n_estimators=100, random_state=0)
clf.fit(X, y)

clf.predict([[0, 0, 0, 0]])

clf.score(X, y)
728x90
반응형
LIST
Comments