RandomizedSearchCV / GridSearchCV
데이터가 충분하지 않아 validation set을 따로 뽑아내기 힘들 때 기존 train set을 k개로 등분해 k-1개를 train set처럼 사용하고 나머지 한 개를 validation set처럼 사용하는 과정을 나눈 k개의 경우에 대해 적용하는 것
- 데이터의 크기가 충분하지 않아 train / validation set으로 나누어 train set으로 모델학습을 하거나 validation set으로 성능 평가/추정이 부정확할 경우 cv를 통해 해소 ~ 데이터 크기의 문제 해소
- 어떤 모형으로 학습하고 또 그 모형에 어떤 하이퍼파라미터 값을 넣어야 최적의 모형을 만들 수 있는지 cv를 통해 모델 선택에 도움 ~ 모델 선택의 문제 해소
from sklearn.model_selection import RandomizedSearchCV
pipe = make_pipeline(...)
dists = {..} #
clf = RandomizedSearchCV(
pipe,
param_distributions=dists,
n_iter= 00, # 반복 횟수
cv= 00, # folds 수
scoring='00', # 평가 지표
random_state = 00
)
clf.fit(X_train, y_train);
clf.best_params_ # 최적 모델의 하이퍼파라미터 조합
clf.predict(X_test) # test set을 넣은 예측값 / refit = True가 default라 바로 넣어도 되는 듯 싶다
from sklearn.model_selection import GridSearchCV
pipe = make_pipeline(...)
dists = {..} # 그리드로 조합할 하이퍼파라미터의 값 설정
clf_grid = GridSearchCV(
pipe,
param_grid=dists_grid,
cv= 00, # folds 수
scoring='00' # 평가지표
)
clf_grid.fit(X_train, y_train) # train set 통한 모형
clf_grid.best_params_ # 최적 모델의 하이퍼파라미터 조합
clf_grid.predict(X_test) # test set 통한 예측
- 최적화 : train set에서 더 나은 성능 위해 모델 조정하는 과정
- 일반화 : train set 이외의 데이터에서 보이는 성능의 정도