매개변수 설정
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
'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 |