본문 바로가기
Learning-driven Methodology/ML (Machine Learning)

[LightGBM] Python 패키지 (2)

by goatlab 2022. 6. 28.
728x90
반응형
SMALL

매개변수 설정

 

LightGBM은 사전을 사용하여 매개변수를 설정할 수 있다.

 

# 부스터 매개변수:
param = {'num_leaves': 31, 'objective': 'binary'}
param['metric'] = 'auc'

# 여러 평가 지표를 지정
param['metric'] = ['auc', 'binary_logloss']

 

훈련

 

모델을 훈련하려면 매개변수 목록과 데이터 세트가 필요하다.

 

num_round = 10
bst = lgb.train(param, train_data, num_round, valid_sets=[validation_data])

 

학습 후 모델을 저장할 수 있다.

 

bst.save_model('model.txt')

 

훈련된 모델은 JSON 형식으로 덤프할 수도 있다.

 

json_model = bst.dump_model()

 

저장된 모델을 로드할 수 있다.

 

bst = lgb.Booster(model_file='model.txt')  # init model

 

CV

 

# 5중 CV로 훈련:
lgb.cv(param, train_data, num_round, nfold=5)

 

조기 중지 (Early Stopping)

 

검증 세트가 있는 경우 조기 중지를 사용하여 최적의 부스팅 라운드 수를 찾을 수 있다. 조기 중지는 valid_sets에 최소 한 세트가 필요하다. 둘 이상이면 훈련 데이터를 제외하고 모두 사용한다.

 

bst = lgb.train(param, train_data, num_round, valid_sets=valid_sets, callbacks=[lgb.early_stopping(stopping_rounds=5)])
bst.save_model('model.txt', num_iteration=bst.best_iteration)

 

모델은 검증 점수 개선이 멈출 때까지 학습한다. 교육을 계속하려면 유효성 검사 점수가 최소한 매 stopping_rounds번 개선 되어야 한다.

 

early_stopping 콜백은 best_iteration을 설정하여 조기 정지 로직을 활성화하면 성능이 가장 좋은 반복의 인덱스가 필드에 저장된다. 최상의 반복에서 모델 train()을 반환한다.

 

이는 최소화 (L2, 로그 손실 등) 및 최대화 (NDCG, AUC 등)를 위해 두 메트릭 모두에서 작동한다. 둘 이상의 평가 메트릭을 지정하면 모두 조기 중지에 사용된다. 그러나 이 동작을 변경하고 LightGBM이 early_stopping에서 콜백 생성자 first_metric_only=True를 전달하여 조기 중지를 위한 첫 번째 지표만 확인하도록 할 수 있다.

 

예측

 

훈련되거나 로드된 모델은 데이터세트에 대한 예측을 수행할 수 있다.

 

# 7 entities, each contains 10 features
data = np.random.rand(7, 10)
ypred = bst.predict(data)

 

훈련 중에 조기 중지가 활성화된 경우 다음을 사용하여 최상의 반복 bst.best_iteration에서 예측을 얻을 수 있다.

 

ypred = bst.predict(data, num_iteration=bst.best_iteration)

 

https://lightgbm.readthedocs.io/en/latest/Python-Intro.html

 

Python-package Introduction — LightGBM 3.3.2.99 documentation

© Copyright 2022, Microsoft Corporation. Revision df14e607.

lightgbm.readthedocs.io

 

728x90
반응형
LIST

'Learning-driven Methodology > ML (Machine Learning)' 카테고리의 다른 글

[LightGBM] Features (2)  (0) 2022.06.28
[LightGBM] Features (1)  (0) 2022.06.28
[LightGBM] Python 패키지 (1)  (0) 2022.06.28
LightGBM  (0) 2022.06.28
[Machine Learning] MLOps  (0) 2022.05.11