Função ML.CONFUSION_MATRIX

Função ML.CONFUSION_MATRIX

Use a função ML.CONFUSION_MATRIX para retornar uma matriz de confusão para o modelo de regressão logística e dados de entrada fornecidos. A função ML.CONFUSION_MATRIX pode ser usada com modelos de regressão logística e regressão logística multiclasse. ML.CONFUSION_MATRIX não é compatível com modelos de regressão linear.

As colunas de saída da função ML.CONFUSION_MATRIX dependem do modelo. A primeira coluna de saída é sempre expected_label. Há colunas N extras, uma para cada classe no modelo treinado. Os nomes das colunas extras dependem dos rótulos de classe usados para treinar o modelo.

Se todos os rótulos de classe de treinamento estiverem em conformidade com as regras de nomenclatura de coluna do BigQuery, os rótulos serão usados como nomes de colunas. As colunas que não atendem às regras de nomenclatura são alteradas para atender e para serem exclusivas. Por exemplo, se os rótulos forem 0 e 1, os nomes das colunas de saída serão _0 e _1.

As colunas são ordenadas com base nos rótulos de classe em ordem crescente. Se os rótulos nos dados de avaliação corresponderem aos dados de treinamento, os verdadeiros positivos (em inglês) serão mostrados na diagonal, do canto superior esquerdo para o canto inferior direito. Os rótulos esperados (ou reais) são listados um por linha, e os rótulos previstos são listados um por coluna.

Os valores na coluna expected_label são os valores exatos e o tipo passados para ML.CONFUSION_MATRIX na coluna de rótulo dos dados de avaliação. Isso acontecerá mesmo se não corresponderem exatamente aos valores ou ao tipo usado durante o treinamento.

Sintaxe ML.CONFUSION_MATRIX

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

model_name

model_name é o nome do modelo que você está avaliando. Na falta de um projeto padrão configurado, adicione o ID do projeto ao nome do modelo no seguinte formato: `[PROJECT_ID].[DATASET].[MODEL]` (incluindo os acentos graves); por exemplo, `myproject.mydataset.mymodel`.

table_name

(Opcional) table_name é o nome da tabela de entrada que contém os dados de avaliação. Na falta de um projeto padrão configurado, adicione o ID do projeto ao nome da tabela no seguinte formato: `[PROJECT_ID].[DATASET].[TABLE]` (incluindo os acentos graves); por exemplo, `myproject.mydataset.mytable`.

Se table_name for especificado, os nomes das colunas de entrada da tabela precisarão corresponder aos nomes das colunas do modelo e seus tipos precisarão ser compatíveis de acordo com regras implícitas de coerção do BigQuery. A entrada precisa ter uma coluna correspondente ao nome da coluna de rótulo, fornecido durante o treinamento. Bastar usar a opção input_label_cols para obter esse valor. Se input_label_cols não for especificada, a coluna chamada “label” nos dados de treinamento será usada.

Se table_name e query_statement não forem especificados, ML.CONFUSION_MATRIX calculará os resultados da matriz de confusão da seguinte maneira:

  • Se os dados forem divididos durante o treinamento, os dados da avaliação de divisão serão usados para calcular os resultados da matriz de confusão.
  • Se os dados não forem divididos durante o treinamento, toda a entrada de treinamento será usada para calcular os resultados da matriz de confusão.

query_statement

(Opcional) A cláusula query_statement especifica a consulta do SQL padrão usada para gerar os dados de avaliação. Para saber qual a sintaxe SQL compatível com a cláusula query_statement, consulte a página Sintaxe de consulta do SQL padrão.

Se query_statement for especificado, os nomes das colunas de entrada da consulta precisarão corresponder aos nomes das colunas do modelo e seus tipos precisarão ser compatíveis de acordo com as regras implícitas de coerção do BigQuery. A entrada precisa ter uma coluna correspondente ao nome da coluna de rótulo, fornecido durante o treinamento. Bastar usar a opção input_label_cols para obter esse valor. Se input_label_cols não for especificada, a coluna chamada “label” nos dados de treinamento será usada. As colunas extras são ignoradas.

Se a cláusula TRANSFORM estiver presente na instrução CREATE MODEL que criou model_name, somente as colunas de entrada presentes na cláusula TRANSFORM aparecerão em query_statement.

Se table_name e query_statement não forem especificados, ML.CONFUSION_MATRIX calculará os resultados da matriz de confusão da seguinte maneira:

  • Se os dados forem divididos durante o treinamento, os dados da avaliação de divisão serão usados para calcular os resultados da matriz de confusão.
  • Se os dados não forem divididos durante o treinamento, toda a entrada de treinamento será usada para calcular os resultados da matriz de confusão.

threshold

(Opcional) threshold é um limite personalizado para que o modelo de regressão logística seja usado para avaliação. O valor padrão é 0,5. É preciso que o valor limite fornecido seja do tipo STRUCT.

Um valor zero para precisão ou recuperação mostra que o limite selecionado não produziu rótulos positivos verdadeiros. Um valor NaN para precisão mostra que o limite selecionado não produziu rótulos positivos, nem positivos verdadeiros nem falsos positivos.

Exemplo de ML.CONFUSION_MATRIX

O exemplo a seguir supõe que o modelo e a tabela de entrada estejam no projeto padrão.

A consulta a seguir é usada para retornar a matriz de confusão de um modelo de regressão logística.

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

Limitações da ML.CONFUSION_MATRIX

A função ML.CONFUSION_MATRIX está sujeita às seguintes limitações: