Hyperparameter tuning in Python

Hyperparameter Tuning in Python

Alex Scriven

Data Scientist

Introductie

 

Waarom deze course volgen?

  • Nieuwe, complexe algoritmen met veel hyperparameters
  • Tuning kost vaak veel tijd
  • Levert inzicht voorbij de standaardinstellingen

Je zult versteld staan van wat er onder de motorkap zit!

Hyperparameter Tuning in Python

De dataset

 

De dataset gaat over creditcardwanbetalingen.

Hij bevat variabelen over de financiële historie van consumenten in Taiwan. Er zijn 30.000 gebruikers en 24 attributen.

Ons doel is te voorspellen of ze in gebreke bleven met hun lening.

Hij is al voorbewerkt; soms nemen we kleinere samples om een concept te tonen.

Meer info over de dataset vind je hier:

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

Hyperparameter Tuning in Python

Overzicht parameters

 

Wat is een parameter?

  • Onderdelen van het model die tijdens het trainen worden geleerd
  • Je stelt deze niet handmatig in (kan ook niet)
  • Het algoritme ontdekt ze voor je
Hyperparameter Tuning in Python

Parameters in Logistic Regression

Een simpele logistieke regressie:

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

Parameters in Logistic Regression

Maak de coëfficiënten netjes:

# 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

Parameters in Logistic Regression

 

Sorteer en print nu de top drie coëfficiënten

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

tabel met coëfficiënten

Hyperparameter Tuning in Python

Waar vind je parameters

 

Om parameters te vinden heb je nodig:

  1. Basiskennis van het algoritme
  2. De Scikit-learn-documentatie raadplegen

Parameters staan onder ‘Attributes’, niet onder ‘Parameters’!

Hyperparameter Tuning in Python

Parameters in Random Forest

Hoe zit het met boomgebaseerde algoritmen?

Random forest heeft geen coëfficiënten, maar knoopbeslissingen (welke feature en welke waarde om op te splitsen).

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

Voor de eenvoud tonen we het eindresultaat (een afbeelding) van de decision tree. Verken de gebruikte packages (graphviz & pydotplus) gerust zelf.

Hyperparameter Tuning in Python

Beslissingsstroomdiagram van één Random Forest-boom

Hyperparameter Tuning in Python

Knoopbeslissingen extraheren

We kunnen details ophalen van de linker, op één na hoogste knoop:

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

"Deze knoop splitste op feature PAY_0, bij een waarde van 1.5"

Hyperparameter Tuning in Python

Laten we oefenen!

Hyperparameter Tuning in Python

Preparing Video For Download...