ПочатиПочніть безкоштовно

Двовимірний 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)
Редагувати та запускати код