Algorithme d'apprentissage linéaire - Amazon SageMaker

Algorithme d'apprentissage linéaire

Les modèles linéaires sont des algorithmes d'apprentissage supervisés, utilisés pour résoudre les problèmes de régression ou de classification. Comme entrée, vous fournissez les exemples étiquetés du modèle (x, y). x est un vecteur hautement dimensionnel et y une étiquette numérique. Pour les problèmes de classification binaire, l'étiquette doit être 0 ou 1. Pour les problèmes de classification multiclasse, les étiquettes doivent être comprises entre 0 et num_classes -1. Pour les problèmes de régression, y est un nombre réel. L'algorithme apprend une fonction linéaire ou, pour les problèmes de classification, une fonction de seuil linéaire, et mappe un vecteur x à une approximation de l'étiquette y.

L'algorithme d'apprenant linéaire Amazon SageMaker fournit une solution pour les problèmes de régression et de classification. Avec l'algorithme SageMaker, vous pouvez explorer simultanément différents objectifs d'entraînement et choisir la meilleure solution à partir d'un ensemble de validation. Vous pouvez également explorer un grand nombre de modèles et choisir le meilleur. Le meilleur modèle optimise l'une des actions suivantes :

  • Objectif continu, comme l'erreur quadratique moyenne, la perte d'entropie croisée, l'erreur absolue.

  • Objectifs discrets adaptés à la classification, comme la mesure F1, la précision, le rappel ou l'exactitude.

Par comparaison avec les méthodes ne fournissant une solution qu'aux seuls objectifs continus, l'algorithme d'apprentissage linéaire SageMaker fournit une hausse significative de la vitesse par rapport aux techniques d'optimisation naïves des hyperparamètres. Il est également plus commode.

L'algorithme d'apprentissage linéaire requiert une matrice de données, avec les lignes correspondant aux observations et les colonnes aux dimensions des caractéristiques. Il nécessite également une colonne supplémentaire contenant les étiquettes qui correspondent aux points de données. Au minimum, l'apprenant linéaire Amazon SageMaker nécessite que vous spécifiiez les emplacements des données d'entrée et de sortie, et un type d'objectif (classification ou régression) comme arguments. La dimension de fonction est également requise. Pour plus d'informations, consultez CreateTrainingJob. Vous pouvez spécifier des paramètres supplémentaires dans le mappage de la chaîne HyperParameters du corps de la demande. Ces paramètres contrôlent la procédure d'optimisation ou les spécificités de la fonction d'objective que vous entraînez. Par exemple, le nombre de périodes (epoch), la régularisation et le type de perte.

Si vous utilisez l'entraînement Spot géré, l'algorithme d'apprentissage linéaire prend en charge l'utilisation de points de contrôle pour prendre un instantané du statut du modèle.

Interface d'entrée/sortie pour l'algorithme d'apprentissage linéaire

L'algorithme d'apprentissage linéaire Amazon SageMaker prend en charge trois canaux de données : entraînement, validation et test. Les deux derniers sont facultatifs. Si vous fournissez des données de validation, S3DataDistributionType doit être FullyReplicated. L'algorithme enregistre la perte de validation à chaque époque et utilise un échantillon des données de validation pour calibrer le meilleur modèle et le sélectionner. Si vous ne fournissez pas de données de validation, l'algorithme utilise un échantillon des données d'entraînement pour calibrer le modèle et le sélectionner. Si vous fournissez les données de test, les journaux de l'algorithme contiennent le score de test du modèle final.

Pour l'entraînement, l'algorithme d'apprentissage linéaire prend en charge les formats recordIO-wrapped protobuf et CSV. Pour le type d'entrée application/x-recordio-protobuf, seuls les tenseurs Float32 sont pris en charge. Pour le type d'entrée text/csv, la première colonne est supposée être l'étiquette, laquelle est la variable cible de la prédiction. Vous pouvez utiliser le mode File ou le mode Pipe pour entraîner les modèles d'apprentissage linéaire sur les données obéissant au format recordIO-wrapped-protobuf ou au format CSV.

Pour l'inférence, l'algorithme d'apprentissage linéaire prend en charge les formats application/json, application/x-recordio-protobuf et text/csv. Lorsque vous effectuez des prédictions sur de nouvelles données, le format de la réponse dépend du type de modèle. Pour la régression (predictor_type='regressor'), l'élément score est la prédiction produite par le modèle. Pour la classification (predictor_type='binary_classifier' ou predictor_type='multiclass_classifier'), le modèle renvoie un score et un predicted_label. L'élément predicted_label est la classe prédite par le modèle et score mesure la puissance de prédiction.

  • Pour la classification binaire, predicted_label est 0 ou 1, et score est un nombre à virgule flottante unique qui indique à quel point l'algorithme estime que l'étiquette doit être 1.

  • Pour la classification multiclasse, predicted_class est un nombre entier de 0 à num_classes-1, et score sera une liste comportant un nombre à virgule flottante par classe.

Pour interpréter score dans les problèmes de classification, vous devez envisager la fonction de perte utilisée. Si la valeur de l'hyperparamètre loss est logistic pour la classification binaire ou softmax_loss pour la classification multiclasse, score peut être interprété comme la probabilité de la classe correspondante. Ce sont les valeurs de perte utilisées par l'apprenant linéaire lorsque la valeur de loss est la valeur par défaut auto. Mais si la perte est défini sur hinge_loss, le score ne peut pas être interprété comme une probabilité. En effet, la perte correspond à un classificateur de vecteur de support, ce qui signifie qu'elle ne produit pas d'estimations de probabilité.

Pour de plus amples informations sur les formats de fichiers d'entrée et de sortie, veuillez consulter Formats de réponse d'apprentissage linéaire. Pour de plus amples informations sur les formats d'inférence, veuillez consulter Exemples de blocs-notes d'apprentissage linéaire.

Recommandations relatives aux instances EC2 pour l'algorithme d'apprentissage linéaire

Vous pouvez entraîner l'algorithme d'apprentissage linéaire sur les instances CPU et GPU d'une ou de plusieurs machines. Pendant le test, nous n'avons pas trouvé de preuve substantielle que les ordinateurs à plusieurs GPU étaient plus rapides que ceux à un seul GPU. Les résultats peuvent varier, en fonction de votre cas d'utilisation spécifique.

Exemples de blocs-notes d'apprentissage linéaire

Le tableau suivant présente une série d'exemples de blocs-notes traitant de différents cas d'utilisation de l'algorithme d'aprentissage linéaire Amazon SageMaker.

Titre du bloc-notes Description

Introduction avec le jeu de données MNIST

À l'aide du jeu de données MNIST, nous entraînons un classificateur binaire pour prédire un seul chiffre.

Prédire le cancer du sein

À l'aide du jeu de données sur le cancer du sein de l'UCI, nous entraînons un modèle pour prédire le cancer du sein.

Comment créer un classificateur multiclasse ?

À l'aide du jeu de données Covertype d'UCI, nous montrons comment entraîner un classificateur multiclasse.

Comment créer un pipeline de Machine Learning (ML) pour inférence ?

À l'aide d'un conteneur Scikit-Learn, nous montrons comment créer un pipeline ML de bout en bout.

Pour obtenir des instructions sur la création et l'accès aux instances de bloc-notes Jupyter que vous pouvez utiliser pour exécuter l'exemple dans SageMaker, consultez Utilisation des instances de bloc-notes Amazon SageMaker. Après avoir créé et ouvert une instance de bloc-notes, choisissez l'onglet SageMaker Examples (Exemples SageMaker) pour afficher la liste de tous les exemples SageMaker. Les exemples de blocs-notes de modélisation de rubrique utilisant les algorithmes NTM se trouvent dans la section Introduction to Amazon algorithms (Présentation des algorithmes Amazon). Pour ouvrir un bloc-notes, choisissez son onglet Use (Utiliser), puis Create copy (Créer une copie).