Valutazione dei modelli

Dopo aver addestrato un modello, AutoML Natural Language utilizza i documenti del set di TEST per valutare la qualità e l'accuratezza del nuovo modello.

AutoML Natural Language fornisce un set aggregato di metriche di valutazione che indicano le prestazioni complessive del modello, nonché le metriche di valutazione per ogni etichetta di categoria, indicando le prestazioni del modello per quell'etichetta.

La precisione e il richiamo misurano la capacità del modello di acquisire informazioni e quanto sta tralasciando. La precisione indica, tra tutti i documenti identificati come una determinata entità o etichetta, quanti di loro avrebbero dovuto essere effettivamente assegnati a quella entità o etichetta. Il richiamo indica, in tutti i documenti che avrebbero dovuto essere identificati come una particolare entità o etichetta, quanti di loro sono stati effettivamente assegnati a quella entità o etichetta.

La matrice di confusione (presente solo per i modelli con etichetta singola per documento) rappresenta la percentuale di volte in cui ogni etichetta è stata prevista nel set di addestramento durante la valutazione. Idealmente, l'etichetta one sarebbe stata assegnata solo ai documenti classificati come etichetta one e così via, quindi una matrice perfetta sarebbe simile a:

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

Nell'esempio precedente, se un documento è stato classificato come one, ma il modello ha previsto two, la prima riga sarebbe invece:

99  1  0  0

AutoML Natural Language crea la matrice di confusione per un massimo di 10 etichette. Se ne hai di più, la matrice include le 10 etichette con maggiore confusione (previsioni errate).

Per i modelli di sentiment:

  • L'errore assoluto medio (MAE) e l'errore quadratico medio (MSE) misurano la distanza tra il valore di sentiment previsto e il valore di sentiment effettivo. Valori più bassi indicano modelli più accurati.

  • Il kappa con ponderazione lineare e il kappa con ponderazione quadratica misurano in che misura i valori di sentiment assegnati dal modello corrispondono ai valori assegnati dai classificatori umani. Valori più alti indicano modelli più accurati.

Utilizza queste metriche per valutare l'idoneità del modello. Punteggi bassi di precisione e richiamo possono indicare che il modello ha bisogno di ulteriori dati di addestramento o ha annotazioni incoerenti. Precisione e richiamo perfetti possono indicare che i dati sono troppo semplici e potrebbero non essere generalizzati. Consulta la Guida per nuovi utenti per ulteriori suggerimenti sulla valutazione dei modelli.

Se i livelli qualitativi non sono soddisfacenti, puoi tornare ai passaggi precedenti per migliorare la qualità:

  • Valuta la possibilità di aggiungere altri documenti a tutte le etichette di bassa qualità.
  • Potresti dover aggiungere diversi tipi di documenti. Ad esempio, documenti più lunghi o più brevi, documenti di autori diversi che utilizzano formulazioni o stili diversi.
  • Puoi ripulire le etichette.
  • Valuta la possibilità di rimuovere completamente le etichette se non disponi di abbastanza documenti di addestramento.

Dopo aver apportato le modifiche, addestra e valuta un nuovo modello fino a raggiungere un livello qualitativo sufficientemente elevato.

UI web

Per rivedere le metriche di valutazione per il tuo modello:

  1. Fai clic sull'icona a forma di lampadina nella barra di navigazione a sinistra per visualizzare i modelli disponibili.

    Per visualizzare i modelli di un progetto diverso, seleziona il progetto dall'elenco a discesa in alto a destra della barra del titolo.

  2. Fai clic sulla riga relativa al modello da valutare.

  3. Se necessario, fai clic sulla scheda Valuta appena sotto la barra del titolo.

    Una volta completato l'addestramento del modello, AutoML Natural Language mostra le metriche di valutazione.

    Valuta la pagina

  4. Per visualizzare le metriche per un'etichetta specifica, seleziona il nome dell'etichetta dall'elenco di etichette nella parte inferiore della pagina.

Esempi di codice

I campioni forniscono una valutazione del modello nel suo complesso. Puoi anche ottenere le metriche per un'etichetta specifica (displayName) utilizzando un ID valutazione.

REST

Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:

  • project-id: il tuo ID progetto
  • location-id: la località della risorsa, us-central1 per la località globale o eu per l'Unione Europea
  • model-id: il tuo ID modello

Metodo HTTP e URL:

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

Per inviare la richiesta, espandi una delle seguenti opzioni:

Dovresti ricevere una risposta JSON simile alla seguente:

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

Per scoprire come installare e utilizzare la libreria client per AutoML Natural Language, consulta Librerie client di AutoML Natural Language. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API AutoML Natural Language Python.

Per eseguire l'autenticazione ad AutoML Natural Language, configura le Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.

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

Per scoprire come installare e utilizzare la libreria client per AutoML Natural Language, consulta Librerie client di AutoML Natural Language. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API AutoML Natural Language Java.

Per eseguire l'autenticazione ad AutoML Natural Language, configura le Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.


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

Per scoprire come installare e utilizzare la libreria client per AutoML Natural Language, consulta Librerie client di AutoML Natural Language. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API AutoML Natural Language Node.js.

Per eseguire l'autenticazione ad AutoML Natural Language, configura le Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.

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

Per scoprire come installare e utilizzare la libreria client per AutoML Natural Language, consulta Librerie client di AutoML Natural Language. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API AutoML Natural Language Go.

Per eseguire l'autenticazione ad AutoML Natural Language, configura le Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.

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
}

Linguaggi aggiuntivi

C#: segui le istruzioni per la configurazione di C# nella pagina delle librerie client e poi consulta la documentazione di riferimento di AutoML Natural Language per .NET.

PHP: segui le istruzioni per la configurazione di PHP nella pagina delle librerie client e poi consulta la documentazione di riferimento di AutoML Natural Language per PHP.

Ruby: segui le istruzioni per la configurazione di Ruby nella pagina delle librerie client e poi visita la documentazione di riferimento di AutoML Natural Language per Ruby.