Recherche informée : du grossier au précis

Ajustement des hyperparamètres en Python

Alex Scriven

Data Scientist

Recherche informée vs non informée

 

Jusqu'ici, nous avons fait une recherche non informée :

Recherche non informée : chaque itération d'ajustement des 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 ?

Ajustement 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é

Ajustement des hyperparamètres en Python

Ajustement du grossier au précis

Une méthode informée de base :

Démarrer large, au hasard, puis affiner la recherche par itérations.

Le processus :

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

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

Ajustement des hyperparamètres en Python

Pourquoi du grossier au précis ?

Du grossier au précis : avantages :

  • Tire parti des recherches en grille et aléatoire.
    • D'abord une recherche large
    • Puis plus en profondeur une fois la bonne zone repérée
  • Un meilleur emploi du temps et du calcul permet d'itérer plus vite

Inutile d'explorer des espaces qui donnent de piètres résultats !

Remarque : l'information porte sur des lots, pas un seul modèle.

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

Visualiser du grossier au précis

Faisons une recherche aléatoire sur 500 combinaisons.

Voici la distribution des scores de justesse :

diagramme de densité de la justesse des modèles

Lesquels étaient les bons modèles ?

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

Visualiser du grossier au précis

Visualisons les valeurs de max_depth vs le score de justesse :

nuage de points profondeur max vs score de justesse

Ajustement des hyperparamètres en Python

Visualiser du grossier au précis

min_samples_leaf meilleur sous 8

nuage de points min samples leaf vs score de justesse

learn_rate moins bon au-dessus de 1.3

nuage de points learn rate vs score de justesse

Ajustement des hyperparamètres en Python

Prochaines étapes

Ce que l'on sait après 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

La suite ? Une autre recherche aléatoire ou en grille avec ces infos !

Remarque : ce n'était qu'une analyse bivariée. Vous pouvez explorer plusieurs hyperparamètres (3, 4 ou plus) sur un seul graphique, mais c'est hors portée de ce cours.

Ajustement des hyperparamètres en Python

Passons à la pratique !

Ajustement des hyperparamètres en Python

Preparing Video For Download...