Función ML.WEIGHTS
La función ML.WEIGHTS
te permite ver los pesos subyacentes que usa un modelo durante la predicción.
En la mayoría de los modelos, ML.WEIGHTS
muestra las siguientes columnas:
processed_input
: El nombre de la entrada de atributos del modelo. El valor de esta columna coincide con el nombre de la columna en la declaraciónSELECT
que se usó durante el entrenamientoweight
: el peso de cada atributo. En las columnas numéricas, el peso contiene un valor, y la columnacategory_weights
es NULL. En las columnas no numéricas que se convierten en una codificación one-hot, la columna de peso es NULL, y la columna category_weights es una ARREGLO de nombres de categoría y pesos de cada una de ellas.category_weights.category
: el nombre de la categoría si la columna de entrada no es numérica.category_weights.weight
: el peso de la categoría si la columna de entrada no es numérica.class_label
: en los modelos de varias clases,class_label
es la etiqueta de un peso determinado. El resultado incluye una fila por combinación<class_label, processed_input>
.
Si la cláusula TRANSFORM
estuvo presente en la declaración CREATE MODEL
que creó model
, ML.WEIGHTS
genera los pesos de los atributos de resultado TRANSFORM
. Los pesos se desnormalizan de forma predeterminada, con la opción de obtener pesos normalizados, exactamente como los modelos que se crean sin TRANSFORM
.
Resultados processed_input
para TIMESTAMP
s
Cuando BigQuery ML encuentra una columna TIMESTAMP
, extrae un conjunto de componentes de TIMESTAMP
y realiza una combinación de estandarización y codificación one-hot de los componentes extraídos. Puedes ver los resultados de la transformación en la columna processed_input
cuando usas el atributo ML.WEIGHTS
.
La siguiente tabla muestra los componentes extraídos de TIMESTAMP
s y el método de transformación correspondiente. Para los valores processed_input
, [COLUMN_NAME]
es el nombre de la columna TIMESTAMP
.
Componente TIMESTAMP |
Resultado processed_input |
Método de transformación |
---|---|---|
Tiempo Unix en segundos | [COLUMN_NAME] |
Estandarización |
Día del mes | _TS_DOM_[COLUMN_NAME] |
Codificación one-hot |
Día de la semana | _TS_DOW_[COLUMN_NAME] |
Codificación one-hot |
Mes del año | _TS_MOY_[COLUMN_NAME] |
Codificación one-hot |
Hora del día | _TS_HOD_[COLUMN_NAME] |
Codificación one-hot |
Minutos | _TS_MOH_[COLUMN_NAME] |
Codificación one-hot |
Semana del año (las semanas comienzan el domingo) | _TS_WOY_[COLUMN_NAME] |
Codificación one-hot |
Año | _TS_YEAR_[COLUMN_NAME] |
Codificación one-hot |
Permisos para ML.WEIGHTS
Para ejecutar ML.WEIGHTS
, se requieren bigquery.models.create
y bigquery.models.getData
.
Función ML.WEIGHTS
para la factorización de matrices
En la factorización de matrices, ML.WEIGHTS
muestra las siguientes columnas:
processed_input
: El nombre de la columna de usuarios o de elementos. El valor de esta columna coincide con el nombre de la columna en la declaraciónSELECT
que se usó durante el entrenamientofeature
: Los nombres de los usuarios o elementos específicos que se usaron durante el entrenamientofactor_weights
: UnARRAY
de factores y pesos de cada factorfactor_weights.factor
: Un factor latente del entrenamiento. UnINT64
de 1 aNUM_FACTORS
factor_weights.weight
: El peso del factor y el atributo correspondientesintercept
: El término de intercepción o sesgo de un atributo
Por último, hay una fila adicional en la tabla que contiene el global__intercept__
calculado a partir de los datos de entrada. Esta fila tiene un valor NULL
en processed_input
y factor_weights
. En los modelos de comentarios implícitos, global__intercept__
es siempre 0.
Sintaxis de ML.WEIGHTS
En el siguiente ejemplo de sintaxis, standardize
es un parámetro opcional que determina si los pesos del modelo deben estandarizarse para suponer que todos los atributos tienen una media de cero y una desviación estándar de uno. La estandarización de los pesos permite comparar su magnitud absoluta. El valor predeterminado es falso. El valor que se proporciona debe ser el único campo de un STRUCT.
ML.WEIGHTS(MODEL `project-id.dataset.model`) [, STRUCT(<T> as standardize)])
Reemplaza lo siguiente:
project-id
: El ID del proyectodataset
: El conjunto de datos de BigQuery que contiene el modelomodel
: El nombre del modelo
Ejemplos de ML.WEIGHTS
ML.WEIGHTS
sin estandarización
El siguiente ejemplo recupera información del peso de mymodel
en mydataset
. El conjunto de datos se encuentra en tu proyecto predeterminado.
La consulta muestra los pesos asociados con cada categoría de codificación one-hot para la columna de entrada input_col
.
SELECT category, weight FROM UNNEST(( SELECT category_weights FROM ML.WEIGHTS(MODEL `mydataset.mymodel`) WHERE processed_input = 'input_col'))
Este comando utiliza el atributo UNNEST
porque la columna category_weights
es una columna repetida anidada.
ML.WEIGHTS
con estandarización
El siguiente ejemplo recupera información del peso de mymodel
en mydataset
. El conjunto de datos se encuentra en tu proyecto predeterminado.
La consulta muestra pesos estandarizados, que suponen que todos los atributos tienen una media de cero y una desviación estándar de uno.
SELECT * FROM ML.WEIGHTS(MODEL `mydataset.mymodel`, STRUCT(true AS standardize))
Limitaciones de ML.WEIGHTS
La función ML.WEIGHTS
está sujeta a las siguientes limitaciones:
- Los modelos importados de TensorFlow no son compatibles.
- No se admiten los modelos de árbol mejorado.
Los modelos de factorización de matrices no admiten struct opcional en la estandarización de pesos.
No se admiten los modelos de DNN.