코딜기

[Python/ML] XGBoost 모델 Boosting Ensemble 본문

ML & DL Process/Build & Train Model

[Python/ML] XGBoost 모델 Boosting Ensemble

코딜기 2022. 3. 11. 16:09
반응형

XGBoost란 무엇일까요?

  • XGBoost는 분류, 회귀 문제에 모두 사용할 수 있는 강력한 모델입니다.
  • 각 이터레이션에서 맞추지 못한 데이터에 가중치를 부여하여 모델을 학습시키는 부스팅(Boosting) 계열의 트리 모델입니다.
  • 강력한 병렬 처리 성능자동 가지치기 알고리즘이 적용되어 Gradient Boosting Model 대비 빠른 속도를 갖습니다.
  • 과적합 규제 기능(Regularization)의 이점이 있습니다.
  • 또한 자체 교차 검증 알고리즘결측치 처리 기능을 가지고 있습니다.
  • 균형 트리 분할 방식으로 모델을 학습하여 대칭적인 트리를 형성합니다.
  • Early Stopping 기능이 있습니다.

XGBoost의 대표적인 파라미터

다룰 수 있는 파라미터가 많기 때문에 Customizing이 용이합니다.

  • n_estimators (int) : 내부에서 생성할 결정 트리의 개수
  • max_depth (int) : 생성할 결정 트리의 높이
  • learning_rate (float) : 훈련량, 학습 시 모델을 얼마나 업데이트할지 결정하는 값
  • colsample_bytree (float) : 열 샘플링에 사용하는 비율
  • subsample (float) : 행 샘플링에 사용하는 비율
  • reg_alpha (float) : L1 정규화 계수
  • reg_lambda (float) : L2 정규화 계수
  • booster (str) : 부스팅 방법 (gblinear / gbtree / dart)
  • random_state (int) : 내부적으로 사용되는 난수값
  • n_jobs (int) : 병렬처리에 사용할 CPU 수

Python을 통한 모델 적용

1. 라이브러리를 사용하기 위해 XGBoost를 Install 해줘야 합니다.

!pip install xgboost

2. 분류 문제에서의 XGBoost

  • 기본 파라미터 설정으로 진행한 XGBoost
from xgboost import XGBClassifier

# XGBClassifier 모델 선언 후 Fitting
xgbc = XGBClassifier()
xgbc.fit(x_train, y_train)

# Fitting된 모델로 x_valid를 통해 예측을 진행
y_pred = xgbc.predict(x_valid)

3. 회귀 문제에서의 XGBoost

  • 기본 파라미터 설정으로 진행한 XGBoost
from xgboost import XGBRegressor

# XGBRegressor 모델 선언 후 Fitting
xgbr = XGBRegressor()
xgbr.fit(x_train, y_train)

# Fitting된 모델로 x_valid를 통해 예측을 진행
y_pred = xgbr.predict(x_valid)

4. Feature Importance

  • 트리 기반 모델은 트리를 분기하는 과정에서 어떤 변수가 중요한지에 대한 변수 중요도를 살펴볼 수 있습니다.
feature_importance = pd.DataFrame(xgbc.feature_importances_.reshape((1, -1)), columns=x_train.columns, index=['feature_importance'])
feature_importance

y_pred 혹은 y_pred_proba를 통한 모델 성능 검증은 다른 포스팅에 정리하겠습니다.


예측 중에 나오는 WARNING은 무시하셔도 됩니다.

반응형
Comments