Recherche informée : du grossier au précis

Optimisation des hyperparamètres en Python

Alex Scriven

Data Scientist

Recherche informée vs non informée

 

Jusqu'ici, tout relevait de la recherche non informée :

Recherche non informée : chaque itération d'ajustement d'hyperparamètres n'« apprend » pas des itérations précédentes.

C'est ce qui permet de paralléliser le travail. Mais est-ce vraiment efficace ?

Optimisation des hyperparamètres en Python

Informée vs non informée

Le processus jusqu'ici :

carte du processus non informé

Une autre approche :

carte du processus informé

Optimisation des hyperparamètres en Python

Réglage du grossier au précis

Une méthodologie informée simple :

Commencez large et aléatoire, puis affinez itérativement la recherche.

Le processus :

  1. Recherche aléatoire
  2. Repérer les zones prometteuses
  3. Recherche en grille sur une zone réduite
  4. Continuer jusqu'à obtenir le score optimal

Vous pouvez remplacer (3) par d'autres recherches aléatoires avant la grille.

Optimisation des hyperparamètres en Python

Pourquoi du grossier au précis ?

Le réglage du grossier au précis a des atouts :

  • Tire parti des forces de la grille et du hasard.
    • Recherche large au départ
    • Recherche plus fine une fois la zone prometteuse repérée
  • Un meilleur usage du temps et du calcul pour itérer plus vite

Inutile d'explorer des espaces peu performants !

Remarque : l'information vient de lots de modèles, pas d'un seul.

Optimisation des hyperparamètres en Python

Mettre en œuvre « du grossier au précis »

Prenons un exemple avec ces plages d'hyperparamètres :

  • max_depth_list entre 1 et 65
  • min_sample_list entre 3 et 17
  • learn_rate_list 150 valeurs entre 0.01 et 150

Combien de modèles possibles ?

combinations_list = [list(x) for x in product(max_depth_list, min_sample_list, learn_rate_list)]
print(len(combinations_list))
134400
Optimisation des hyperparamètres en Python

Visualiser « du grossier au précis »

Lançons une recherche aléatoire sur 500 combinaisons.

Voici la distribution des scores d'exactitude :

tracé de densité de l'exactitude des modèles

Quels modèles sont les meilleurs ?

Optimisation des hyperparamètres en Python

Visualiser « du grossier au précis »

Meilleurs résultats :

max_depth min_samples_leaf learn_rate accuracy
10 7 0.01 96
19 7 0.023355705 96
30 6 1.038389262 93
27 7 1.11852349 91
16 7 0.597651007 91
Optimisation des hyperparamètres en Python

Visualiser « du grossier au précis »

Visualisons max_depth vs le score d'exactitude :

nuage de points profondeur max vs exactitude

Optimisation des hyperparamètres en Python

Visualiser « du grossier au précis »

min_samples_leaf meilleur en dessous de 8

nuage de points min samples leaf vs exactitude

learn_rate moins bon au-dessus de 1.3

nuage de points learn rate vs exactitude

Optimisation des hyperparamètres en Python

Prochaines étapes

Ce que l'on retient de la première itération :

  • max_depth entre 8 et 30
  • learn_rate inférieur à 1.3
  • min_samples_leaf peut-être inférieur à 8

Et maintenant ? Nouvelle recherche aléatoire ou en grille avec ces infos !

Remarque : ce n'était qu'une analyse bivariée. On peut explorer plusieurs hyperparamètres (3, 4 ou plus) sur un même graphique, mais cela dépasse le cadre de ce cours.

Optimisation des hyperparamètres en Python

Passons à la pratique !

Optimisation des hyperparamètres en Python

Preparing Video For Download...