7.4.2 사이킷런에서 에이다부스트 사용
이전 절에서 에이다부스트를 간략하게 소개했습니다. 이제 실제 사용하는 부분으로 넘어가서 사이킷런으로 에이다부스트 앙상블 분류기를 훈련시켜 보죠. 이전 절에서 배깅 분류기를 훈련할 때 사용한 Wine 데이터셋을 사용하겠습니다. base_estimator 속성으로 깊이가 1인 결정 트리를 전달하여 트리 500개로 구성된 AdaBoostClassifier를 훈련시키겠습니다.22
>>> from sklearn.ensemble import AdaBoostClassifier
>>> tree = DecisionTreeClassifier(criterion='entropy',
... random_state=1,
... max_depth=1)
>>> ada = AdaBoostClassifier(base_estimator=tree,
... n_estimators=500,
... learning_rate=0.1,
... random_state=1)
>>> tree = tree.fit(X_train, y_train)
>>> y_train_pred = tree.predict(X_train)
>>> y_test_pred = tree.predict(X_test)
>>> tree_train = accuracy_score(y_train, y_train_pred)
>>> tree_test = accuracy_score(y_test, y_test_pred)
>>> print('결정 트리의 훈련 정확도/테스트 정확도 %.3f/%.3f'
... % (tree_train, tree_test))
결정 트리의 훈련 정확도/테스트 정확도 0.916/0.875
22 역주 AdaBoostClassifier의 base_estimator 기본값은 깊이가 1인 DecisionTreeClassifier입니다. AdaBoostRegressor의 base_estimator 기본값은 깊이가 3인 DecisionTreeRegressor입니다. AdaBoostClassifier는 원본 에이다부스트 알고리즘의 변종인 SAMME와 SAMME.R 알고리즘을 사용합니다. algorithm 매개변수는 기본값 'SAMME.R'과 'SAMME' 중 하나를 선택할 수 있습니다. AdaBoostRegressor는 AdaBoost.R2 알고리즘을 사용합니다. 에이다부스트 알고리즘에 대한 자세한 내용은 <핸즈온 머신러닝 2판>(한빛미디어, 2020) 7장을 참고하세요.