본문 바로가기
AI/- Library

[lightGBM] 파라미터, 메소드, 어트리뷰트 파헤치기

by Yoojacha 2023. 3. 3.
lightgbm.LGBMClassifier(
                        boosting_type='gbdt', 
                        num_leaves=31, 
                        max_depth=-1, 
                        learning_rate=0.1, 
                        n_estimators=100, 
                        subsample_for_bin=200000, 
                        objective=None, 
                        class_weight=None, 
                        min_split_gain=0.0, 
                        min_child_weight=0.001, 
                        min_child_samples=20, 
                        subsample=1.0, 
                        subsample_freq=0, 
                        colsample_bytree=1.0, 
                        reg_alpha=0.0, 
                        reg_lambda=0.0, 
                        random_state=None, 
                        n_jobs=None, 
                        importance_type='split', 
                        **kwargs
                       )

sklearn warpper 를 기준으로 보았다. xgboost가 참고해서 파라미터를 만들다 보니 비슷한 부분이 많아서 이걸 정리해두면 둘다 편할 것 같아서 정리를 해보려고 한다.

 

간결하게 설명을 하자면 lightGBM은 다른 Gradient Boost 방식과 다르게 리프 중심 탐색을 진행하기 때문에 트리의 깊이가 깊어지는데 이게 오히려 성능에 이점을 준다고 주장한다. 꼬리에 꼬리를 물고 계속 약한 성능을 가진 모델들을 활용해서 성능이 좋아질 때까지 오차를 가지고 학습을 한다고만 알고 있다. 내부 동작에서는 정확히는 모르지만 이정도로 알고 있다.

 

실제로 케글에서 많이 사용되는 모델이고, 속도가 매우 빨라 하이퍼파라미터 튜닝을 하기에 좋은 모델이다.

이제 파라미터를 정리해보고자 한다.

 

lightgbm.LGBMClassifier — LightGBM 3.3.5.99 documentation

Build a gradient boosting model from the training set (X, y). Note Custom eval function expects a callable with following signatures: func(y_true, y_pred), func(y_true, y_pred, weight) or func(y_true, y_pred, weight, group) and returns (eval_name, eval_res

lightgbm.readthedocs.io

 

파라미터 정리

파라미터 설명 기본값
boosting_type  'gbdt', 'rf', 'dart', 'goss' 중 설정 가능 'gbdt'
num_leaves  결정 트리의 최대 리프노드 개수 31
max_depth 결정 트리의 깊이 10
learning_rate  학습률 (보통 0.2~0.01 사이) 0.1
n_estimators  약한 학습기 개수 100
subsample_for_bin  bin 생성에 필요한 샘플 개수 200000
objective  None 설정시 회귀로 작동 None
class_weight  클래스 불균형 해결 None
min_split_gain  노드 분할에 필요한 손실 감소 0.0
min_child_weight  헤시안 합의 최솟값 0.001
min_child_samples  리프 노드의 최소 데이터 개수 20
subsample  데이터를 샘플링 비율 설정 (과적합 방지) 1.0
subsample_freq  샘플링 빈도 0
colsample_bytree  열 샘플링. (다양성 높이는 용도) 1.0
reg_alpha  L1 정규화 0.0
reg_lambda  L2 정규화 0.0
random_state  난수 생성 42
n_jobs  cpu 병렬 연산 설정 -1
importance_type  'split', 'gain' 변수 중요도 계산 방식 설정 'split'

 

'AI > - Library' 카테고리의 다른 글

[Scikit-learn] pipeline 이해하기  (0) 2023.03.09
[scikit-learn] KFold 와 StratifiedKFold 의 차이  (0) 2023.03.09
[Pandas] index 활용 정리  (0) 2023.03.06
[PyTorch] 기본 알아둘 것 정리  (0) 2023.03.03
[ Pandas ] 시계열 데이터  (0) 2023.02.17
[Pandas] 연산 방법 정리  (0) 2023.02.16

댓글