Types de données et transformations

Cette page décrit le fonctionnement de l'IA Vertex avec différents types de données tabulaires pour les modèles AutoML.

Présentation des transformations dans Vertex AI

Entraînement du modèle

Les données tabulaires d'entrée doivent être transformées avant de pouvoir être utilisées pour l'entraînement du modèle. La transformation indique la fonction d'une caractéristique de données particulière.

Les transformations suivantes sont acceptées :

Si la source de données est un fichier CSV dans Cloud Storage, des virgules (",") doivent être utilisées comme délimiteur. Vertex AI utilise le format CSV RFC 4180.

Si votre source de données est BigQuery et que vous effectuez une classification ou une régression, vous pouvez inclure des données composées de plusieurs primitives de données. Ces types de données composites doivent être prétraités avant de pouvoir appliquer des transformations. Les types de données composites suivants sont acceptés :

Si une valeur de type est manquante ou nulle, Vertex AI la gère en fonction de l'objectif de votre modèle et de la transformation appliquée à cette caractéristique. Pour en savoir plus, consultez la section Gestion des valeurs manquantes ou nulles.

Prédiction

Le format des données utilisées pour la prédiction doit correspondre à celui utilisé pour l'entraînement. Pour en savoir plus, consultez la section Format de données pour les prédictions.

Transformations Vertex AI

Catégorielle

L'application d'une transformation catégorielle permet à la caractéristique de représenter les valeurs dans une catégorie. Il s'agit d'un niveau nominal. Les valeurs ne diffèrent que par leur nom, sans ordre particulier. Vous pouvez représenter les valeurs catégorielles par des nombres, mais les valeurs n'ont pas de relation numérique les unes avec les autres. C'est-à-dire qu'un 1 catégoriel ne signifie pas "supérieur" à un 0 catégoriel.

Voici quelques exemples de valeurs catégorielles :

  • Booléen : true, false.
  • Pays : "USA", "Canada", "China", etc.
  • Code d'état HTTP : "200", "404", "500", etc.

Les valeurs catégorielles sont sensibles à la casse. Les variations orthographiques sont traitées comme des catégories différentes (par exemple, "Color" et "Colour" ne sont pas combinés).

Lorsque vous entraînez un modèle en utilisant une caractéristique avec transformation catégorielle, Vertex AI applique les transformations de données suivantes à la caractéristique puis utilise les éléments pertinents pour l'entraînement :

  • La chaîne catégorielle telle quelle : pas de modification de la casse, de la ponctuation, de l'orthographe, du temps grammatical, etc…
  • Convertit le nom de la catégorie en index de recherche de dictionnaire et génère une intégration pour chaque index.
  • Les catégories qui apparaissent moins de cinq fois dans l'ensemble de données d'entraînement sont traitées comme des catégories "Inconnu". La catégorie "Inconnu" possède son propre index de recherche ainsi qu'une intégration en résultant.

Les transformations catégorielles peuvent être appliquées aux données de type STRING dans les fichiers CSV ou aux types de données BigQuery suivants :

  • INT64
  • NUMERIC, BIGNUMERIC
  • FLOAT64
  • BOOL
  • STRING
  • DATE
  • DATETIME
  • TIME
  • TIMESTAMP

Texte

Une transformation de texte permet à la caractéristique d'être utilisée sous forme de texte libre, généralement composé de jetons textuels.

Voici quelques exemples de valeurs de texte :

  • "The quick brown fox"
  • "This restaurant is the best! The food is delicious"

Pour les modèles de prévision, la transformation de texte n'est pas compatible avec les fonctionnalités de covariable.

Lorsque vous entraînez un modèle en utilisant une caractéristique avec transformation textuelle, Vertex AI applique les transformations de données suivantes à la caractéristique puis utilise les éléments pertinents pour l'entraînement :

  • Le texte tel quel : pas de modification de la casse, de la ponctuation, de l'orthographe, du temps grammatical, etc…
  • Segmente le texte en mots et génère des séquences de 1 gramme et 2 grammes à partir des mots. Convertit chaque n-gramme en index de recherche de dictionnaire et génère une intégration pour chaque index. Combine l'intégration de tous les éléments en une seule intégration à l'aide de la moyenne.

    La tokenisation est basée sur les limites du script Unicode.

  • Les valeurs manquantes disposent de leur propre index de recherche et de l'intégration en résultant.
  • Les mots vides ne reçoivent pas de traitement spécial et ne sont pas supprimés.

Les transformations de texte peuvent être appliquées aux données de type STRING dans les fichiers CSV ou aux types de données BigQuery suivants :

  • STRING
  • DATETIME

Numeric

Une transformation numérique permet d'utiliser une colonne sous la forme d'un nombre ordinal ou quantitatif. Ces nombres peuvent être comparés. C'est-à-dire que deux nombres distincts peuvent être inférieurs ou supérieurs l'un à l'autre.

Les espaces de début et de fin sont supprimées.

Le tableau suivant répertorie tous les formats compatibles pour une transformation numérique :

Format Exemples Notes
Chaîne numérique "101", 101.5" Le caractère point (".") est le seul délimiteur décimal valide. Les chaînes numériques "101,5" et "100 000" ne sont pas valides.
Notation scientifique "1.12345E+11", "1.12345e+11" Voir la remarque à propos des chaînes numériques concernant les délimiteurs décimaux.
N'est pas un nombre. "NAN", "nan", "+NAN" Ne tient pas compte de la casse. Les préfixes plus ("+") ou moins ("-") sont ignorés. Interprété en tant que valeur NULL.
Infini "INF", "+inf" Ne tient pas compte de la casse. Les préfixes plus ("+") ou moins ("-") sont ignorés. Interprété en tant que valeur NULL.

Si une valeur d'une colonne avec une transformation numérique ne respecte pas l'un de ces formats, la ligne entière est exclue de l'entraînement ou la valeur est traitée comme Null. Vous devez choisir entre ces résultats lorsque vous sélectionnez la transformation numérique.

Lorsque vous entraînez un modèle en utilisant une caractéristique avec transformation numérique, Vertex AI applique les transformations de données suivantes à la caractéristique puis utilise les éléments pertinents pour l'entraînement :

  • Valeur convertie au format float32.
  • z_score de la valeur.
  • Index de bin en tant que valeur basée sur les quantiles. La taille du bin est de 100.
  • log(valeur + 1) lorsque la valeur est supérieure ou égale à 0. Sinon, cette transformation n'est pas appliquée et la valeur est considérée comme manquante.
  • z_score de log(valeur + 1) lorsque la valeur est supérieure ou égale à 0. Sinon, cette transformation n'est pas appliquée et la valeur est considérée comme manquante.
  • Valeur booléenne indiquant si la valeur est nulle.
  • Les lignes contenant des entrées numériques non valides (par exemple, une chaîne ne pouvant pas être analysée avec float32) ne sont pas incluses pour l'entraînement et la prédiction.
  • Les valeurs extrêmes et les anomalies ne reçoivent aucun traitement particulier.

Les transformations numériques peuvent être appliquées aux données de type STRING dans les fichiers CSV ou aux types de données BigQuery suivants :

  • INT64
  • NUMERIC, BIGNUMERIC
  • FLOAT64
  • STRING
  • TIMESTAMP

Code temporel

Une transformation d'horodatage permet d'utiliser une caractéristique sous la forme d'un moment précis représenté par une heure civile avec fuseau horaire ou par un horodatage Unix. Seules les caractéristiques avec transformation d'horodatage peuvent être utilisées pour la colonne Heure.

Si aucun fuseau horaire n'est spécifié avec l'heure civile, le fuseau horaire par défaut est UTC.

Le tableau suivant répertorie tous les formats de chaîne d'horodatage compatibles :

Format Exemple Notes
%E4Y-%m-%d "2017-01-30" Consultez la documentation Abseil pour obtenir une description de ce format.
%E4Y/%m/%d "2017/01/30"
%Y/%m/%d %H:%M:%E*S "2017/01/30 23:59:58"
%d-%m-%E4Y "30-11-2018"
%d/%m/%E4Y "30/11/2018"
%d-%B-%E4Y "30-November-2018"
%Y-%m-%dT%H:%M:%E*S%Ez "2019-05-17T23:56:09.05Z" RFC 3339
Chaîne d'horodatage Unix en secondes "1541194447" Uniquement pour les périodes comprises entre le 1er janvier 1990 et le 1er janvier 2010.
Chaîne d'horodatage Unix en millisecondes "1541194447000"
Chaîne d'horodatage Unix en microsecondes "1541194447000000"
Chaîne d'horodatage Unix en nanosecondes "1541194447000000000"

Si une valeur d'une colonne avec transformation d'horodatage ne respecte pas l'un de ces formats, la ligne entière est exclue de l'entraînement ou la valeur est traitée comme Null. Vous devez choisir entre ces résultats lorsque vous sélectionnez une transformation d'horodatage.

Lorsque vous entraînez un modèle en utilisant une caractéristique avec transformation d'horodatage, Vertex AI applique les transformations de données suivantes à la caractéristique puis utilise les éléments pertinents pour l'entraînement :

  • Applique les transformations aux colonnes numériques.
  • Détermine l'année, le mois, le jour et le jour de la semaine. Traite chaque valeur de l'horodatage comme une colonne catégorielle.
  • Les valeurs numériques non valides (par exemple, des valeurs en dehors d'une plage d'horodatage standard ou des valeurs extrêmes) ne reçoivent pas de traitement spécial et ne sont pas supprimées.
  • Les lignes contenant des entrées d'horodatage incorrectes (par exemple, une chaîne d'horodatage non valide) ne sont pas incluses pour l'entraînement et la prédiction.

Les transformations d'horodatage peuvent être appliquées aux données de type STRING dans les fichiers CSV ou aux types de données BigQuery suivants :

  • INT64
  • STRING
  • DATE
  • DATETIME
  • TIMESTAMP

Types de données composites

Parfois, vous devez inclure des données composées de plusieurs primitives de données, comme par exemple un tableau (ARRAY) ou une structure (STRUCT). Les types de données composites ne sont disponibles que si vous utilisez BigQuery en tant que source de données et ne sont pas acceptés pour les modèles de prévision.

Struct

Une structure peut être utilisée pour représenter un groupe de champs étiquetés. Une structure contient une liste de noms de champs, chacun associé à un type de données. La liste des champs et leurs types de données doivent être identiques pour toutes les valeurs de structure d'une colonne.

Voici quelques exemples de structures :

  • Pression artérielle : {"timestamp": 1535761416, "systolic": 110, "diastolic": 70}
  • Produit : {"name": "iPhone", price: 1000}

Vous utilisez le type de données STRUCT de BigQuery pour représenter les structures.

Les valeurs Struct sont automatiquement aplaties sous forme de champs. L'IA Vertex applique la transformation de données aux champs aplatis en fonction de leur type de transformation.

Tableau

Un tableau peut être utilisé pour représenter une liste de valeurs. Les valeurs contenues doivent accepter le même type de transformation. Vous pouvez inclure des structures (STRUCT) dans un tableau mais elles doivent toutes avoir la même structure.

Vertex AI traite les tableaux comme représentant la pondération relative. En d'autres termes, les éléments qui apparaissent plus tard dans le tableau sont davantage pondérés que ceux qui apparaissent en premier.

Voici quelques exemples de tableaux :

  • Catégories de produits :

    ["Clothing", "Women", "Dress", ...]

  • Derniers achats :

    ["iPhone", "Laptop", "Suitcase", ...]

  • Enregistrements utilisateur :

    [{"name": "Joelle", ID: 4093}, {"name": "Chloe", ID: 2047}, {"name": "Neko", ID: 3432}, ...]

Vous utilisez le type de données ARRAY de BigQuery pour représenter des tableaux.

La transformation de données Vertex AI s'applique en fonction du type de transformation appliqué au tableau :

Type Array Transformation
Tableau numérique
  • Toutes les transformations pour les types numériques appliquées à la moyenne des N derniers éléments où N = {1, 2, 4, 8, tous}. Les éléments les plus fortement mis en valeur se trouvent à la fin du tableau, et non au début.
  • La moyenne des tableaux vides est considérée comme nulle.
Tableau catégoriel
  • Pour chaque élément du tableau des N derniers éléments où N = {1, 2, 4, 8, tous}, convertit le nom de catégorie en index de recherche de dictionnaire et génère une intégration pour chaque index. Combine l'intégration de tous les éléments en une seule intégration à l'aide de la moyenne.
  • Les tableaux vides sont traités comme une intégration de zéros.
Tableau texte
  • Effectue une concaténation de toutes les valeurs de texte du tableau en une seule valeur de texte à l'aide d'une espace (" ") comme délimiteur, puis traite le résultat sous forme de valeur de texte unique. Applique les transformations aux colonnes Texte.
  • Les tableaux vides sont traités comme une intégration de zéros.
Tableau d'horodatage
  • Applique les transformations des colonnes numériques à la moyenne des N derniers éléments du tableau. N = {1, 2, 4, 8, tous}. Cela signifie que les éléments les plus fortement mis en valeur sont ceux situés vers la fin du tableau.
Tableau de structures
  • Les structures du tableau sont aplaties en champs individuels puis regroupées dans des tableaux par champ. La transformation de tableau (telle que décrite dans cette table) est appliquée en fonction du type de champ pour le tableau.

Traitement des valeurs manquantes ou nulles

La manière dont les valeurs manquantes sont traitées dépend de l'objectif de votre modèle et de la transformation appliquée à cette caractéristique.

Classification et régression

Pour les modèles de classification et de régression, les valeurs nulles entraînent une représentation vectorielle continue des transformations de texte et de catégorie. Pour les autres transformations, la valeur nulle est laissée nulle.

Prévision

Pour les modèles de prévision, les valeurs nulles sont écrasées à partir des données environnantes (il n'y a pas d'option pour laisser une valeur nulle comme valeur nulle). Si vous préférez contrôler la manière dont les valeurs nulles sont imputées, vous pouvez les imputer explicitement. Les meilleures valeurs peuvent dépendre de vos données et de votre problématique métier.

Les lignes manquantes (par exemple, aucune ligne pour une date spécifique, avec une précision de données quotidienne) sont autorisées, mais Vertex AI n'impute pas de valeurs pour les données manquantes. Les lignes manquantes peuvent diminuer la qualité du modèle. Évitez donc les lignes manquantes, dans la mesure du possible. Par exemple, si une ligne est manquante, car la quantité de ventes de ce jour est égale à zéro, ajoutez une ligne pour ce jour et définissez explicitement les données de ventes sur 0.

Quelles sont les valeurs traitées comme des valeurs nulles ?

Lors de l'entraînement d'un modèle tabulaire AutoML, Vertex AI traite les valeurs suivantes comme des valeurs nulles :

  • Valeur NULL BigQuery.

  • NaN ou valeurs numériques infinies.

  • Chaîne vide. Vertex AI ne coupe pas les espaces à partir des chaînes. En d'autres termes, " " n'est pas considéré comme une valeur nulle.

  • Chaîne pouvant être convertie en NaN ou en valeur numérique infinie.

    • Pour "NAN", ignore la casse, avec un préfixe "plus" ou "moins" facultatif.
    • Pour "INF", ignore la casse, avec un préfixe "plus" ou "moins" facultatif.
  • Valeurs manquantes.

  • Valeurs d'une colonne avec transformation numérique ou d'horodatage qui ne sont pas dans un format valide pour la transformation de la colonne. Dans ce cas, si vous avez spécifié que la ligne contenant la valeur non valide doit être utilisée lors de l'entraînement, la valeur non valide est considérée comme nulle.

Format de données pour les prédictions

Le format de données utilisé pour la prédiction doit correspondre à celui utilisé pour l'entraînement.

Si vous avez entraîné votre modèle sur des données dans un fichier CSV dans Cloud Storage, vos données étaient de type STRING. Si vous utilisez un objet JSON pour envoyer votre requête de prédiction, assurez-vous que toutes les valeurs des paires clé/valeur sont également de type STRING.

Si vous avez entraîné votre modèle sur des données stockées dans BigQuery et que vous utilisez un objet JSON pour envoyer votre requête de prédiction, les types de données des paires clé/valeur JSON doivent respecter le mappage indiqué dans le tableau ci-dessous.

Type de données BigQuery Type de données JSON
INT64 String
NUMERIC, BIGNUMERIC Number
FLOAT64 Number
BOOL Booléen
STRING String
DATE String
DATETIME String
TIME String
TIMESTAMP String
Array Array
STRUCT Objet

Par exemple, si vos données d'entraînement contiennent des caractéristiques length de type FLOAT64, la paire clé-valeur JSON suivante est correcte :

"length":3.6,

Inversement, la paire clé-valeur JSON suivante génère une erreur :

"length":"3.6",

Étapes suivantes