Bonnes pratiques pour la création de données d'entraînement

Cette page décrit certains concepts de base dont vous devez tenir compte lorsque vous rassemblez des données pour un ensemble de données AutoML Tables. Cette description ne se veut pas exhaustive.

Introduction

Un ensemble de données bien conçu augmente la qualité du modèle de machine learning qui en résulte. Vous pouvez vous appuyer sur les instructions de cette page pour améliorer la qualité de votre ensemble de données et de votre modèle.

Si vous avez l'expérience de la création de données d'entraînement pour les modèles de machine learning, consultez la liste des tâches dont vous n'avez pas à vous soucier. AutoML Tables effectue automatiquement de nombreuses tâches de préparation des données.

Bonnes pratiques pour la préparation des données

Éviter les fuites cibles

Une fuite cible se produit lorsque les données d'entraînement contiennent des informations prédictives qui ne sont pas disponibles lorsque vous demandez une prédiction. Les fuites cibles peuvent se traduire par un modèle très précis dans son évaluation, mais peu performant sur des données réelles.

Par exemple, supposons que vous souhaitiez connaître la quantité de crèmes glacées que votre magasin vendra demain. Vous ne pouvez pas inclure la température du jour cible dans vos données d'entraînement, car vous ne la connaissez pas encore (ce n'est pas encore arrivé). Cependant, vous pouvez inclure dans la requête de prédiction la température prédite pour le jour précédent.

Éviter le décalage entraînement/diffusion

Un décalage entraînement/diffusion se produit lorsque vous générez des données d'entraînement de façon différente par rapport à celles que vous générez pour demander des prédictions.

Par exemple, si vous utilisez une valeur moyenne sur 10 jours pour l'entraînement et que la prédiction que vous demandez est établie sur la valeur moyenne du mois précédent.

En général, toute différence entre la façon dont vous générez les données d’entraînement et les données de diffusion (celles que vous utiliserez pour générer les prédictions) doit être examinée afin d'éviter un décalage entraînement/diffusion.

Décalage entraînement/diffusion et distribution des données

Un décalage entraînement/diffusion peut également se produire en fonction de la distribution des données dans vos répartitions des données d'entraînement, de validation et de test. Il existe souvent une différence entre la distribution des données qu'un modèle observe lorsqu'il est déployé en production et celle de l'ensemble de données sur lequel il est entraîné. Par exemple, en production, un modèle peut être appliqué à une population d'utilisateurs totalement différente de celle observée pendant l'entraînement, ou servir à effectuer des prédictions 30 jours après l'enregistrement des données d'entraînement finales.

Pour de meilleurs résultats, assurez-vous que la distribution des répartitions de données employées pour créer votre modèle reflète précisément la différence entre l'ensemble de données d'entraînement et les données sur lesquelles vous effectuerez des prédictions dans votre environnement de production. AutoML Tables peut produire des prédictions non monotones. Si les données de production sont échantillonnées à partir d'une distribution très différente de celle des données d'entraînement, les prédictions non monotones ne seront pas très fiables.

La différence entre les données de production et les données d'entraînement doit reproduire la différence entre la répartition des données de validation et la répartition des données d'entraînement, ainsi qu'entre la répartition des données de test et la répartition des données de validation.

Par exemple, si vous envisagez d'effectuer des prédictions sur la valeur vie client (LTV) au cours des 30 prochains jours, assurez-vous que la période des données de votre répartition des données de validation commence 30 jours après la période de votre répartition des données d'entraînement, et que la période des données de votre répartition des données de test commence 30 jours après votre répartition des données de validation.

De même, si vous souhaitez que votre modèle soit réglé pour générer des prédictions sur de nouveaux utilisateurs, veillez à ce que les données d'un utilisateur spécifique ne figurent que dans une seule répartition de vos données d'entraînement. Par exemple, toutes les lignes qui se rapportent à user1 figurent dans la répartition des données d'entraînement, toutes les lignes qui se rapportent à user2 figurent dans la répartition des données de validation, et toutes les lignes qui se rapportent à user3 figurent dans la répartition des données de test.

Fournir un signal horaire

Si le modèle sous-jacent de vos données est susceptible de changer avec le temps (elles ne sont pas distribuées de façon aléatoire dans le temps), veillez à fournir ces informations à AutoML Tables. Vous pouvez fournir un signal horaire de plusieurs manières :

  • Lorsque vous créez votre ensemble de données, si chaque ligne de données comporte un horodatage, assurez-vous que la colonne correspondante est incluse, qu'elle précise le type de données Timestamp et qu'elle est définie en tant que colonne Heure. Les données seront fractionnées en suivant cet ordre, les plus récentes constituant les données de test et les plus anciennes les données d'entraînement. En savoir plus

  • Si votre colonne temporelle contient peu de valeurs distinctes, vous devez effectuer un fractionnement manuel des données au lieu d'utiliser la colonne Heure pour les fractionner. Sinon, vous risquez de ne pas obtenir suffisamment de lignes dans chaque ensemble de données, ce qui peut entraîner l'échec de l'entraînement.

  • Si les informations temporelles ne sont pas isolées dans une colonne, vous pouvez effectuer un fractionnement manuel des données pour utiliser les données les plus récentes comme données de test, et les données les plus anciennes comme données d'entraînement.

Rendre les informations explicites si nécessaire

En règle générale, lorsque vous créez un modèle à l'aide de AutoML Tables, il n'est pas nécessaire d'effectuer une extraction de caractéristiques. Toutefois, pour certaines primitives de données, cette opération permet d'améliorer la qualité du modèle.

Par exemple, si les données incluent la longitude et la latitude, ces colonnes sont traitées comme des valeurs numériques, sans calcul particulier. Si l'emplacement ou la distance constituent un signal pour votre problème, vous devez extraire une caractéristique qui fournit ces informations de manière explicite.

Voici quelques types de données pouvant nécessiter une extraction de caractéristiques :

  • Longitude/Latitude
  • URL
  • Adresses IP
  • Adresses e-mail
  • Numéros de téléphone
  • Autres codes géographiques (par exemple, des codes postaux)

Inclure des données calculées ou globales sur une ligne

AutoML Tables n'utilise que les données d'entrée d'une seule ligne pour prédire la valeur cible de cette ligne. Si vous avez calculé ou regroupé des données provenant d'autres lignes ou sources pouvant servir à déterminer la valeur estimée d'une ligne, incluez ces données dans la ligne source. Veillez à ce que la nouvelle colonne n'entraîne pas de fuite cible ni de décalage entraînement/diffusion.

Par exemple, si vous souhaitez prédire la demande de la semaine suivante pour un produit, vous pouvez améliorer la qualité de la prédiction en incluant des colonnes contenant les valeurs suivantes :

  • Nombre total d'articles en stock de la même catégorie que le produit
  • Prix moyen des articles en stock de la même catégorie que le produit
  • Nombre de jours précédant un jour férié lorsque la prédiction est demandée
  • et ainsi de suite

Dans un autre exemple, si vous souhaitez prédire si un utilisateur spécifique achètera un produit, vous pouvez améliorer la qualité de la prédiction en incluant des colonnes contenant les valeurs suivantes :

  • Taux de conversion historique ou taux de clics moyen d'un utilisateur spécifique.
  • Nombre de produits présents dans le panier de l'utilisateur.

Représenter les valeurs nulles comme chaînes vides

Si vos données utilisent des caractères spéciaux ou des chiffres pour représenter les valeurs nulles, cela peut poser des problèmes à AutoML Tables, car le programme ne connaît pas leur signification. Si vous importez au format CSV, utilisez des chaînes vides pour représenter les valeurs nulles. Si vous importez à partir de BigQuery, utilisez la valeur NULL.

Éviter les valeurs manquantes si possible

Vérifiez les valeurs manquantes dans vos données et corrigez-les si possible. Sinon, vous pouvez laisser la valeur vide si la colonne est définie comme pouvant être vide.

Utiliser des espaces pour séparer le texte

AutoML Tables segmente les chaînes de texte et peut déduire un signal d'entraînement à partir de mots individuels. Il utilise des espaces pour séparer les mots. Les mots séparés par d'autres caractères sont traités comme une seule entité.

Par exemple, si vous spécifiez le texte "rouge/vert/bleu", il n'est pas segmenté en "rouge", "vert" et "bleu". Si ces termes pris séparément sont importants pour l'entraînement du modèle, vous devez transformer le texte en "rouge vert bleu" avant de l'inclure dans les données d'entraînement.

Vérifier l'exactitude et la cohérence des caractéristiques catégorielles

Des incohérences au niveau des données peuvent fausser la répartition entre les catégories. Par exemple, si vos données incluent "Marron" et" "marron", AutoML Tables considère ces valeurs comme des catégories distinctes, alors que vous ne souhaitiez peut-être pas les différencier. Les fautes d'orthographe peuvent produire le même effet. Veillez à supprimer ce genre d'incohérences des données catégorielles avant de créer vos données d'entraînement.

Être attentif aux classes déséquilibrées

Si vos classes sont déséquilibrées (problème de classification avec un ou plusieurs résultats rarement rencontrés), reportez-vous aux conseils suivants.

Fournir suffisamment de données d'entraînement pour la classe minoritaire

Une classe qui ne comporte que quelques lignes de données abaisse la qualité du modèle. Si possible, essayez de fournir au moins 100 lignes de données pour chaque classe.

Préférer un fractionnement manuel

Pour l'ensemble de données de test, AutoM Tables sélectionne les lignes de manière aléatoire (mais déterministe). En cas de classes déséquilibrées, vous pourriez vous retrouver avec une classe minoritaire très peu représentée dans votre ensemble de données de test, voire pas du tout, ce qui entraînerait l'échec de l'entraînement.

Si vos classes sont déséquilibrées, il est conseillé d'effectuer un fractionnement manuel afin que chaque segment contienne suffisamment de lignes de résultats minoritaires.

Éviter les biais

Assurez-vous que vos données d'entraînement sont représentatives de la globalité des données potentielles pour lesquelles vous allez réaliser des prédictions. Par exemple, si vous avez des clients partout dans le monde, les données d'entraînement doivent couvrir plusieurs pays.

Fournir suffisamment de données d'entraînement

Si les données d'entraînement sont insuffisantes (en nombre de lignes), le modèle généré sera peu performant. Plus vous utilisez de caractéristiques (colonnes) pour entraîner le modèle, plus vous avez besoin de données (lignes). Pour les modèles de classification, la bonne formule est une structure composée d'au moins 10 fois plus de lignes que de colonnes. Pour les modèles de régression, vous devez fournir au moins 50 fois plus de lignes que de colonnes.

Votre ensemble de données doit toujours contenir au moins 1 000 lignes.

Laisser faire AutoML Tables pour tous les autres prétraitements et transformations

En dehors des observations ci-dessus, laissez AutoML Tables effectuer l'extraction de caractéristiques. AutoM Tables fonctionne mieux lorsqu'il a accès aux données sous-jacentes. Consultez la section Préparation des données effectuée automatiquement par AutoML Tables.

Préparation des données effectuée automatiquement par AutoML Tables

Cette section répertorie les exigences courantes concernant les données d'entraînement dont AutoML Tables se charge automatiquement. Vous n'avez pas besoin d'inclure ces calculs dans vos données d'entraînement. En fait, si vous effectuez ces transformations vous-même et que vous les incluez dans vos données d'entraînement, vous risquez d'abaisser la qualité du modèle obtenu.

Les transformations automatiques suivantes sont appliquées pour chaque colonne de caractéristiques en fonction du type de colonne :

Type de colonne Transformation
Numérique
  • 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.
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.
Catégoriel
  • Chaîne catégorielle telle quelle : pas de modification de la casse, de la ponctuation, de l'orthographe, du temps grammatical, etc.
  • Convertir le nom de la catégorie en index de recherche de dictionnaire et générer 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 et l'intégration obtenue.
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.
Text
  • Le texte tel quel : il n'y a aucun changement au niveau 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.
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.
Temporel
  • Applique les transformations aux colonnes numériques.
  • Détermine l'année, le mois, le jour et le jour de la semaine. Traiter chaque valeur de l'horodatage comme une colonne catégorielle.
  • Les valeurs numériques non valides (par exemple, les valeurs en dehors d'une plage d'horodatage type ou les valeurs extrêmes) ne font l'objet d'aucun traitement spécial et ne sont pas supprimées.
  • Les lignes contenant des entrées d'horodatage non valides (par exemple, une chaîne d'horodatage non valide) ne sont pas incluses pour l'entraînement et la prédiction.
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.
Struct
  • Les valeurs Struct sont automatiquement aplaties sous forme de champs. Les champs aplatis sont traités selon leur type de colonne.

Valeurs nulles ou manquantes

Vous pouvez choisir le mode de gestion des valeurs nulles pour vos données d'entraînement en définissant cette colonne comme pouvant être nulle ou non dans votre schéma d'ensemble de données. Pour plus d'informations, consultez la page Créer un ensemble de données.

Si une valeur nulle apparaît dans une colonne pouvant être nulle, la ligne entière est exclue de l'entraînement.

Les valeurs nulles présentes dans les colonnes pouvant être nulles sont représentées avec une variable d'indicateur spéciale indiquant que la valeur était nulle ou manquante. Pour les transformations catégorielles et textuelles, l'indicateur génère une représentation vectorielle continue.

AutoML Tables traite les éléments suivants comme des valeurs nulles :

  • Valeur NULL BigQuery.

  • NaN ou valeurs numériques infinies.

  • Chaîne vide. AutoML Tables 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.

Étapes suivantes