Machine Learning/Hyperparameter Tuning
hyperparameter tuning - random search & grid search
2018. 11. 2. 16:10Hyperparameter 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들을 미리 나열
'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...
'Machine Learning > Hyperparameter Tuning' 카테고리의 다른 글
Particle Swarm Optimization (PSO) (0) | 2018.11.09 |
---|