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 |