베이지안 최적화
- 불필요한 하이퍼 파라미터 반복 탐색을 줄여 빠르게 최적의 하이퍼 파라미터를 찾을 수 있는 방법
- 하이퍼 파라미터를 선택하는 문제에 대하여 정형화된 방법을 찾지 못해, 경험에 의해서 선택해야 함
사용하는 이유
- 그리드 서치 or 랜덤 서치는 도출된 하이퍼 파라미터 값을 일일이 모델에 적용한 뒤 성능 비교를 해야 하는 부분이 존재하지만 베이지안 최적화는 사용자가 설정한 파라미터 구간내에서 최적의 값을 도출함
베이지안 최적화에 사용되는 핵심 모듈
- Surrogate model
- 확보된 데이터와 평가지표의 숨겨진 관계를 모델링
- Acquisition function
- Surrogate model을 활용해 다음 탐색할 지점을 결정
베이지안 최적화는 사전에 정의된 하이퍼파라미터 집합으로부터 일반화 성능을 도출하는 surrogate model과 acquisition function을 사용하여 최적의 조합 결정
베이지안 최적화 과정
1 | lgb_params = { |
- 일정량의 hyperparameter 세팅을 X 변수로 하고
1 | def lgb_roc_eval(num_leaves, colsample_bytree, subsample, max_depth, reg_alpha, reg_lambda, min_split_gain, min_child_weight, subsample_freq, max_bin): |
- 모델의 성능을 Y변수로 하여 데이터 셋을 만든다
1 | BO_lgb = BayesianOptimization(lgb_roc_eval, lgb_params, random_state=2121) |
1 | BO_lgb.maximize(init_points=5, n_iter=10) |
1 | | iter | target | colsam... | max_bin | max_depth | min_ch... | min_sp... | num_le... | reg_alpha | reg_la... | subsample | subsam... | |
- 해당 데이터셋에서 X와 Y의 관계를 가지고 사전 지식을 만든 후 새로운 데이터(X변수, hyperparameter 조합)이 들어 왔을 때 일반화 성능이 우수하도록 하는 최적의 x를 찾아서 추가해주는 형식으로 진행
위의 프로세스에서 surrogate model과 acquistion function 등장하는데
- surrogate model은 X변수를 입력받아 일반화 성능과 불확실성에 관련된 분포를 내뱉는 함수
- Acquisition function은 가장 최적의 x값을 찾는 함수
장점
- 탐색 시간적인 측면에서 효율을 가질 수 있음
단점
- hyperparameter가 증가하면 차원이 급격하게 늘어나 성능을 예측하는 것이 점점 어려움
참고자료 : https://www.kaggle.com/elon4773/titanic-visualization-bayesian-optimization