Função ML.RECOMMEND

Função ML.RECOMMEND

A função ML.RECOMMEND gera uma classificação prevista para cada combinação de item e usuário por linha para um modelo de fatoração de matrizes. Como os dados de entrada de um modelo de fatoração de matrizes tendem a ser uma matriz esparsa com valores ausentes, a ML.RECOMMEND pode retornar as previsões desses valores ausentes sem exigir a especificação de cada entrada.

Se o modelo foi treinado com feedback_type=EXPLICIT, uma coluna de usuário chamada user e uma coluna de item chamada item, as colunas de saída para ML.RECOMMEND serão user, item, e predicted_rating. A coluna de saída predicted_rating é a classificação de cada par de usuário e item.

Se o modelo foi treinado com feedback_type=IMPLICIT, uma coluna de usuário chamada user e uma coluna de item chamada item, as colunas de saída para ML.RECOMMEND serão user, item, e predicted_rating_confidence. A coluna de saída predicted_rating_confidence é a confiança relativa de cada par de usuário e item.

Sintaxe de ML.RECOMMEND

ML.RECOMMEND(MODEL model_name
            [, {TABLE table_name
                | (query_statement)}])

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 do usuário e/ou do item. Se você não tiver um projeto padrão configurado, inclua o ID do projeto no nome da tabela no seguinte formato: `project-id.dataset.table`, incluindo os acentos graves. Por exemplo, `myproject.mydataset.mytable`.

query_statement

Opcional. A cláusula query_statement especifica a consulta SQL padrão usada para gerar os dados de avaliação. Para a sintaxe SQL compatível da cláusula query_statement, consulte Sintaxe de consulta SQL padrão.

Saída ML.RECOMMEND

Se table_name ou query_statement for especificado, as colunas de usuário e/ou item precisarão corresponder às colunas de usuário e item no modelo, e os tipos precisam ser compatíveis de acordo com as regras de coerção implícitas do BigQuery. Se a tabela de entrada não contiver a coluna do usuário e do item, ela só poderá conter exatamente uma coluna. Se a tabela contiver colunas de usuário e item, as demais colunas serão passadas e estarão disponíveis para consulta na instrução.

ML.RECOMMEND gera pelo menos três colunas para todos os casos: a coluna user, a coluna item e uma coluna para recomendações previstas.

O nome da coluna de recomendação prevista para modelos de fatoração de matrizes explícita será predicted_<rating_col_name>. Como as classificações de entrada do treinamento são consideradas feedback explícito, as classificações previstas estarão aproximadamente no intervalo da entrada original, embora as classificações fora do intervalo também sejam normais.

O nome da coluna de recomendação prevista para modelos de fatoração de matrizes implícita será predicted_<rating_col_name>_confidence. Como as classificações de entrada do treinamento são consideradas um proxy para a confiança que um usuário pode ter para um item, as confianças previstas ficarão entre 0 e 1, embora classificações fora do intervalo também sejam normais.

A saída de ML.RECOMMEND é calculada das seguintes maneiras:

  • Se as colunas de usuário e item estiverem em table_name ou query_statement, ML.RECOMMEND retornará uma classificação para cada par de usuário e item.
  • Se apenas o usuário ou apenas o item for especificado. Por exemplo, table_name contém apenas a coluna do usuário, então são geradas todas as classificações do item para cada usuário na tabela.
  • Se o recurso de usuário ou item não estava no conjunto de dados de treinamento, a classificação retornada é o intercept do item ou usuário adicionado com o global__intercept__.
  • Se table_name ou query_statement for especificado, mas não usar a coluna de usuário ou item, ML.RECOMMEND retornará um erro.
  • Se não forem especificados table_name nem query_statement, ML.RECOMMEND gerará as classificações para cada combinação de usuário e item vista durante o treinamento.

Exemplo de ML.RECOMMEND

ML.RECOMMEND sem dados de entrada especificados

A consulta a seguir usa ML.RECOMMEND para gerar classificações previstas para cada par de item e usuário nas entradas de mymodel porque não há dados de entrada especificados.

SELECT
  *
FROM
  ML.RECOMMEND(MODEL `mydataset.mymodel`)

ML.RECOMMEND com dados de entrada

A consulta a seguir gera classificações previstas para cada linha de item e usuário em mydataset.mytable, supondo que mydataset.mymodel foi treinado usando a coluna de usuário user e a coluna de item item.

SELECT
  *
FROM
  ML.RECOMMEND(MODEL `mydataset.mymodel`,
      (
      SELECT
        user,
        item
      FROM
        `mydataset.mytable`))