Choisir un algorithme - Amazon SageMaker

Choisir un algorithme

Le machine learninng peut vous aider à accomplir des tâches empiriques qui nécessitent une sorte d'inférence inductive. Cette tâche implique une induction, car elle utilise des données pour entraîner des algorithmes à réaliser des inférences généralisables. Cela signifie que les algorithmes peuvent réaliser des prédictions ou prendre des décisions statistiquement fiables, ou effectuer d'autres tâches lorsqu'ils sont appliqués à de nouvelles données qui n'ont pas été utilisées pour les entraîner.

Pour vous aider à sélectionner le meilleur algorithme pour votre tâche, nous classons ces tâches à différents niveaux d'abstraction. Au plus haut niveau d'abstraction, le machine learning tente de trouver des modèles ou des relations entre des fonctions ou des éléments moins structurés, tels que du texte dans un jeu de données. Les techniques de reconnaissance de modèles peuvent être classées en paradigmes de machine learning distincts, chacun traitant des types de problèmes spécifiques. Il existe actuellement trois paradigmes de base pour le machine learning, utilisés pour traiter différents types de problèmes :

Les types de problèmes que chaque paradigme de machine learning peut résoudre sont identifiés en tenant compte des inférences (ou prédictions, décisions ou autres tâches) que vous souhaitez effectuer à partir du type de données que vous possédez ou que vous pourriez collecter. Les paradigmes de machine learning utilisent des méthodes algorithmiques pour résoudre leurs différents types de problèmes. Les algorithmes fournissent des recettes pour résoudre ces problèmes.

Cependant, de nombreux algorithmes, tels que les réseaux neuronaux, peuvent être déployés avec différents paradigmes de machine learning et sur différents types de problèmes. Plusieurs algorithmes peuvent également résoudre un type de problème spécifique. Certains algorithmes sont applicables de manière générale et d'autres sont plutôt adaptés à certains types d'objectifs et de données. Ainsi, le mappage entre les algorithmes de machine learning et les types de problèmes est de type « plusieurs à plusieurs ». En outre, il existe différentes options d'implémentation disponibles pour les algorithmes.

Les sections suivantes fournissent des conseils sur les options d'implémentation, les paradigmes de machine learning et les algorithmes appropriés aux différents types de problèmes.

Choisir une implémentation d'algorithme

Après avoir choisi un algorithme, vous devez décider comment l'implémenter. Amazon SageMaker prend en charge trois options d'implémentation qui nécessitent différents niveaux d'effort.

  • Les algorithme intégrés sont ceux qui nécessitent le moins d'effort et d'échelle si le jeu de données est volumineux et si beaucoup de ressources sont nécessaires pour entraîner et déployer le modèle.

  • Si aucune solution intégrée n'est adaptée, essayez d'en développer une qui utilise des images préétablies pour les cadres de machine learning et de deep learning pris en charge tels que Scikit-Learn, TensorFlow, PyTorch, MXNet ou Chainer.

  • Si vous devez exécuter des packages personnalisés ou utiliser un code qui ne fait pas partie d'un cadre pris en charge ou disponible via PyPi, alors vous devez créer votre propre image Docker personnalisée et la configurer pour installer les packages ou logiciels nécessaires. L'image personnalisée doit également être envoyée dans un référentiel en ligne tel qu'Amazon Elastic Container Registry.

Conseils relatifs à l'implémentation de l'algorithme
Mise en œuvre Nécessite du code Algorithme précodés Prise en charge des packages tiers Prise en charge du code personnalisé Niveau d'effort
Intégrée Non Oui Non Non Faible
Scikit-learn Oui Oui PyPi uniquement Oui Moyen
Spark ML Oui Oui PyPi uniquement Oui Moyen
XGBoost (open source) Oui Oui PyPi uniquement Oui Moyen
TensorFlow Oui Non PyPi uniquement Oui Moyen-Élevé
PyTorch Oui Non PyPi uniquement Oui Moyen-Élevé
MXNet Oui Non PyPi uniquement Oui Moyen-Élevé
Chainer Oui Non PyPi uniquement Oui Moyen-Élevé
Image personnalisée Oui Non Oui, de n'importe quelle source Oui Élevée

Utiliser un algorithme intégré.

Lorsque vous choisissez un algorithme pour votre type de problème et de données, l'option la plus simple consiste à utiliser l'un des algorithmes intégrés d'Amazon SageMaker. Ces algorithmes intégrés présentent deux avantages majeurs.

  • Ils ne nécessitent aucun codage pour commencer à exécuter des expériences. Les seules entrées que vous devez fournir sont les données, les hyperparamètres et les ressources de calcul. Cela vous permet d'exécuter des expériences plus rapidement, avec moins de frais généraux pour le suivi des résultats et des modifications de code.

  • Les algorithmes intégrés sont livrés avec la mise en parallèle sur plusieurs instances de calcul et la prise en charge du GPU dès la mise en service pour tous les algorithmes applicables (certains algorithmes peuvent ne pas être inclus en raison de limites inhérentes). Si vous avez beaucoup de données avec lesquelles entraîner votre modèle, la plupart des algorithmes intégrés peuvent facilement évoluer pour répondre à la demande. Même si vous disposez déjà d'un modèle préentraîné, il peut être encore plus facile d'utiliser son corollaire dans SageMaker et d'entrer les hyperparamètres que vous connaissez plutôt que de les transférer, en utilisant le mode script sur un cadre pris en charge.

Pour de plus amples informations sur les algorithmes intégrés fournis par SageMaker, veuillez consulter Utiliser les algorithmes intégrés Amazon SageMaker.

Pour obtenir des informations importantes sur les chemins de registre docker, les formats de données, les types d'instance EC2 recommandés et les journaux CloudWatch Logs communs à tous les algorithmes intégrés fournis par SageMaker, consultez Informations communes aux algorithmes intégrés.

Utiliser le mode script dans un cadre pris en charge

Si l'algorithme que vous souhaitez utiliser pour votre modèle n'est pas pris en charge par une option intégrée et que vous savez coder votre propre solution, vous devriez envisager d'utiliser un cadre pris en charge par Amazon SageMaker. Il s'agit du « mode script » : vous écrivez votre code personnalisé (script) dans un fichier texte avec une extension .py. Comme l'indique le tableau ci-dessus, SageMaker prend en charge la plupart des cadres de machine learning populaires. Ces cadres sont préchargés avec le cadre correspondant et quelques packages Python supplémentaires, tels que Pandas et NumPy, de sorte que vous pouvez écrire votre propre code pour l'entraînement d'un algorithme. Ces cadres vous permettent également d'installer n'importe quel package Python hébergé sur PyPi en incluant un fichier requirements.txt avec votre code d'entraînement ou d'inclure vos propres répertoires de code. R est également pris en charge en mode natif dans les noyaux de blocs-notes SageMaker. Certains cadres comme Scikit-Learn et Spark ML ont des algorithmes précodés que vous pouvez utiliser facilement, tandis que d'autres cadres comme TensorFlow et PyTorch nécessitent que vous implémentiez l'algorithme vous-même. La seule limite lors de l'utilisation d'une image de cadre pris en charge est que vous ne pouvez pas importer des packages logiciels qui ne sont pas hébergés sur PyPi ou qui ne sont pas déjà inclus dans l'image du cadre.

Pour de plus amples informations sur les cadres pris en charge par SageMaker, veuillez consulter Utilisation de cadres de machine learning, de Python et de R avec Amazon SageMaker.

Utiliser une image Docker personnalisée

Les algorithmes intégrés et les cadres pris en charge d'Amazon SageMaker doivent couvrir la plupart des cas d'utilisation, mais il est parfois nécessaire d'utiliser un algorithme provenant d'un package qui n'est pas inclus dans aucun des cadres pris en charge. Vous pouvez également avoir un modèle préentraîné choisi ou persistant quelque part que vous devez déployer. SageMaker utilise des images Docker pour héberger l'entraînement et le service de tous les modèles. Ainsi, vous pouvez fournir votre propre image Docker personnalisée si le package ou le logiciel dont vous avez besoin n'est pas inclus dans un cadre pris en charge. Il peut s'agir de votre propre package Python ou d'un algorithme codé dans un langage comme Stan ou Julia. Pour ces images, vous devez également configurer l'entraînement de l'algorithme et le service du modèle correctement dans votre Dockerfile. Cela nécessite une bonne connaissance de Docker et n'est pas recommandé, sauf si vous êtes capable d'écrire votre propre algorithme de machine learning. Votre image Docker doit être téléchargée dans un référentiel en ligne, tel qu'Amazon Elastic Container Registry (ECR), avant de pouvoir entraîner et servir correctement votre modèle.

Pour plus d'informations sur les images Docker personnalisées dans SageMaker, consultez Utilisation de conteneurs Docker avec SageMaker .

Types de problèmes pour les paradigmes de base de machine learning

Les trois sections suivantes décrivent les principaux types de problèmes traités par les trois paradigmes de base pour le machine learning. Pour voir la liste des algorithmes intégrés fournis par SageMaker pour résoudre ces types de problèmes, consultez Utiliser les algorithmes intégrés Amazon SageMaker.

Apprentissage supervisé

Si votre jeu de données est constitué de fonctions ou d'attributs (entrées) qui contiennent des valeurs cibles (sorties), vous faites face à un problème d'apprentissage supervisé. Si vos valeurs cibles sont catégoriques (mathématiquement discrètes), vous faites face à un problème de classification. Une pratique courante consiste à distinguer la classification binaire de la classification multiclasse.

  • La classification binaire est un type d'apprentissage supervisé qui assigne une personne à l'une des deux classes prédéfinies et mutuellement exclusives en fonction des attributs de la personne. Elle est supervisée parce que les modèles sont entraînés à l'aide d'exemples dans lesquels les attributs sont fournis avec des objets correctement étiquetés. Exemple de classification binaire : diagnostic de maladie basé sur les résultats des tests de diagnostic.

  • La classification multiclasse est un type d'apprentissage supervisé qui assigne une personne à une classe parmi plusieurs classes prédéfinies en fonction des attributs de la personne. Elle est supervisée parce que les modèles sont entraînés à l'aide d'exemples dans lesquels les attributs sont fournis avec des objets correctement étiquetés. Exemple : la prédiction de la rubrique la plus pertinente pour un document texte. Un document peut être classé comme portant sur la religion, la politique ou les finances, ou sur une classe parmi plusieurs classes de rubriques prédéfinies.

Si les valeurs cibles que vous essayez de prédire sont mathématiquement continues, vous faites face à un problème de régression. La régression estime les valeurs d'une variable cible dépendante en fonction d'une ou de plusieurs autres variables ou attributs en corrélation avec elle. Exemple : la prédiction des prix des maisons à l'aide de fonctions telles que le nombre de salles de bains et de chambres à coucher, la superficie de la maison et du jardin. L'analyse de régression peut créer un modèle qui prend en entrée une ou plusieurs de ces fonctions et prédit le prix d'une maison.

Pour plus d'informations sur les algorithmes d'apprentissage supervisé intégrés fournis par SageMaker, consultez Apprentissage supervisé.

Apprentissage non supervisé

Si votre jeu de données est constitué de fonctions ou d'attributs (entrées) qui ne contiennent pas d'étiquettes ou de valeurs cibles (sorties), vous faites face à un problème d'apprentissage non supervisé. Dans ce type de problème, la sortie doit être prédite en fonction du modèle découvert dans les données d'entrée. Dans les problèmes d'apprentissage non supervisé, l'objectif est de découvrir des modèles tels que des regroupements dans les données. Il existe une grande variété de tâches ou de types de problèmes auxquels l'apprentissage non supervisé peut être appliqué. Les analyses de composants principaux et de clusters sont deux des principales méthodes utilisées pour le prétraitement des données. Voici une petite liste des types de problèmes qui peuvent être résolus par l'apprentissage non supervisé :

  • La réduction de dimension fait généralement partie d'une étape d'exploration des données utilisée pour déterminer les fonctions les plus pertinentes à utiliser pour la création du modèle. L'idée est de transformer les données d'un espace à haute dimension et peu rempli en espace à faible dimension qui conserve les propriétés les plus significatives des données d'origine. Cela atténue le problème de dimensionnalité pouvant survenir avec des données à haute dimension et peu remplies et sur lesquelles l'analyse statistique devient problématique. Elle peut également être utilisée pour aider à comprendre les données, en réduisant les données à haute dimension à une dimension inférieure qui peut être visualisée.

  • L'analyse des clusters est une classe de techniques utilisées pour classer des objets ou des cas en groupes appelés clusters. Il tente de trouver des regroupements discrets au sein des données, au sein desquels les membres d'un groupe sont aussi semblables que possible les uns des autres et aussi différents que possible des membres des autres groupes. Vous définissez les entités ou les attributs que l'algorithme doit utiliser pour déterminer la similarité, sélectionnez une fonction de distance pour mesurer la similarité et spécifiez le nombre de clusters à utiliser dans l'analyse.

  • La détection des anomalies est l'identification d'éléments, d'événements ou d'observations rares dans un jeu de données qui suscitent des soupçons parce qu'ils diffèrent significativement du reste des données. L'identification d'éléments anormaux peut être utilisée, par exemple, pour détecter des fraudes bancaires ou des erreurs médicales. Les anomalies sont également appelées valeurs aberrantes, nouveautés, bruit, écarts et exceptions.

  • L'estimation de la densité est la création d'estimations de fonctions de densité de probabilité sous-jacentes inobservables basée sur les données observées. Les estimations de densité sont naturellement utilisées pour l'exploration des données. Les estimations de densité permettent de découvrir des fonctions telles que l'asymétrie et la multimodalité dans les données. La forme la plus élémentaire d'estimation de la densité est un histogramme redimensionné.

SageMaker fournit plusieurs algorithmes de machine learning intégrés que vous pouvez utiliser pour ces tâches d'apprentissage non supervisé. Pour plus d'informations sur les algorithmes non supervisés intégrés fournis par SageMaker, consultez Apprentissage non supervisé.

Apprentissage par renforcement

L'apprentissage par renforcement est un type d'apprentissage basé sur l'interaction avec l'environnement. Ce type d'apprentissage est utilisé par un agent qui doit apprendre le comportement à travers des interactions par essai et par erreur avec un environnement dynamique dans lequel l'objectif est de maximiser les récompenses à long terme que l'agent reçoit à la suite de ses actions. Les récompenses sont maximisées en échangeant des actions qui ont des récompenses incertaines avec des actions qui ont des récompenses connues.

Pour plus d'informations sur les cadres, les boîtes à outils et les environnements de SageMaker pour l'apprentissage par renforcement, consultez Utiliser l'apprentissage par renforcement avec Amazon SageMaker.