Fonction ML.CONFUSION_MATRIX

Fonction ML.CONFUSION_MATRIX

Renvoyez des données d'entrée et une matrice de confusion pour un modèle de régression logistique spécifique à l'aide de la fonction ML.CONFUSION_MATRIX. La fonction ML.CONFUSION_MATRIX peut être utilisée avec des modèles de régression logistique et de régression logistique multiclasses. ML.CONFUSION_MATRIX n'est pas compatible avec les modèles de régression linéaire.

Les colonnes de résultat de la fonction ML.CONFUSION_MATRIX dépendent du modèle. La première colonne de résultat est toujours expected_label. Il existe N colonnes supplémentaires, une pour chaque classe du modèle entraîné. Les noms des colonnes supplémentaires dépendent des étiquettes de classe ayant servi à entraîner le modèle.

Si toutes les étiquettes de la classe d'entraînement sont conformes aux règles de dénomination des colonnes de BigQuery, elles sont utilisées en tant que noms de colonne. Les colonnes qui ne suivent pas les règles de dénomination sont modifiées, de sorte à ce qu'elles soient conformes à ces règles et uniques. Par exemple, si les étiquettes affichent 0 et 1, les noms des colonnes de résultat sont _0 et _1.

Les colonnes sont triées en fonction des étiquettes de classe, par ordre croissant. Si les étiquettes des données d'évaluation correspondent à celles des données d'entraînement, les vrais positifs s'affichent en diagonale de haut en bas, et de gauche à droite. Les étiquettes attendues (ou actuelles) sont affichées une par ligne, et les étiquettes prédites une par colonne.

Les valeurs de la colonne expected_label représentent les valeurs exactes et le type transmis à la fonction ML.CONFUSION_MATRIX dans la colonne d'étiquette des données d'évaluation. Cela est valable même si ces éléments ne correspondent pas exactement aux valeurs ou au type utilisés lors de l'entraînement.

Syntaxe de ML.CONFUSION_MATRIX

ML.CONFUSION_MATRIX(MODEL model_name
           [, {TABLE table_name | (query_statement)}]
           [, STRUCT(<T> AS threshold)])

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 qui contient les données d'évaluation. 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`.

Si table_name est spécifié, les noms des colonnes d'entrée de la table doivent correspondre aux noms des colonnes du modèle, et leurs types doivent être compatibles suivant les règles de coercition implicites de BigQuery. L'entrée doit inclure une colonne correspondant au nom de la colonne d'étiquette fournie lors de l'entraînement. Cette valeur est fournie à l'aide de l'option input_label_cols. Si input_label_cols n'est pas spécifié, la colonne "label" (étiquette) dans les données d'entraînement est utilisée.

Si aucune des valeurs table_name et query_statement n'est spécifiée, ML.CONFUSION_MATRIX calcule les résultats de la matrice de confusion comme suit :

  • Si les données sont réparties lors de l'entraînement, les résultats de la matrice de confusion sont calculés à l'aide des données d'évaluation fractionnées.
  • Si les données ne sont pas réparties lors de l'entraînement, les résultats de la matrice de confusion sont calculés à l'aide de l'intégralité des données d'entrée d'entraînement.

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. Reportez-vous à la page Syntaxe des requêtes en SQL standard pour connaître la syntaxe SQL compatible avec la clause query_statement.

Si query_statement est spécifié, les noms des colonnes d'entrée de la requête doivent correspondre aux noms des colonnes du modèle, et leurs types doivent être compatibles suivant les règles de coercition implicites de BigQuery. L'entrée doit inclure une colonne correspondant au nom de la colonne d'étiquette fournie lors de l'entraînement. Cette valeur est fournie à l'aide de l'option input_label_cols. Si input_label_cols n'est pas spécifié, la colonne "label" (étiquette) dans les données d'entraînement est utilisée. Les colonnes supplémentaires sont ignorées.

Si la clause TRANSFORM était présente dans l'instruction CREATE MODEL qui a créé model_name, seules les colonnes d'entrée présentes dans la clause TRANSFORM doivent apparaître dans query_statement.

Si aucune des valeurs table_name et query_statement n'est spécifiée, ML.CONFUSION_MATRIX calcule les résultats de la matrice de confusion comme suit :

  • Si les données sont réparties lors de l'entraînement, les résultats de la matrice de confusion sont calculés à l'aide des données d'évaluation fractionnées.
  • Si les données ne sont pas réparties lors de l'entraînement, les résultats de la matrice de confusion sont calculés à l'aide de l'intégralité des données d'entrée d'entraînement.

threshold

(Facultatif) L'élément threshold est un seuil personnalisé pour votre modèle de régression logistique servant à l'évaluation. La valeur par défaut est 0,5. La valeur de seuil fournie doit être de type STRUCT.

Si la précision ou le rappel affiche une valeur nulle, cela signifie que le seuil sélectionné n'a généré aucun vrai positif. Si la précision affiche une valeur NaN, cela signifie que le seuil sélectionné n'a renvoyé aucun positif, ni vrai positif, ni faux positif.

Exemple ML.CONFUSION_MATRIX

Dans l'exemple suivant, nous supposons que le modèle et la table d'entrée se trouvent dans le projet par défaut.

La requête ci-dessous permet de renvoyer la matrice de confusion pour un modèle de régression logistique.

SELECT
  *
FROM
  ML.CONFUSION_MATRIX(MODEL `mydataset.mymodel`,
  (
    SELECT
      *
    FROM
      `mydataset.mytable`))

Limites de ML.CONFUSION_MATRIX

La fonction ML.CONFUSION_MATRIX est soumise aux limites suivantes :

Cette page vous a-t-elle été utile ? Évaluez-la :

Envoyer des commentaires concernant…