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 방식과 다르게 리프 중심 탐색을 진행하기 때문에 트리의 깊이가 깊어지는데 이게 오히려 성능에 이점을 준다고 주장한다. 꼬리에 꼬리를 물고 계속 약한 성능을 가진 모델들을 활용해서 성능이 좋아질 때까지 오차를 가지고 학습을 한다고만 알고 있다. 내부 동작에서는 정확히는 모르지만 이정도로 알고 있다.
실제로 케글에서 많이 사용되는 모델이고, 속도가 매우 빨라 하이퍼파라미터 튜닝을 하기에 좋은 모델이다.
이제 파라미터를 정리해보고자 한다.
파라미터 정리
파라미터 | 설명 | 기본값 |
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 |
댓글