Bayesian Optimization 을 이용한 LightGBM 하이퍼 파라미터 튜닝

박경민·2023년 2월 19일
0

[Machine Learning]

목록 보기
23/35

Bayesian Optimization 을 이용한 LightGBM 하이퍼파라미터 튜닝

  • 너무 많은 하이퍼 파라미터들을 튜닝하려는 것은 최적값을 찾는데 방해가 될 수 있음
  • 적당한 수준의 하이퍼 파라미터 개수 설정 필요.

여러 파라미터들이 있지만 다음과 같은 수준에서의 튜닝만 수행해보는 것을 추천하고, 그렇게 해보자.

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 가 최대가 되는 인자 값을 찾는 것이다.

  • BayesianOptimization 객체 생성 및 최대값 유추

lgbBO = ByesianOptimization(lgb_roc_eval, bayesian_params, random_state = 0)
lgbBO.maximize(init_points = 5, n_iter = 25)

초기화는 5번, 25번 반복.


Bayesian Optimization이 언제나 최고의 최적화된 하이퍼 파라미터를 추출해주는 것은 아니다.

  • 사전에 유추할 파라미터의 범위를 제약해주는 것이 필요
  • 가능하다면 CV 로 함수 결과 반환.
  • 너무 집착할 필요 X
profile
Mathematics, Algorithm, and IDEA for AI research🦖

0개의 댓글