Обзор гиперпараметров

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

Alex Scriven

Data Scientist

Что такое гиперпараметр

Гиперпараметры:

  • Задаются вами до начала обучения модели (как ручки настройки старого радиоприёмника)
    • Их тоже «настраивают»!
  • Алгоритм не обучает их самостоятельно

Старый радиоприёмник с ручками настройки

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

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

Создайте простой классификатор случайного леса и выведите его на экран:

rf_clf = RandomForestClassifier()
print(rf_clf)

RandomForestClassifier(n_estimators='warn', criterion='gini', max_depth=None, max_features='auto', max_leaf_nodes=None, min_impurity_decrease=0.0, min_impurity_split=None, min_samples_leaf=1, min_samples_split=2, min_weight_fraction_leaf=0.0, n_jobs=None, oob_score=False, random_state=None, verbose=0,bootstrap=True, class_weight=None, warm_start=False)

Подробнее: http://scikit-learn.org

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

Один гиперпараметр

Рассмотрим параметр n_estimators.

Тип данных и значение по умолчанию:

n_estimators : integer, optional (default=10)

Определение:

The number of trees in the forest.

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

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

Задайте гиперпараметры при создании классификатора:

rf_clf = RandomForestClassifier(n_estimators=100, criterion='entropy')
print(rf_clf)
RandomForestClassifier(n_estimators=100, criterion='entropy',
            max_depth=None, max_features='auto', max_leaf_nodes=None,
            min_impurity_decrease=0.0, min_impurity_split=None,
            min_samples_leaf=1, min_samples_split=2,
            min_weight_fraction_leaf=0.0, n_jobs=None,
            oob_score=False, random_state=None, verbose=0,bootstrap=True,
            class_weight=None, warm_start=False)
Подбор гиперпараметров в Python

Гиперпараметры логистической регрессии

Найдём гиперпараметры логистической регрессии:

log_reg_clf = LogisticRegression()

print(log_reg_clf) LogisticRegression(C=1.0, class_weight=None, dual=False, fit_intercept=True, intercept_scaling=1, max_iter=100, multi_class='warn', n_jobs=None, penalty='l2', random_state=None, solver='warn', tol=0.0001, verbose=0, warm_start=False)

У этого алгоритма гиперпараметров меньше!

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

Важность гиперпараметров

 

Одни гиперпараметры важнее других.

Некоторые не влияют на качество модели:

Для классификатора случайного леса:

  • n_jobs
  • random_state
  • verbose

Не все гиперпараметры имеет смысл настраивать

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

Случайный лес: важные гиперпараметры

 

Важные гиперпараметры:

  • n_estimators (высокое значение)
  • max_features (стоит перебрать значения)
  • max_depth и min_sample_leaf (важны для борьбы с переобучением)
  • (возможно) criterion

Помните: это лишь ориентир

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

Как найти важные гиперпараметры?

 

Полезные источники:

  • Научные статьи
  • Блоги и руководства от проверенных источников (например, DataCamp!)
  • Документация модуля Scikit-Learn
  • Практический опыт
Подбор гиперпараметров в Python

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

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

Preparing Video For Download...