Função ML.PREDICT

Função ML.PREDICT

A função ML.PREDICT pode ser usada para prever resultados do modelo. A previsão pode ser feita durante ou após a criação do modelo ou, ainda, depois de uma falha, desde que pelo menos uma iteração tenha terminado. ML.PREDICT sempre usa os pesos do modelo da última iteração bem-sucedida.

A saída da função ML.PREDICT tem tantas linhas quanto a tabela de entrada e inclui todas as colunas das tabelas de entrada e de saída do modelo. Os nomes das colunas de saída para o modelo são predicted_<label_column_name> e predicted_<label_column_name>_probs para modelos de regressão logística. Nas duas colunas, label_column_name é o nome da coluna do rótulo de entrada, usada durante o treinamento.

Para modelos de regressão logística, predicted_label_probs é uma matriz de STRUCTs do tipo [<label, prob>], que tem a probabilidade prevista de cada rótulo. predicted_label é um dos dois rótulos de entrada, dependendo de qual rótulo tem a maior probabilidade prevista.

Para modelos de regressão linear, predicted_label é o valor previsto do rótulo.

Sintaxe ML.PREDICT

ML.PREDICT(MODEL model_name,
          {TABLE table_name | (query_statement)})

model_name

model_name é o nome do modelo que você está avaliando. Se você não tiver um projeto padrão já configurado, adicione o código do projeto ao nome do modelo, no seguinte formato: `[PROJECT_ID].[DATASET].[MODEL]`, incluindo os acentos graves. Por exemplo, `myproject.mydataset.mymodel`.

table_name

table_name é o nome da tabela de entrada em que estão os dados de avaliação. Se você não tiver um projeto padrão configurado, adicione o código do projeto ao nome da tabela, no seguinte formato: `[PROJECT_ID]. [DATASET].[TABLE]`, incluindo os acentos graves. Por exemplo, `myproject.mydataset.mytable`.

É preciso que os nomes de coluna de entrada e os tipos de dados no modelo correspondam aos nomes de colunas e tipos de dados na tabela. Na entrada, é preciso que haja uma coluna correspondente ao nome da coluna de rótulo, fornecido durante o treinamento. Esse valor é fornecido com o uso da opção input_label_cols. Se input_label_cols não for especificado, será usada a coluna chamada "rótulo" nos dados de treinamento.

query_statement

Com a cláusula query_statement, você especifica a consulta SQL padrão, usada para gerar os dados de avaliação. Para informações sobre a compatibilidade da sintaxe SQL da cláusula query_statement, veja a página Sintaxe de consulta SQL padrão.

Todas as colunas referenciadas pela query_statement são usadas como entradas para o modelo.

Exemplos de ML.PREDICT

Nos exemplos a seguir, pressupomos que o modelo e a tabela de entrada estão no projeto padrão.

Como prever um resultado

Na consulta a seguir, a função ML.PREDICT é usada para prever um resultado. A consulta retorna essas colunas:

  • predicted_label
  • label
  • column1
  • column2
SELECT
  *
FROM
  ML.PREDICT(MODEL `mydataset.mymodel`,
    (
    SELECT
      label,
      column1,
      column2
    FROM
      `mydataset.mytable`))

Como comparar previsões de dois modelos diferentes

Neste exemplo, usamos a consulta a seguir para criar o primeiro modelo.

CREATE MODEL
  `mydataset.mymodel1`
OPTIONS
  (model_type='linear_reg',
    input_label_cols=['label'],
  ) AS
SELECT
  label,
  input_column1
FROM
  `mydataset.mytable`

A consulta a seguir é usada para criar o segundo modelo.

CREATE MODEL
  `mydataset.mymodel2`
OPTIONS
  (model_type='linear_reg',
    input_label_cols=['label'],
  ) AS
SELECT
  label,
  input_column2
FROM
  `mydataset.mytable`

Na consulta a seguir, a função ML.PREDICT é usada para comparar a saída dos dois modelos.

SELECT
  label,
  predicted_label1,
  predicted_label AS predicted_label2
FROM
  ML.PREDICT(MODEL `mydataset.mymodel2`,
    (
    SELECT
      * REPLACE (predicted_label AS predicted_label1)
    FROM
      ML.PREDICT(MODEL `mydataset.mymodel1`,
        TABLE `mydataset.mytable`)))
Esta página foi útil? Conte sua opinião sobre:

Enviar comentários sobre…

Precisa de ajuda? Acesse nossa página de suporte.