scikit-learn - 10(부스팅 알고리즘 / ADA, GBM)

안동균·2024년 11월 8일

부스팅 알고리즘

여러개의 약한 학습기를 순차적으로 학습, 예측하면서 잘못된 예측한 데이터에 가중치 부여를 통해 오류를 개선해 나가면서 학습하는 방식


대표 알고리즘

- AdaBoost

- Gradiant Boost Model


AdaBoost

1. 첫 번째 학습기를 통해 분류 기준에 있어 잘못 분류된 데이터에 가중치를 부여(가중치가 부여된 데이터는 분류가 더 쉽게 됨)

2. 두 번째 학습기를 통해 다시 분류 기준을 잡은 후 잘못 분류된 데이터에 가중치 부여

3. 반복


Gradiant Boost Model

AdaBoost와 학습 방식이 유사 하나 가중치 업데이트 방식을 경사 하강법으로 이용

parameter

loss(Default : deviance) : 경사 하강법에서 사용할 비용 함수

learning_rate(Default : 0.1) : GBM이 학습을 진행할 때마다 적용하는 학습률

n_estimators(Default : 100) : weak learner(학습기)의 개수

subsample(Default : 1) : weak learner(학습기)가 사용하는 데이터 샘플링 비율

예제

from sklearn.ensemble import GradientBoostingClassifier
import time
import warnings
warnings.filterwarnings('ignore')

X_train, X_test, y_train, y_test = get_human_dataset()

# GBM 수행 시간 측정을 위함. 시작 시간 설정.
start_time = time.time()

gb_clf = GradientBoostingClassifier(random_state=0)
gb_clf.fit(X_train , y_train)
gb_pred = gb_clf.predict(X_test)
gb_accuracy = accuracy_score(y_test, gb_pred)

print('GBM 정확도: {0:.4f}'.format(gb_accuracy))
print("GBM 수행 시간: {0:.1f} 초 ".format(time.time() - start_time))

랜덤 포레스트보다 나은 성능을 보여줌
시간이 오래걸린다는 단점이 존재(병렬처리 지원 안함)

0개의 댓글