LightGBM
XGBoost와 같이 GBM(Gradient Boosting Model) 기법을 기반으로 하는 방식이다.
(GBM : 여러 트리 모델을 점점 결합해가면서 오차를 줄이는 모델을 구성하는 방식)
LightGBM의 특징
- 빠른 학습속도, 높은 효율성
- 적은 메모리 사용량
- 향상된 accuracy
- 병렬, 분산 및 GPU 학습 지원
- 대규모 데이터를 처리할 수 있음
LightBGM은 이름 그대로 가벼운(Light) GBM 알고리즘이다. 속도가 빠르고, 사이즈가 큰 데이터를 다룰 때도 적은 양의 메모리를 사용한다.
대부분의 트리 기반 알고리즘에서는 트리가 아래 그림과 같은 Level-wise 방식으로 확장되기 때문에 트리가 최대한 균형있게 확장되고, depth를 최소화할 수 있었다.
반면에 LightGBM의 Leaf-wise 방식에서는 트리가 max delta loss 값을 갖는 leaf node를 분할해가며 확장되기 때문에 depth가 깊어지고, 트리가 균형있게 확장되지 않는다.
Leaf-wise 방식을 사용할 때는 Level-wise 방식보다 loss를 최소화할 수 있다.
하지만 Leaf-wise 방식은 10,000개 이하의 행(row)을 갖는 데이터셋을 사용할 때는 오버피팅이 발생하기 쉽다는 단점이 있다.
LightBGM의 주요 파라미터
- max_depth : 트리의 최대 깊이
LightBGM은 Leaf-wise 방식으로 트리의 깊이가 깊어지기 때문에 max_depth를 잘 조절해주는 것이 중요하다.
- min_data_in_leaf : leaf가 갖고 있는 최소 데이터 수 (디폴트 20) (min_samples_leaf 로 써도 되는듯 하다.)
- num_leaves : 하나의 트리가 가질 수 있는 최대 leaf node 수 (디폴트 32)
- boosting : 실행하고자 하는 알고리즘 타입을 정의 (gdbt(디폴트), rf 등)
- num_boost_round : boosting iteration 수 지정
- learning_rate : 학습률
공식문서 참고
https://lightgbm.readthedocs.io/en/v3.3.2/
Welcome to LightGBM’s documentation! — LightGBM 3.3.2 documentation
© Copyright 2022, Microsoft Corporation. Revision dce7e58b.
lightgbm.readthedocs.io
- lightgbm 설치 (주피터노트북 환경)
!pip install lightgbm
- 사용법은 다른 모델과 동일하다
from lightgbm import LGBMClassifier
model_lgbm = LGBMClassifier()
model_lgbm.fit(x_train, y_train)
pred_lgbm = model_lgbm.predict(x_val)
print(confusion_matrix(y_val, pred_lgbm))
print(classification_report(y_val, pred_lgbm))
# [[3623 1325]
# [1753 3299]]
# precision recall f1-score support
#
# LEAVE 0.67 0.73 0.70 4948
# STAY 0.71 0.65 0.68 5052
#
# accuracy 0.69 10000
# macro avg 0.69 0.69 0.69 10000
# weighted avg 0.69 0.69 0.69 10000
아래와 같은 파라미터들을 튜닝해볼 수 있다.
'인공지능 AI' 카테고리의 다른 글
[ ImageDataGenerator, ModelCheckpoint ] (0) | 2022.09.26 |
---|---|
[ OpenCV로 동영상 불러오기, glob ] (0) | 2022.09.26 |
[ 정규화 : RobustScaler ] (0) | 2022.09.10 |
[ Class Imbalance (클래스 불균형) ] (0) | 2022.09.10 |
[ 분류를 위한 기준 (Cut-off Value) ] (0) | 2022.09.10 |