Guide pratique pour choisir un algorithme ML.NET

Pour chaque tâche ML.NET, il existe plusieurs algorithmes d’entraînement possibles. Le choix de l’algorithme dépend du problème que vous essayez de résoudre, des caractéristiques de vos données ainsi que des ressources de calcul et de stockage à votre disposition. Il est important de savoir que l’entraînement d’un modèle Machine Learning est un processus itératif. Vous devrez peut-être essayer plusieurs algorithmes avant de trouver celui qui marche le mieux.

Les algorithmes fonctionnent avec des caractéristiques. Les caractéristiques sont des valeurs numériques calculées à partir de vos données d’entrée. Elles constituent des entrées optimales pour les algorithmes de machine learning. Vous transformez vos données d’entrée brutes en caractéristiques par le biais d’une ou de plusieurs transformations de données. Par exemple, les données texte sont transformées en un certain nombre de mots et de combinaisons de mots. Une fois que les caractéristiques ont été extraites d’un type de données brutes à l’aide de transformations de données, elles sont dites caractérisées. Par exemple, du texte caractérisé ou des données image caractérisées.

Entraîneur = algorithme + tâche

Un algorithme est une opération mathématique qui s’exécute pour produire un modèle. Différents algorithmes produisent des modèles avec des caractéristiques différentes.

Avec ML.NET, il est possible d’appliquer le même algorithme à différentes tâches. Par exemple, l’algorithme SDCA (Stochastic Dual Coordinated Ascent) peut être utilisé pour la classification binaire, la classification multiclasse et la régression. Le changement se trouve dans l’interprétation de la sortie de l’algorithme par rapport à la tâche.

Pour chaque combinaison algorithme/tâche, ML.NET fournit un composant qui exécute l’algorithme d’entraînement et fait l’interprétation. Ces composants sont appelés des « entraîneurs ». Par exemple, SdcaRegressionTrainer utilise l’algorithme StochasticDualCoordinatedAscent appliqué à la tâche de régression.

Algorithmes linéaires

Les algorithmes linéaires produisent un modèle qui calcule des scores à partir d’une combinaison linéaire des données d’entrée et d’un ensemble de pondérations. Les pondérations sont des paramètres du modèle qui sont évalués au moment de l’entraînement.

Les algorithmes linéaires fonctionnent bien avec des caractéristiques séparables de façon linéaire.

Préalablement à l’entraînement avec un algorithme linéaire, les caractéristiques doivent être normalisées. Ceci évite qu’une caractéristique ait plus d’influence que les autres sur le résultat.

En général, les algorithmes linéaires sont scalables, rapides, et peu coûteux pour l’entraînement et la prédiction. Ils s’adaptent selon le nombre de caractéristiques et approximativement selon la taille du jeu de données d’entraînement.

Les algorithmes linéaires font plusieurs passages sur les données d’entraînement. Si votre jeu de données tient en mémoire, l’ajout d’un point de contrôle du cache à votre pipeline ML.NET avant d’ajouter l’entraîneur va rendre l’exécution de l’entraînement plus rapide.

Averaged perceptron

Idéal pour la classification des textes.

Formateur Tâche Exportable vers ONNX
AveragedPerceptronTrainer Classification binaire Oui

Stochastic Dual coordinated ascent

Une optimisation n’est pas nécessaire pour obtenir de bonnes performances par défaut.

Formateur Tâche Exportable vers ONNX
SdcaLogisticRegressionBinaryTrainer Classification binaire Oui
SdcaNonCalibratedBinaryTrainer Classification binaire Oui
SdcaMaximumEntropyMulticlassTrainer Classification multiclasse Oui
SdcaNonCalibratedMulticlassTrainer Classification multiclasse Oui
SdcaRegressionTrainer régression ; Oui

L-BFGS

À utiliser quand il y a beaucoup de caractéristiques. Produit des statistiques sur l’entraînement par régression logistique, mais est moins scalable que l’algorithme AveragedPerceptronTrainer.

Formateur Tâche Exportable vers ONNX
LbfgsLogisticRegressionBinaryTrainer Classification binaire Oui
LbfgsMaximumEntropyMulticlassTrainer Classification multiclasse Oui
LbfgsPoissonRegressionTrainer régression ; Oui

Symbolic stochastic gradient descent

Entraîneur de classification binaire linéaire le plus rapide et le plus précis. S’adapte bien au nombre de processeurs.

Formateur Tâche Exportable vers ONNX
SymbolicSgdLogisticRegressionBinaryTrainer Classification binaire Oui

Descente de gradient en ligne

Implémente la descente de gradient stochastique standard (pas par lots), avec un choix de fonctions de perte et une option permettant de mettre à jour le vecteur de pondération en utilisant la moyenne des vecteurs observés au fil du temps.

Formateur Tâche Exportable vers ONNX
OnlineGradientDescentTrainer régression ; Oui

Algorithmes d’arbre de décision

Les algorithmes d’arbre de décision créent un modèle qui contient une série de décisions : en réalité, c’est un organigramme de valeurs de données.

Les caractéristiques n’ont pas besoin d’être séparables de façon linéaire pour utiliser ce type d’algorithme. Elles n’ont pas non plus besoin d’être normalisées, car chaque valeur dans le vecteur de caractéristiques est utilisée indépendamment dans le processus de décision.

Les algorithmes d’arbre de décision sont généralement très précis.

À l’exception des modèles additifs généralisés, les modèles d’arbre sont parfois moins explicables quand le nombre de caractéristiques est élevé.

Les algorithmes d’arbre de décision consomment davantage de ressources et ne s’adaptent pas aussi bien que les algorithmes linéaires. Ils donnent de bons résultats sur les jeux de données tenant en mémoire.

Les arbres de décision boostés sont un ensemble de petits arbres où chaque arbre évalue les données d’entrée, puis passe le score à l’arbre suivant pour produire un meilleur score, et ainsi de suite. Chaque arbre de l’ensemble représente une amélioration par rapport à l’arbre précédent.

Light gradient boosted machine

Entraîneur d’arbre de classification binaire le plus rapide et le plus précis. Très optimisable.

Formateur Tâche Exportable vers ONNX
LightGbmBinaryTrainer Classification binaire Oui
LightGbmMulticlassTrainer Classification multiclasse Oui
LightGbmRegressionTrainer régression ; Oui
LightGbmRankingTrainer Classement Non

Fast tree

À utiliser pour les données d’image caractérisées. Résilient aux données non équilibrées. Très optimisable.

Formateur Tâche Exportable vers ONNX
FastTreeBinaryTrainer Classification binaire Oui
FastTreeRegressionTrainer régression ; Oui
FastTreeTweedieTrainer régression ; Oui
FastTreeRankingTrainer Classement Non

Fast forest

Fonctionne bien avec les données où du bruit est présent.

Formateur Tâche Exportable vers ONNX
FastForestBinaryTrainer Classification binaire Oui
FastForestRegressionTrainer régression ; Oui

GAM (modèle additif généralisé)

Idéal pour les problèmes où les algorithmes à base d’arborescence donnent de bons résultats, mais pour lesquels l’explicabilité est une priorité.

Formateur Tâche Exportable vers ONNX
GamBinaryTrainer Classification binaire Non
GamRegressionTrainer régression ; Non

Factorisation de matrice

Factorisation de matrice

Utilisé pour le filtrage collaboratif dans la recommandation.

Formateur Tâche Exportable vers ONNX
MatrixFactorizationTrainer Recommandation Non

Machines de factorisation prenant en charge les champs

Idéal pour les données catégorielles éparses, avec de grands ensembles de données.

Formateur Tâche Exportable vers ONNX
FieldAwareFactorizationMachineTrainer Classification binaire Non

Méta-algorithmes

Ces entraîneurs créent un entraîneur multiclasse à partir d’un entraîneur binaire. À utiliser avec AveragedPerceptronTrainer, LbfgsLogisticRegressionBinaryTrainer, SymbolicSgdLogisticRegressionBinaryTrainer, LightGbmBinaryTrainer, FastTreeBinaryTrainer, FastForestBinaryTrainer, GamBinaryTrainer.

One versus all

Ce classifieur multiclasse entraîne un seul classifieur binaire par classe, ce qui distingue cette classe de toutes les autres classes. Adaptation limitée par le nombre de classes à catégoriser.

Formateur Tâche Exportable vers ONNX
OneVersusAllTrainer Classification multiclasse Oui

Pairwise coupling

Ce classifieur multiclasse entraîne un algorithme de classification binaire sur chaque paire de classes. Adaptation limitée selon le nombre de classes, du fait que chaque combinaison de deux classes doit être entraînée.

Formateur Tâche Exportable vers ONNX
PairwiseCouplingTrainer Classification multiclasse Non

K-Means

Utilisé pour le clustering.

Formateur Tâche Exportable vers ONNX
KMeansTrainer Clustering Oui

Principal Component Analysis (PCA)

Utilisé pour la détection d’anomalie.

Formateur Tâche Exportable vers ONNX
RandomizedPcaTrainer Détection des anomalies Non

Naive Bayes

Utilisez cet algorithme de classification multiclasse quand les caractéristiques sont indépendantes et que l’ensemble de données d’entraînement est de petite taille.

Formateur Tâche Exportable vers ONNX
NaiveBayesMulticlassTrainer Classification multiclasse Oui

Prior Trainer

Utilisez cet algorithme de classification binaire pour évaluer les performances d’autres entraîneurs. Pour être efficace, les métriques des autres entraîneurs doivent être meilleures que l’entraîneur précédent.

Formateur Tâche Exportable vers ONNX
PriorTrainer Classification binaire Oui

Machines à vecteurs de support

Les SVM (Support Vector Machine) sont une classe extrêmement répandue et bien documentée de modèles d’apprentissage supervisé, qui peuvent être utilisés pour les tâches de classification linéaires et non linéaires.

Les études récentes se sont concentrées sur des moyens d'optimiser ces modèles pour les adapter de manière efficace à des jeux d'apprentissage plus volumineux.

SVM linéaire

Prédit une cible en utilisant un modèle de classification binaire linéaire entraîné sur des données booléennes étiquetées. Alterne entre les étapes de descente de gradient stochastique et les étapes de projection.

Formateur Tâche Exportable vers ONNX
LinearSvmTrainer Classification binaire Oui

SVM profonde locale

Prédit une cible en utilisant un modèle de classification binaire non linéaire. Réduit le coût du temps de prédiction ; le coût de prédiction augmente de façon logarithmique avec la taille du jeu d’entraînement et non pas linéairement, avec une perte tolérable de justesse de la classification.

Formateur Tâche Exportable vers ONNX
LdSvmTrainer Classification binaire Oui

Moindres carrés ordinaire

La méthode des moindres carrés ordinaire (OLS) est une des techniques les plus couramment utilisées en matière de régression linéaire.

La méthode des moindres carrés ordinaires fait référence à la fonction de perte, qui quantifie une erreur en calculant la somme du carré de l’écart entre la valeur réelle et la ligne prédite, puis ajuste le modèle en réduisant au minimum l’erreur quadratique. Cette méthode suppose une forte relation linéaire entre les entrées et la variable dépendante.

Formateur Tâche Exportable vers ONNX
OlsTrainer régression ; Oui