Ajustement des hyperparamètres en Python

Ajustement des hyperparamètres en Python

Alex Scriven

Data Scientist

Introduction

 

Pourquoi suivre ce cours ?

  • Nouveaux algorithmes complexes avec de nombreux hyperparamètres
  • L'ajustement peut prendre beaucoup de temps
  • Développe une compréhension au-delà des valeurs par défaut

Vous pourriez être surpris de ce qui se cache sous le capot !

Ajustement des hyperparamètres en Python

L'ensemble de données

 

L'ensemble de données porte sur des défauts de cartes de crédit.

Il contient des variables liées à l'historique financier de certains consommateurs à Taïwan : 30 000 utilisateur·trice·s et 24 attributs.

Notre cible de modélisation est s'ils ont fait défaut sur leur prêt

Il a déjà été prétraité et, à l'occasion, nous prendrons de petits échantillons pour illustrer un concept

Des renseignements supplémentaires se trouvent ici :

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

Ajustement des hyperparamètres en Python

Aperçu des paramètres

 

Qu'est-ce qu'un paramètre ?

  • Éléments du modèle appris durant l'entraînement
  • Vous ne les définissez pas manuellement (impossible, en fait)
  • L'algorithme les découvre pour vous
Ajustement des hyperparamètres en Python

Paramètres en régression logistique

Un simple modèle de régression logistique :

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... ]])
Ajustement des hyperparamètres en Python

Paramètres en régression logistique

Nettoyer les coefficients :

# 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"])
Ajustement des hyperparamètres en Python

Paramètres en régression logistique

 

Maintenant, trier et afficher les trois plus grands coefficients

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

tableau des coefficients

Ajustement des hyperparamètres en Python

Où trouver les paramètres

 

Pour trouver les paramètres, il faut :

  1. Connaître un peu l'algorithme
  2. Consulter la documentation de Scikit-Learn

Les paramètres figurent dans la section « Attributes », et non « parameters » !

Ajustement des hyperparamètres en Python

Paramètres dans Random Forest

Et les algorithmes à base d'arbres ?

La forêt aléatoire n'a pas de coefficients, mais des décisions de nœuds (quelle caractéristique et quelle valeur de coupure).

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

Pour simplifier, nous montrerons le produit final (une image) de l'arbre de décision. N'hésitez pas à explorer vous-même les modules utilisés (graphviz et pydotplus).

Ajustement des hyperparamètres en Python

Schéma de décisions d'un seul arbre Random Forest

Ajustement des hyperparamètres en Python

Extraction des décisions de nœud

Nous pouvons extraire les détails du nœud de gauche, le deuxième à partir du haut :

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

Ajustement des hyperparamètres en Python

Passons à la pratique !

Ajustement des hyperparamètres en Python

Preparing Video For Download...