-
LightGBM 데이터 분류머신러닝(MACHINE LEARNING) 2021. 4. 14. 17:25반응형
LightGMB 의 장점¶
- LightGBM 은 XGB보다 더빠른 학습과 에측 수행시간을 가지고 있고,
- 더작은 메모리 사용이 가능하다.
- 또한 카테고리형 피처의 자동 변환과 최적변환이 가능하다는 것이 장점이다.
LightGBM 의 파라미터¶
- LightGBM 은 XGB 와 다르게 리프노드가 계속 분할 되면서, 트리의 깊이가 깊어지므로 이러한 트리 특성에 맞느 하이퍼 파라미터가 필요하다, 주요 파라미터는 다음과 같다.
- num_iterations : default 값은 100 이며, 반복 수행하려는 트리의 개수를 지정한다.
- learning rate : default 값은 0.1 이며, 작을 수 록 예측 성능이 좋아지나, 학습이 길어진다는 것도 고려해야 한다.
- max_depth : 트리 기반의 max_depth 와 같은 의미
- mean_data_in_leaf : 결정 트리의 mean_samples_leaf 와 같은 의미로 리프를 나누는데 필요한 최소한의 samples 수를 말한다.
- objective : 최솟값을 가져야 할 손실함수를 정의한다. 애플리케이션 유형 즉, 회귀인지 다중클래스 분류인지에 따라 나뉜다.
- num_leaves : 하나의 트리가 가질 수 있는 최대 리프 개수이며, LightGBM 의 복잡도를 결정하는 중요 파라미터입니다.
XGB 와 많은 parameter 들이 비슷하며, 이를 적용해 위스콘신 데이터세트를 예측해보겠습니다.~¶
In [12]:#LightGBM의 패키지를 업로드 하자. from lightgbm import LGBMClassifier import pandas as pd import numpy as np from sklearn.datasets import load_breast_cancer from sklearn.model_selection import train_test_split from sklearn.metrics import accuracy_score dataset = load_breast_cancer() ftr = dataset.data target = dataset.target # 전체 데이터중 20퍼를 테스트용 데이터로 추출하자. X_train,X_test,Y_train,Y_test = train_test_split(ftr,target, test_size = 0.2, random_state =11) lgbm_wrapper = LGBMClassifier(n_estimators = 400) #LGBM 의 조기 중단 수행 설정 evals = [(X_test, Y_test)] # params 의 dict 형태로 주지 않고, 직접 설정해주었다. lgbm_wrapper.fit(X_train,Y_train, early_stopping_rounds = 100, eval_metric = 'logless', eval_set= evals , verbose = True) preds = lgbm_wrapper.predict(X_test) pred_proba = lgbm_wrapper.predict_proba(X_test)[:,1] # 약 98.25 의 정확도를 가지는 것을 볼 수 있다. print(" 정 확 도 : {0:.4f}".format(accuracy_score(Y_test,preds)))
[1] valid_0's binary_logloss: 0.563819 Training until validation scores don't improve for 100 rounds [2] valid_0's binary_logloss: 0.499158 [3] valid_0's binary_logloss: 0.448067 [4] valid_0's binary_logloss: 0.401018 ... # 데이터의 valid logloss 가 지속해서 줄어들다가 218 번째에서 안줄어들기 때문에 stop 하였다. [216] valid_0's binary_logloss: 0.029468 [217] valid_0's binary_logloss: 0.0298426 [218] valid_0's binary_logloss: 0.0295791 Early stopping, best iteration is: [118] valid_0's binary_logloss: 0.0268851 정 확 도 : 0.9825
In [ ]:이처럼 많은 LGBM 은 적은 피쳐값으로도 높은 성능을 내주기 때문에 (GPU연산도 지원) 많이 사용해주자 ..
In [ ]:반응형'머신러닝(MACHINE LEARNING)' 카테고리의 다른 글
Python_pickle[피클 이란?] (2) 2021.04.18 XGboost (Ensemble 학습법) (0) 2021.04.14 GridSearchCV () - 파라매터 와 교차검증을 동시에 하는 API (0) 2021.04.13 교차 검증을 위한 Cross_val_score() 함수 사용법 (0) 2021.04.13 K-Fold 와 Stratified-KFold 기법 (2) 2021.04.13