Quel algorithme ML choisir ?

Mar 04 2023
L'une des décisions clés que vous devez prendre lors de la résolution d'un problème de science des données est l'algorithme d'apprentissage automatique à utiliser. Il existe des centaines d'algorithmes d'apprentissage automatique parmi lesquels choisir, chacun avec ses propres avantages et inconvénients.

L'une des décisions clés que vous devez prendre lors de la résolution d'un problème de science des données est l'algorithme d'apprentissage automatique à utiliser.

Il existe des centaines d'algorithmes d'apprentissage automatique parmi lesquels choisir, chacun avec ses propres avantages et inconvénients. Certains algorithmes peuvent fonctionner mieux que d'autres sur des types de problèmes spécifiques ou sur des ensembles de données spécifiques.

Le théorème "No Free Lunch" (NFL) stipule qu'il n'y a pas d'algorithme qui fonctionne le mieux pour chaque problème, ou en d'autres termes, tous les algorithmes ont les mêmes performances lorsque leurs performances sont moyennées sur tous les problèmes possibles.

Différents modèles d'apprentissage automatique

Dans cet article, nous discuterons des principaux points à prendre en compte lors du choix d'un modèle pour votre problème et de la manière de comparer différents algorithmes d'apprentissage automatique.

Aspects clés de l'algorithme

La liste suivante contient 10 questions que vous pouvez vous poser lorsque vous envisagez un algorithme d'apprentissage automatique spécifique :

  1. Quel type de problèmes l'algorithme peut-il résoudre ? L'algorithme peut-il résoudre uniquement les problèmes de régression ou de classification, ou peut-il résoudre les deux ? Peut-il gérer des problèmes multi-classes/multi-étiquettes ou uniquement des problèmes de classification binaire ?
  2. L'algorithme a-t-il des hypothèses sur l'ensemble de données ? Par exemple, certains algorithmes supposent que les données sont linéairement séparables (par exemple, perceptron ou SVM linéaire), tandis que d'autres supposent que les données sont normalement distribuées (par exemple, modèles de mélange gaussien).
  3. Existe-t-il des garanties sur les performances de l'algorithme ? Par exemple, si l'algorithme essaie de résoudre un problème d'optimisation (comme dans la régression logistique ou les réseaux de neurones), est-il garanti de trouver l'optimum global ou seulement une solution optimale locale ?
  4. Quelle quantité de données est nécessaire pour entraîner efficacement le modèle ? Certains algorithmes, comme les réseaux de neurones profonds, sont plus sensibles aux données que d'autres.
  5. L'algorithme a-t-il tendance à sur-ajuster ? Si oui, l'algorithme fournit-il des moyens de gérer le surajustement ?
  6. Quels sont les besoins en temps d'exécution et en mémoire de l'algorithme, à la fois pendant la formation et la période de prédiction ?
  7. Quelles étapes de prétraitement des données sont nécessaires pour préparer les données pour l'algorithme ?
  8. Combien d'hyperparamètres l'algorithme a-t-il ? Les algorithmes qui ont beaucoup d'hyperparamètres prennent plus de temps pour s'entraîner et s'ajuster.
  9. Les résultats de l'algorithme peuvent-ils être facilement interprétés ? Dans de nombreux domaines problématiques (comme le diagnostic médical), nous aimerions pouvoir expliquer les prédictions du modèle en termes humains. Certains modèles peuvent être facilement visualisés (comme les arbres de décision), tandis que d'autres se comportent davantage comme une boîte noire (par exemple, les réseaux de neurones).
  10. L'algorithme prend-il en charge l'apprentissage en ligne (incrémentiel), c'est-à-dire, pouvons-nous l'entraîner sur des échantillons supplémentaires sans reconstruire le modèle à partir de zéro ?

Par exemple, prenons deux des algorithmes les plus populaires : les arbres de décision et les réseaux de neurones, et comparons-les selon les critères ci-dessus.

Arbres de décision

  1. Les arbres de décision peuvent gérer à la fois les problèmes de classification et de régression. Ils peuvent également gérer facilement les problèmes multi-classes et multi-étiquettes.
  2. Les algorithmes d'arbre de décision n'ont pas d'hypothèses spécifiques sur l'ensemble de données.
  3. Un arbre de décision est construit à l'aide d'un algorithme glouton, qui n'est pas garanti pour trouver l'arbre optimal (c'est-à-dire l'arbre qui minimise le nombre de tests nécessaires pour classer correctement tous les échantillons d'apprentissage). Cependant, un arbre de décision peut atteindre une précision de 100 % sur l'ensemble d'apprentissage si nous continuons à étendre ses nœuds jusqu'à ce que tous les échantillons des nœuds feuilles appartiennent à la même classe. De tels arbres ne sont généralement pas de bons prédicteurs, car ils s'adaptent trop au bruit dans l'ensemble d'apprentissage.
  4. Les arbres de décision peuvent bien fonctionner même sur des ensembles de données de petite ou moyenne taille.
  5. Les arbres de décision peuvent facilement sur-adapter. Cependant, nous pouvons réduire le surajustement en utilisant l'élagage des arbres. Nous pouvons également utiliser des méthodes d'ensemble telles que les forêts aléatoires qui combinent la sortie de plusieurs arbres de décision. Ces méthodes souffrent moins de surajustement.
  6. Le temps de construction d'un arbre de décision est O ( n ² p ), où n est le nombre d'échantillons d'apprentissage et p est le nombre de caractéristiques. Le temps de prédiction dans les arbres de décision dépend de la hauteur de l'arbre, qui est généralement logarithmique en n , car la plupart des arbres de décision sont assez équilibrés.
  7. Les arbres de décision ne nécessitent aucun prétraitement des données. Ils peuvent gérer de manière transparente différents types de fonctionnalités, y compris les fonctionnalités numériques et catégorielles. Ils ne nécessitent pas non plus de normalisation des données.
  8. Les arbres de décision ont plusieurs hyperparamètres clés qui doivent être réglés, en particulier si vous utilisez l'élagage, tels que la profondeur maximale de l'arbre et la mesure d'impureté à utiliser pour décider comment diviser les nœuds.
  9. Les arbres de décision sont simples à comprendre et à interpréter, et on peut facilement les visualiser (sauf si l'arbre est très grand).
  10. Les arbres de décision ne peuvent pas être facilement modifiés pour prendre en compte de nouveaux échantillons d'apprentissage, car de petits changements dans l'ensemble de données peuvent entraîner de grands changements dans la topologie de l'arbre.
  1. Les réseaux de neurones sont l'un des modèles d'apprentissage automatique les plus généraux et flexibles qui existent. Ils peuvent résoudre presque tous les types de problèmes, y compris la classification, la régression, l'analyse de séries chronologiques, la génération automatique de contenu, etc.
  2. Les réseaux de neurones n'ont pas d'hypothèses sur l'ensemble de données, mais les données doivent être normalisées.
  3. Les réseaux de neurones sont formés à l'aide de la descente de gradient, ils ne peuvent donc trouver qu'une solution optimale locale. Cependant, diverses techniques peuvent être utilisées pour éviter de rester coincé dans les minima locaux, tels que le momentum et les taux d'apprentissage adaptatifs.
  4. Les réseaux de neurones profonds nécessitent beaucoup de données pour s'entraîner, de l'ordre de millions de points d'échantillonnage. En général, plus le réseau est grand (plus il a de couches et de neurones), nous avons besoin de plus de données pour le former.
  5. Les réseaux trop grands peuvent mémoriser tous les échantillons d'apprentissage et ne pas bien généraliser. Pour de nombreux problèmes, vous pouvez commencer à partir d'un petit réseau (par exemple, avec seulement une ou deux couches cachées) et augmenter progressivement sa taille jusqu'à ce que vous commenciez à surajuster l'ensemble d'apprentissage.
  6. Le temps d'apprentissage d'un réseau de neurones dépend de nombreux facteurs (la taille du réseau, le nombre d'itérations de descente de gradient nécessaires pour l'entraîner, etc.). Cependant, le temps de prédiction est très rapide car nous n'avons besoin que d'un seul passage sur le réseau pour obtenir l'étiquette.
  7. Les réseaux de neurones exigent que toutes les caractéristiques soient numériques et normalisées.
  8. Les réseaux de neurones ont de nombreux hyperparamètres qui doivent être réglés, tels que le nombre de couches, le nombre de neurones dans chaque couche, la fonction d'activation à utiliser, le taux d'apprentissage, etc.
  9. Les prédictions des réseaux de neurones sont difficiles à interpréter car elles sont basées sur le calcul d'un grand nombre de neurones, dont chacun n'a qu'une petite contribution à la prédiction finale.
  10. Les réseaux de neurones peuvent facilement s'adapter pour inclure des échantillons d'apprentissage supplémentaires, car ils utilisent un algorithme d'apprentissage incrémental (descente de gradient stochastique).

Le tableau suivant compare les temps d'apprentissage et de prédiction pour certains algorithmes populaires ( n est le nombre d'échantillons d'apprentissage et p est le nombre de caractéristiques).

Algorithmes les plus réussis dans les compétitions Kaggle

Selon une enquête réalisée en 2016, les algorithmes les plus fréquemment utilisés par les gagnants du concours Kaggle étaient les algorithmes de gradient boosting (XGBoost) et les réseaux de neurones (voir cet article ).

Parmi les 29 gagnants du concours Kaggle en 2015, 8 d'entre eux ont utilisé XGBoost, 9 ont utilisé des réseaux de neurones profonds et 11 ont utilisé un ensemble des deux.

XGBoost était principalement utilisé dans les problèmes qui traitaient de données structurées (par exemple, des tables relationnelles), où les réseaux de neurones réussissaient mieux à gérer des problèmes non structurés (par exemple, des problèmes liés à l'image, à la voix ou au texte).

Il serait intéressant de vérifier si c'est toujours le cas aujourd'hui ou si les tendances ont changé (quelqu'un est-il prêt à relever le défi ?)

Merci d'avoir lu!