Funções de pré-processamento

Há dois tipos de funções de pré-processamento, escalares e analíticas:

  • As funções escalares operam em uma única linha (por exemplo, ML.BUCKETIZE).
  • As funções analíticas operam em todas as linhas (por exemplo, ML.QUANTILE_BUCKETIZE) e geram o resultado de cada linha com base nas estatísticas coletadas em todas as linhas.

As funções analíticas de ML são diferentes das funções analíticas normais porque você sempre as usa com uma cláusula OVER() vazia.

Quando as funções analíticas do ML são usadas dentro da cláusula TRANSFORM durante o treinamento, as mesmas estatísticas são aplicadas automaticamente à entrada na previsão.

ML.BUCKETIZE

ML.BUCKETIZE(numerical_expression, array_split_points[, exclude_boundaries])

Descrição

Retorna uma STRING, pois o nome do bucket após numerical_expression é dividido em buckets por array_split_points.

Os nomes de bucket retornados estão no formato bin_<bucket_index> e bucket_index começa em 1. A faixa de cada bucket é [lower_bound, higher_bound].

Entrada

  • numerical_expression: expressão numérica a ser intervalada.
  • array_split_points: matriz numérica classificada com pontos para dividir numerical_expression.
  • exclude_boundaries: BOOL opcional. Se TRUE, os dois limites serão removidos de array_split_points. O valor padrão é FALSE.

Tipos de dados retornados

STRING

Exemplo

SELECT
  ML.BUCKETIZE(2.5, [1, 2, 3]) AS bucket,
  ML.BUCKETIZE(2.5, [1, 2, 3], TRUE) AS bucket_without_boundaries;

+---------+----------------------------+
| bucket  | bucket_without_boundaries  |
+---------+----------------------------+
| bin_3   | bin_2                      |
+---------+----------------------------+

ML.POLYNOMIAL_EXPAND

ML.POLYNOMIAL_EXPAND(struct_numerical_features[, degree])

Descrição

Retorna uma STRUCT com todas as combinações polinomiais dos recursos de entrada numérica com um grau não maior do que o grau passado, incluindo os recursos originais. Os nomes dos campos da saída STRUCT são concatenações dos nomes dos recursos originais.

Entrada

  • struct_numerical_features: recursos numéricos envolvidos em uma STRUCT a ser expandida. O número máximo de recursos de entrada na STRUCT é 10. Recursos não nomeados não são permitidos em struct_numerical_features. Valores duplicados não são permitidos.
  • degree: INT64 opcional. O maior grau de todas as combinações no intervalo de [1, 4]. O valor padrão é 2.

Tipos de dados retornados

STRUCT de DOUBLE

Exemplo

SELECT
  ML.POLYNOMIAL_EXPAND(STRUCT(2 AS f1, 3 AS f2)) AS output;

+-------------------------------------------------------------------+
|                              output                               |
+-------------------------------------------------------------------+
| {"f1":"2.0","f1_f1":"4.0","f1_f2":"6.0","f2":"3.0","f2_f2":"9.0"} |
+-------------------------------------------------------------------+

ML.FEATURE_CROSS

ML.FEATURE_CROSS(struct_categorical_features[, degree])

Descrição

Retorna uma STRUCT com todas as combinações de recursos categóricos cruzados com graus não maiores do que o passado, exceto itens de 1 grau (os recursos originais) e itens de travessia automática. Os nomes dos campos da saída STRUCT são concatenações dos nomes dos recursos originais.

Entrada

  • struct_categorical_features: recursos categóricos envolvidos em uma STRUCT a ser cruzada. O número máximo de recursos de entrada na STRUCT é 10. Não são permitidos recursos não nomeados em struct_numerical_features. As duplicatas não são permitidas.
  • degree: INT64 opcional. O maior grau de todas as combinações no intervalo de [2, 4]. O valor padrão é 2.

Tipos de dados retornados

STRUCT de STRING

Exemplo

SELECT
  ML.FEATURE_CROSS(STRUCT('a' AS f1, 'b' AS f2, 'c' AS f3)) AS output;

+---------------------------------------------+
|                   output                    |
+---------------------------------------------+
| {"f1_f2":"a_b","f1_f3":"a_c","f2_f3":"b_c"} |
+---------------------------------------------+

ML.NGRAMS

ML.NGRAMS(array_input, range[, separator])

Descrição

Retorna um ARRAY de STRING como n-grams unificando os tokens adjacentes em array_input.

Entrada

  • array_input: ARRAY de STRING. As strings são os tokens a serem mesclados.
  • range: ARRAY de 2 elementos INT64. Esses dois elementos INT64 classificados são o intervalo de tamanhos n-gram a serem retornados.
  • separator: STRING opcional. O separador para conectar dois tokens adjacentes na saída. O valor padrão é espaço em branco .

Tipos de dados retornados

ARRAY de STRING

Exemplo

SELECT
  ML.NGRAMS(['a', 'b', 'c'], [2,3], '#') AS output;

+-----------------------+
|        output         |
+-----------------------+
| ["a#b","a#b#c","b#c"] |
+-----------------------+

ML.QUANTILE_BUCKETIZE

ML.QUANTILE_BUCKETIZE(numerical_expression, num_buckets) OVER()

Descrição

Intervala um recurso numérico contínuo em uma STRING com o nome do bucket como o valor com base em quantis.

Os nomes de bucket retornados estão no formato bin_<bucket_index> e bucket_index começa em 1.

Quando usados em uma cláusula TRANSFORM, os mesmos quantis são usados automaticamente na previsão.

Entrada

  • numerical_expression: expressão numérica a ser intervalada.
  • num_buckets: INT64. O número de buckets para dividir numerical_expression.

Tipos de dados retornados

STRING

Exemplo

SELECT
  f, ML.QUANTILE_BUCKETIZE(f, 3) OVER() AS bucket
FROM
  UNNEST([1,2,3,4,5]) AS f;

+---+--------+
| f | bucket |
+---+--------+
| 3 | bin_2  |
| 5 | bin_3  |
| 2 | bin_2  |
| 1 | bin_1  |
| 4 | bin_3  |
+---+--------+

ML.MIN_MAX_SCALER

ML.MIN_MAX_SCALER(numerical_expression) OVER()

Descrição

Escalona numerical_expression para [0, 1] com MIN e MAX em todas as linhas.

Quando usados na cláusula TRANSFORM, os mesmos MIN e MAX são usados automaticamente na previsão. Se os dados de previsão estiverem fora do intervalo [MIN, MAX], ele será limitado a 0 ou 1.

Entrada

  • numerical_expression: expressão numérica para escalar.

Tipos de dados retornados

DOUBLE

Exemplo

SELECT
  f, ML.MIN_MAX_SCALER(f) OVER() AS output
FROM
  UNNEST([1,2,3,4,5]) AS f;

+---+--------+
| f | output |
+---+--------+
| 4 |   0.75 |
| 2 |   0.25 |
| 1 |    0.0 |
| 3 |    0.5 |
| 5 |    1.0 |
+---+--------+

ML.STANDARD_SCALER

ML.STANDARD_SCALER(numerical_expression) OVER()

Descrição

Padroniza numerical_expression.

Quando usados na cláusula TRANSFORM, os mesmos STDDEV e MEAN são usados automaticamente na previsão.

Entrada

  • numerical_expression: expressão numérica para escalar.

Tipos de dados retornados

DOUBLE

Exemplo

SELECT
  f, ML.STANDARD_SCALER(f) OVER() AS output
FROM
  UNNEST([1,2,3,4,5]) AS f;

+---+---------------------+
| f |       output        |
+---+---------------------+
| 1 | -1.2649110640673518 |
| 5 |  1.2649110640673518 |
| 2 | -0.6324555320336759 |
| 4 |  0.6324555320336759 |
| 3 |                 0.0 |
+---+---------------------+