코딜기
[Python/ML] LightGBM 모델 Boosting Ensemble 본문
반응형
LightGBM란 무엇일까요?
- LightGBM은 분류, 회귀 문제에 모두 사용할 수 있는 강력한 모델입니다.
- 각 이터레이션에서 맞추지 못한 데이터에 가중치를 부여하여 모델을 학습시키는 부스팅(Boosting) 계열의 트리 모델입니다.
- 강력한 병렬 처리 성능과 자동 가지치기 알고리즘이 적용되어 Gradient Boosting Model 대비 빠른 속도를 갖습니다.
- 과적합 규제 기능(Regularization)의 이점이 있습니다.
- 또한 자체 교차 검증 알고리즘과 결측치 처리 기능을 가지고 있습니다.
- 리프 중심 트리 분할 방식으로 비대칭적인 트리를 형성하여 모델을 학습하고, 예측 오류 손실을 최소화합니다.
- Early Stopping 기능이 있습니다.
- 성능이 좋은 XGBoost와 성능은 비슷하지만 속도가 훨씬 빠릅니다.
LightGBM의 대표적인 파라미터
다룰 수 있는 파라미터가 많기 때문에 Customizing이 용이합니다.
- n_estimators (int) : 내부에서 생성할 결정 트리의 개수
- max_depth (int) : 생성할 결정 트리의 높이
- learning_rate (float) : 훈련량, 학습 시 모델을 얼마나 업데이트할지 결정하는 값
- colsample_bytree (float) : 열 샘플링에 사용하는 비율
- subsample (float) : 행 샘플링에 사용하는 비율
- reg_alpha (float) : L1 정규화 계수
- reg_lambda (float) : L2 정규화 계수
- boosting_type (str) : 부스팅 방법 (gbdt / rf / dart / goss)
- random_state (int) : 내부적으로 사용되는 난수값
- n_jobs (int) : 병렬처리에 사용할 CPU 수
Python을 통한 모델 적용
1. 라이브러리를 사용하기 위해 LightGBM를 Install 해줘야 합니다.
!pip install lightgbm
2. 분류 문제에서의 LightGBM
- 기본 파라미터 설정으로 진행한 LightGBM
from lightgbm import LGBMClassifier
# LGBMClassifier 모델 선언 후 Fitting
lgbc = LGBMClassifier()
lgbc.fit(x_train, y_train)
# Fitting된 모델로 x_valid를 통해 예측을 진행
# 0 or 1로 예측을 할 때
y_pred = lgbc.predict(x_valid)
# 0 ~ 1 사이의 확률값으로 예측을 할 때
y_pred_proba = lgbc.predict_proba(x_valid)
3. 회귀 문제에서의 LightGBM
- 기본 파라미터 설정으로 진행한 LightGBM
from lightgbm import LGBMRegressor
# LGBMRegressor 모델 선언 후 Fitting
lgbr = LGBMRegressor()
lgbr.fit(x_train, y_train)
# Fitting된 모델로 x_valid를 통해 예측을 진행
y_pred = lgbr.predict(x_valid)
4. Feature Importance
- 트리 기반 모델은 트리를 분기하는 과정에서 어떤 변수가 중요한지에 대한 변수 중요도를 살펴볼 수 있습니다.
feature_importance = pd.DataFrame(lgbc.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] 선형 회귀 분석 - Linear Regression (0) | 2022.12.24 |
---|---|
[Python/ML] 모델 앙상블(Model Ensemble) 배깅(Bagging)/부스팅(Boosting) (0) | 2022.03.11 |
[Python/ML] 이진 분류(Binary Classification) (0) | 2022.03.11 |
[Python/ML] XGBoost 모델 Boosting Ensemble (0) | 2022.03.11 |
[Python/ML] 랜덤 포레스트(Random Forest) Bagging Ensemble (1) | 2022.03.07 |
Comments