НачатьНачать бесплатно

Двумерный поиск по сетке

Недостаток независимой настройки каждого гиперпараметра заключается в том, что между разными гиперпараметрами может существовать зависимость. Более правильный подход — перебрать все возможные комбинации гиперпараметров. Однако в таких случаях пространство поиска по сетке быстро расширяется. Например, при наличии 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)
Редактировать и запускать код