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

Ajustement 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. Il existe de nombreuses créatures (« progéniture »)
  2. Les plus fortes survivent et s'apparient
  3. Il y a un « croisement » lorsqu'elles forment une progéniture
  4. Des mutations aléatoires touchent une partie de la progéniture
    • Ces mutations donnent parfois un avantage à certains descendants
  5. Revenir à (1) !
Ajustement des hyperparamètres en Python

La génétique en Machine Learning

 

On peut appliquer la même idée à l'ajustement d'hyperparamètres :

  1. Créer des modèles (avec des réglages d'hyperparamètres)
  2. Choisir les meilleurs (selon notre fonction de pointage)
    • Ce sont ceux qui « survivent »
  3. Créer de nouveaux modèles similaires aux meilleurs
  4. Ajouter un peu d'aléatoire pour éviter un optimum local
  5. Répéter jusqu'à satisfaction !
Ajustement des hyperparamètres en Python

Pourquoi cela fonctionne bien ?

 

Il s'agit d'une recherche éclairée qui offre plusieurs avantages :

  • Elle permet d'apprendre des itérations précédentes, comme l'ajustement bayésien des hyperparamètres.
  • Elle ajoute un brin d'« aléatoire ».
  • (La bibliothèque que nous utiliserons) gère bien des tâches fastidieuses du Machine Learning.
Ajustement des hyperparamètres en Python

Présentation de TPOT

 

Une bibliothèque utile pour l'ajustement génétique d'hyperparamètres est TPOT :

Considérez TPOT comme votre assistant en science des données. TPOT est un outil Python d'Automated Machine Learning qui optimise des pipelines de Machine Learning à l'aide de la programmation génétique.

Les pipelines incluent non seulement le modèle (ou plusieurs) mais aussi le traitement des variables et d'autres étapes. Et ils renvoient le code Python du pipeline pour vous !

Ajustement des hyperparamètres en Python

Composants de TPOT

Les arguments clés 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 : proportion de pipelines auxquels appliquer de l'aléatoire.
  • crossover_rate : proportion de pipelines à croiser à chaque itération.
  • scoring : fonction qui détermine les meilleurs modèles.
  • cv : stratégie de validation croisée.
Ajustement 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 garderons les valeurs par défaut de mutation_rate et crossover_rate, car il vaut mieux les laisser ainsi sans connaissances poussées en programmation génétique.

Remarquez : aucun hyperparamètre propre à un algorithme ?

Ajustement des hyperparamètres en Python

Passons à la pratique !

Ajustement des hyperparamètres en Python

Preparing Video For Download...