시작하기무료로 시작하기

2D 그리드 서치

각 하이퍼파라미터를 독립적으로 튜닝할 때의 단점은 서로 다른 하이퍼파라미터 간에 의존성이 존재할 수 있다는 점이에요. 더 나은 접근법은 가능한 모든 하이퍼파라미터 조합을 시도하는 것입니다. 하지만 이런 경우 그리드 탐색 공간이 매우 빠르게 커집니다. 예를 들어, 가능한 값이 10개인 파라미터가 2개면 총 100번의 실험이 필요해요.

이번 과제에서는 Gradient Boosting 모델의 max_depthsubsample의 최적 조합을 찾아보세요. subsample은 개별 트리를 학습할 때 사용할 관측치의 비율입니다.

학습 데이터셋과 모델 파라미터 딕셔너리를 인자로 받아 3-겹 교차 검증에서의 전체 검증 RMSE 점수를 반환하는 get_cv_score() 함수가 제공됩니다.

이 연습은 강의의 일부입니다

Python으로 Kaggle 대회 공략하기

강의 보기

연습 안내

  • 가능한 max_depthsubsample 값에 대한 그리드를 지정하세요. max_depth: 3, 5, 7. subsample: 0.8, 0.9, 1.0.
  • itertools 패키지의 product() 함수를 하이퍼파라미터 그리드에 적용하세요. 이 함수는 두 그리드의 모든 가능한 조합을 반환합니다.
  • 각 하이퍼파라미터 후보 쌍을 모델의 params 딕셔너리에 전달하세요.

실습형 인터랙티브 연습

이 예제를 이 샘플 코드를 완성하여 풀어보세요.

import itertools

# Hyperparameter grids
max_depth_grid = [____]
subsample_grid = [____]
results = {}

# For each couple in the grid
for max_depth_candidate, subsample_candidate in itertools.____(max_depth_grid, subsample_grid):
    params = {'max_depth': ____,
              'subsample': ____}
    validation_score = get_cv_score(train, params)
    # Save the results for each couple
    results[(max_depth_candidate, subsample_candidate)] = validation_score   
print(results)
코드 편집 및 실행