Fonction ML.WEIGHTS

Fonction ML.WEIGHTS

La fonction ML.WEIGHTS vous permet d'afficher les pondérations sous-jacentes utilisées lors de la prédiction d'un modèle.

Pour la plupart des modèles, ML.WEIGHTS affiche les colonnes suivantes :

  • processed_input : nom d'entrée de la caractéristique du modèle. Cette valeur correspond au nom de la colonne dans l'instruction SELECT utilisée lors de l'entraînement.
  • weight : pondération de chaque caractéristique. Pour les colonnes numériques, la colonne "weight" contient une valeur et la colonne category_weights affiche la valeur NULL. Pour les colonnes non numériques converties en encodage one-hot, la colonne "weight" affiche la valeur NULL et la colonne "category_weights" correspond à un tableau de noms de catégories et de pondérations pour chacune de ces catégories.
  • category_weights.category : nom de la catégorie si la colonne d'entrée est non numérique.
  • category_weights.weight : pondération de la catégorie si la colonne d'entrée est non numérique.
  • class_label : pour les modèles multiclasses, class_label correspond à l'étiquette d'une pondération donnée. Le résultat inclut une ligne par combinaison <class_label, processed_input>.

Si la clause TRANSFORM était présente dans l'instruction CREATE MODEL qui a créé model, la fonction ML.WEIGHTS affiche les pondérations des caractéristiques TRANSFORM en sortie. Les pondérations sont dénormalisées par défaut, avec la possibilité d'obtenir des pondérations standardisées, exactement comme les modèles créés sans TRANSFORM.

Résultats de processed_input pour TIMESTAMPs

Lorsque BigQuery ML rencontre une colonne TIMESTAMP, il procède à l'extraction d'un ensemble de composants à partir de cette colonne TIMESTAMP, puis il les transforme au moyen de la standardisation ou de l'encodage one-hot. Vous pouvez consulter les résultats de la transformation dans la colonne processed_input lorsque vous utilisez la fonction ML.WEIGHTS.

Le tableau suivant présente les composants extraits de la colonne TIMESTAMP, ainsi que la méthode de transformation correspondante. Pour les valeurs processed_input, [COLUMN_NAME] est le nom de la colonne TIMESTAMP.

Composant TIMESTAMP Résultat processed_input Méthode de transformation
Temps Unix en secondes [COLUMN_NAME] Standardisation
Jour du mois _TS_DOM_[COLUMN_NAME] Encodage one-hot
Jour de la semaine _TS_DOW_[COLUMN_NAME] Encodage one-hot
Mois de l'année _TS_MOY_[COLUMN_NAME] Encodage one-hot
Heure du jour _TS_HOD_[COLUMN_NAME] Encodage one-hot
Minute de l'heure _TS_MOH_[COLUMN_NAME] Encodage one-hot
Semaine de l'année (les semaines commencent le dimanche) _TS_WOY_[COLUMN_NAME] Encodage one-hot
Année _TS_YEAR_[COLUMN_NAME] Encodage one-hot

Autorisations "ML.WEIGHTS"

Les autorisations bigquery.models.create et bigquery.models.getData sont toutes deux requises pour exécuter ML.WEIGHTS.

Fonction ML.WEIGHTS pour la factorisation matricielle

Pour la factorisation matricielle, ML.WEIGHTS affiche les colonnes suivantes :

  • processed_input : nom de la colonne utilisateur ou de la colonne élément. Cette valeur correspond au nom de la colonne dans l'instruction SELECT utilisée lors de l'entraînement.
  • feature : nom des utilisateurs ou des éléments spécifiques utilisés pendant l'entraînement.
  • factor_weights : ARRAY (tableau) de facteurs et de pondérations pour chaque facteur.
  • factor_weights.factor : facteur latent de l'entraînement. Une valeur INT64 comprise entre 1 et NUM_FACTORS.
  • factor_weights.weight : pondération du facteur et de la caractéristique correspondants.
  • intercept : terme d'interception ou de biais d'une caractéristique.

Enfin, il existe dans le tableau une ligne supplémentaire contenant la valeur global__intercept__ (interception globale) calculée à partir des données d'entrée. Cette ligne a une valeur NULL pour processed_input et factor_weights. Pour les modèles de commentaires implicites, global__intercept__ est toujours égale à 0.

Syntaxe de ML.WEIGHTS

Dans l'exemple de syntaxe suivant, standardize est un paramètre facultatif qui détermine si les pondérations du modèle doivent être standardisées de manière à supposer que toutes les caractéristiques possèdent une moyenne égale à zéro et un écart type égal à un. La standardisation des pondérations permet de comparer la magnitude absolue entre les pondérations. La valeur par défaut est false. La valeur fournie doit être le seul champ dans un objet STRUCT.

ML.WEIGHTS(MODEL `project-id.dataset.model`)
          [, STRUCT(<T> as standardize)])

Remplacez les éléments suivants :

  • project-id : ID de votre projet
  • dataset : ensemble de données BigQuery contenant le modèle
  • model : nom du modèle

Exemples d'instructions ML.WEIGHTS

ML.WEIGHTS sans standardisation

L'exemple suivant récupère des informations sur les pondérations à partir de mymodel dans mydataset. L'ensemble de données se trouve dans votre projet par défaut.

La requête renvoie les pondérations associées à chaque catégorie à encodage one-hot pour la colonne d'entrée input_col.

SELECT
  category,
  weight
FROM
  UNNEST((
    SELECT
      category_weights
    FROM
      ML.WEIGHTS(MODEL `mydataset.mymodel`)
    WHERE
      processed_input = 'input_col'))

Cette commande utilise la fonction UNNEST, car la colonne category_weights est une colonne imbriquée répétée.

ML.WEIGHTS avec standardisation

L'exemple suivant récupère des informations sur les pondérations à partir de mymodel dans mydataset. L'ensemble de données se trouve dans votre projet par défaut.

La requête récupère les pondérations normalisées, qui supposent que toutes les caractéristiques possèdent une moyenne égale à zéro et un écart type égal à un.

SELECT
  *
FROM
  ML.WEIGHTS(MODEL `mydataset.mymodel`,
    STRUCT(true AS standardize))

Limites de ML.WEIGHTS

La fonction ML.WEIGHTS est soumise aux limites suivantes :