Função ML.ONE_HOT_ENCODER

Neste documento, descrevemos a função ML.ONE_HOT_ENCODER, que permite codificar uma expressão de string usando um esquema de codificação one-hot ou fictício.

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. Se você usar a codificação fictícia, a categoria descartada será codificada com value de 0.

Quando usado na cláusula TRANSFORM, o vocabulário e os valores de categorias descartados calculados durante o treinamento, além dos valores especificados de limite de frequência e top k, são usados automaticamente na previsão.

Sintaxe

ML.ONE_HOT_ENCODER(string_expression [, drop] [, top_k] [, frequency_threshold]) OVER()

Argumentos

ML.ONE_HOT_ENCODER usa os seguintes argumentos:

  • string_expression: a expressão STRING a ser codificada.
  • drop: um valor STRING que especifica se a função descarta uma categoria. Estes são os valores válidos:
    • none: retém todas as categorias. Esse é o valor padrão.
    • most_frequent: descarta a categoria mais frequente encontrada na expressão da string. A seleção desse valor faz com que a função use a codificação fictícia.
  • top_k: um valor INT64 que especifica o número de categorias incluídas no vocabulário de codificação. A função seleciona as categorias mais frequentes de top_k nos dados e as usa. As categorias abaixo desse limite são codificadas com 0. Esse valor precisa ser menor que 1,000,000 para evitar problemas devido à alta dimensionalidade. O valor padrão é 32,000.
  • frequency_threshold: um valor INT64 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 a frequency_threshold. As categorias abaixo desse limite são codificadas com 0. O valor padrão é 5.

Saída

ML.ONE_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 fictícia em um conjunto de expressões de string. Ele limita o vocabulário de codificação às dez categorias que ocorrem com mais frequência nos dados e que também ocorrem zero ou mais vezes.

SELECT f, ML.ONE_HOT_ENCODER(f, 'most_frequent', 10, 0) OVER () AS output
FROM UNNEST([NULL, 'a', 'b', 'b', 'c', 'c', 'c', 'd', 'd']) AS f
ORDER BY f;

A saída será assim:

+------+-----------------------------+
|  f   | output.index | output.value |
+------+--------------+--------------+
| NULL |  0           |  1.0         |
| a    |  1           |  1.0         |
| b    |  2           |  1.0         |
| b    |  2           |  1.0         |
| c    |  3           |  0.0         |
| c    |  3           |  0.0         |
| c    |  3           |  0.0         |
| d    |  4           |  1.0         |
| d    |  4           |  1.0         |
+------+-----------------------------+

A seguir