logo

부스팅

부스팅

  • 부스팅(boosting): 약한 모델을 순서대로 학습해 앞 모델의 오류를 보완하는 방법
  • 앞 단계에서 틀린 부분에 다음 모델이 더 집중
  • 성능이 강력하지만 학습 설정에 민감할 수 있음
  • 대표 모델: Gradient Boosting, XGBoost, LightGBM

부스팅에서 순차적으로 모델 오류를 보완하는 구조

실습 준비

  • 앙상블 문서에서 데이터를 불러오고 분할한 노트북에서 이어서 실행
  • 앞에서 준비한 X, X_train, X_test, y_train, y_test를 그대로 사용

실습 프롬프트

🤖 AI 프롬프트
datacenter_incident.xlsx 데이터를 8:2로 train과 test로 분할해(random_state=42)
타깃 incident_next_hour에서 0은 정상, 1은 1시간 이내 장애 발생이야.
AdaBoostClassifier와 GradientBoostingClassifier를 사용해줘.
두 모델 모두 n_estimators=100, random_state=42로 설정해줘.
학습 데이터로 두 모델을 학습하고 테스트 정확도를 비교해줘.
필요한 라이브러리를 불러오고 각 단계에 초보자를 위한 한글 주석을 달아줘.

AdaBoost

  • 이전 모델에서 잘못 분류한 사례에 가중치를 주어 다음 모델을 학습
from sklearn.ensemble import AdaBoostClassifier
from sklearn.metrics import accuracy_score

ada = AdaBoostClassifier(
    n_estimators=100,  # 순서대로 학습할 모델 수의 상한
    random_state=42,
)
ada.fit(X_train, y_train)

y_pred_ada = ada.predict(X_test)
accuracy_score(y_test, y_pred_ada)
실행 결과
0.72
  • AdaBoost의 테스트 정확도: 72.0%

AdaBoost에서 잘못 분류한 사례의 가중치를 높이는 과정

경사 부스트

  • 경사 부스트(gradient boosting): 현재 예측의 손실을 줄이는 방향으로 새 모델을 순서대로 학습
  • 새 모델의 예측을 기존 예측에 더해 남은 오류 보완
from sklearn.ensemble import GradientBoostingClassifier

gb = GradientBoostingClassifier(
    n_estimators=100,  # 순서대로 추가할 모델 수
    random_state=42,
)
gb.fit(X_train, y_train)

y_pred_gb = gb.predict(X_test)
accuracy_score(y_test, y_pred_gb)
실행 결과
0.715
  • 경사 부스트의 테스트 정확도: 71.5%

경사 부스트에서 반복이 진행되며 오차가 줄어드는 과정

앙상블의 동향: 경사부스팅 계열

  • 표 형태의 데이터에서 나무 기반 경사부스팅 알고리즘 활용
  • 대표 라이브러리: XGBoost, LightGBM, CatBoost
  • 이 실습의 GradientBoostingClassifier도 경사부스팅 계열
  • 모델 수와 학습 설정에 따라 정확도·계산량이 달라지므로 데이터에 맞는 설정 필요

퀴즈

문제 1 / 4맞음: 0힌트: 0틀림: 0채점중: 0남음: 4

AdaBoost가 다음 모델을 학습하는 방식으로 가장 적절한 것은?

  • ○이전 모델이 잘못 분류한 관측치의 가중치를 높여 더 집중한다
  • ○모든 모델을 같은 데이터와 같은 가중치로 독립적으로 학습한다
  • ○기본 모델의 예측을 메타 모델의 입력으로만 사용한다
  • ○각 단계에서 임의의 특성을 하나씩 영구적으로 제거한다

퀴즈를 풀려면 대화형 기능을 불러와야 합니다.

Previous
배깅