Função ML.MULTI_HOT_ENCODER
Neste documento, descrevemos a função ML.MULTI_HOT_ENCODER
, que permite codificar uma expressão de matriz de string usando um esquema de codificação multi-hot.
O vocabulário de codificação é classificado em ordem alfabética. Os valores e as categorias NULL
que não estão no vocabulário são codificados com o valor index
de 0
.
Quando usados na cláusula TRANSFORM
, o vocabulário calculado durante o treinamento, com os k principais valores de limite de frequência especificados, é usado automaticamente na previsão.
Sintaxe
ML.MULTI_HOT_ENCODER(array_expression [, top_k] [, frequency_threshold]) OVER()
Argumentos
ML.MULTI_HOT_ENCODER
usa os seguintes argumentos:
array_expression
: a expressãoARRAY<STRING>
a ser codificada.top_k
: um valorINT64
que especifica o número de categorias incluídas no vocabulário de codificação. A função seleciona as categorias mais frequentes detop_k
nos dados e as usa. As categorias abaixo desse limite são codificadas com0
. Esse valor precisa ser menor que1,000,000
para evitar problemas devido à alta dimensionalidade. O valor padrão é32,000
.frequency_threshold
: um valorINT64
que limita as categorias incluídas no vocabulário de codificação com base na frequência da categoria. A função usa categorias com frequência maior ou igual afrequency_threshold
. As categorias abaixo desse limite são codificadas com0
. O valor padrão é5
.
Saída
ML.MULTI_HOT_ENCODER
retorna uma matriz de valores de struct, no formato ARRAY<STRUCT<INT64, FLOAT64>>
. O primeiro elemento no struct fornece o índice da expressão de string codificada, e o segundo elemento fornece o valor da expressão de string codificada.
Exemplo
O exemplo a seguir executa a codificação multi-hot em um conjunto de expressões de matriz de strings. Ele limita o vocabulário de codificação às três categorias que ocorrem com mais frequência nos dados e que também ocorrem três ou mais vezes.
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)];
A saída será assim:
+------+-----------------------------+ | 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 | +------+-----------------------------+
A seguir
- Para informações sobre o pré-processamento de atributos, consulte Visão geral do pré-processamento de atributos.
- Para informações sobre as funções e instruções SQL compatíveis com cada tipo de modelo, consulte Jornada do usuário completa de cada modelo.