코딜기
[Python/ML] XGBoost 모델 Boosting Ensemble 본문
반응형
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은 무시하셔도 됩니다.
반응형
'ML & DL > Build & Train Model' 카테고리의 다른 글
[Python/ML] 모델 앙상블(Model Ensemble) 배깅(Bagging)/부스팅(Boosting) (0) | 2022.03.11 |
---|---|
[Python/ML] 이진 분류(Binary Classification) (0) | 2022.03.11 |
[Python/ML] 랜덤 포레스트(Random Forest) Bagging Ensemble (1) | 2022.03.07 |
[Python/ML] 의사결정 나무 (Decision Tree) (2) | 2022.03.07 |
[Python/ML] 서포트 벡터 머신 (Support Vector Machine) SVM (0) | 2022.03.04 |
Comments