Méthodes informées : algorithmes génétiques

Optimisation des hyperparamètres en Python

Alex Scriven

Data Scientist

Une leçon de génétique

 

Dans l'évolution génétique réelle, le processus est le suivant :

  1. De nombreux individus existent (« descendance »)
  2. Les plus forts survivent et s'apparient
  3. Il y a un « crossover » lorsqu'ils produisent une descendance
  4. Des mutations aléatoires touchent une partie de la descendance
    • Ces mutations donnent parfois un avantage à certains descendants
  5. Revenir à (1) !
Optimisation des hyperparamètres en Python

La génétique en Machine Learning

 

On peut appliquer la même idée au réglage d'hyperparamètres :

  1. Créer plusieurs modèles (avec des hyperparamètres définis)
  2. Sélectionner les meilleurs (selon notre fonction de score)
    • Ce sont ceux qui « survivent »
  3. Générer de nouveaux modèles similaires aux meilleurs
  4. Ajouter de l'aléatoire pour éviter un optimum local
  5. Répéter jusqu'à satisfaction !
Optimisation des hyperparamètres en Python

Pourquoi cela fonctionne bien ?

 

C'est une recherche informée qui présente plusieurs avantages :

  • Elle apprend des itérations précédentes, comme le réglage bayésien d'hyperparamètres.
  • Elle bénéficie en plus d'une part d'« aléatoire »
  • (Le package que nous allons utiliser) gère de nombreux aspects fastidieux du machine learning
Optimisation des hyperparamètres en Python

Présentation de TPOT

 

Une bibliothèque utile pour le réglage génétique des hyperparamètres est TPOT :

Considérez TPOT comme votre assistant Data Science. TPOT est un outil Python d'Automated Machine Learning qui optimise des pipelines de machine learning via la programmation génétique.

Les pipelines incluent non seulement le modèle (ou plusieurs modèles) mais aussi le travail sur les variables et d'autres étapes du processus. En plus, TPOT renvoie le code Python du pipeline !

Optimisation des hyperparamètres en Python

Composants de TPOT

Les principaux arguments d'un classifieur TPOT sont :

  • generations : nombre d'itérations d'entraînement.
  • population_size : nombre de modèles conservés après chaque itération.
  • offspring_size : nombre de modèles produits à chaque itération.
  • mutation_rate : part de pipelines à randomiser.
  • crossover_rate : part de pipelines à croiser à chaque itération.
  • scoring : fonction qui détermine les meilleurs modèles.
  • cv : stratégie de validation croisée.
Optimisation des hyperparamètres en Python

Un exemple simple

Un exemple simple :

from tpot import TPOTClassifier
tpot = TPOTClassifier(generations=3, population_size=5, 
                      verbosity=2, offspring_size=10,
                      scoring='accuracy', cv=5)

tpot.fit(X_train, y_train) print(tpot.score(X_test, y_test))

Nous gardons les valeurs par défaut de mutation_rate et crossover_rate, à laisser telles quelles sans expertise approfondie en programmation génétique.

Remarquez : pas d'hyperparamètres spécifiques à un algorithme ?

Optimisation des hyperparamètres en Python

Passons à la pratique !

Optimisation des hyperparamètres en Python

Preparing Video For Download...