RandomizedSearchCV

Валидация моделей на Python

Kasey Jones

Data Scientist

Поиск по сетке гиперпараметров

При выборе значений нескольких гиперпараметров возможные варианты образуют сетку — пространство гиперпараметров.

Валидация моделей на Python

Поиск по сетке: продолжение

Преимущества:

  • Проверяет все возможные комбинации

Недостатки:

  • Каждый новый гиперпараметр экспоненциально увеличивает время обучения
Валидация моделей на Python

Более эффективные методы

Валидация моделей на Python

Случайный поиск

from sklearn.model_selection import RandomizedSearchCV

random_search = RandomizedSearchCV()

Распределение параметров:

param_dist = {"max_depth": [4, 6, 8, None],
              "max_features": range(2, 11),
              "min_samples_split": range(2, 11)}
Валидация моделей на Python

Параметры случайного поиска

Параметры:

  • estimator: используемая модель
  • param_distributions: словарь с гиперпараметрами и возможными значениями
  • n_iter: количество итераций
  • scoring: метод оценки
Валидация моделей на Python

Настройка параметров RandomizedSearchCV

param_dist = {"max_depth": [4, 6, 8, None],
              "max_features": range(2, 11),
              "min_samples_split": range(2, 11)}
from sklearn.ensemble import RandomForestRegressor
from sklearn.metrics import make_scorer, mean_absolute_error

rfr = RandomForestRegressor(n_estimators=20, random_state=1111)
scorer = make_scorer(mean_absolute_error)
Валидация моделей на Python

RandomizedSearchCV: реализация

Настройка случайного поиска:

random_search =\
    RandomizedSearchCV(estimator=rfr,
                       param_distributions=param_dist,
                       n_iter=40,
                       cv=5)
  • Подбор гиперпараметров невозможен без понимания валидации модели
  • Валидация модели позволяет сравнивать несколько моделей и наборов параметров
Валидация моделей на Python

RandomizedSearchCV: реализация

Настройка случайного поиска:

random_search =\
    RandomizedSearchCV(estimator=rfr,
                       param_distributions=param_dist,
                       n_iter=40,
                       cv=5)

Запуск случайного поиска:

random_search.fit(X, y)
Валидация моделей на Python

Давайте потренируемся!

Валидация моделей на Python

Preparing Video For Download...