Hyperparameter tuning i Python

Hyperparameterjustering i Python

Alex Scriven

Data Scientist

Introduktion

 

Varför läsa den här kursen?

  • Nya, komplexa algoritmer med många hyperparametrar
  • Tuning kan ta lång tid
  • Ger djupare förståelse bortom standardinställningarna

Du kanske förvånas av vad som döljer sig under ytan!

Hyperparameterjustering i Python

Datamängden

 

Datamängden handlar om kreditkortsdefaulter.

Den innehåller variabler kopplade till den finansiella historiken för konsumenter i Taiwan. Den har 30 000 användare och 24 attribut.

Vårt modelleringsmål är om de defaultade på sitt lån.

Datamängden är redan förbehandlad och vi kommer ibland använda mindre urval för att demonstrera ett begrepp.

Mer information om datamängden finns här:

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

Hyperparameterjustering i Python

Parametrar – en översikt

 

Vad är en parameter?

  • Modellens komponenter som lärs in under modelleringsprocessen
  • Du sätter inte dessa manuellt (det går faktiskt inte!)
  • Algoritmen hittar dem åt dig
Hyperparameterjustering i Python

Parametrar i logistisk regression

En enkel logistisk regressionsmodell:

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... ]])
Hyperparameterjustering i Python

Parametrar i logistisk regression

Städa upp koefficienterna:

# 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"])
Hyperparameterjustering i Python

Parametrar i logistisk regression

 

Sortera och skriv ut de tre högsta koefficienterna

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

koefficientsbell

Hyperparameterjustering i Python

Var hittar du parametrar?

 

För att hitta parametrar behöver du:

  1. Ha viss kännedom om algoritmen
  2. Konsultera Scikit-learn-dokumentationen

Parametrar finns under avsnittet "Attributes", inte under "parameters"!

Hyperparameterjustering i Python

Parametrar i random forest

Vad gäller trädbaserade algoritmer?

Random forest har inga koefficienter, utan nodbeslut – vilket särdrag och vilket värde att dela på.

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

För enkelhetens skull visar vi slutresultatet (en bild) av beslutsträdet. Utforska gärna paketet som används (graphviz & pydotplus) på egen hand.

Hyperparameterjustering i Python

Flödesdiagram över ett enskilt träd i random forest

Hyperparameterjustering i Python

Extrahera nodbeslut

Vi kan hämta detaljer om den vänstra noden, näst högst upp:

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

Hyperparameterjustering i Python

Nu kör vi en övning!

Hyperparameterjustering i Python

Preparing Video For Download...