RandomizedSearchCV

Python에서의 모델 검증

Kasey Jones

Data Scientist

그리드 서치로 하이퍼파라미터 탐색

여러 하이퍼파라미터에서 값을 선택하면 가능한 조합이 그리드를 이룹니다. 이 그리드를 하이퍼파라미터 공간이라 합니다.

Python에서의 모델 검증

그리드 서치 계속

장점:

  • 가능한 모든 조합을 테스트

단점:

  • 하이퍼파라미터가 늘수록 학습 시간이 기하급수적으로 증가
Python에서의 모델 검증

더 나은 방법

Python에서의 모델 검증

랜덤 서치

from sklearn.model_selection import RandomizedSearchCV

random_search = RandomizedSearchCV()

파라미터 분포:

param_dist = {"max_depth": [4, 6, 8, None],
              "max_features": range(2, 11),
              "min_samples_split": range(2, 11)}
Python에서의 모델 검증

랜덤 검색 매개변수

매개변수:

  • estimator: 사용할 모델
  • param_distributions: 하이퍼파라미터와 가능한 값의 딕셔너리
  • n_iter: 반복 횟수
  • scoring: 사용할 평가지표
Python에서의 모델 검증

RandomizedSearchCV 매개변수 설정

param_dist = {"max_depth": [4, 6, 8, None],
              "max_features": range(2, 11),
              "min_samples_split": range(2, 11)}
from sklearn.ensemble import RandomForestRegressor
from sklearn.metrics import make_scorer, mean_absolute_error

rfr = RandomForestRegressor(n_estimators=20, random_state=1111)
scorer = make_scorer(mean_absolute_error)
Python에서의 모델 검증

RandomizedSearchCV 구현

랜덤 검색 설정:

random_search =\
    RandomizedSearchCV(estimator=rfr,
                       param_distributions=param_dist,
                       n_iter=40,
                       cv=5)
  • 모델 검증을 이해하지 못하면 하이퍼파라미터 튜닝을 할 수 없습니다
  • 모델 검증은 여러 모델과 파라미터를 비교하게 해줍니다
Python에서의 모델 검증

RandomizedSearchCV 구현

랜덤 검색 설정:

random_search =\
    RandomizedSearchCV(estimator=rfr,
                       param_distributions=param_dist,
                       n_iter=40,
                       cv=5)

랜덤 검색 완료:

random_search.fit(X, y)
Python에서의 모델 검증

예제를 살펴봅시다!

Python에서의 모델 검증

Preparing Video For Download...