Évaluer des modèles

Après avoir entraîné un modèle, AutoML Natural Language utilise les documents de l'ensemble de test pour évaluer la qualité et la précision du nouveau modèle.

La fonctionnalité AutoML Natural Language fournit un ensemble de métriques d'évaluation indiquant les performances globales du modèle. Elle offre également des métriques pour chaque libellé de catégorie de façon à évaluer les performances du modèle pour un libellé donné.

Les métriques de précision et de rappel permettent d'évaluer la capacité de votre modèle à capturer des informations et à en laisser certaines de côté. La précision indique le nombre de documents qui doivent être réellement attribués à une entité ou à une étiquette parmi tous les documents identifiés comme appartenant à cette entité ou étiquette. Le rappel indique le nombre de documents qui ont été attribués à une entité ou une étiquette parmi tous les documents qui auraient être identifiés à cette entité ou étiquette.

La matrice de confusion (disponible uniquement pour les modèles avec une seule étiquette par document) représente le pourcentage de fois où chaque étiquette de l'ensemble d'entraînement a été prédite lors de l'évaluation. Il est préférable de n'attribuer l'étiquette one qu'aux documents étiquetés one, et ainsi de suite. La matrice idéale se présente donc comme suit :

100  0   0   0
 0  100  0   0
 0   0  100  0
 0   0   0  100

Dans l'exemple ci-dessus, si un document est classifié avec l'étiquette one alors que le modèle a prédit l'étiquette two, la première ligne se présente comme suit :

99  1  0  0

AutoML Natural Language crée la matrice de confusion pour 10 libellés au maximum. Si vous disposez d'un plus grand nombre d'étiquettes, la matrice inclut les 10 étiquettes pour lesquelles la confusion est la plus importante (prédictions incorrectes).

Pour les modèles de sentiments :

  • L'erreur absolue moyenne (mean absolute error) et l'erreur quadratique moyenne (mean squared error) mesurent la distance entre la valeur prédictive du sentiment et la valeur réelle du sentiment. Les valeurs inférieures indiquent des modèles plus précis.

  • La valeur linéaire pondérée Kappa (linear-weighted kappa) et la valeur quadratique pondérée Kappa (quadratic-weighted kappa) mesurent la concordance entre les valeurs de sentiment attribuées par le modèle et les valeurs attribuées par les évaluateurs. Plus les valeurs sont élevées, plus les modèles sont précis.

Utilisez ces métriques pour évaluer l'état de préparation de votre modèle. De faibles scores de précision et de rappel peuvent indiquer que votre modèle nécessite des données d'entraînement supplémentaires ou qu'il contient des annotations incohérentes. Un score parfait de précision et de rappel peut indiquer que les données sont trop simples et qu'elles risquent de ne pas être correctement généralisées. Pour en savoir plus sur l'évaluation des modèles, consultez le Guide du débutant.

Si vous n'êtes pas satisfait des niveaux de qualité, vous pouvez revenir aux étapes précédentes pour les améliorer en suivant les consignes ci-après :

  • Essayez d'ajouter des documents aux libellés de faible qualité.
  • Vous devrez peut-être ajouter d'autres types de documents (qui sont par exemple plus longs ou plus courts, ou qui ont été créés par d'autres auteurs n'utilisant pas la même formulation ou le même style).
  • Vous pouvez procéder à un nettoyage des libellés.
  • Supprimez totalement les libellés si vous ne disposez pas de suffisamment de documents d'entraînement.

Une fois les modifications apportées, entraînez et évaluez un nouveau modèle jusqu'à ce que vous ayez atteint un niveau de qualité suffisant.

UI Web

Pour examiner les métriques d'évaluation de votre modèle, procédez comme suit :

  1. Pour afficher les modèles disponibles, cliquez sur l'icône de l'ampoule située sur la barre de navigation de gauche.

    Pour afficher les modèles d'un autre projet, sélectionnez le projet dans la liste déroulante située en haut à droite de la barre de titre.

  2. Cliquez sur la ligne du modèle que vous souhaitez évaluer.

  3. Si nécessaire, cliquez sur l'onglet Évaluation situé juste en dessous de la barre de titre.

    Si l'entraînement du modèle est terminé, AutoML Natural Language affiche ses métriques d'évaluation.

    Page "Évaluation"

  4. Pour afficher les statistiques correspondant à un libellé spécifique, sélectionnez le nom du libellé dans la liste située dans la partie inférieure de la page.

Exemples de code

Les exemples fournissent une évaluation du modèle dans son ensemble. Vous pouvez également obtenir les métriques d'une étiquette spécifique (displayName) en utilisant un ID d'évaluation.

REST

Avant d'utiliser les données de requête, effectuez les remplacements suivants:

  • project-id : ID de votre projet.
  • location-id : emplacement de la ressource, us-central1 pour l'emplacement mondial ou eu pour l'Union européenne
  • model-id : ID de votre modèle

Méthode HTTP et URL :

GET https://automl.googleapis.com/v1/projects/project-id/locations/location-id/models/model-id/modelEvaluations

Pour envoyer votre requête, développez l'une des options suivantes :

Vous devriez recevoir une réponse JSON de ce type :

{
  "modelEvaluation": [
    {
      "name": "projects/434039606874/locations/us-central1/models/7537307368641647584/modelEvaluations/9009741181387603448",
      "annotationSpecId": "17040929661974749",
      "classificationMetrics": {
        "auPrc": 0.99772006,
        "baseAuPrc": 0.21706384,
        "evaluatedExamplesCount": 377,
        "confidenceMetricsEntry": [
          {
            "recall": 1,
            "precision": -1.3877788e-17,
            "f1Score": -2.7755576e-17,
            "recallAt1": 0.9761273,
            "precisionAt1": 0.9761273,
            "f1ScoreAt1": 0.9761273
          },
          {
            "confidenceThreshold": 0.05,
            "recall": 0.997,
            "precision": 0.867,
            "f1Score": 0.92746675,
            "recallAt1": 0.9761273,
            "precisionAt1": 0.9761273,
            "f1ScoreAt1": 0.9761273
          },
          {
            "confidenceThreshold": 0.1,
            "recall": 0.995,
            "precision": 0.905,
            "f1Score": 0.9478684,
            "recallAt1": 0.9761273,
            "precisionAt1": 0.9761273,
            "f1ScoreAt1": 0.9761273
          },
          {
            "confidenceThreshold": 0.15,
            "recall": 0.992,
            "precision": 0.932,
            "f1Score": 0.96106446,
            "recallAt1": 0.9761273,
            "precisionAt1": 0.9761273,
            "f1ScoreAt1": 0.9761273
          },
          {
            "confidenceThreshold": 0.2,
            "recall": 0.989,
            "precision": 0.951,
            "f1Score": 0.96962786,
            "recallAt1": 0.9761273,
            "precisionAt1": 0.9761273,
            "f1ScoreAt1": 0.9761273
          },
          {
            "confidenceThreshold": 0.25,
            "recall": 0.987,
            "precision": 0.957,
            "f1Score": 0.9717685,
            "recallAt1": 0.9761273,
            "precisionAt1": 0.9761273,
            "f1ScoreAt1": 0.9761273
          },
        ...
        ],
      },
      "createTime": "2018-04-30T23:06:14.746840Z"
    },
    {
      "name": "projects/434039606874/locations/us-central1/models/7537307368641647584/modelEvaluations/9009741181387603671",
      "annotationSpecId": "1258823357545045636",
      "classificationMetrics": {
        "auPrc": 0.9972302,
        "baseAuPrc": 0.1883289,
      ...
      },
      "createTime": "2018-04-30T23:06:14.649260Z"
    }
  ]
}

Python

Pour savoir comment installer et utiliser la bibliothèque cliente pour AutoML Natural Language, consultez la page Bibliothèques clientes AutoML Natural Language. Pour en savoir plus, consultez la documentation de référence de l'API AutoML Natural Language Python.

Pour vous authentifier auprès d'AutoML Natural Language, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.

from google.cloud import automl

# TODO(developer): Uncomment and set the following variables
# project_id = "YOUR_PROJECT_ID"
# model_id = "YOUR_MODEL_ID"

client = automl.AutoMlClient()
# Get the full path of the model.
model_full_id = client.model_path(project_id, "us-central1", model_id)

print("List of model evaluations:")
for evaluation in client.list_model_evaluations(parent=model_full_id, filter=""):
    print(f"Model evaluation name: {evaluation.name}")
    print(f"Model annotation spec id: {evaluation.annotation_spec_id}")
    print(f"Create Time: {evaluation.create_time}")
    print(f"Evaluation example count: {evaluation.evaluated_example_count}")
    print(
        "Classification model evaluation metrics: {}".format(
            evaluation.classification_evaluation_metrics
        )
    )

Java

Pour savoir comment installer et utiliser la bibliothèque cliente pour AutoML Natural Language, consultez la page Bibliothèques clientes AutoML Natural Language. Pour en savoir plus, consultez la documentation de référence de l'API AutoML Natural Language Java.

Pour vous authentifier auprès d'AutoML Natural Language, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.


import com.google.cloud.automl.v1.AutoMlClient;
import com.google.cloud.automl.v1.ListModelEvaluationsRequest;
import com.google.cloud.automl.v1.ModelEvaluation;
import com.google.cloud.automl.v1.ModelName;
import java.io.IOException;

class ListModelEvaluations {

  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace these variables before running the sample.
    String projectId = "YOUR_PROJECT_ID";
    String modelId = "YOUR_MODEL_ID";
    listModelEvaluations(projectId, modelId);
  }

  // List model evaluations
  static void listModelEvaluations(String projectId, String modelId) throws IOException {
    // Initialize client that will be used to send requests. This client only needs to be created
    // once, and can be reused for multiple requests. After completing all of your requests, call
    // the "close" method on the client to safely clean up any remaining background resources.
    try (AutoMlClient client = AutoMlClient.create()) {
      // Get the full path of the model.
      ModelName modelFullId = ModelName.of(projectId, "us-central1", modelId);
      ListModelEvaluationsRequest modelEvaluationsrequest =
          ListModelEvaluationsRequest.newBuilder().setParent(modelFullId.toString()).build();

      // List all the model evaluations in the model by applying filter.
      System.out.println("List of model evaluations:");
      for (ModelEvaluation modelEvaluation :
          client.listModelEvaluations(modelEvaluationsrequest).iterateAll()) {

        System.out.format("Model Evaluation Name: %s\n", modelEvaluation.getName());
        System.out.format("Model Annotation Spec Id: %s", modelEvaluation.getAnnotationSpecId());
        System.out.println("Create Time:");
        System.out.format("\tseconds: %s\n", modelEvaluation.getCreateTime().getSeconds());
        System.out.format("\tnanos: %s", modelEvaluation.getCreateTime().getNanos() / 1e9);
        System.out.format(
            "Evalution Example Count: %d\n", modelEvaluation.getEvaluatedExampleCount());
        System.out.format(
            "Classification Model Evaluation Metrics: %s\n",
            modelEvaluation.getClassificationEvaluationMetrics());
      }
    }
  }
}

Node.js

Pour savoir comment installer et utiliser la bibliothèque cliente pour AutoML Natural Language, consultez la page Bibliothèques clientes AutoML Natural Language. Pour en savoir plus, consultez la documentation de référence de l'API AutoML Natural Language Node.js.

Pour vous authentifier auprès d'AutoML Natural Language, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.

/**
 * TODO(developer): Uncomment these variables before running the sample.
 */
// const projectId = 'YOUR_PROJECT_ID';
// const location = 'us-central1';
// const modelId = 'YOUR_MODEL_ID';

// Imports the Google Cloud AutoML library
const {AutoMlClient} = require('@google-cloud/automl').v1;

// Instantiates a client
const client = new AutoMlClient();

async function listModelEvaluations() {
  // Construct request
  const request = {
    parent: client.modelPath(projectId, location, modelId),
    filter: '',
  };

  const [response] = await client.listModelEvaluations(request);

  console.log('List of model evaluations:');
  for (const evaluation of response) {
    console.log(`Model evaluation name: ${evaluation.name}`);
    console.log(`Model annotation spec id: ${evaluation.annotationSpecId}`);
    console.log(`Model display name: ${evaluation.displayName}`);
    console.log('Model create time');
    console.log(`\tseconds ${evaluation.createTime.seconds}`);
    console.log(`\tnanos ${evaluation.createTime.nanos / 1e9}`);
    console.log(
      `Evaluation example count: ${evaluation.evaluatedExampleCount}`
    );
    console.log(
      `Classification model evaluation metrics: ${evaluation.classificationEvaluationMetrics}`
    );
  }
}

listModelEvaluations();

Go

Pour savoir comment installer et utiliser la bibliothèque cliente pour AutoML Natural Language, consultez la page Bibliothèques clientes AutoML Natural Language. Pour en savoir plus, consultez la documentation de référence de l'API AutoML Natural Language Go.

Pour vous authentifier auprès d'AutoML Natural Language, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.

import (
	"context"
	"fmt"
	"io"

	automl "cloud.google.com/go/automl/apiv1"
	"cloud.google.com/go/automl/apiv1/automlpb"
	"google.golang.org/api/iterator"
)

// listModelEvaluation lists existing model evaluations.
func listModelEvaluations(w io.Writer, projectID string, location string, modelID string) error {
	// projectID := "my-project-id"
	// location := "us-central1"
	// modelID := "TRL123456789..."

	ctx := context.Background()
	client, err := automl.NewClient(ctx)
	if err != nil {
		return fmt.Errorf("NewClient: %w", err)
	}
	defer client.Close()

	req := &automlpb.ListModelEvaluationsRequest{
		Parent: fmt.Sprintf("projects/%s/locations/%s/models/%s", projectID, location, modelID),
	}

	it := client.ListModelEvaluations(ctx, req)

	// Iterate over all results
	for {
		evaluation, err := it.Next()
		if err == iterator.Done {
			break
		}
		if err != nil {
			return fmt.Errorf("ListModelEvaluations.Next: %w", err)
		}

		fmt.Fprintf(w, "Model evaluation name: %v\n", evaluation.GetName())
		fmt.Fprintf(w, "Model annotation spec id: %v\n", evaluation.GetAnnotationSpecId())
		fmt.Fprintf(w, "Create Time:\n")
		fmt.Fprintf(w, "\tseconds: %v\n", evaluation.GetCreateTime().GetSeconds())
		fmt.Fprintf(w, "\tnanos: %v\n", evaluation.GetCreateTime().GetNanos())
		fmt.Fprintf(w, "Evaluation example count: %v\n", evaluation.GetEvaluatedExampleCount())
		fmt.Fprintf(w, "Classification model evaluation metrics: %v\n", evaluation.GetClassificationEvaluationMetrics())
	}

	return nil
}

Langages supplémentaires

C# : Veuillez suivre les Instructions de configuration pour C# sur la page des bibliothèques clientes, puis consultez la Documentation de référence sur AutoML Natural Language pour .NET.

PHP : Veuillez suivre les Instructions de configuration pour PHP sur la page des bibliothèques clientes, puis consultez la Documentation de référence sur AutoML Natural Language pour PHP.

Ruby : Veuillez suivre les Instructions de configuration pour Ruby sur la page des bibliothèques clientes, puis consultez la Documentation de référence sur AutoML Natural Language pour Ruby.