Ladění hyperparametrů v Pythonu

Hyperparameter Tuning in Python

Alex Scriven

Data Scientist

Úvod

 

Proč studovat tento kurz?

  • Nové, složité algoritmy s mnoha hyperparametry
  • Ladění může být časově náročné
  • Prohloubení porozumění nad rámec výchozích nastavení

Můžete být překvapeni, co se skrývá pod kapotou!

Hyperparameter Tuning in Python

Dataset

 

Dataset se týká nesplácení kreditních karet.

Obsahuje proměnné související s finanční historií spotřebitelů na Tchaj-wanu. Má 30 000 uživatelů a 24 atributů.

Cílem modelování je predikce nesplacení úvěru

Data jsou již předzpracována; v některých případech budeme pro demonstraci používat menší vzorky

Další informace o datasetu jsou k dispozici zde:

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

Hyperparameter Tuning in Python

Přehled parametrů

 

Co je parametr?

  • Složky modelu získané během procesu trénování
  • Nenastavujete je ručně (ani to není možné!)
  • Algoritmus je objeví automaticky
Hyperparameter Tuning in Python

Parametry v logistické regresi

Jednoduchý model logistické regrese:

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... ]])
Hyperparameter Tuning in Python

Parametry v logistické regresi

Úprava koeficientů:

# 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"])
Hyperparameter Tuning in Python

Parametry v logistické regresi

 

Nyní seřaďte a vypište tři nejvýznamnější koeficienty

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

tabulka koeficientů

Hyperparameter Tuning in Python

Kde najít parametry

 

Aby bylo možné parametry najít:

  1. Je třeba znát základy daného algoritmu
  2. Konzultujte dokumentaci Scikit-Learn

Parametry jsou uvedeny v sekci 'Attributes', nikoli v sekci 'parameters'!

Hyperparameter Tuning in Python

Parametry v náhodném lese

A co algoritmy na bázi stromů?

Náhodný les nemá koeficienty, ale rozhodnutí uzlů (jaký příznak a jakou hodnotu použít pro rozdělení).

# 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]

Pro jednoduchost zobrazíme výsledný obrázek rozhodovacího stromu. Balíčky použité k jeho vytvoření (graphviz a pydotplus) si můžete prozkoumat sami.

Hyperparameter Tuning in Python

Vývojový diagram rozhodnutí jednoho stromu náhodného lesa

Hyperparameter Tuning in Python

Extrakce rozhodnutí uzlů

Lze získat podrobnosti o levém uzlu druhém shora:

# 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"

Hyperparameter Tuning in Python

Pojďme si procvičit!

Hyperparameter Tuning in Python

Preparing Video For Download...