[ML] hyperparameter tuning

moon·2022년 1월 18일
0

📊 Machine Learning

목록 보기
2/2

데이터의 특성을 이해하고, 그에 맞는 모델과 최적의 하이퍼파라미터를 바로 구할 수 있으면 좋겠지만, 인간지능으로 한계가 있고 어느정도 empirical한 영역이기 때문에 컴퓨터에게 튜닝을 맡긴다.

  1. 여러 조합을 시도해보고, best parameter를 검색하는 방법
  2. 확률을 활용해 탐색하는 방법

sklearn.model_selection

GridSearchCV
각 parameter의 후보를 정하고, 모든 조합을 계산

RandomizedSearchCV
각 parameter의 후보를 정하고, 랜덤하게 선택한 조합을 계산

GridSearchCV(estimator, param_grid, scoring, cv)
param_grid에는 hyperparameter (string) 와 list 의 dictionary를 사용한다.

- 이 둘은 검색의 개념이다.
- .best_params_ 로 parameter 얻음


  1. 중요한 hyperparameter부터 조정하는 게 좋다
  2. 매개변수가 모델의 복잡성을 증가시키는지, 반대로 단순하게 만드는지 이해
  3. 어느 범위를 지정했을 때 그 상한/하한에 좋은 결과가 집중되어 있다면 범위를 넓혀 탐색하는 게 좋다
  4. 난수 시드를 바꿔 변화를 살펴봄으로써 단순 랜덤성에 의한 것인지, 매개변수 변경에 의한 것인지 파악한다.

Bayesian Optimization

GridSearch에서는 모든 조합을 다 계산하고, RandomSearch에서는 성능이 나오지 않았던 hyperparameter 주변도 계산하게 된다.
Bayesian optimization은 이전에 계산한 결과에 근거해, 성능이 좋을 가능성이 높은 hyperparameter를 bayesian 확률로 탐색한다. 😮

pip install bayesian-optimization
from bayes_opt import BayesianOptimization

hyperopt

https://wooono.tistory.com/102


- Tuning GBDT

xgboost 모델의 hyperparameter

  1. 전체적인 흐름을 먼저 설정
    학습률, decision tree 개수 등
    eta num_round

  2. 모델의 복잡성 / 랜덤성을 제어하는 hyperparameter
    max_depth min_child_weight gamma
    alpha lambda decision tree의 잎 가중치 정규화 강도
    subsample 랜덤성 추가 - 오버피팅 억제

- Tuning neural network

ing...

0개의 댓글

관련 채용 정보