그래디언트 부스팅: GBM과 XGBoost
부스팅과 배깅의 차이, GradientBoostingClassifier, XGBClassifier, 조기 종료를 다룹니다.
그래디언트 부스팅: GBM과 XGBoost은(는) CoddyKit의 무료 Learn AI with Python 강의입니다. 이것은 4개 중 3번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Learn AI with Python 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Learn AI with Python 강의에는 총 4개의 강의가 포함되어 있습니다.
부스팅과 배깅
배깅은 트리를 병렬로 학습시키고 그 결과를 평균냅니다. 부스팅은 트리를 순차적으로 학습시키며, 새로 추가되는 각 트리가 이전 트리들의 오류를 수정합니다.
부스팅은 편향을 줄이므로, 표 형식 데이터에서는 배깅보다 정확도가 더 높은 경우가 많습니다.
순차적으로 학습하는 약한 학습기
그래디언트 부스팅은 얕은 트리로 구성된 앙상블을 만듭니다(약한 학습기). 각 트리는 현재 앙상블이 남긴 잔차(손실의 그래디언트)에 맞춰 학습됩니다.
작은 보정을 많이 더하면 전체적으로 강력한 모델이 만들어집니다.
GradientBoostingClassifier
사이킷런은 GradientBoostingClassifier를 제공합니다. 주요 매개변수는 n_estimators(트리 수), learning_rate(축소 비율), max_depth(트리 크기)입니다.
from sklearn.ensemble import GradientBoostingClassifier
gbm = GradientBoostingClassifier(
n_estimators=200,
learning_rate=0.1,
max_depth=3,
random_state=0,
)
gbm.fit(Xtr, ytr)
print(gbm.score(Xte, yte))학습률의 절충
learning_rate는 각 트리의 기여도를 조정합니다. 학습률이 낮을수록 더 많은 트리가 필요하지만 일반적으로 일반화 성능이 더 좋습니다.
일반적인 전략은 낮은 학습률(예: 0.05)과 많은 추정기를 설정한 다음 조기 중단을 사용하는 것입니다.
from sklearn.ensemble import GradientBoostingClassifier
gbm = GradientBoostingClassifier(
n_estimators=1000,
learning_rate=0.05,
max_depth=3,
)max_depth가 작게 유지되는 이유
부스팅에서는 각 트리가 약한 학습기이므로 max_depth를 보통 3에서 6 사이로 설정합니다. 트리가 깊으면 잔차에 빠르게 과적합할 수 있습니다. 앙상블은 깊은 트리 몇 개가 아니라 얕은 트리를 많이 사용해 강해집니다.
XGBoost 소개
XGBoost는 최적화된 그래디언트 부스팅 라이브러리입니다. 더 빠르고 정규화를 지원하며 결측값을 기본적으로 처리합니다. 표 형식 머신러닝 대회에서 최고의 성능을 보이는 라이브러리 중 하나입니다.
from xgboost import XGBClassifier
model = XGBClassifier(
n_estimators=300,
learning_rate=0.1,
max_depth=4,
random_state=0,
)
model.fit(Xtr, ytr)
print(model.score(Xte, yte))XGBoost의 주요 매개변수
핵심 조절 항목은 GBM과 유사합니다:
n_estimators부스팅 라운드 수learning_rate라운드마다 적용되는 축소 비율max_depth트리 깊이subsample과colsample_bytree는 정규화를 위해 무작위성을 추가합니다
from xgboost import XGBClassifier
model = XGBClassifier(
n_estimators=500,
learning_rate=0.05,
max_depth=4,
subsample=0.8,
colsample_bytree=0.8,
)XGBoost의 정규화
XGBoost는 L1(reg_alpha) 및 L2(reg_lambda) 패널티와 gamma(분할에 필요한 최소 손실 감소량)를 추가합니다. 이러한 설정은 복잡도를 제어하고 일반적인 GBM보다 과적합을 더 효과적으로 줄입니다.
from xgboost import XGBClassifier
model = XGBClassifier(
reg_alpha=0.1,
reg_lambda=1.0,
gamma=0.1,
)조기 중단
early_stopping_rounds는 검증 지표가 N 라운드 동안 더 이상 개선되지 않으면 학습을 중단합니다. 이를 통해 적절한 트리 수를 자동으로 찾고 과적합을 방지할 수 있습니다.
from xgboost import XGBClassifier
model = XGBClassifier(
n_estimators=2000,
learning_rate=0.05,
early_stopping_rounds=50,
eval_metric="logloss",
)
model.fit(Xtr, ytr, eval_set=[(Xte, yte)], verbose=False)
print("Best iteration:", model.best_iteration)특성 중요도 읽기
XGBoost는 feature_importances_와 더 다양한 중요도 정보를 제공하는 get_booster().get_score()를 지원합니다. 중요도 유형으로는 개선량과 가중치 등이 있습니다. 개선량은 특성이 손실을 얼마나 줄였는지를 나타냅니다.
model = XGBClassifier(n_estimators=200).fit(Xtr, ytr)
print(model.feature_importances_)
booster = model.get_booster()
print(booster.get_score(importance_type="gain"))부스팅을 선택할 때
그래디언트 부스팅은 잘 조정하면 표 형식 데이터에서 랜덤 포레스트보다 더 좋은 성능을 내는 경우가 많습니다. 대신 하이퍼파라미터에 더 민감하고 순차적 학습이 더 느립니다. XGBoost의 기본값으로 시작한 다음 learning_rate와 max_depth를 조정하고 조기 중단을 사용하십시오.
빠른 확인
부스팅 지식을 확인해 보십시오.
복습
복습: 부스팅은 트리를 순차적으로 학습시키며, 각 트리가 이전 오류를 수정합니다. n_estimators, learning_rate(낮은 학습률과 많은 트리), 작은 max_depth를 조정하십시오. XGBoost는 정규화(reg_alpha, reg_lambda, gamma)와 early_stopping_rounds를 추가하여 최적의 트리 수를 자동으로 선택합니다.
자주 묻는 질문
“그래디언트 부스팅: GBM과 XGBoost” 강의는 무료인가요?
네 — “그래디언트 부스팅: GBM과 XGBoost” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Learn AI with Python 강의 전체를 잠금 해제할 수 있습니다. Learn AI with Python 강의에는 총 4개의 강의가 포함되어 있습니다.
“그래디언트 부스팅: GBM과 XGBoost”에서 뭘 배우나요?
부스팅과 배깅의 차이, GradientBoostingClassifier, XGBClassifier, 조기 종료를 다룹니다. 브라우저에서 직접 실행하는 실습 코드로 Learn AI with Python을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Learn AI with Python을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Learn AI with Python은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 3번째 강의입니다.
“그래디언트 부스팅: GBM과 XGBoost” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Learn AI with Python 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Learn AI with Python 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- 결정 트리: 이론과 구현
- 랜덤 forest와 배깅
- 그래디언트 부스팅: GBM과 XGBoost
- LightGBM과 CatBoost