La función ML.RECOMMEND

Función ML.RECOMMEND

La función ML.RECOMMEND genera una calificación prevista de cada combinación de filas de usuario y elemento para un modelo de factorización de matrices. Debido a que los datos de entrada de un modelo de factorización de matrices suelen ser una matriz dispersa con valores faltantes, ML.RECOMMEND puede mostrar las predicciones de esos valores faltantes sin necesidad de especificar cada entrada.

Si el modelo se entrenó con feedback_type=EXPLICIT, una columna de usuarios llamada user y una columna de elementos llamada item, las columnas de resultado de ML.RECOMMEND serán user, item y predicted_rating. La columna de resultado predicted_rating es la calificación de cada par de usuario y elemento.

Si el modelo se entrenó con feedback_type=IMPLICIT, una columna de usuarios llamada user y una columna de elementos llamada item, las columnas de resultado de ML.RECOMMEND serán user, item y predicted_rating_confidence. La columna de resultado predicted_rating_confidence es la confianza relativa de cada par de usuario y elemento.

Sintaxis de ML.RECOMMEND

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

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 del usuario o del elemento (opcional). Si no tienes un proyecto predeterminado configurado, 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`.

query_statement

(Opcional). La cláusula query_statement especifica la consulta de SQL estándar que se usa para generar los datos de evaluación. Para conocer la sintaxis de SQL compatible de la cláusula query_statement, consulta Sintaxis de consultas de SQL estándar.

Resultado de ML.RECOMMEND

Si se especifica table_name o query_statement, las columnas de usuarios o elementos deben coincidir con las columnas de usuarios y elementos del modelo, y los tipos deben ser compatibles de acuerdo con las reglas de coerción implícita de BigQuery. Si la tabla de entrada no contiene ambas columnas, solo puede contener 1 columna. Si la tabla contiene ambas columnas, las columnas de elementos y las que no sean de usuarios se pasarán y estarán disponibles para las consultas en la declaración.

ML.RECOMMEND genera al menos 3 columnas en todos los casos; la columna user, la columna item y una para las recomendaciones previstas.

El nombre de la columna de recomendaciones previstas de los modelos de factorización de matrices explícita será predicted_<rating_col_name>. Debido a que se supone que las calificaciones de entrada del entrenamiento son comentarios explícitos, las calificaciones previstas estarán aproximadamente en el rango de la entrada original, aunque las que estén fuera del rango también son normales.

El nombre de la columna de recomendaciones previstas de los modelos de factorización de matrices implícita será predicted_<rating_col_name>_confidence. Debido a que se supone que las calificaciones de entrada del entrenamiento son un proxy para la confianza que un usuario puede tener con un elemento, las confianzas previstas estarán aproximadamente entre 0 y 1, aunque las calificaciones que estén fuera del rango también son normales.

El resultado de ML.RECOMMEND se calcula de la siguiente manera:

  • Si las columnas de usuarios y elementos están en table_name o query_statement, ML.RECOMMEND muestra una calificación de cada par de usuario y elemento.
  • Si solo se especifican el usuario o el elemento; por ejemplo, table_name solo contiene la columna de usuarios, por lo que se muestran todas las calificaciones de elementos para todos los usuarios de la tabla.
  • Si el atributo de usuario o elemento no estaba en el conjunto de datos de entrenamiento, la calificación que se muestra es el intercept del elemento o el usuario detectados que se agregaron con global__intercept__.
  • Si se especifica table_name o query_statement, pero no se usa la columna de usuarios o elementos, ML.RECOMMEND muestra un error.
  • Si no se especifica table_name ni query_statement, ML.RECOMMEND muestra las calificaciones de todas las combinaciones de usuario y elemento detectadas durante el entrenamiento.

Ejemplo de ML.RECOMMEND

ML.RECOMMEND sin datos de entrada especificados

En la siguiente consulta, se usa ML.RECOMMEND a fin de generar calificaciones previstas para cada par de usuario y elemento de las entradas de mymodel porque no hay datos de entrada especificados.

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

ML.RECOMMEND con datos de entrada

Con la siguiente consulta, se generan calificaciones previstas para cada fila de usuario y elemento de mydataset.mytable; se supone que mydataset.mymodel se entrenó mediante la columna de usuarios user y la columna de elementos item.

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