Función ML.WEIGHTS

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ón SELECT que se usó durante el entrenamiento
  • weight: el peso de cada atributo. En las columnas numéricas, el peso contiene un valor, y la columna category_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 TIMESTAMPs

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 TIMESTAMPs 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ón SELECT que se usó durante el entrenamiento
  • feature: Los nombres de los usuarios o elementos específicos que se usaron durante el entrenamiento
  • factor_weights: Un ARRAY de factores y pesos de cada factor
  • factor_weights.factor: Un factor latente del entrenamiento. Un INT64 de 1 a NUM_FACTORS
  • factor_weights.weight: El peso del factor y el atributo correspondientes
  • intercept: 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 proyecto
  • dataset: El conjunto de datos de BigQuery que contiene el modelo
  • model: 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: