Налаштування гіперпараметрів у 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

Параметри в Random Forest

А як щодо деревоподібних алгоритмів?

Random forest не має коефіцієнтів, а має рішення у вузлах (яку ознаку і за яким значенням розщепити).

# 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

Блок-схема рішень одного дерева Random Forest

Тюнінг гіперпараметрів у 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))

"Цей вузол розщепив ознаку PAY_0 за значенням 1.5"

Тюнінг гіперпараметрів у Python

Давайте потренуємось!

Тюнінг гіперпараметрів у Python

Preparing Video For Download...