Prétraitement automatique des caractéristiques

BigQuery ML effectue un prétraitement automatique pendant l'entraînement à l'aide de l'instruction CREATE MODEL. Le prétraitement automatique comprend l'imputation de valeur manquante et les transformations de caractéristiques.

Pour en savoir plus sur la compatibilité du prétraitement des caractéristiques dans BigQuery ML, consultez la Présentation du prétraitement des caractéristiques.

Pour en savoir plus sur les instructions et les fonctions SQL compatibles avec chaque type de modèle, consultez la section Parcours utilisateur de bout en bout pour chaque modèle.

Imputation des données manquantes

Dans le domaine statistique, l'imputation permet de remplacer des données manquantes par des valeurs. Lorsque vous entraînez un modèle dans BigQuery ML, les valeurs NULL sont considérées comme des données manquantes. Lorsque vous effectuez des prédictions dans BigQuery ML, vous pouvez vous heurter à des valeurs manquantes lorsque BigQuery ML rencontre une valeur NULL ou une valeur non répertoriée. BigQuery ML gère les données manquantes différemment, en fonction du type de données dans la colonne.

Type de colonne Méthode d'imputation
Numérique Lors des opérations d'entraînement et de prédiction, les valeurs NULL des colonnes numériques sont remplacées par la valeur moyenne de la colonne donnée, calculée par la colonne de caractéristiques dans les données d'entrée d'origine.
Encodage one-hot/multi-hot Lors des opérations d'entraînement et de prédiction, les valeurs NULL des colonnes à encodage one-hot ou multi-hot sont mappées vers une catégorie supplémentaire, qui est ajoutée aux données. Une pondération de 0 est attribuée aux données non répertoriées lors de la prédiction.
TIMESTAMP Les colonnes d'horodatage (TIMESTAMP) ont recours à un mélange des méthodes d'imputation utilisées pour les colonnes standardisées et les colonnes à encodage one-hot. Pour la colonne de temps Unix générée, BigQuery ML remplace les valeurs par le temps Unix moyen des colonnes d'origine. BigQuery ML attribue le reste des valeurs générées à la catégorie NULL respective pour chacune des caractéristiques extraites.
STRUCT Lors des opérations d'entraînement et de prédiction, chaque champ de la colonne STRUCT est imputé en fonction de son type.

Transformations des caractéristiques

Par défaut, BigQuery ML transforme les caractéristiques d'entrée comme suit :

Type de données d'entrée Méthode de transformation Détails
INT64
NUMERIC
BIGNUMERIC
FLOAT64
Standardisation Pour la plupart des modèles, BigQuery ML standardise et centre les colonnes numériques sur zéro avant de les transmettre à l'entraînement. Les exceptions sont les modèles "boosted tree" (arbre de décision à boosting) et "random forest" (forêt d'arbres décisionnels), pour lesquels aucune standardisation n'a lieu, et les modèles k-means (k-moyennes), où l'option STANDARDIZE_FEATURES détermine si les caractéristiques numériques sont standardisées ou non.
BOOL
STRING
BYTES
DATE
DATETIME
TIME
Encodage one-hot Pour toutes les colonnes non numériques et non sous forme de tableau autres que TIMESTAMP, BigQuery ML effectue une transformation d'encodage one-hot pour tous les modèles autres que les modèles en arbre de décision à boosting et forêt d'arbres décisionnels. Cette transformation génère une caractéristique distincte pour chaque valeur unique de la colonne. La transformation d'encodage des étiquettes est appliquée pour entraîner les modèles en arbre de décision à boosting ou en forêt d'arbre décisionnels afin de convertir chaque valeur unique en une valeur numérique.
ARRAY Encodage multi-hot Pour toutes les colonnes ARRAY non numériques, BigQuery ML effectue une transformation d'encodage multi-hot. Cette transformation génère une caractéristique distincte pour chaque élément unique de la colonne ARRAY.
TIMESTAMP Transformation de l'horodatage Lorsqu'un modèle de régression linéaire ou logistique rencontre une colonne TIMESTAMP, il procède à l'extraction d'un ensemble de composants à partir de cette colonne TIMESTAMP, puis il les transforme au moyen de la standardisation ou de l'encodage one-hot. Pour le composant d'heure Unix en secondes, BigQuery ML utilise la standardisation. Pour tous les autres composants, il utilise l'encodage one-hot.

Pour en savoir plus, consultez le tableau de transformation des caractéristiques de code temporel ci-dessous.
STRUCT Expansion de la structure Lorsque BigQuery ML rencontre une colonne STRUCT, il étend les champs au sein du STRUCT pour créer une seule colonne. Tous les champs de STRUCT doivent être nommés. Les STRUCT imbriqués ne sont pas autorisés. Les noms de colonnes après expansion sont au format {struct_name}_{field_name}.
ARRAY sur STRUCT  Aucune transformation
ARRAY sur NUMERIC  Aucune transformation

Transformation des caractéristiques TIMESTAMP

Le tableau suivant présente les composants extraits des colonnes TIMESTAMP, ainsi que la méthode de transformation correspondante.

Composant TIMESTAMP processed_input résultat Méthode de transformation
Heure Unix en secondes [COLUMN_NAME] Standardisation
Jour du mois _TS_DOM_[COLUMN_NAME] Encodage one-hot
Jour de la semaine _TS_DOW_[COLUMN_NAME] Encodage one-hot
Mois de l'année _TS_MOY_[COLUMN_NAME] Encodage one-hot
Heure du jour _TS_HOD_[COLUMN_NAME] Encodage one-hot
Minute de l'heure _TS_MOH_[COLUMN_NAME] Encodage one-hot
Semaine de l'année (les semaines commencent le dimanche) _TS_WOY_[COLUMN_NAME] Encodage one-hot
Année _TS_YEAR_[COLUMN_NAME] Encodage one-hot

Encodage des caractéristiques de catégorie

Pour les caractéristiques utilisant l'encodage one-hot, vous pouvez spécifier une autre méthode d'encodage par défaut à l'aide de l'option de modèle CATEGORY_ENCODING_METHOD. Pour les modèles linéaires généralisés (GLM), vous pouvez définir CATEGORY_ENCODING_METHOD sur l'une des valeurs suivantes :

Encodage one-hot

L'encodage one-hot mappe chaque catégorie qu'une caractéristique possède avec sa propre caractéristique binaire, où 0 et 1 représentent respectivement l'absence ou la présence de la caractéristique (également appelée variable indicatrice). Ce mappage crée de nouvelles colonnes de caractéristiques N, où N correspond au nombre de catégories uniques pour la caractéristique dans la table d'entraînement.

Par exemple, supposons que votre table d'entraînement comporte une colonne de caractéristiques appelée fruit avec les catégories Apple, Banana et Cranberry, comme suit :

Ligne fruit
1 Apple
2 Banane
3 Canneberge

Dans ce cas, l'option CATEGORY_ENCODING_METHOD='ONE_HOT_ENCODING' transforme la table en représentation interne, comme suit :

Ligne fruit_Apple fruit_Banana fruit_Cranberry
1 1 0 0
2 0 1 0
3 0 0 1

L'encodage one-hot est compatible avec les modèles de régression linéaire et logistique et d'arbre de décision à boosting.

Encodage dummy

L'encodage dummy est semblable à l'encodage one-hot, où une caractéristique catégorielle est transformée en un ensemble de variables d'espace réservé. L'encodage dummy utilise N-1 variables d'espace réservé au lieu de N variables d'espace réservé pour représenter N catégories d'une caractéristique. Par exemple, si vous définissez CATEGORY_ENCODING_METHOD sur 'DUMMY_ENCODING' pour la même colonne de caractéristiques fruit que dans l'exemple d'encodage one-hot précédent, la table est transformée en représentation interne comme suit :

Ligne fruit_Apple fruit_Banana
1 1 0
2 0 1
3 0 0

La catégorie qui contient le plus d'occurrences dans l'ensemble de données d'entraînement est supprimée. Lorsque plusieurs catégories possèdent le plus d'occurrences, une catégorie aléatoire de cet ensemble est supprimée.

La dernière série de pondérations de ML.WEIGHTS inclut toujours la catégorie supprimée, mais sa pondération est toujours 0.0. Pour ML.ADVANCED_WEIGHTS, l'erreur standard et la valeur p de la variable supprimée est NaN.

Si warm_start est utilisé sur un modèle initialement entraîné avec 'DUMMY_ENCODING', la même variable d'espace réservé est supprimée de la première exécution de l'entraînement. Les modèles ne peuvent pas modifier les méthodes d'encodage entre les exécutions de l'entraînement.

L'encodage dummy est compatible avec les modèles de régression linéaire et logistique.

Encodage des libellés

L'encodage des libellés transforme la valeur d'une caractéristique catégorielle en valeur INT64 dans [0, <number of categories>].

Par exemple, si votre ensemble de données de livres se présente comme suit :

Titre Genre
Livre 1 Fantastique
Livre 2 Cuisine
Livre 3 Historique
Livre 4 Cuisine

Les valeurs avec encodage des libellés peuvent ressembler à ceci :

Titre Genre (texte) Genre (numérique)
Livre 1 Fantastique 1
Livre 2 Cuisine 2
Livre 3 Historique 3
Livre 4 Cuisine 2

Le vocabulaire d'encodage est trié par ordre alphabétique. Les valeurs NULL et les catégories qui ne figurent pas dans le vocabulaire sont encodées en 0.

L'encodage des libellés est compatible avec les modèles en arbre de décision à boosting.

Encodage cible

L'encodage cible remplace la valeur de la caractéristique catégorielle par la probabilité de la cible pour les modèles de classification ou par la valeur attendue de la cible pour les modèles de régression.

Les caractéristiques qui ont été encodées en cible peuvent ressembler à l'exemple suivant :

# Classification model
+------------------------+----------------------+
| original value         | target encoded value |
+------------------------+----------------------+
| (category_1, target_1) |     0.5              |
| (category_1, target_2) |     0.5              |
| (category_2, target_1) |     0.0              |
+------------------------+----------------------+

# Regression model
+------------------------+----------------------+
| original value         | target encoded value |
+------------------------+----------------------+
| (category_1, 2)        |     2.5              |
| (category_1, 3)        |     2.5              |
| (category_2, 1)        |     1.5              |
| (category_2, 2)        |     1.5              |
+------------------------+----------------------+

L'encodage cible est compatible avec les modèles en arbre de décision à boosting.