728x90

Hyperparameter tuning == Hyperparameter optimization


예전 논문들에서는 tuning이란 단어를 자주 사용하였고, 최근 논문들에서는 optimization으로 표현하기도 함


Hyperparameter tuning(더 좋은 hyperparameter를 찾기위해 사용되는 방법)중  기본적인 방식

grid search

random search



XGBoost의 hyperparameter


max_depth(int, default : 3)

learning_rate(float, default : 100)

n_estimators(int, default : 100)

seed(int)

등등




grid search로 성능이 좋은 hyperparameter 조합을 찾을 경우



비교할 hyperparameter들을 미리 나열



EXPLORE_HYPER_PARAMETER = {

  

'max_depth' : [1,2,3,4,5,6,7,8,9,10,11],

    

'learning_rate' : [0.01, 0.02, 0.03, 0.04, 0.05, 0.06, 0.07, 0.08, 0.09, 0.000, 0.1],

    

    'n_esrimators' : [1, 50, 100, 150, 200, 250, 300, 350, 400, 450, 500],

    

'seed' : [1, 2, 3, 4, 5, 6, 7, 8, 9 ,10, 11]

}  


이라고 가정하면



grid search의 경우 모든 hyperparameter의 경우에 수에 대해 cross-validation 결과가 가장 좋은 parameter를 고른다.


  - 즉 위에 나열된 hyperparameter의 모든 가능한 경우의 수는  11^4


  - 모든(11^4)개의 parameter에 대해서 training data를 9:1 로 나누어 9로 학습 후 1로 validation 했을 때

    결과가 가장 좋은 parameter를 선별



주어진 공간 내에서 가장 좋은 결과를 얻을 수 있는 장점

시간이 오래 걸린다는 단점


뿐만 아니라 grid search의 경우 치명적인 단점이 있음

  - 만약 max_depth가 1.5에서 좋은 성능이 나오는데 grid search는 1 또는 2로만 판별하므로 1.5를 확인하지 못함







random search


grid search의 단점을 피하기 위해 나온 방법

난수를 이용하여 매개변수 조합을 생성

  - grid search는 매개변수가 될 수들을 미리 정하지만, random search는 난수를 사용

But, 이때 각각의 매개변수 범위나 간격 등을 설정해야 함

보통 논문을 보면 제시하는 기본값을 중심으로 적절한 범위를 설정




다른 hyperparameter tuning 방법들


grid / random search 방식은 basic한 방식으로써 더욱더 개량된 알고리즘들이 존재

Bayesian Optimization(BO)

Particle Swarm Optimization(PSO)

etc...













728x90

'Machine Learning > Hyperparameter Tuning' 카테고리의 다른 글

Particle Swarm Optimization (PSO)  (0) 2018.11.09