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

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

Alex Scriven

Data Scientist

Введение

 

Зачем изучать этот курс?

  • Современные алгоритмы имеют множество гиперпараметров
  • Настройка может занимать много времени
  • Курс даёт глубокое понимание работы алгоритмов за пределами настроек по умолчанию

Возможно, вас удивит то, что скрыто внутри!

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

Набор данных

 

Набор данных посвящён дефолтам по кредитным картам.

Он содержит переменные, связанные с финансовой историей потребителей на Тайване: 30 000 пользователей и 24 признака.

Целевая переменная — факт дефолта по кредиту.

Данные уже предобработаны; для демонстрации отдельных концепций будут использоваться уменьшенные выборки.

Дополнительная информация о наборе данных доступна здесь:

https://archive.ics.uci.edu/ml/datasets/default+of+credit+card+clients

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

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

 

Что такое параметр?

  • Компоненты модели, которые определяются в процессе обучения
  • Вы не задаёте их вручную (и не можете этого сделать!)
  • Алгоритм находит их самостоятельно
Подбор гиперпараметров в Python

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

Простая модель логистической регрессии:

log_reg_clf = LogisticRegression() 
log_reg_clf.fit(X_train, y_train)

print(log_reg_clf.coef_)
array([[-2.88651273e-06, -8.23168511e-03,  7.50857018e-04,
         3.94375060e-04,  3.79423562e-04,  4.34612046e-04,
         4.37561467e-04,  4.12107102e-04, -6.41089138e-06,
        -4.39364494e-06,  cont... ]])
Подбор гиперпараметров в Python

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

Упорядочиваем коэффициенты:

# Get the original variable names
original_variables = list(X_train.columns)

# Zip together the names and coefficients zipped_together = list(zip(original_variables, log_reg_clf.coef_[0])) coefs = [list(x) for x in zipped_together]
# Put into a DataFrame with column labels coefs = pd.DataFrame(coefs, columns=["Variable", "Coefficient"])
Подбор гиперпараметров в Python

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

 

Сортируем и выводим три наибольших коэффициента

coefs.sort_values(by=["Coefficient"], axis=0, inplace=True, ascending=False)
print(coefs.head(3))

таблица коэффициентов

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

Где найти параметры

 

Чтобы найти параметры, нужно:

  1. Иметь базовое представление об алгоритме
  2. Обратиться к документации Scikit-Learn

Параметры находятся в разделе «Attributes», а не в разделе «Parameters»!

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

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

Что насчёт алгоритмов на основе деревьев?

Случайный лес не имеет коэффициентов — вместо них используются решения в узлах: по какому признаку и при каком значении выполнять разбиение.

# A simple random forest estimator
rf_clf = RandomForestClassifier(max_depth=2)
rf_clf.fit(X_train, y_train)

# Pull out one tree from the forest chosen_tree = rf_clf.estimators_[7]

Для наглядности мы покажем готовое изображение дерева решений. При желании вы можете самостоятельно изучить используемые пакеты (graphviz и pydotplus).

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

Диаграмма решений одного дерева случайного леса

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

Извлечение решений узлов

Извлечём данные из левого узла второго уровня:

# Get the column it split on
split_column = chosen_tree.tree_.feature[1]
split_column_name = X_train.columns[split_column]

# Get the level it split on split_value = chosen_tree.tree_.threshold[1]
print("This node split on feature {}, at a value of {}" .format(split_column_name, split_value))

«This node split on feature PAY_0, at a value of 1.5»

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

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

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

Preparing Video For Download...