여러 개의 약한 학습기(주로 결정 트리)를 순차적으로 학습하여 오류를 보완하면서 강력한 모델을 만드는 알고리즘임. 주요 특징은 이전 단계의 오류를 보완하도록 다음 단계에서 학습하는 것임.
GBM은 여러 개의 결정 트리를 순차적으로 학습시킴. 각 트리는 이전 트리의 오류를 줄이는 방향으로 학습함.
각 트리가 예측한 결과와 실제 결과의 차이를 줄이는 방향으로 학습함.
각 트리의 결과에 가중치를 부여하여 예측 성능을 점차적으로 향상시킴.
코드에서는 GBM을 사용해 모델을 학습하고,
테스트 데이터로 성능을 평가하며, 하이퍼파라미터 튜닝을 진행함.
from sklearn.ensemble import GradientBoostingClassifier
import time
import warnings
warnings.filterwarnings('ignore') # 경고 메시지를 무시함
# GBM 수행 시간 측정을 위한 시작 시간 설정 (약 870초 이상 소요)
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('GBM 정확도: {0:.4f}'.format(gb_accuracy))
print("GBM 수행 시간: {0:.1f} 초 ".format(time.time() - start_time))
모델 생성:
GradientBoostingClassifier(random_state=0)를 통해 GBM 분류기를 생성함. random_state는 재현 가능한 결과를 얻기 위해 고정함.
모델 학습:
gb_clf.fit(X_train, y_train)을 통해 학습 데이터로 모델을 학습함.
예측 및 평가:
gb_clf.predict(X_test)로 테스트 데이터를 예측하고, 정확도를 계산하여 출력함.
from sklearn.model_selection import GridSearchCV
params = {
'n_estimators': [100, 500],
'learning_rate': [0.05, 0.1]
}
# GridSearchCV를 사용한 하이퍼파라미터 튜닝
grid_cv = GridSearchCV(gb_clf, param_grid=params, cv=2, verbose=1)
grid_cv.fit(X_train, y_train)
print('최적 하이퍼 파라미터:\n', grid_cv.best_params_)
print('최고 예측 정확도: {0:.4f}'.format(grid_cv.best_score_))
n_estimators:
트리의 개수.
많아질수록 복잡한 모델이 되지만 과적합 가능성 증가함.
learning_rate:
학습률로, 트리의 기여도를 조정함.
낮을수록 많은 트리가 필요하고, 높을수록 빠르게 학습하지만 과적합 위험이 있음.
GridSearchCV(gb_clf, param_grid=params, cv=2, verbose=1)
를 사용해 하이퍼파라미터를 탐색하고 최적의 조합을 찾음.
gridcv.best_params와 gridcv.best_score
를 통해 최적의 하이퍼파라미터와 교차 검증 정확도를 확인함.
높은 성능: 순차적으로 오차를 보완하여 높은 정확도를 가짐.
다양한 하이퍼파라미터: 모델을 세밀하게 조정할 수 있음.
유연성: 분류와 회귀 모두에서 사용 가능함.
긴 학습 시간: 순차적 학습으로 시간이 오래 걸림.
하이퍼파라미터 튜닝 필요: 최적의 성능을 위해 많은 자원과 시간이 소요될 수 있음.
과적합 위험: 트리 개수가 많으면 과적합 가능성이 있음.
노이즈가 있는 복잡한 데이터에서도 비교적 안정적인 성능을 보이며,
병렬 학습이 가능해 학습 시간이 빠름.
과적합 방지 능력이 우수하고, 하이퍼파라미터 튜닝이 간단함.
예측 성능이 매우 우수하지만, 학습 시간이 오래 걸리며 하이퍼파라미터 튜닝이 필요함.
순차적으로 모델을 개선해 나가기 때문에 최적의 성능을 위해 더 많은 자원과 시간이 필요함.

GBM (Gradient Boosting Machine): 경사 부스팅 머신
GBM에서 사용되는 방법론 중 경사하강법(Gradient Descent)이 있음.
GBM 자체를 경사하강법이라고 부르지는 않음.