코딜기

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

ML & DL Process/Build & Train Model

[Python/ML] LightGBM 모델 Boosting Ensemble

코딜기 2022. 3. 14. 15:50
반응형

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은 무시하셔도 됩니다.

적은 데이터 셋을 적용하면 과적합의 우려가 있습니다.

 

반응형
Comments