[회고] 신입 iOS 개발자가 되기까지 feat. 카카오 자세히보기

🛠 기타/Data & AI

[scikit-learn 라이브러리] AdaBoostClassifier (Adaptive Boosting)

inu 2020. 8. 20. 09:37
반응형

AdaBoost (Adaptive Boosting)

  • GradientBoosting 처럼 내부에 약한 성능의 분류기를 가지는 앙상블 모델이다.
  • GradientBoosting이 이전 분류기가 만든 잔여 오차에 대해 새로운 분류기를 만들었다면, AdaBoost는 이전의 분류기가 잘못 분류한 샘플에 대해서 가중치를 높여서 다음 모델을 훈련시킨다. 반복마다 샘플에 대한 가중치를 수정하는 것이다.
  • 훈련된 각 분류기는 성능에 따라 가중치가 부여되고, 예측에서 각 분류기가 예측한 레이블을 기준으로 가중치까지 적용해 가장 높은 값을 가진 레이블을 선택한다.
  • 순차적 학습을 해야하는 만큼 병령수행은 불가능하다.

AdaBoostClassifier()

  • base_estimator : 앙상블에 포함될 기본 분류기종류, 기본값으로 DecisionTreeClassifier(max_depth=1)를 사용
  • n_estimators : 모델에 포함될 분류기 개수
  • learning_rate : 학습률
  • algorithm : 부스팅 알고리즘, 기본값='SAMME.R'
  • random_state : 난수 seed 설정

사용예제

from sklearn.model_selection import train_test_split
from sklearn.datasets import make_moons
import matplotlib.pyplot as plt

# 데이터 로드
X, y = make_moons(n_samples=100, noise=0.25, random_state=3)
X_train, X_test, y_train, y_test = train_test_split(X, y, stratify=y, random_state=42)
from sklearn.ensemble import AdaBoostClassifier

# 모델 학습
model = AdaBoostClassifier(n_estimators=5, random_state=42)
model.fit(X_train, y_train)

# 평가
print("훈련 세트 정확도 : {:.3f}".format(model.score(X_train, y_train)))
print("테스트 세트 정확도 : {:.3f}".format(model.score(X_test, y_test)))
반응형