Двумерный поиск по сетке
Недостаток независимой настройки каждого гиперпараметра заключается в том, что между разными гиперпараметрами может существовать зависимость. Более правильный подход — перебрать все возможные комбинации гиперпараметров. Однако в таких случаях пространство поиска по сетке быстро расширяется. Например, при наличии 2 параметров с 10 возможными значениями каждый получится 100 экспериментальных запусков.
Ваша цель — найти наилучшую пару гиперпараметров max_depth и subsample для модели градиентного бустинга. subsample — это доля наблюдений, используемых для обучения отдельных деревьев.
Вам предоставлена функция get_cv_score(), которая принимает обучающий набор данных и словарь параметров модели в качестве аргументов и возвращает общий показатель RMSE на валидации при трёхкратной перекрёстной проверке.
Это упражнение является частью курса
Победа в соревновании Kaggle на Python
Инструкции к упражнению
- Задайте сетки возможных значений для
max_depthиsubsample. Дляmax_depth: 3, 5 и 7. Дляsubsample: 0,8, 0,9 и 1,0. - Примените функцию
product()из пакетаitertoolsк сеткам гиперпараметров. Она возвращает все возможные комбинации для этих двух сеток. - Передайте каждую пару кандидатов гиперпараметров в словарь параметров модели
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)