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

Байесовская настройка гиперпараметров с Hyperopt

В этом упражнении вы настроите и запустите процесс байесовской оптимизации гиперпараметров с помощью пакета Hyperopt (он уже импортирован как hp). Вы зададите пространство поиска (по аналогии с сеткой для решётчатого поиска), определите целевую функцию и запустите оптимизатор на 20 итерациях.

Пространство поиска нужно настроить со следующими значениями:

  • max_depth — равномерное дискретное распределение quniform (от 2 до 10, с шагом 2)
  • learning_rate — равномерное непрерывное распределение uniform (от 0,001 до 0,9)

Обратите внимание: для целей этого упражнения размер выборки данных, количество итераций Hyperopt и GBM были уменьшены. Если вы хотите опробовать этот метод самостоятельно на своём компьютере, используйте более широкое пространство поиска, больше испытаний, больше фолдов кросс-валидации и больший набор данных — так результат будет нагляднее!

Это упражнение является частью курса

Подбор гиперпараметров в Python

Посмотреть курс

Инструкции к упражнению

  • Задайте словарь space, используя описанное выше пространство поиска.
  • Определите целевую функцию на основе классификатора градиентного бустинга.
  • Запустите алгоритм на 20 итераций (используйте алгоритм по умолчанию, предложенный в слайдах).

Интерактивное практическое упражнение

Попробуйте выполнить это упражнение, дополнив этот пример кода.

# Set up space dictionary with specified hyperparameters
space = {'max_depth': hp.____('max_depth', ____, ____, ____),'learning_rate': hp.____('learning_rate', ____,____)}

# Set up objective function
def objective(params):
    params = {'max_depth': int(params[____]),'learning_rate': params[____]}
    gbm_clf = ____(n_estimators=100, **params) 
    best_score = cross_val_score(gbm_clf, X_train, y_train, scoring='accuracy', cv=2, n_jobs=4).mean()
    loss = 1 - ____
    return ____

# Run the algorithm
best = fmin(fn=____,space=space, max_evals=____, rstate=np.random.default_rng(42), algo=tpe.suggest)
print(____)
Редактировать и запускать код