함께하는 데이터 분석

[ML] LightGBM 본문

데이터분석 공부/ML | DL

[ML] LightGBM

JEONGHEON 2023. 1. 20. 17:19

LightGBM

LightGBM은 Gradient Boosting Machine에서 Light를 추가한 것입니다

 

Light가 붙은 만큼 속도도 빠르고 큰 사이즈의 데이터를 다룰 수 있고 실행시킬 때 적은 메모리를 차지합니다

 

추가로 LightGBM은 GPU 학습을 지원하고 결과의 정확도에 초점을 맞추므로 인기 있는 모델입니다

 

LightGBM은 기본적으로 GBM의 학습방식의 틀린 부분에 가중치를 주며 진행하는 방식입니다

 

GBM에 대한 소개는 이전 포스팅을 참고하세요

2023.01.15 - [데이터분석 공부/ML | DL] - [ML] Gradient Boosting Machine

 

[ML] Gradient Boosting Machine

Gradient Boosting Machine Gradient Boosting Machine, GBM은 이름에서도 알다시피 Boosting 알고리즘입니다 앙상블과 부스팅에 관한 설명은 이전 포스팅을 참고해 주세요 2022.08.19 - [데이터분석 공부/ML | DL] - [Ense

tnqkrdmssjan.tistory.com

따라서 일반적인 tree기반 모델이 level-wise로 수평적으로 확장되는 반면

 

LightGBM은 GBM과 똑같이 leaf-wise로 수직적으로 확장됩니다

 

최대 손실 값(max_data_loss)을 가지는 리프 노드를 지속적으로 분할하여

 

트리의 깊이가 깊어지고 비대칭적인 tree가 완성됩니다

<LightGBM : leaf-wise>

 

LightGBM을 사용하실 때 유의해야 할 점은 overfitting에 민감합니다

 

규제 하이퍼파라미터가 존재하지 않아 작은 데이터로 사용하는 것은 좋지 않습니다

 

데이터는 대략 10000개 이상의 row를 가진 데이터에 사용하는 것이 좋습니다

 

 

Python 실습

import numpy as np

import warnings
warnings.filterwarnings('ignore')
from sklearn.datasets import load_iris
iris = load_iris()

X, y = iris['data'], (iris['target'] == 2).astype(np.float64)
from sklearn.model_selection import train_test_split

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=124)
from lightgbm import LGBMClassifier

model = LGBMClassifier(random_state=42)
model.fit(X_train, y_train)

pred = model.predict(X_test)
from sklearn.metrics import accuacy_score

print('LightGBM accuracy : ', round(accuracy_score(y_test, pred) * 100, 2))

>>> LightGBM Accuracy :  90.0

'데이터분석 공부 > ML | DL' 카테고리의 다른 글

[ML] CatBoost  (0) 2023.01.23
[ML] XGBoost  (0) 2023.01.20
[ML] 분류 모델 성능 평가 지표  (0) 2023.01.17
[ML] Gradient Boosting Machine  (0) 2023.01.15
[ML] 교차검증과 하이퍼파라미터 튜닝  (2) 2023.01.14