여러 파라미터들이 있지만 다음과 같은 수준에서의 튜닝만 수행해보는 것을 추천하고, 그렇게 해보자.
min_child_weight
는 샘플이 대부분 1인데 균일도가 달성되면 멈춰라라는 것이다.
그럼 구체적인 수행 코드는 어떻게 작성될까?
함수 입력 인자 범위 설정
bayesian_params = { '파라미터명' : (범위, 범위) }
함수 선언
def lgb_roc_eval(앞서 설정한 모든 파라미터):
params = { "" : }
lgb_model = LGBMClassifier(** params)
lgb.model.fit(train_x, train_y, eval_set = [(train_x, train_y), (valid_x, valid_y)], eval_metric = 'auc', verbose = 100, early_stopping_rounds = 100)
valid_proba = lgb_model.predict_proba(valid_x)[:, 1]
roc_auc = roc_auc_score(valid_x, valid_proba)
return roc_auc
iteration 을 돌리며 roc_auc 가 최대가 되는 인자 값을 찾는 것이다.
lgbBO = ByesianOptimization(lgb_roc_eval, bayesian_params, random_state = 0)
lgbBO.maximize(init_points = 5, n_iter = 25)
초기화는 5번, 25번 반복.
Bayesian Optimization이 언제나 최고의 최적화된 하이퍼 파라미터를 추출해주는 것은 아니다.