본문 바로가기
TIL - 외/빅데이터

[머신러닝] XGBoost (Extreme Gradient Boosting)

by chaemj97 2023. 7. 7.
728x90

Boosting

  • 순차적으로 모델의 정확도를 높이는 방법
    • 전체 학습 데이터에서 일부를 선택한 하위 데이터 세트와 이를 학습할 첫번째 모델을 만든다. 그리고 첫번째 모델이 잘 학습하지 못한 부분을 반영해서 두번째 데이터 세트와 두번째 모델을 만든다. 이를 반복해서 점진적으로 모델의 정확도를 높인다.
  • Boosting 기법을 이용하여 구현한 대표 알고리즘은 Gradient Boost이다.
    • Gradient Boost 알고리즘을 병렬 학습이 지원되도록 구현한 것이 XGBoost

 

XGBoost

  • Regression, Classification 모두 지원
  • 성능과 효율이 좋아서 자주 사용되는 알고리즘이다.
  • 특징
    • GBM보다 빠르다.
    • 과적합 방지가 가능한 규제가 포함되어 있다. (조기 종료)
    • CART(Classification and regression tree) 앙상블 모델을 사용
    • Missing Values : 결측치를 내부적으로 처리해준다.
  • 하이퍼 파라미터
    • objective : 목적함수
    • n_estimators : 트리 수
    • tree_method : gpu 사용
    • eval_set : 성능 평가를 수행할 데이터 세트
    • eval_metric : 조기 종료를 위한 평가 지표
    • early_stopping_rounds : 조기 종료 조건, 평가 지표가 향상될 수 있는 반복 횟수
    • verbose : 학습 결과 출력 조건
    • ...
from xgboost import XGBClassifier
model = XGBClassifier(n_estimators=200, learning_rate=0.01, max_depth=5, random_state = 0)
model.fit(train.drop(columns='Survived'),train['Survived'])

y_pred = model.predict(val_x)

 

Early Stopping

  • 모델이 과적합 되기 전 훈련을 멈추는 정규화 기법
  • 훈련 중 주기적으로 성능 검증을 하다가 성능이 더 좋아지지 않으면 과적합이라고 판단하고 훈련을 멈춘다.
728x90
반응형

댓글