부스팅이란?
- 부스팅 알고리즘은 여러 개의 약한 학습기를 순차적으로 학습&예측하면서 잘못 예측한 데이터에 가중치를 부여하며 오류를 개선해 나감
- 부스팅의 대표적인 알고리즘
- AdaBoost(에이다부스트) : 오류 데이터에 가중치를 부여하면서 부스팅을 수행하는 대표적인 알고리즘
- GBM(그래디언트 부스트) : 가중치 업데이트를 경사 하강법을 이용하는 것이 에이다부스트와 차이
- XGBoost, LightGBM 의 패키지가 있음
GBM
- 분류와 회귀 모두 가능
- 사이킷런의 GradientBoostingClassifier 클래스 사용
- 순차적인 예측 오류 보정을 통해 학습을 수행하므로, 멀티 CPU 코어 시스템을 사용하더라도 병렬 처리가 지원되지 않아서 대용량 데이터의 경우 학습 시간이 매우 많이 필요함.
- 아래 예제로 간단히 테스트 가능 ➡ 치명적 단점인 '시간이 오래 걸림' 확인
- 이러한 단점을 극복하기 위해, 그래디언트 부스팅 기반의 ML 패키지가 새로 만들어짐 ➡ XGBoost, LightGBM
from sklearn.ensemble import GradientBoostingClassifier
import time
import warnings
warnings.filterwarnings('ignore')
# 데이터 가져와서, 학습/테스트 데이터 분리
X_train, X_test, y_train, y_test = get_human_dataset()
# 수행 시간 측정
start_time = time.time()
# GBM 적용, 학습과 예측 수행
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("수행시간: {0:.1f}초" .format(time.time() - start_time))
728x90
'Machine Learning > scikit-learn' 카테고리의 다른 글
[앙상블 학습] LightBGM (0) | 2023.08.22 |
---|---|
[앙상블] 파이썬 래퍼 XGBoost 개념과 예제 (0) | 2023.08.22 |
[앙상블] 랜덤 포레스트 (0) | 2023.08.22 |
[앙상블] 앙상블의 개념과 보팅(하드보팅 vs. 소프트 보팅) (0) | 2023.08.22 |
결정 트리 실습 - 사용자 행동 인식 데이터 분류 예제 (0) | 2023.08.21 |