하이퍼파라미터 튜닝

scikit-learn으로 배우는 지도 학습

George Boorman

Core Curriculum Manager

하이퍼파라미터 튜닝

  • 릿지/라쏘 회귀: alpha 선택하기

  • KNN: n_neighbors 선택하기

  • 하이퍼파라미터: 모델을 학습시키기 전에 지정하는 매개변수

    • alphan_neighbors
scikit-learn으로 배우는 지도 학습

올바른 하이퍼파라미터 선택하기

  1. 다양한 하이퍼파라미터 값을 여러 번 시도합니다

  2. 모든 값을 별도로 학습합니다

  3. 성능이 얼마나 좋은지 확인합니다

  4. 가장 성능이 좋은 값을 선택합니다

  • 이것을 하이퍼파라미터 튜닝이라고 합니다

  • 테스트 세트에 과적합을 방지하기 위해 교차 검증을 사용하는 것이 필수적입니다

  • 데이터를 분할하고 학습 세트에서 교차 검증을 수행할 수 있습니다

  • 최종 평가를 위해 테스트 세트를 보관합니다

scikit-learn으로 배우는 지도 학습

그리드 서치 교차 검증

grid of potential values of n neighbors from 2 to 11 in increments of 3, and metric options of euclidean or manhattan

scikit-learn으로 배우는 지도 학습

그리드 서치 교차 검증

k-fold cross validation scores for each combination of hyperparameters in the grid

scikit-learn으로 배우는 지도 학습

그리드 서치 교차 검증

5 neighbors and euclidean metric highlight, with score of 0.8748

scikit-learn으로 배우는 지도 학습

scikit-learn의 GridSearchCV

from sklearn.model_selection import GridSearchCV

kf = KFold(n_splits=5, shuffle=True, random_state=42)
param_grid = {"alpha": np.arange(0.0001, 1, 10), "solver": ["sag", "lsqr"]}
ridge = Ridge()
ridge_cv = GridSearchCV(ridge, param_grid, cv=kf)
ridge_cv.fit(X_train, y_train)
print(ridge_cv.best_params_, ridge_cv.best_score_)
{'alpha': 0.0001, 'solver': 'sag'}
0.7529912278705785
scikit-learn으로 배우는 지도 학습

한계와 대안적 접근법

  • 3-겹 교차 검증, 하이퍼파라미터 1개, 총 10개 값 = 30회 학습
  • 10-겹 교차 검증, 하이퍼파라미터 3개, 총 30개 값 = 900회 학습
scikit-learn으로 배우는 지도 학습

RandomizedSearchCV

from sklearn.model_selection import RandomizedSearchCV

kf = KFold(n_splits=5, shuffle=True, random_state=42) param_grid = {'alpha': np.arange(0.0001, 1, 10), "solver": ['sag', 'lsqr']} ridge = Ridge()
ridge_cv = RandomizedSearchCV(ridge, param_grid, cv=kf, n_iter=2) ridge_cv.fit(X_train, y_train)
print(ridge_cv.best_params_, ridge_cv.best_score_)
{'solver': 'sag', 'alpha': 0.0001}
0.7529912278705785
scikit-learn으로 배우는 지도 학습

테스트 세트에서 평가하기

test_score = ridge_cv.score(X_test, y_test)

print(test_score)
0.7564731534089224
scikit-learn으로 배우는 지도 학습

연습해 봅시다!

scikit-learn으로 배우는 지도 학습

Preparing Video For Download...