Hippo's data
하이퍼파라미터(Hyperparameter) 튜닝 - optuna 본문
데이터분석의 대표 플랫폼인 캐글에서 인플루언서분들의 코드를 보다보면 optuna를 이용하여 하이퍼파라미터 튜닝을 하는 것을 종종 볼 수 있는데욥 오늘은 하이퍼파라미터(Hyperparameter) 튜닝 방법 중 하나인 optuna에 대해 알아보겠습니다!
# 하이퍼파라미터란?
먼저 optuna에 대해 알아보기 전에 하이퍼파라미터에 대해 알아보겠습니다
하이퍼파라미터란 사용자가 직접 설정하는 값으로 직접 모델의 학습방식을 조절할 수 있습니다
쉬운 예시로 경사 하강법에서의 학습률(learning rate) , epoch 에포크 수, k-NN(k 최근접 이웃) 모델의 k값 등이 있는데욥
이러한 하이퍼파라미터를 조절하며 사용자는 모델의 성능을 올릴 수 있습니다!
하이퍼파라미터를 조절하는 것을 하이퍼파라미터(Hyperparameter) 튜닝이라고 부르는데요
그리드서치, 랜덤서치 등 또한 이에 해당합니다!
https://hipposdata.tistory.com/47
# optuna 작동방식
목적함수 정의
모델이 향상시키려고 하는 목적함수 값을 설정합니다 ex)roc_auc, accuracy 등등
탐색할 하이퍼파라미터 공간 정의
suggest_float, suggest_int, suggest_categorical를 이용하여 연속형, 정수형, 범주형 하이퍼파라미터를 각각 정의
스터디 객체 생성 및 최적화 실행
optuna는 study라는 객체에 각 시행마다의 결과값들이 저장됩니다
# 코드로 구현
대표적인 ML알고리즘인 랜덤포레스트의 최적의 하이퍼파라미터를 찾는 코드를 구현해보겠습니다!
최적값을 찾을때 KFold를 추가해 보았습니다
-> 요런식으로 탐색이 끝날때마다 시간, 탐색한 횟수, 시도한 하이퍼파라미터 값, 현재까지 최고의 시행이 아래 출력됩니다!
[I 2024-03-12 19:53:41,081] Trial 100 finished with value: 0.6797211448663709 and parameters: {'n_estimators': 2297, 'max_depth': 96, 'min_samples_split': 0.29747028284184107, 'min_samples_leaf': 0.13717893196685516}. Best is trial 41 with value: 0.814270849812625.
[I 2024-03-12 19:53:44,173] Trial 101 finished with value: 0.8126972496806207 and parameters: {'n_estimators': 360, 'max_depth': 109, 'min_samples_split': 0.24302501717307537, 'min_samples_leaf': 0.013474474555970345}. Best is trial 41 with value: 0.814270849812625.
# study 객체 저장 및 불러온 후 이어서 탐색
optuna 시행을 여러번 나눠서 탐색하기 위해 결과가 저장된 study객체를 pkl형식으로 저장 후 불러와서 이어서 탐색을 진행할 수 있습니다
자세한 내용은 공식 깃허브 문서를 보면 알 수 있습니다!
'ML(Machine Learning)' 카테고리의 다른 글
t-SNE(t-distributed Stochastic Neighbor Embedding) 구현 (0) | 2024.01.20 |
---|---|
PCA(Principal Component Analysis) 주성분 분석 구현 (0) | 2024.01.14 |
하이퍼파라미터(Hyperparameter) 튜닝 - 그리드서치, 랜덤서치 (0) | 2024.01.11 |
앙상블(Ensemble) (0) | 2024.01.08 |
머신러닝 주요 모델 모델링(Scikit-learn) (0) | 2024.01.08 |