Codage des fonctionnalités dans Neptune ML - Amazon Neptune

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.

Codage des fonctionnalités dans Neptune ML

Les valeurs des propriétés sont disponibles sous différents formats et types de données. Pour obtenir de bonnes performances en machine learning, il est essentiel de convertir ces valeurs en encodages numériques appelésfonctionnalités.

Neptune ML effectue l'extraction et le codage des entités dans le cadre des étapes d'exportation et de traitement des données, à l'aide des techniques d'encodage des entités décrites ici.

Note

Si vous envisagez d'implémenter votre propre encodage d'entités dans une implémentation de modèle personnalisé, vous pouvez désactiver le codage automatique des entités au stade de prétraitement des données en sélectionnantnonecomme type d'encodage d'entités. Aucun codage d'entité n'est ensuite effectué sur ce nœud ou cette propriété Edge. Au lieu de cela, les valeurs de propriétés brutes sont analysées et enregistrées dans un dictionnaire. Le prétraitement des données crée toujours le graphique DGL à partir du jeu de données exporté, mais le graphique DGL construit ne possède pas les fonctionnalités prétraitées pour la formation.

Vous devez utiliser cette option uniquement si vous envisagez d'effectuer un codage de fonctionnalités personnalisé dans le cadre de la formation sur modèle personnalisé. Consultez Modèles personnalisés dans Neptune ML pour plus de détails.

Caractéristiques catégoriques de Neptune ML

Une propriété qui peut prendre une ou plusieurs valeurs distinctes à partir d'une liste fixe de valeurs possibles est une fonction catégorique. Dans Neptune ML, les fonctions catégorielles sont codées à l'aide deencodage à chaud. L'exemple suivant montre comment le nom de propriété de différents aliments est codé à un chaud en fonction de sa catégorie :

Food Veg. Meat Fruit Encoding --------- ---- ---- ----- -------- Apple 0 0 1 001 Chicken 0 1 0 010 Broccoli 1 0 0 100
Note

Le nombre maximal de catégories dans n'importe quelle fonction catégorique est 100. Si une propriété possède plus de 100 catégories de valeurs, seules les 99 d'entre elles les plus courantes sont placées dans des catégories distinctes, et les autres sont placés dans une catégorie spéciale nomméeOTHER.

Caractéristiques numériques de Neptune ML

Toute propriété dont les valeurs sont des nombres réels peut être encodée en tant qu'entité numérique dans Neptune ML. Les entités numériques sont encodées à l'aide de nombres à virgule flottante.

Vous pouvez spécifier une méthode de normalisation des données à utiliser lors du codage d'entités numériques, comme ceci : "norm": "normalization technique". Les techniques de normalisation suivantes sont prises en charge :

  • « none »— Ne normalisez pas les valeurs numériques pendant le codage.

  • « min-max »— Normalisez chaque valeur en soustrayant la valeur minimale, puis en la divisant par la différence entre la valeur maximale et la valeur minimale.

  • « standard »— Normalisez chaque valeur en la divisant par la somme de toutes les valeurs.

Fonctionnalités numériques de godets dans Neptune ML

Plutôt que de représenter une propriété numérique à l'aide de nombres bruts, vous pouvez condenser des valeurs numériques en catégories. Par exemple, vous pouvez diviser l'âge des personnes en catégories telles que les enfants (0-20 ans), les jeunes adultes (20-40 ans), les personnes d'âge moyen (40-60 ans) et les aînés (à partir de 60 ans). À l'aide de ces compartiments numériques, vous transformeriez une propriété numérique en une sorte de fonction catégorique.

Dans Neptune ML, vous pouvez faire coder une propriété numérique en tant qu'entité numérique de compartiment. Vous devez fournir deux éléments :

  • Une plage numérique sous la forme, "range": [a, b] , oùaetbsont des entiers.

  • Un nombre de compartiments, sous la forme "bucket_cnt": c , oùcest le nombre de compartiments, également un nombre entier.

Neptune ML calcule ensuite la taille de chaque seau comme suit : ( b - a ) / c , et code chaque valeur numérique comme le numéro du compartiment dans lequel elle se trouve. Toute valeur inférieure àaest considéré comme appartenant au premier compartiment et toute valeur supérieure àbest considéré comme faisant partie du dernier compartiment.

Vous pouvez également, éventuellement, faire en sorte que les valeurs numériques tombent dans plusieurs compartiments, en spécifiant une taille de fenêtre de diapositive, comme ceci : "slide_window_size": s , oùsest un nombre. Neptune ML transforme ensuite chaque valeur numériquevde la propriété dans une gamme allant de v - s/2 à travers v + s/2 , et attribue la valeurvà tous les godets couverts par la gamme.

Enfin, vous pouvez également fournir un moyen de remplir les valeurs manquantes pour les entités numériques et les entités numériques de compartiments. Pour ce faire, vous devez utiliser "imputer": "imputation technique ", où la technique d'imputation est l'une des"mean","median", ou"most-frequent". Si vous ne spécifiez pas d'imputeur, une valeur manquante peut entraîner l'arrêt du traitement.

Codage des entités de texte dans Neptune ML

Pour le texte libre, Neptune ML peut utiliser plusieurs modèles différents pour convertir la séquence de jetons d'une chaîne de valeur de propriété en vecteur de valeur réelle de taille fixe :

  • text_fasttext— UtilisationsfastTextencodage. Il s'agit de l'encodage recommandé pour les fonctionnalités qui utilisent une et une seule des cinq langues prises en charge par fastText.

  • text_sbert— Utilise leBERT Phrase(SBERT) des modèles de codage. Il s'agit de l'encodage recommandé pour le texte quitext_fasttextne prend pas en charge.

  • text_word2vec— Utilise leWord2vecalgorithmes initialement publiés parGooglepour encoder du texte. Word2Vec ne prend en charge que l'anglais.

  • text_tfidf— Utilise unfréquence de terme : fréquence inverse des documents(TF-IDF) vectoriseur pour coder du texte. Le codage TF-IDF prend en charge des fonctionnalités statistiques que les autres encodages ne possèdent pas.

fastTextencodage des valeurs de propriétés de texte dans Neptune ML

Neptune ML peut utiliser lefastTextmodèles pour convertir les valeurs des propriétés de texte en vecteurs de valeur réelle de taille fixe. Il s'agit de la méthode de codage recommandée pour les valeurs de propriétés de texte dans l'une des cinq langues prises en charge par fastText :

  • en(Anglais)

  • zh(Chinois)

  • hi(hindi)

  • es(Espagnol)

  • fr(Français)

Notez que fastText ne peut pas gérer les phrases contenant des mots dans plusieurs langues.

Letext_fasttextpeut éventuellement prendremax_lengthqui spécifie le nombre maximal de jetons dans une valeur de propriété de texte qui sera codé, après quoi la chaîne est tronquée. Cela peut améliorer les performances lorsque les valeurs des propriétés de texte contiennent de longues chaînes, car simax_lengthn'est pas spécifié, fastText encode tous les jetons quelle que soit la longueur de la chaîne.

Cet exemple indique que les titres de films français sont codés à l'aide de fastText :

{ "file_name" : "nodes/movie.csv", "separator" : ",", "node" : ["~id", "movie"], "features" : [ { "feature": ["title", "title", "text_fasttext"], "language": "fr", "max_length": 1024 } ] }

Encodage de la phrase BERT (SBERT) des entités de texte dans Neptune ML

Neptune ML peut convertir la séquence de jetons d'une valeur de propriété de chaîne en vecteur de valeur réelle de taille fixe en utilisantBERT Phrase(SBERT). Neptune prend en charge deux méthodes SBERT :text_sbert128, qui est la valeur par défaut si vous spécifiez simplementtext_sbert, ettext_sbert512. La différence entre les deux est la longueur maximale d'une chaîne de valeur de propriété de texte codée. Letext_sbert128l'encodage tronque les chaînes de texte après avoir codé 128 jetons, tandis quetext_sbert512tronque les chaînes de texte après avoir codé 512 jetons. En conséquence,text_sbert512nécessite plus de temps de traitement quetext_sbert128. Les deux méthodes sont plus lentes quetext_fasttext.

Le codage SBERT est multilingue, il n'est donc pas nécessaire de spécifier une langue pour le texte de valeur de propriété que vous codez. SBERT prend en charge de nombreuses langues et peut encoder une phrase contenant plusieurs langues. Si vous codez des valeurs de propriétés contenant du texte dans une ou plusieurs langues que fastText ne prend pas en charge, SBERT est la méthode de codage recommandée.

L'exemple suivant indique que les titres de films sont codés en tant que SBERT jusqu'à un maximum de 128 jetons :

{ "file_name" : "nodes/movie.csv", "separator" : ",", "node" : ["~id", "movie"], "features" : [ { "feature": ["title", "title", "text_sbert128"] } ] }

Codage Word2Vec des fonctions de texte dans Neptune ML

Neptune ML peut encoder les valeurs de propriété de chaîne en tant que fonction Word2Vec (Algorithmes Word2vecont été initialement publiés parGoogle). Letext_word2veccode les jetons dans une chaîne en tant que vecteur dense à l'aide de l'un desModèles entraînés par Spacy. Cela ne prend en charge que la langue anglaise utilisant lefr_core_web_lgmodèle).

L'exemple suivant indique que les titres de films sont codés à l'aide de Word2Vec :

{ "file_name" : "nodes/movie.csv", "separator" : ",", "node" : ["~id", "movie"], "features" : [ { "feature": ["title", "title", "text_word2vec"], "language": "en_core_web_lg" } ] }

Notez que le champ de langue est facultatif, car l'anglaisen_core_web_lgest le seul que Neptune prend en charge.

Codage TF-IDF des fonctions de texte dans Neptune ML

Neptune ML peut encoder les valeurs de propriétés de texte commetext_tfidffonctions. Ce codage convertit la séquence de mots du texte en vecteur numérique à l'aide d'unfréquence de terme : fréquence inverse des documents(TF-IDF), suivi d'une opération de réduction de dimensionnalité.

TF-IDF(fréquence de terme — fréquence inverse du document) est une valeur numérique destinée à mesurer l'importance d'un mot dans un ensemble de documents. Il est calculé en divisant le nombre de fois où un mot apparaît dans une valeur de propriété donnée par le nombre total de valeurs de propriétés dans lesquelles il apparaît.

Par exemple, si le mot « baiser » apparaît deux fois dans un titre de film donné (disons, « kiss kiss bang bang ») et que « baiser » apparaît dans le titre de 4 films en tout, alors la valeur TF-IDF de « kiss » dans le titre « kiss bang bang » serait 2 / 4 .

Le vecteur initialement créé ad.dimensions, oùd.est le nombre de termes uniques dans toutes les valeurs de propriété de ce type. L'opération de réduction de dimensionnalité utilise une projection aléatoire clairsemée pour réduire ce nombre à un maximum de 100. Le vocabulaire d'un graphique est ensuite généré en fusionnant tous lestext_tfidfcaractéristiques dedans.

Vous pouvez contrôler le vecteur TF-IDF de plusieurs manières :

  • max_features— Utiliser lemax_features, vous pouvez limiter le nombre de termes danstext_tfidfcaractéristiques aux plus fréquentes. Par exemple, si vous définissezmax_featuresà 100, seuls les 100 termes les plus couramment utilisés sont inclus. La valeur par défaut demax_featuressi vous ne définissez pas explicitement, il est 5 000.

  • min_df— Utiliser lemin_df, vous pouvez limiter le nombre de termes danstext_tfidfdes entités ayant au moins une fréquence de document spécifiée. Par exemple, si vous définissezmin_dfà 5, seuls les termes qui apparaissent dans au moins 5 valeurs de propriétés différentes sont utilisés. La valeur par défaut demin_dfSi vous ne définissez pas explicitement, il est 2.

  • ngram_range— Lengram_rangedétermine quelles combinaisons de mots sont traitées comme des termes. Par exemple, si vous définissezngram_rangepour[2, 4], les 6 termes suivants se trouvent dans le titre « kiss kiss bang bang » :

    • Termes à 2 mots: « kiss kiss », « kiss bang » et « bang bang ».

    • Termes à 3 mots: « kiss kiss bang » et « kiss bang bang ».

    • Termes à 4 mots: « Kiss Kiss Bang Bang Bang ».

    Le paramètre par défaut pour ngram_range est [1, 1].

Fonctionnalités Datetime dans Neptune ML

Neptune ML peut convertir des parties dedatetimevaleurs de propriétés dans des entités catégorielles en les encodant commebaies à un chaud. Utilisation de l'datetime_partspour spécifier une ou plusieurs des parties suivantes à encoder : ["year", "month", "weekday", "hour"]. Si vous ne définissez pasdatetime_parts, par défaut, les quatre parties sont codées.

Par exemple, si la plage de valeurs date/heure s'étend sur les années 2010 à 2012, les quatre parties de l'entrée date/heure2011-04-22 01:16:34sont les suivants :

  • année[0, 1, 0].

    Puisqu'il n'y a que trois ans dans la période (2010, 2011 et 2012), la baie à une seule source comporte trois entrées, une par année.

  • mois[0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0].

    Ici, le tableau à chaud a une entrée pour chaque mois de l'année.

  • jour de semaine[0, 0, 0, 0, 1, 0, 0].

    La norme ISO 8601 indique que le lundi est le premier jour de la semaine et que le 22 avril 2011 était un vendredi, le tableau correspondant à un jour de semaine chaud est chaud en cinquième position.

  • heure[0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0].

    L'heure 1 h du matin est réglée dans un tableau de 24 membres à chaud.

Le jour du mois, la minute et la seconde ne sont pas codés catégoriquement.

Si le totaldatetimela plage en question ne comprend que des dates au cours d'une seule année, nonyearle tableau est codé.

Vous pouvez spécifier une stratégie d'imputation à remplir manquantedatetimevaleurs, à l'aide de la commandeimputeret l'une des stratégies disponibles pour les fonctions numériques.

Codage automatique des fonctionnalités dans Neptune ML

Au lieu de spécifier manuellement les méthodes de codage des entités à utiliser pour les propriétés de votre graphique, vous pouvez définirautocomme méthode de codage d'entités. Neptune ML tente ensuite de déduire le meilleur codage d'entités pour chaque propriété en fonction de son type de données sous-jacent.

Voici quelques-unes des heuristiques utilisées par Neptune ML pour sélectionner les codages de fonctionnalités appropriés :

  • Si la propriété ne comporte que des valeurs numériques et peut être convertie en types de données numériques, Neptune ML l'encode généralement en tant que valeur numérique. Toutefois, si le nombre de valeurs uniques de la propriété est inférieur à 10 % du nombre total de valeurs et que la cardinalité de ces valeurs uniques est inférieure à 100, Neptune ML utilise un codage catégorique.

  • Si les valeurs des propriétés peuvent être converties en undatetime, puis Neptune ML les encode en tant quedatetimefonction.

  • Si les valeurs des propriétés peuvent être forcées sur des valeurs booléennes (1/0 ou Vrai/Faux), Neptune ML utilise le codage par catégorie.

  • Si la propriété est une chaîne dont plus de 10 % de ses valeurs sont uniques et que le nombre moyen de jetons par valeur est supérieur ou égal à 3, le ML Neptune déduit le type de propriété comme texte et détecte automatiquement la langue utilisée. Si la langue détectée est l'une des langues prises en charge parfastText, à savoir l'anglais, le chinois, l'hindi, l'espagnol et le français, puis Neptune ML utilisetext_fasttextpour encoder le texte. Sinon, Neptune ML utilisetext_sbert.

  • Si la propriété est une chaîne non classée en tant qu'entité de texte, Neptune ML présume qu'il s'agit d'une fonction catégorielle et utilise un codage de catégorie.

  • Si chaque nœud possède sa propre valeur unique pour une propriété qui est considérée comme une entité de catégorie, Neptune ML supprime la propriété du graphique d'entraînement car il s'agit probablement d'un ID qui ne serait pas informatif pour l'apprentissage.

  • Si la propriété contient des séparateurs Neptune valides tels que des points-virgules (« ; »), Neptune ML ne peut traiter la propriété que commeMultiNumericalouMultiCategorical.

    • Neptune ML essaie d'abord d'encoder les valeurs en tant qu'entités numériques. Si cela réussit, Neptune ML utilise le codage numérique pour créer des entités vectorielles numériques.

    • Sinon, Neptune ML code les valeurs comme multicatégories.

  • Si Neptune ML ne peut pas déduire le type de données des valeurs d'une propriété, Neptune MLsupprime la propriété du graphique d'entraînement.