La función ML.CONFUSION_MATRIX

Función ML.CONFUSION_MATRIX

Usa la función ML.CONFUSION_MATRIX con el fin de mostrar una matriz de confusión para el modelo de regresión logística y los datos de entrada dados. La función ML.CONFUSION_MATRIX se puede usar con modelos de regresión logística y de regresión logística multiclase. ML.CONFUSION_MATRIX no admite modelos de regresión lineal.

Las columnas de resultado de la función ML.CONFUSION_MATRIX dependen del modelo. La primera columna de resultado es siempre expected_label. Hay N columnas adicionales, una para cada clase en el modelo entrenado. Los nombres de las columnas adicionales dependen de las etiquetas de clase que se usan para entrenar el modelo.

Si las etiquetas de clase de entrenamiento se ajustan a las reglas de nomenclatura de columnas de BigQuery, las etiquetas se usan como los nombres de las columnas. Las columnas que no se ajustan a estas reglas se modifican para ser únicas y cumplir con las reglas. Por ejemplo, si las etiquetas son 0 y 1, los nombres de las columnas de resultado son _0 y _1.

Las columnas se ordenan según las etiquetas de clase en orden ascendente. Si las etiquetas en los datos de evaluación coinciden con las de los datos de entrenamiento, los verdaderos positivos se muestran en la diagonal desde la parte superior izquierda hasta la parte inferior derecha. Las etiquetas esperadas (o reales) se enumeran una por fila, y las etiquetas predichas se enumeran una por columna.

Los valores de la columna expected_label son los valores exactos y el tipo que se pasa a ML.CONFUSION_MATRIX en la columna de etiquetas de los datos de evaluación. Esto es cierto incluso si no coinciden exactamente con los valores o el tipo utilizado durante el entrenamiento.

Sintaxis de ML.CONFUSION_MATRIX

ML.CONFUSION_MATRIX(MODEL model_name
           [, {TABLE table_name | (query_statement)}]
           [, STRUCT(<T> AS threshold)])

model_name

model_name es el nombre del modelo que estás evaluando. Si no tienes un proyecto predeterminado configurado, antepone el ID del proyecto al nombre del modelo en el siguiente formato: “[PROJECT_ID].[DATASET].[MODEL]” (incluidos los acentos graves); por ejemplo, “myproject.mydataset.mymodel”.

table_name

table_name es el nombre de la tabla de entrada que contiene los datos de evaluación (opcional). Si no tienes configurado un proyecto predeterminado, antepone el ID del proyecto al nombre de la tabla en el siguiente formato: “[PROJECT_ID].[DATASET].[TABLE]” (incluidos los acentos graves); por ejemplo, “myproject.mydataset.mytable”.

Si se especifica table_name, los nombres de las columnas de entrada en la tabla deben coincidir con los nombres de las columnas en el modelo, y sus tipos deben ser compatibles de acuerdo con las reglas de coerción implícitas de BigQuery. La entrada debe tener una columna que coincida con el nombre de la columna de la etiqueta proporcionada durante el entrenamiento. Este valor se proporciona con la opción input_label_cols. Si no se especifica input_label_cols, se usa la columna “label” en los datos de entrenamiento.

Si no se especifica table_name ni query_statement, ML.CONFUSION_MATRIX procesa los resultados de la matriz de confusión de la siguiente manera:

  • Si los datos se dividen durante el entrenamiento, los datos de evaluación divididos se utilizan para procesar los resultados de la matriz de confusión.
  • Si los datos no se dividen durante el entrenamiento, toda la entrada de entrenamiento se usa para procesar los resultados de la matriz de confusión.

query_statement

La cláusula query_statement especifica la consulta de SQL estándar que se utiliza para generar los datos de evaluación (opcional). Consulta la página Sintaxis de consultas de SQL estándar para conocer la sintaxis de SQL admitida de la cláusula query_statement.

Si se especifica query_statement, los nombres de la columna de entrada de la consulta deben coincidir con los nombres de la columna en el modelo, y sus tipos deben ser compatibles según las reglas de coerción implícitas de BigQuery. La entrada debe tener una columna que coincida con el nombre de la columna de la etiqueta proporcionada durante el entrenamiento. Este valor se proporciona con la opción input_label_cols. Si no se especifica input_label_cols, se usa la columna “label” en los datos de entrenamiento. Las columnas adicionales se ignoran.

Si la cláusula TRANSFORM estaba presente en la declaración CREATE MODEL que creó model_name, solo las columnas de entrada presentes en la cláusula TRANSFORM aparecerán en query_statement.

Si no se especifica table_name ni query_statement, ML.CONFUSION_MATRIX procesa los resultados de la matriz de confusión de la siguiente manera:

  • Si los datos se dividen durante el entrenamiento, los datos de evaluación divididos se utilizan para procesar los resultados de la matriz de confusión.
  • Si los datos no se dividen durante el entrenamiento, toda la entrada de entrenamiento se usa para procesar los resultados de la matriz de confusión.

threshold

threshold es un límite personalizado a fin de que tu modelo de regresión logística se use para la evaluación (opcional). El valor predeterminado es 0.5. El valor del límite que se proporciona debe ser del tipo STRUCT.

Un valor cero para precisión o recuperación significa que el límite seleccionado no produjo etiquetas verdaderos positivos. Un valor de NaN para precisión significa que el límite seleccionado no produjo etiquetas positivas, ni verdaderos positivos ni falsos positivos.

Ejemplo de ML.CONFUSION_MATRIX

En el siguiente ejemplo, se supone que el modelo y la tabla de entrada están en tu proyecto predeterminado.

La siguiente consulta se utiliza con el fin de mostrar la matriz de confusión para un modelo de regresión logística.

SELECT
  *
FROM
  ML.CONFUSION_MATRIX(MODEL `mydataset.mymodel`,
  (
    SELECT
      *
    FROM
      `mydataset.mytable`))

Limitaciones de ML.CONFUSION_MATRIX

La función ML.CONFUSION_MATRIX está sujeta a las siguientes limitaciones: