Snoopy [ML] 10. 하이퍼파라미터 튜닝(3) - Random Search 주요 파라미터
머신러닝과 딥러닝/ML 개념정리

[ML] 10. 하이퍼파라미터 튜닝(3) - Random Search 주요 파라미터

Sooyoon Jeong 2022. 11. 3.

Random search는 하이퍼파리미터의 최소/최대값 등으로 지정한 범위 내에서 랜덤으로 조합 후 샘플링하여 최적의 성능을 갖는 하이퍼파라미터가 무엇인지 탐색하는 하이퍼파라미터 튜닝 기법의 하나이다.

 

1. Random Search 주요 파라미터

1) estimator

주로 model, 알고리즘을 입력

 

2) param_distributions

dict or list of dicts 형태로 입력, Random Search를 돌릴 파라미터 범위를 지정함

 

3) n_iter

int 타입으로 입력, 샘플링 되는 하이퍼파라미터 수를 지정함

성능의 품질과 시간을 고려하여 입력하면 된다.

  ※ default = 10

 

4) scoring

str, callable, list, tuple or dict 형태로 입력, 교차 검증된 모델의 성능을 평가하는 전략 테스트 집합

  ※ default = None

 

4) n_jobs

사용할 CPU 개수로 -1 입력 시 모든 CPU 사용

 

5) refit

bool, str, or callable형태로 입력, 

전체에서 가장 잘 발견된 모수를 추정하여 학습을 다시 할 것인지 여부 지정

 ※ default=True

 

6) cv

교차 검증 시 분할할 조각의 수

  ※ default = None

 

7) verbose

Controls the verbosity: the higher, the more messages.

 

8) random_state

값을 고정할 것인지 여부 지정

 

param_distributions 설정, 아래와 같은 방식으로 random search를 진행할 범위를 지정해준다.

max_depth = np.random.randint(3,20, 10)
max_features = np.random.uniform(0.5, 1, 10)

param_distributions = {"max_depth" : max_depth, "max_features" : max_features}

Random search 라이브러리 로드 및 실행

from sklearn.model_selection import RandomizedSearchCV

clfr = RandomizedSearchCV(model, 
                          param_distributions = param_distributions,
                          n_iter = 10,
                          cv= 5,
                          scoring = "accuracy",
                          n_jobs = -1,
                          random_state = 42, verbose = 3)

clfr.fit(X_train, y_train)

 

댓글