Tâches de Machine Learning dans ML.NET
Une tâche de machine learning est un type de prédiction ou d’inférence basée sur les deux :
- Le problème ou la question
- Données disponibles
Par exemple, la tâche de classification affecte des données à des catégories et les données des groupes de tâches de clustering en fonction de la similarité.
Les tâches De Machine Learning s’appuient sur des modèles dans les données plutôt que d’être programmés explicitement.
Cet article décrit les différentes tâches de Machine Learning disponibles dans ML.NET et certains cas d’usage courants.
Une fois que vous avez décidé quelle tâche fonctionne pour votre scénario, vous devez choisir le meilleur algorithme pour entraîner votre modèle. Les algorithmes disponibles sont répertoriés dans la section pour chaque tâche.
Tâches de classification
Classification binaire
La classification binaire est une tâche de machine learning supervisée utilisée pour prédire à laquelle d’exactement deux classes (catégories) appartiendra une instance de données. L’entrée d’un algorithme de classification est un ensemble d’exemples étiquetés, où chaque étiquette est un entier de 0 ou 1. La sortie d’un algorithme de classification binaire est un classifieur, que vous pouvez utiliser pour prédire la classe de nouvelles instances non étiquetées. Voici quelques exemples de scénarios de classification binaire :
- Déterminer si des commentaires Twitter sont positifs ou négatifs.
- Diagnostiquer si un patient a une certaine maladie.
- Prendre une décision de marquer un e-mail comme courrier indésirable.
- Déterminer si une photo contient un élément particulier, tel qu’un chien ou un fruit.
Pour plus d’informations, consultez l’article classification binaire sur Wikipédia.
Formateurs de classification binaire
Vous pouvez entraîner un modèle de classification binaire à l’aide des algorithmes suivants :
- AveragedPerceptronTrainer
- SdcaLogisticRegressionBinaryTrainer
- SdcaNonCalibratedBinaryTrainer
- SymbolicSgdLogisticRegressionBinaryTrainer
- LbfgsLogisticRegressionBinaryTrainer
- LightGbmBinaryTrainer
- FastTreeBinaryTrainer
- FastForestBinaryTrainer
- GamBinaryTrainer
- FieldAwareFactorizationMachineTrainer
- PriorTrainer
- LinearSvmTrainer
Entrées et sorties de classification binaire
Pour obtenir de meilleurs résultats avec la classification binaire, les données d’entraînement doivent être équilibrées (autrement dit, nombre égal de données d’entraînement positives et négatives). Les valeurs manquantes doivent être traitées avant l’entraînement.
Les données de la colonne d’étiquettes d’entrée doivent être Boolean. Les données de la colonne des caractéristiques d’entrée doivent être un vecteur de taille fixe de Single.
Ces formateurs génèrent les colonnes suivantes :
Nom de la colonne de sortie | Type de colonne | Description |
---|---|---|
Score |
Single | Score brut calculé par le modèle. |
PredictedLabel |
Boolean | Étiquette prédite, en fonction du signe du score. Un score négatif est mappé à false et un score positif est mappé à true . |
Classification multiclasse
La classification multiclasse est une tâche de machine learning supervisée utilisée pour classifier une instance de données en une des trois classes ou plus (catégories). L’entrée d’un algorithme de classification est un ensemble d’exemples étiquetés. Chaque étiquette commence normalement en tant que texte. Il est ensuite exécuté via TermTransform, qui le convertit en type Clé (numérique). La sortie d’un algorithme de classification est un classifieur, que vous pouvez utiliser pour prédire la classe de nouvelles instances non étiquetées. Voici quelques exemples de scénarios de classification multiclasse :
- Catégorisation des vols comme « précoce », « à l’heure » ou « en retard ».
- Comprendre les critiques de films comme « positive », « neutre » ou « négative ».
- Catégorisation des avis d’hôtel comme « emplacement », « prix » ou « propreté », par exemple.
Pour plus d’informations, consultez l’article classification multiclasse sur Wikipédia.
Remarque
OvR (One vs rest, Un contre le reste) met à niveau les learners de classification binaire pour agir sur les jeux de données multiclasses.
Entraîneurs de classification multiclasse
Vous pouvez entraîner un modèle de classification multiclasse à l’aide des algorithmes d’entraînement suivants :
- TextClassificationTrainer
- LightGbmMulticlassTrainer
- SdcaMaximumEntropyMulticlassTrainer
- SdcaNonCalibratedMulticlassTrainer
- LbfgsMaximumEntropyMulticlassTrainer
- NaiveBayesMulticlassTrainer
- OneVersusAllTrainer
- PairwiseCouplingTrainer
Entrées et sorties de classification multiclasse
Les données de la colonne d’étiquettes d’entrée doivent être de type clé. La colonne de caractéristiques doit être un vecteur de taille fixe de Single.
Cet entraîneur génère les résultats suivants :
Nom de sortie | Type | Description |
---|---|---|
Score |
Vecteur de Single | Scores de toutes les classes. Une valeur supérieure signifie une probabilité plus élevée de tomber dans la classe associée. Si le i -th élément a la plus grande valeur, l’index d’étiquette prédit est i . Notez que i est un index de base zéro. |
PredictedLabel |
clé | Index de l’étiquette prédite. Si sa valeur est i , l’étiquette réelle est la i -ème catégorie dans le type d’étiquette d’entrée avec une valeur de clé. |
Classification de texte
La classification de texte est une sous-catégorie de classification multiclasse qui traite spécifiquement du texte brut. Le texte pose des défis intéressants, car vous devez tenir compte du contexte et de la sémantique dans lequel le texte se produit. Par conséquent, il peut être difficile d’encoder la signification et le contexte.
les modèles d’apprentissage profond ont émergé comme une technique prometteuse pour résoudre les problèmes de langage naturel. Plus précisément, un type de réseau neuronal appelé transformateur est devenu le moyen prédominant de résoudre les problèmes de langage naturel comme la classification de texte, la traduction, la synthèse et la réponse aux questions. Voici quelques architectures de transformateur populaires pour les tâches en langage naturel :
- Représentations de l’encodeur bidirectionnel des transformateurs (BERT)
- Approche de préentraînement BERT optimisée robuste (RoBERTa)
- Generative pretrained transformer (GPT)
L’API de classification de texte ML.NET est alimentée par TorchSharp. TorchSharp est une bibliothèque .NET qui fournit l’accès à la bibliothèque qui alimente PyTorch. TorchSharp contient les blocs de construction pour l’apprentissage des réseaux neuronaux à partir de zéro dans .NET. ML.NET extrait une partie de la complexité de TorchSharp au niveau du scénario. Il utilise une version préentraînée du modèle NAS-BERT et l’ajuste avec vos données.
Pour obtenir un exemple de classification de texte, consultez Prise en main de l’API de classification de texte.
Classification d’images
La classification d’images est une tâche de Machine Learning supervisée utilisée pour prédire la classe (catégorie) d’une image. L’entrée est un ensemble d’exemples étiquetés. Chaque étiquette commence normalement en tant que texte. Il est ensuite exécuté via TermTransform, qui le convertit en type Clé (numérique). La sortie de l’algorithme de classification d’images est un classifieur, que vous pouvez utiliser pour prédire la classe de nouvelles images. La tâche de classification d’images est un type de classification multiclasse. Voici quelques exemples de scénarios de classification d’images :
- Détermination de la race d’un chien comme un « Husky sibérien », « Golden Retriever », « Poodle », etc.
- Déterminer si un produit de fabrication est défectueux ou non.
- Détermination des types de fleurs comme « Rose », « Tournesol », etc.
Formateurs de classification d’images
Vous pouvez entraîner un modèle de classification d’images à l’aide des algorithmes d’entraînement suivants :
Entrées et sorties de classification d’images
Les données de la colonne d’étiquettes d’entrée doivent être de type clé. La colonne de caractéristiques doit être un vecteur de taille variable de Byte.
Cet entraîneur génère les colonnes suivantes :
Nom de sortie | Type | Description |
---|---|---|
Score |
Single | Scores de toutes les classes. Une valeur supérieure signifie une probabilité plus élevée de tomber dans la classe associée. Si le i -th élément a la plus grande valeur, l’index d’étiquette prédit est i . (i est un index de base zéro.) |
PredictedLabel |
Type de clé | Index de l’étiquette prédite. Si sa valeur est i , l’étiquette réelle est la i -ème catégorie dans le type d’étiquette d’entrée avec une valeur de clé. |
Régression
La régression est une tâche de machine learning supervisée utilisée pour prédire la valeur de l’étiquette à partir d’un ensemble de fonctionnalités associées. L’étiquette peut être d’une valeur réelle et ne provient pas d’un ensemble fini de valeurs comme dans les tâches de classification. Les algorithmes de régression modélisent la dépendance de l’étiquette sur ses caractéristiques associées pour déterminer comment l’étiquette change à mesure que les valeurs des fonctionnalités sont variées. L’entrée d’un algorithme de régression est un ensemble d’exemples avec des étiquettes de valeurs connues. La sortie d’un algorithme de régression est une fonction, que vous pouvez utiliser pour prédire la valeur d’étiquette pour tout nouvel ensemble de fonctionnalités d’entrée. Voici quelques exemples de scénarios de régression :
- Prédire les prix des maisons en fonction des attributs de maison tels que le nombre de chambres, l’emplacement ou la taille.
- Prédire les cours futurs des actions en fonction des données historiques et des tendances actuelles du marché.
- Prédire les ventes d’un produit en fonction des budgets publicitaires.
- Recherche d’articles connexes dans une publication (similarité de phrase).
Formateurs de régression
Vous pouvez entraîner un modèle de régression à l’aide des algorithmes suivants :
- SentenceSimilarityTrainer
- LbfgsPoissonRegressionTrainer
- LightGbmRegressionTrainer
- SdcaRegressionTrainer
- OlsTrainer
- OnlineGradientDescentTrainer
- FastTreeRegressionTrainer
- FastTreeTweedieTrainer
- FastForestRegressionTrainer
- GamRegressionTrainer
Entrées et sorties de régression
Les données de la colonne de libellé d'entrée doivent être Single.
Les formateurs pour cette tâche génèrent les éléments suivants :
Nom de sortie | Type | Description |
---|---|---|
Score |
Single | Score brut prédit par le modèle |
Regroupement
Le clustering est une tâche de machine learning non supervisée tâche utilisée pour regrouper des instances de données dans des clusters qui contiennent des caractéristiques similaires. Le clustering peut également être utilisé pour identifier les relations dans un jeu de données que vous risquez de ne pas dériver logiquement en parcourant ou en effectuant une observation simple. Les entrées et sorties d’un algorithme de clustering dépendent de la méthodologie choisie. Vous pouvez adopter une approche basée sur la distribution, le centroïde, la connectivité ou la densité. ML.NET prend actuellement en charge une approche de type centroïde à l’aide du clustering K-Means. Voici quelques exemples de scénarios de clustering :
- Comprendre les segments des clients de l’hôtel en fonction des habitudes et des caractéristiques des choix de l’hôtel.
- Identification des segments de clients et des données démographiques pour aider à créer des campagnes publicitaires ciblées.
- Catégorisation de l’inventaire en fonction des métriques de fabrication.
Entraîneur de clustering
Vous pouvez entraîner un modèle de clustering à l’aide de l’algorithme suivant :
Regroupement des entrées et des sorties
Les données de caractéristiques d’entrée doivent être Single. Aucune étiquette n’est nécessaire.
Cet entraîneur génère les résultats suivants :
Nom de sortie | Type | Description |
---|---|---|
Score |
Vecteur de Single | Les distances du point de données donné aux centroïdes de tous les clusters. |
PredictedLabel |
Type de clé | Index du cluster le plus proche prédit par le modèle. |
Détection des anomalies
La tâche de détection d’anomalie crée un modèle de détection d’anomalie à l’aide de l’analyse des composants principaux (PCA). La détection d’anomalies basée sur PCA vous aide à créer un modèle dans des scénarios où il est facile d’obtenir des données d’apprentissage à partir d’une classe, telles que des transactions valides, mais difficile à obtenir suffisamment d’échantillons des anomalies ciblées.
Une technique établie dans le Machine Learning, PCA est fréquemment utilisée dans l’analyse exploratoire des données, car elle révèle la structure interne des données et explique la variance dans les données. PCA fonctionne en analysant les données qui contiennent plusieurs variables. Il recherche les corrélations entre les variables et détermine la combinaison de valeurs qui capture le mieux les différences dans les résultats. Ces valeurs combinées de fonctionnalités sont utilisées pour créer un espace de fonctionnalité plus compact appelé composants principaux.
La détection des anomalies englobe de nombreuses tâches importantes dans le Machine Learning :
- Identification des transactions potentiellement frauduleuses.
- Modèles d’apprentissage qui indiquent qu’une intrusion réseau s’est produite.
- Recherche de clusters anormaux de patients.
- Vérification des valeurs entrées dans un système.
Étant donné que les anomalies sont rares par définition, il peut être difficile de collecter un échantillon représentatif de données à utiliser pour la modélisation. Les algorithmes inclus dans cette catégorie ont été spécialement conçus pour relever les principaux défis liés à la création et à l’entraînement de modèles à l’aide de jeux de données déséquilibrés.
Formateur de détection des anomalies
Vous pouvez entraîner un modèle de détection d’anomalie à l’aide de l’algorithme suivant :
Entrées et sorties de détection d’anomalies
Les caractéristiques d’entrée doivent être un vecteur de taille fixe de Single.
Cet entraîneur génère les résultats suivants :
Nom de sortie | Type | Description |
---|---|---|
Score |
Single | Score non négatif non lié calculé par le modèle de détection d’anomalie. |
PredictedLabel |
Boolean | true si l’entrée est une anomalie ou false si ce n’est pas le cas. |
Classement
Une tâche de classement construit un ranker à partir d’un ensemble d’exemples étiquetés. Cet exemple de jeu se compose de groupes d’instances qui peuvent être évalués avec un critère donné. Les étiquettes de classement sont { 0, 1, 2, 3, 4 } pour chaque instance. L'algorithme de classement est entraîné à classer de nouvelles instances avec des scores inconnus pour chacune. Les apprenants de classement ML.NET utilisent un classement basé sur l’apprentissage automatique.
Algorithmes d’apprentissage de classement
Vous pouvez entraîner un modèle de classement avec les algorithmes suivants :
Classement des entrées et sorties
Le type de données des étiquettes d’entrée doit être de type clé ou Single. La valeur de l’étiquette détermine la pertinence, où les valeurs supérieures indiquent une pertinence plus élevée. Si l’étiquette est un type clé, l’index de clé est la valeur de pertinence, où le plus petit index est le moins pertinent. Si l’étiquette est une Single, les valeurs plus grandes indiquent une pertinence plus élevée.
Les données de caractéristique doivent être un vecteur de taille fixe de Single et la colonne du groupe de lignes d’entrée doit être de type clé.
Cet entraîneur génère les résultats suivants :
Nom de sortie | Type | Description |
---|---|---|
Score |
Single | Score non lié calculé par le modèle pour déterminer la prédiction. |
Recommandation
Une tâche de recommandation permet de produire une liste de produits ou services recommandés. ML.NET utilise la méthode Factorisation de matrice (MF), un algorithme de filtrage collaboratif pour obtenir des recommandations lorsque votre catalogue contient des données d’évaluation de produit historiques. Par exemple, vous disposez de données historiques d’évaluation des films pour vos utilisateurs et souhaitez recommander d’autres films qu’ils sont susceptibles de regarder ensuite.
Algorithmes d’apprentissage des recommandations
Vous pouvez entraîner un modèle de recommandation avec l’algorithme suivant :
Prévision
La tâche de prévision utilise les données de série chronologique passées pour effectuer des prédictions sur le comportement futur. Les scénarios applicables aux prévisions incluent les prévisions météorologiques, les prédictions de ventes saisonnières et la maintenance prédictive.
Prévision des formateurs
Vous pouvez entraîner un modèle de prévision avec l’algorithme suivant :
Détection d’objets
La détection d’objets est une tâche de machine learning supervisé utilisée pour prédire la classe (catégorie) d’une image, mais donne également un cadre englobant pour l’endroit où cette catégorie se trouve dans l’image. Au lieu de classifier un seul objet dans une image, la détection d’objets peut détecter plusieurs objets au sein d’une image. Voici quelques exemples de détection d’objets :
- Détection de voitures, de panneaux ou de personnes sur des images d’une route.
- Détection des défauts sur des images de produits.
- Détection des zones de préoccupation sur les images X-Ray.
L’apprentissage du modèle de détection d’objets est actuellement disponible uniquement dans Model Builder à l’aide d’Azure Machine Learning.