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 : expression ARRAY<STRING> à encoder.
  • top_k : valeur INT64 qui spécifie le nombre de catégories incluses dans le vocabulaire d'encodage. La fonction sélectionne les top_k catégories les plus fréquentes dans les données et les utilise. Les catégories inférieures à ce seuil sont encodées en 0. Cette valeur doit être inférieure à 1,000,000 pour éviter les problèmes dus à une dimensionnalité élevée. La valeur par défaut est 32,000.
  • frequency_threshold : valeur INT64 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 en 0. La valeur par défaut est 5.

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