La función ML.MULTI_HOT_ENCODER
En este documento, se describe la función ML.MULTI_HOT_ENCODER
, que te permite codificar una expresión de array de strings mediante un esquema de codificación multi-hot.
El vocabulario de codificación está en orden alfabético. Los valores y las categorías de NULL
que no están en el vocabulario se codifican con un valor de index
de 0
.
Cuando se usa en la cláusula TRANSFORM
, el vocabulario calculado durante el entrenamiento, junto con los valores de umbral de frecuencia y k superiores que especificaste, se usan automáticamente en la predicción.
Sintaxis
ML.MULTI_HOT_ENCODER(array_expression [, top_k] [, frequency_threshold]) OVER()
Argumentos
ML.MULTI_HOT_ENCODER
toma los siguientes argumentos:
array_expression
: la expresiónARRAY<STRING>
que se codificará.top_k
: un valorINT64
que especifica la cantidad de categorías incluidas en el vocabulario de codificación. La función selecciona las categoríastop_k
más frecuentes en los datos y las usa. Las categorías por debajo de este límite se codifican en0
. Este valor debe ser menor que1,000,000
para evitar problemas debido a la alta dimensionalidad. El valor predeterminado es32,000
.frequency_threshold
: un valorINT64
que limita las categorías incluidas en el vocabulario de codificación según la frecuencia de la categoría. La función usa categorías cuya frecuencia es mayor o igual quefrequency_threshold
. Las categorías por debajo de este umbral se codifican en0
. El valor predeterminado es5
.
Salida
ML.MULTI_HOT_ENCODER
muestra un array de valores de struct, en el formato ARRAY<STRUCT<INT64, FLOAT64>>
. El primer elemento del struct proporciona el índice de la expresión de cadena codificada y el segundo elemento proporciona el valor de la expresión de cadena codificada.
Ejemplo
En el siguiente ejemplo, se realiza una codificación multi-hot en un conjunto de expresiones de array de cadenas. Limita el vocabulario de codificación a las tres categorías que ocurren con mayor frecuencia en los datos y que también ocurren una o más veces.
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)];
El resultado es similar al siguiente:
+------+-----------------------------+ | 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 | +------+-----------------------------+
¿Qué sigue?
- Para obtener información sobre el procesamiento previo de atributos, consulta Descripción general del procesamiento previo de atributos.
- Para obtener información sobre las instrucciones y funciones de SQL compatibles con cada tipo de modelo, consulta Recorrido del usuario de extremo a extremo para cada modelo.