Двовимірний grid search
Недолік налаштування кожного гіперпараметра окремо — це можлива залежність між різними гіперпараметрами. Кращий підхід — спробувати всі можливі комбінації гіперпараметрів. Однак у таких випадках простір перебору для grid search швидко зростає. Наприклад, якщо у нас є 2 параметри з 10 можливими значеннями кожен, це дасть 100 запусків експериментів.
Ваше завдання — знайти найкращу пару гіперпараметрів max_depth і subsample для моделі градієнтного бустингу. subsample — це частка спостережень, що використовуються для навчання окремих дерев.
Вам надано функцію get_cv_score(), яка приймає тренувальний набір даних і словник параметрів моделі як аргументи та повертає загальний валідаційний показник RMSE за 3-блочною крос-валідацією.
Ця вправа є частиною курсу
Як перемагати в змаганнях 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)