2D 그리드 서치
각 하이퍼파라미터를 독립적으로 튜닝할 때의 단점은 서로 다른 하이퍼파라미터 간에 의존성이 존재할 수 있다는 점이에요. 더 나은 접근법은 가능한 모든 하이퍼파라미터 조합을 시도하는 것입니다. 하지만 이런 경우 그리드 탐색 공간이 매우 빠르게 커집니다. 예를 들어, 가능한 값이 10개인 파라미터가 2개면 총 100번의 실험이 필요해요.
이번 과제에서는 Gradient Boosting 모델의 max_depth와 subsample의 최적 조합을 찾아보세요. subsample은 개별 트리를 학습할 때 사용할 관측치의 비율입니다.
학습 데이터셋과 모델 파라미터 딕셔너리를 인자로 받아 3-겹 교차 검증에서의 전체 검증 RMSE 점수를 반환하는 get_cv_score() 함수가 제공됩니다.
이 연습은 강의의 일부입니다
Python으로 Kaggle 대회 공략하기
연습 안내
- 가능한
max_depth와subsample값에 대한 그리드를 지정하세요.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)