Création d'un schéma de données pour Amazon ML - Amazon Machine Learning

Nous ne mettons plus à jour le service Amazon Machine Learning et n'acceptons plus de nouveaux utilisateurs pour ce service. Cette documentation est disponible pour les utilisateurs existants, mais nous ne la mettons plus à jour. Pour plus d'informations, veuillez consulter la rubriqueQu'est-ce qu'Amazon Machine Learning.

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Création d'un schéma de données pour Amazon ML

Un schéma est composé de tous les attributs figurant dans les données d'entrée et de leurs types de données correspondants. Il permet à Amazon ML de comprendre les données de la source de données. Amazon ML utilise les informations figurant dans le schéma pour lire et interpréter les données d'entrée, calculer des statistiques, appliquer les transformations d'attribut correctes et ajuster ses algorithmes d'apprentissage. Si vous ne fournissez pas de schéma, Amazon ML en déduire un des données.

Exemple de schéma

Pour qu'Amazon ML lise correctement les données d'entrée et génère des prédictions précises, chaque attribut doit se voir affecter le type de données approprié. Passons en revue un exemple pour voir comment les types de données sont attribués aux attributs et comment les attributs et les types de données sont inclus dans un schéma. Nous appellerons notre exemple « Campagne clients », car nous voulons prédire quels clients répondront à notre campagne d'e-mailing. Notre fichier d'entrée est un fichier .csv contenant neuf colonnes :

1,3,web developer,basic.4y,no,no,1,261,0 2,1,car repair,high.school,no,no,22,149,0 3,1,car mechanic,high.school,yes,no,65,226,1 4,2,software developer,basic.6y,no,no,1,151,0

Le schéma de ces données est le suivant :

{     "version": "1.0",     "rowId": "customerId",     "targetAttributeName": "willRespondToCampaign",     "dataFormat": "CSV",     "dataFileContainsHeader": false,     "attributes": [         {             "attributeName": "customerId",             "attributeType": "CATEGORICAL"         },         {             "attributeName": "jobId",             "attributeType": "CATEGORICAL"         }, { "attributeName": "jobDescription", "attributeType": "TEXT" },         {             "attributeName": "education",             "attributeType": "CATEGORICAL"         },         {             "attributeName": "housing",             "attributeType": "CATEGORICAL"         },         {             "attributeName": "loan",             "attributeType": "CATEGORICAL"         },         {             "attributeName": "campaign",             "attributeType": "NUMERIC"         },         {             "attributeName": "duration",             "attributeType": "NUMERIC"         }, { "attributeName": "willRespondToCampaign", "attributeType": "BINARY" } ] }

Dans le fichier de schéma de cet exemple, la valeur de rowId est customerId :

"rowId": "customerId",

L'attribut willRespondToCampaign est défini en tant qu'attribut cible :

"targetAttributeName": "willRespondToCampaign ",

L'attribut customerId et le type de données CATEGORICAL sont associés à la première colonne, l'attribut jobId et le type de données CATEGORICAL sont associés à la deuxième colonne, l'attribut jobDescription et le type de données TEXT sont associés à la troisième colonne, l'attribut education et le type de données CATEGORICAL sont associés à la quatrième colonne, etc. La neuvième colonne est associée à l'attribut willRespondToCampaign avec un type de données BINARY, et cet attribut est également défini en tant qu'attribut cible.

Utilisation du champ targetAttributeName

La valeur targetAttributeName est le nom de l'attribut que vous voulez prédire. Vous devez attribuer un targetAttributeName lors de la création ou de l'évaluation d'un modèle.

Lorsque vous entraînez ou évaluez un modèle ML, letargetAttributeNameidentifie le nom de l'attribut dans les données d'entrée qui contient les réponses « correctes » pour l'attribut cible. Amazon ML utilise la cible, qui inclut les réponses correctes, pour découvrir des tendances et générer un modèle d'apprentissage-machine.

Lorsque vous évaluez votre modèle, Amazon ML utilise la cible pour vérifier la précision de vos prédictions. Une fois que vous avez créé et évalué le modèle d'apprentissage-machine, vous pouvez utiliser les données avec un champ targetAttributeName non attribué pour générer des prédictions avec votre modèle d'apprentissage-machine.

Vous définissez l'attribut cible dans la console Amazon ML lorsque vous créez une source de données, ou dans un fichier de schéma. Si vous créez votre propre fichier de schéma, utilisez la syntaxe suivante pour définir l'attribut cible :

"targetAttributeName": "exampleAttributeTarget",

Dans cet exemple, exampleAttributeTarget est le nom de l'attribut dans votre fichier d'entrée qui est l'attribut cible.

Utilisation du champ rowID

Le champ row ID est un indicateur optionnel associé à un attribut dans les données d'entrée. S'il est spécifié, l'attribut marqué en tant que row ID est inclus dans la prédiction fournie en sortie. Cet attribut permet d'associer plus facilement les prédictions aux observations correspondantes. Par exemple, un ID client ou un attribut unique similaire constitue un champ row ID efficace.

Note

L'ID de ligne est fourni à titre de référence uniquement. Amazon ML ne l'utilise pas lors de la formation d'un modèle d'apprentissage-machine. Le fait de sélectionner un attribut en tant qu'ID de ligne exclut l'éventualité d'utiliser l'attribut pour former un modèle d'apprentissage-machine.

Définissez lerow IDdans la console Amazon ML lorsque vous créez une source de données, ou dans un fichier de schéma. Si vous créez votre propre fichier de schéma, utilisez la syntaxe suivante pour définir le champ row ID :

"rowId": "exampleRow",

Dans l'exemple précédent, exampleRow est le nom de l'attribut figurant dans votre fichier d'entrée qui est défini comme ID de ligne.

Lors de la génération de prédictions par lots, vous pouvez obtenir le résultat suivant :

tag,bestAnswer,score 55,0,0.46317 102,1,0.89625

Dans cet exemple, RowID représente l'attribut customerId. Par exemple, il est prédit que le client customerId 55 répondra à notre campagne d'e-mailing avec un faible degré de confiance (0,46317), tandis qu'il est prédit que le client customerId 102 répondra à notre campagne d'e-mailing avec un niveau de confiance élevé (0,89625).

Utilisation du champ AttributeType

Dans Amazon ML, il existe quatre types de données pour les attributs :

Binaire

Choisissez BINARY pour un attribut qui a seulement deux états possibles, tels que yes et no.

Par exemple, l'attribut isNew, permettant de vérifier si une personne est un nouveau client, a une valeur true si la personne est un nouveau client ou une valeur false si elle n'est pas un nouveau client.

Les valeurs négatives valides sont 0, n, no, f et false.

Les valeurs positives valides sont 1, y, yes, t et true.

Amazon ML ignore la casse des entrées binaires et supprime les espaces adjacents. Par exemple, " FaLSe " est une valeur binaire valide. Vous pouvez combiner les valeurs binaires que vous utilisez dans la même source de données, par exemple en utilisanttrue,no, et1. sorties Amazon ML uniquement0et1pour les attributs binaires.

Categorical (catégorie)

Choisissez CATEGORICAL pour un attribut qui accepte un nombre limité de valeurs de chaîne uniques. Par exemple, un ID d'utilisateur, le mois et un code postal sont des valeurs de catégorie. Les attributs de catégorie sont traités comme une chaîne individuelle et ne sont pas tokenisés davantage.

Numérique

Choisissez NUMERIC pour un attribut qui accepte une quantité en tant que valeur.

Par exemple, une température, un poids et un taux de clics sont des valeurs numériques.

Tous les attributs qui contiennent des nombres ne sont pas numériques. Les attributs de catégorie, telles que les jours du mois et les ID, sont souvent représentés par des nombres. Pour être considéré comme numérique, un nombre doit être comparable à un autre nombre. Par exemple, l'ID client 664727 ne vous dit rien sur l'ID client 124552, alors qu'un poids de 10 indique que l'attribut est plus lourd qu'un attribut avec un poids de 5. Les jours du mois ne sont pas numériques, car le premier d'un mois peut se produire avant ou après le second d'un autre mois.

Note

Lorsque vous utilisez Amazon ML pour créer votre schéma, il attribue leNumerictype de données pour tous les attributs qui utilisent des nombres. Si Amazon ML crée votre schéma, cherchez d'éventuelles erreurs d'affectation et définissez les attributs correspondants surCATEGORICAL.

Text

Choisissez TEXT pour un attribut qui est une chaîne de mots. Lorsque vous lisez des attributs texte, Amazon ML les convertit en jetons, délimités par des espaces.

Par exemple, email subject devient email et subject, et email-subject here devient email-subject et here.

Si le type de données d'une variable dans le schéma de formation ne correspond pas au type de données de la variable dans le schéma d'évaluation, Amazon ML change le type de données d'évaluation pour qu'il corresponde au type de données de formation. Par exemple, si le schéma de données de formation attribue un type de données deTEXTvers la variableage, mais le schéma d'évaluation attribue un type de données deNUMERICpourage, Amazon ML traite ensuite les âges des données d'évaluation commeTEXTvariables au lieu deNUMERIC.

Pour obtenir des informations sur les statistiques associées à chaque type de données, consultez Statistiques descriptives.

Fourniture d'un schéma à Amazon ML

Chaque source de données a besoin d'un schéma. Vous avez le choix entre deux méthodes pour fournir un schéma à Amazon ML :

  • Autoriser Amazon ML à déduire les types de données de chaque attribut dans le fichier de données d'entrée et à créer automatiquement un schéma pour vous.

  • Fournissez un fichier de schéma lorsque vous chargez vos données Amazon Simple Storage Service (Amazon S3).

Autoriser Amazon ML à créer votre schéma

Lorsque vous utilisez la console Amazon ML pour créer une source de données, Amazon ML utilise des règles simples, basées sur les valeurs de vos variables, pour créer votre schéma. Nous vous recommandons fortement d'examiner le schéma créé par Amazon ML et de corriger les types de données s'ils ne sont pas corrects.

Fourniture d'un schéma

Une fois que vous avez créé votre fichier de schéma, vous devez le mettre à la disposition d'Amazon ML. Vous avez deux options :

  1. Fournissez le schéma à l'aide de la console Amazon ML.

    Utilisez la console pour créer votre source de données et incluez le fichier de schéma en ajoutant l'extension .schema au nom de fichier de votre fichier de données d'entrée. Par exemple, si l'URI Amazon Simple Storage Service (Amazon S3) de vos données d'entrée est s3 : //my-bucket-name/data/input.csv, l'URI de votre schéma sera s3 : //my-bucket-name/data/input.csv.schema. Amazon ML localise automatiquement le fichier de schéma que vous fournissez au lieu d'essayer de déduire le schéma de vos données.

    Afin d'utiliser un répertoire de fichiers pour entrer vos données dans Amazon ML, ajoutez l'extension .schema au chemin d'accès de votre répertoire. Par exemple, si vos fichiers de données résident dans l'emplacement s3://examplebucket/path/to/data/, l'URI de votre schéma sera s3://examplebucket/path/to/data/.schema.

  2. Fournissez le schéma à l'aide de l'API Amazon ML.

    Si vous envisagez d'appeler l'API Amazon ML pour créer votre source de données, vous pouvez charger le fichier de schéma dans Amazon S3, puis fournir l'URI de ce fichier dans leDataSchemaLocationS3Attribut deCreateDataSourceFromS3API. Pour plus d'informations, consultez CreateDataSourceFromS3.

    Vous pouvez fournir le schéma directement dans la charge utile deCreateDataSource*APIsau lieu de l'enregistrer dans Amazon S3. Pour ce faire, vous devez placer la chaîne de schéma complète dans l'attribut DataSchema des API CreateDataSourceFromS3, CreateDataSourceFromRDS et CreateDataSourceFromRedshift. Pour plus d'informations, consultez la Référence d'API Amazon Machine Learning.