Fonction ML.MULTI_HOT_ENCODER
Ce document décrit la fonction ML.MULTI_HOT_ENCODER
, qui vous permet d'encoder une expression de tableau de chaînes à l'aide d'un schéma d'encodage multi-hot.
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 avec une valeur index
de 0
.
Lorsqu'elle est utilisée dans la clause TRANSFORM
, les valeurs de vocabulaire calculées lors de l'entraînement, ainsi que les valeurs Top k et de seuil de fréquence que vous avez spécifiées, sont automatiquement utilisées dans la prédiction.
Syntaxe
ML.MULTI_HOT_ENCODER(array_expression [, top_k] [, frequency_threshold]) OVER()
Arguments
ML.MULTI_HOT_ENCODER
utilise les arguments suivants :
array_expression
: expressionARRAY<STRING>
à encoder.top_k
: valeurINT64
qui spécifie le nombre de catégories incluses dans le vocabulaire d'encodage. La fonction sélectionne lestop_k
catégories les plus fréquentes dans les données et les utilise. Les catégories inférieures à ce seuil sont encodées en0
. Cette valeur doit être inférieure à1,000,000
pour éviter les problèmes dus à une dimensionnalité élevée. La valeur par défaut est32,000
.frequency_threshold
: valeurINT64
qui limite les catégories incluses dans le vocabulaire d'encodage en fonction de la fréquence de catégorie. La fonction utilise des catégories dont la fréquence est supérieure ou égale àfrequency_threshold
. Les catégories inférieures à ce seuil sont encodées en0
. La valeur par défaut est5
.
Sortie
ML.MULTI_HOT_ENCODER
renvoie un tableau de valeurs struct au format ARRAY<STRUCT<INT64, FLOAT64>>
. Le premier élément de la structure fournit l'index de l'expression de chaîne encodée, et le second élément fournit la valeur de l'expression de chaîne encodée.
Exemple
L'exemple suivant effectue l'encodage multi-hot sur un ensemble d'expressions de tableau de chaînes. Cela limite le vocabulaire d'encodage aux dix catégories qui se produisent le plus fréquemment dans les données et qui se produisent également une fois ou plus.
SELECT f[OFFSET(0)] AS f0, ML.MULTI_HOT_ENCODER(f, 3, 1) OVER () AS output FROM ( SELECT ['a', 'b', 'b', 'c', NULL] AS f UNION ALL SELECT ['c', 'c', 'd', 'd', NULL] AS f ) ORDER BY f[OFFSET(0)];
La sortie ressemble à ceci :
+------+-----------------------------+ | f0 | output.index | output.value | +------+--------------+--------------+ | a | 1 | 1.0 | | | 2 | 1.0 | | | 3 | 1.0 | | | 0 | 1.0 | | c | 3 | 1.0 | | | 0 | 1.0 | +------+-----------------------------+
Étapes suivantes
- Pour en savoir plus sur le prétraitement des caractéristiques, consultez la page 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.