Optimiser un modèle avec Grid Search

La plupart des modèles de machine learning doivent être paramétrés pour donner les meilleurs résultats. Par exemple pour un Random Forest, on doit choisir le nombre d’arbres à créer et le nombre de variables à utiliser à chaque division d’un noeud. Si on paramètre à la main, cela peut vite s’avérer très coûteux en temps (et pas forcément très intéressant) …

C’est là que le Grid search intervient. C’est une méthode d’optimisation (hyperparameter optimization) qui va nous permettre de tester une série de paramètres et de comparer les performances pour en déduire le meilleur paramétrage.

Il existe plusieurs manières de tester les paramètres d’un modèle et le Grid Search est une des méthodes les plus simples. Pour chaque paramètre, on détermine un ensemble de valeurs que l’on souhaite tester. Par exemple, dans le cas d’un Random Forest on pourrait tester :

  • Nombre d’arbres : {100, 150, 200, 250}
  • Nombre de variables sélectionnées : {8, 10, 12, 14, 16}

Le Grid Search croise simplement chacune de ces hypothèses et va créer un modèle pour chaque combinaison de paramètres. Dans notre exemple nous aurons 20 modèles à construire. Vous comprenez donc rapidement qu’il ne faut pas abuser du Grid Search parce qu’il augmente considérablement les temps de calcul.

Grille de grid search machine learning

Jusque là rien de bien compliqué, on a juste créé une grille de paramètres. Voyons maintenant comment tester intelligemment ces 20 modèles sur le même dataset. Nous allons utiliser une méthode de validation croisée : le k-fold.

La méthode consiste à découper le data set en k échantillons. On sélectionne x échantillons pour constituer l’échantillon d’apprentissage. Les k-x échantillons restants permettront d’évaluer la performance du modèle. Pour construire le modèle suivant on sélectionne les échantillons différemment de manière à ne jamais avoir les mêmes échantillons d’apprentissage et de validation.

Découpage d'un grid search en échantillons

Une fois que chaque modèle a pu être entrainé et évalué, il ne reste plus qu’à comparer la performance pour choisir le meilleur modèle.

Dans notre cas par exemple, c’est le modèle utilisant 150 arbres et 10 variables sélectionnées à chaque division d’un noeud qui est le meilleur. La méthode Grid Search nous permet donc d’optimiser notre modèle.

Performance du grid search

Grid Search a aussi ses limites puisque c’est vous qui définissez à l’avance les paramètres que vous voulez tester. Après tout, j’aurais peut être une meilleure performance avec 165 arbres au lieu de 150? On ne le saura pas avec cette méthode. Par contre un de ses avantages c’est que les traitements peuvent être parallèlisés parce qu’ils ne dépendent pas les uns des autres.

Sur le même principe, d’autres méthodes déterminent les paramètres à tester en fonction des résultats précédent et inclus des critères d’arrêt pour éviter des temps de calcul trop longs. Pour en savoir plus sur les autres méthodes qui existent vous pouvez jeter un coup d’oeil sur wikipédia.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *