Funciones de procesamiento previo

Existen dos tipos de funciones de procesamiento previo: escalares y analíticas.

  • Las funciones escalares operan en una sola fila (por ejemplo, ML.BUCKETIZE).
  • Las funciones analíticas operan en todas las filas (por ejemplo, ML.QUANTILE_BUCKETIZE) y generan el resultado para cada fila según las estadísticas recopiladas en todas las filas.

Las funciones analíticas de AA difieren de las funciones analíticas normales en que siempre se usan con una cláusula OVER() vacía.

Cuando las funciones analíticas de AA se usan dentro de la cláusula TRANSFORM durante el entrenamiento, las mismas estadísticas se aplican de forma automática a la entrada en la predicción.

ML.BUCKETIZE

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

Descripción

Muestra una STRING como el nombre del depósito después de que array_split_points divide a numerical_expression en depósitos.

Los nombres de los depósitos que se muestran tienen el formato bin_<bucket_index> y bucket_index, comienza desde el 1. El rango de cada depósito es [lower_bound, upper_bound).

Entrada

  • numerical_expression: expresión numérica para la creación de depósitos
  • array_split_points: arreglo numérico ordenado con puntos para dividir numerical_expression
  • exclude_boundaries: BOOL opcional. Si es TRUE, los dos límites se quitan de array_split_points. El valor predeterminado es FALSE.

Tipo de datos mostrados

STRING

Ejemplo

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])

Descripción

Muestra un STRUCT con todas las combinaciones polinómicas de los atributos de entrada numéricos con un grado no mayor que el grado de aprobación, incluidos los atributos originales. Los nombres de campo del STRUCT de resultado son concatenaciones de los nombres de los atributos originales.

Entrada

  • struct_numerical_features: atributos numéricos que se unen a un STRUCT para expandirlo. El número máximo de atributos de entrada en el STRUCT es 10. Los atributos sin nombre no están permitidos en struct_numerical_features. No se permiten valores duplicados.
  • degree: INT64 opcional. El grado más alto de todas las combinaciones en el rango de [1, 4]. El valor predeterminado es 2.

Tipo de datos mostrados

STRUCT de DOUBLE

Ejemplo

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])

Descripción

Muestra un STRUCT con todas las combinaciones de atributos categóricos cruzados con un grado no mayor que el grado aprobado, con excepción de los elementos de 1 grado (los atributos originales) y los elementos de combinación automática. Los nombres de campo del STRUCT de resultado son concatenaciones de los nombres de los atributos originales.

Entrada

  • struct_categorical_features: atributos categóricos que se unen a un STRUCT para que pueda combinarse. El número máximo de atributos de entrada en el STRUCT es 10. Los atributos sin nombre no están permitidos en struct_numerical_features. No se permiten los valores duplicados.
  • degree: INT64 opcional. El grado más alto de todas las combinaciones en el rango de [2, 4]. El valor predeterminado es 2.

Tipo de datos mostrados

STRUCT de STRING

Ejemplo

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])

Descripción

Muestra un ARREGLO de STRING como n-grams mediante la combinación de tokens adyacentes en array_input.

Entrada

  • array_input: ARREGLO de STRING. Las strings son los tokens que se van a combinar.
  • range: ARREGLO de 2 elementos INT64. Estos dos elementos INT64 ordenados son el rango de tamaños de n-gram que se muestra.
  • separator: STRING opcional. El separador para conectar dos tokens adyacentes en el resultado. El valor predeterminado es el espacio en blanco .

Tipo de datos mostrados

ARREGLO de STRING

Ejemplo

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()

Descripción

Crea depósitos para un atributo numérico continuo en una STRING con el nombre del depósito como el valor basado en cuantiles.

Los nombres de los depósitos que se muestran tienen el formato bin_<bucket_index> y bucket_index, comienza desde el 1.

Cuando se usan en una cláusula TRANSFORM, se usan de forma automática los mismos cuantiles en la predicción.

Entrada

  • numerical_expression: expresión numérica para la creación de depósitos
  • num_buckets: INT64. La cantidad de depósitos en los que se divide numerical_expression.

Tipo de datos mostrados

STRING

Ejemplo

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()

Descripción

Escala la numerical_expression a [0, 1] limitado con MIN y MAX en todas las filas.

Cuando se usa en la cláusula TRANSFORM, se usan de forma automática los mismos valores MIN y MAX en la predicción. Si los datos de predicción están fuera del rango [MIN, MAX], se limita a 0 o 1.

Entrada

  • numerical_expression: expresión numérica a escala

Tipo de datos mostrados

DOUBLE

Ejemplo

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()

Descripción

Estandariza numerical_expression.

Cuando se usa en una cláusula TRANSFORM, los valores STDDEV y MEAN calculados para estandarizar la expresión se usan de forma automática en la predicción.

Entrada

  • numerical_expression: expresión numérica a escala

Tipo de datos mostrados

DOUBLE

Ejemplo

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 |
+---+---------------------+