Diese Dokumentation bezieht sich auf AutoML Natural Language, die sich von Vertex AI unterscheidet. Wenn Sie Vertex AI verwenden, finden Sie weitere Informationen in der Vertex AI-Dokumentation.

Modelle bewerten

Nach dem Training eines Modells verwendet AutoML Natural Language Dokumente aus dem TEST-Set für die Bewertung der Qualität und Genauigkeit des neuen Modells.

AutoML Natural Language bietet eine ganze Reihe von Bewertungsmesswerten. Sie geben an, wie gut das Modell insgesamt funktioniert. Auch für jedes Kategorie-Label gibt es Bewertungsmesswerte. Sie geben an, wie gut das Modell für das jeweilige Label funktioniert.

Mit Genauigkeit und Trefferquote wird gemessen, wie gut das Modell Informationen erfasst und wie viele es auslässt. Die Genauigkeit gibt an, wie viele der Dokumente, die als eine bestimmte Entität oder ein bestimmtes Label identifiziert wurden, auch tatsächlich dieser Entität oder diesem Label zugeordnet werden sollten. Die Trefferquote gibt an, wie viele der Dokumente, die als eine bestimmte Entität oder ein bestimmtes Label identifiziert werden sollten, auch tatsächlich dieser Entität oder diesem Label zugeordnet wurden.

Die Wahrheitsmatrix (nur für Modelle mit einem Label pro Dokument vorhanden) stellt in Prozent dar, wie oft jedes Label während der Bewertung im Trainings-Dataset vorhergesagt wurde. Idealerweise würde das Label one nur Dokumenten zugewiesen werden, die als Label one usw. klassifiziert wurden, sodass eine perfekte Matrix so aussähe:

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

Wenn im obigen Beispiel ein Dokument als one klassifiziert wurde, das Modell jedoch two vorhergesagt hat, würde die erste Zeile stattdessen so aussehen:

99  1  0  0

AutoML Natural Language erstellt die Wahrheitsmatrix für bis zu zehn Labels. Wenn Sie mehr als zehn Labels haben, enthält die Matrix die zehn Labels mit der höchsten Konfusion (falsche Vorhersagen).

Für Sentimentmodelle:

  • Der mittlere absolute Fehler (mean absolute error, MAE) und der mittlere quadratische Fehler (mean squared error, MSE) messen die Abweichung zwischen dem vorhergesagten Sentimentwert und dem tatsächlichen Sentimentwert. Niedrigere Werte deuten auf genauere Modelle hin.

  • Der linear gewichtete Kappa-Wert und quadratisch gewichtete Kappa-Wert messen, wie genau die vom Modell zugewiesenen Sentimentwerte mit den von menschlichen Beurteilern zugewiesenen Werten übereinstimmen. Höhere Werte deuten auf genauere Modelle hin.

Verwenden Sie diese Messwerte, um die Bereitschaft Ihres Modells zu bewerten. Geringe Genauigkeits- oder Trefferquotenwerte können darauf hinweisen, dass das Modell zusätzliche Trainingsdaten benötigt oder inkonsistente Annotationen enthält. Eine perfekte Genauigkeit und Trefferquote können darauf hindeuten, dass die Daten zu einfach sind und sich unter Umständen nicht gut verallgemeinern lassen. Im Leitfaden für Anfänger finden Sie weitere Tipps zur Bewertung von Modellen.

Wenn Sie mit dem Qualitätsniveau nicht zufrieden sind, können Sie zu den vorherigen Schritten zurückkehren, um die Qualität zu verbessern:

  • Erwägen Sie, allen Labels mit geringer Qualität weitere Dokumente hinzuzufügen.
  • Möglicherweise müssen Sie verschiedene Arten von Dokumenten hinzufügen, beispielsweise längere oder kürzere Dokumente bzw. Dokumente von verschiedenen Autoren, die unterschiedliche Formulierungen oder Stile verwenden.
  • Sie können Labels bereinigen.
  • Entfernen Sie Labels unter Umständen vollständig, wenn Sie nicht genügend Trainingsdokumente haben.

Nachdem Sie Änderungen vorgenommen haben, trainieren und bewerten Sie ein neues Modell, bis Sie ein ausreichend hohes Qualitätsniveau erreicht haben.

Web-UI

So prüfen Sie die Bewertungsmesswerte für Ihr Modell:

  1. Klicken Sie auf das Glühbirnensymbol in der linken Navigationsleiste, um die verfügbaren Modelle aufzurufen.

    Wählen Sie zum Anzeigen der Modelle für ein anderes Projekt das Projekt in der Dropdown-Liste oben rechts in der Titelleiste aus.

  2. Klicken Sie auf die Zeile für das Modell, das Sie bewerten möchten.

  3. Klicken Sie ggf. unterhalb der Titelleiste auf den Tab Bewerten.

    Wenn das Training für das Modell abgeschlossen wurde, werden die Bewertungskriterien von AutoML Natural Language angezeigt.

    Seite "Bewerten"

  4. Wählen Sie unten auf der Seite in der Liste der Labels den Label-Namen aus, um Messwerte für ein bestimmtes Label anzeigen zu lassen.

Codebeispiele

Mit den Beispielen wird das Modell als Ganzes bewertet. Sie können auch mithilfe einer Bewertungs-ID die Messwerte für ein bestimmtes Label abrufen (displayName).

REST UND BEFEHLSZEILE

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • project-id: Ihre Projekt-ID
  • location-id: Der Standort für die Ressource, us-central1 für den globalen Standort oder eu für die EU
  • model-id: Ihre Modell-ID

HTTP-Methode und URL:

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

Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:

Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:

{
  "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

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("Model evaluation name: {}".format(evaluation.name))
    print("Model annotation spec id: {}".format(evaluation.annotation_spec_id))
    print("Create Time: {}".format(evaluation.create_time))
    print("Evaluation example count: {}".format(evaluation.evaluated_example_count))
    print(
        "Classification model evaluation metrics: {}".format(
            evaluation.classification_evaluation_metrics
        )
    )

Java


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

/**
 * 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

import (
	"context"
	"fmt"
	"io"

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

// 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: %v", 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: %v", 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
}

Weitere Sprachen

C#: Folgen Sie der Anleitung zur Einrichtung von C# auf der Seite der Clientbibliotheken und rufen Sie dann die AutoML Natural Language-Referenzdokumentation für .NET auf.

PHP: Folgen Sie der Anleitung zur Einrichtung von PHP auf der Seite der Clientbibliotheken und rufen Sie dann die AutoML Natural Language-Referenzdokumentation für PHP auf.

Ruby: Folgen Sie der Anleitung zur Einrichtung von Ruby auf der Seite der Clientbibliotheken und rufen Sie dann die AutoML Natural Language-Referenzdokumentation für Ruby auf.