Fonction ML.RECOMMEND

ML.RECOMMEND fonction

La fonction ML.RECOMMEND génère une note prévue pour chaque combinaison de lignes utilisateur-élément d'un modèle de factorisation matricielle. Étant donné que les données d'entrée d'un modèle de factorisation matricielle ont tendance à constituer une matrice creuse avec des valeurs manquantes, ML.RECOMMEND peut renvoyer les prédictions pour ces valeurs manquantes sans nécessiter que chaque entrée soit spécifiée.

Si le modèle a été entraîné avec feedback_type=EXPLICIT, une colonne utilisateur appelée user et une colonne élément appelée item, alors les colonnes de sortie vers ML.RECOMMEND seront user, item, et predicted_rating. La colonne de sortie predicted_rating indique la note attribuée à chaque paire utilisateur-élément.

Si le modèle a été entraîné avec feedback_type=IMPLICIT, une colonne utilisateur appelée user et une colonne élément appelée item, alors les colonnes de sortie vers ML.RECOMMEND seront user, item, et predicted_rating_confidence. La colonne de sortie predicted_rating_confidence indique l'indice de confiance relatif de chaque paire utilisateur-élément.

Syntaxe de ML.RECOMMEND

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

model_name

model_name est le nom du modèle que vous évaluez. Si aucun projet par défaut n'est configuré, ajoutez l'ID de projet au nom du modèle au format suivant : `project-id.dataset.model` (en intégrant les accents graves), par exemple, `myproject.mydataset.mymodel`.

table_name

(Facultatif) table_name est le nom de la table d'entrée contenant les données de l'utilisateur et/ou de l'élément. Si aucun projet par défaut n'est configuré, ajoutez l'ID de projet au nom de la table au format suivant : `project-id.dataset.table` (en intégrant les accents graves), par exemple, `myproject.mydataset.mytable`.

query_statement

(Facultatif) La clause query_statement spécifie en langage SQL standard la requête permettant de générer les données d'évaluation. Pour connaître la syntaxe SQL acceptée par la clause query_statement, consultez la page Syntaxe des requêtes en SQL standard.

Résultat de la fonction ML.RECOMMEND

Si table_name ou query_statement est spécifié, les colonnes utilisateur et/ou élément doivent correspondre aux colonnes utilisateur et élément du modèle, et leurs types doivent être compatibles, conformément aux règles de coercition implicites de BigQuery. Si la table d'entrée ne contient pas à la fois la colonne utilisateur et la colonne élément, elle ne peut contenir qu'une seule colonne. Si la table contient à la fois des colonnes utilisateur et élément, toute autre colonne sera transmise et pourra être interrogée dans l'instruction.

La fonction ML.RECOMMEND génère au moins trois colonnes pour tous les cas ; la colonne utilisateur (user), la colonne élément (item) et une colonne pour les recommandations prédites.

Le nom de la colonne des recommandations prédites pour les modèles de factorisation matricielle explicites est predicted_<rating_col_name>. Étant donné que les notes d'entrée de l'entraînement sont supposées être des commentaires explicites, les prédictions de notes se situeront plus ou moins dans la plage de l'entrée d'origine. Des notes situées en dehors de cette plage sont toutefois considérées comme normales.

Le nom de la colonne des recommandations prédites pour les modèles de factorisation matricielle implicites est predicted_<rating_col_name>_confidence. Étant donné que les notes d'entrée de l'entraînement sont supposées être un proxy de la confiance d'un utilisateur pour un élément, les indices de confiance prédits seront plus ou moins compris entre 0 et 1. Des notes situées en dehors de cette plage seront toutefois considérées comme normales.

Le résultat de la fonction ML.RECOMMEND est calculé comme suit :

  • Si les colonnes utilisateur et élément sont toutes les deux incluses dans table_name ou query_statement, ML.RECOMMEND affiche une note pour chaque paire utilisateur-élément.
  • Si seul l'utilisateur ou l'élément est spécifié, par exemple table_name ne contient que la colonne utilisateur, alors toutes les notes d'élément de chaque utilisateur du tableau sont générées.
  • Si la caractéristique d'utilisateur ou d'élément ne figurait pas dans l'ensemble de données d'entraînement, la note renvoyée correspond à la valeur d'interception (intercept) de l'élément ou de l'utilisateur observé, ajoutée à l'aide de global__intercept__.
  • Si vous spécifiez table_name ou query_statement, mais n'utilisez ni la colonne utilisateur, ni la colonne élément, la fonction ML.RECOMMEND affiche une erreur.
  • Si vous ne spécifiez ni table_name, ni query_statement, ML.RECOMMEND génère les notes pour chaque combinaison utilisateur/élément vue pendant l'entraînement.

Exemple ML.RECOMMEND

ML.RECOMMEND sans données d'entrée spécifiées

La requête suivante utilise la fonction ML.RECOMMEND pour générer des prévisions de notes pour chaque paire utilisateur-élément dans les entrées de mymodel, car aucune donnée d'entrée n'est spécifiée.

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

ML.RECOMMEND avec des données d'entrée

La requête suivante génère des prévisions de notes pour chaque ligne utilisateur-élément dans mydataset.mytable, en supposant que mydataset.mymodel a été entraîné à l'aide de la colonne utilisateur (user) et de la colonne élément (item).

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