Evaluasi model

Setelah melatih model, AutoML Natural Language menggunakan dokumen dari set TEST untuk mengevaluasi kualitas dan akurasi model yang baru.

AutoML Natural Language menyediakan kumpulan metrik evaluasi gabungan yang menunjukkan performa model secara keseluruhan, serta metrik evaluasi untuk setiap label kategori, yang menunjukkan seberapa baik performa model untuk label tersebut.

Presisi dan perolehan mengukur seberapa baik model ini mengambil informasi, dan seberapa banyak bagian yang tersisa. Presisi menunjukkan, dari semua dokumen yang diidentifikasi sebagai entitas atau label tertentu, berapa banyak dokumen yang sebenarnya seharusnya ditetapkan ke entitas atau label tersebut. Recall menunjukkan, dari semua dokumen yang seharusnya telah diidentifikasi sebagai entitas atau label tertentu, berapa banyak dokumen yang benar-benar ditetapkan ke entitas atau label tersebut.

Matriks konfusi (Hanya ada untuk model label-per-dokumen tunggal) mewakili persentase frekuensi setiap label diprediksi dalam set pelatihan selama evaluasi. Idealnya, label one hanya akan ditetapkan ke dokumen yang diklasifikasikan sebagai label one, dll. sehingga matriks yang sempurna akan terlihat seperti ini:

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

Pada contoh di atas, jika dokumen diklasifikasikan sebagai one tetapi model memprediksi two, baris pertama akan terlihat seperti ini:

99  1  0  0

AutoML Natural Language membuat matriks konfusi untuk maksimal 10 label. Jika Anda memiliki lebih dari 10 label, matriks akan menyertakan 10 label yang paling membingungkan (prediksi yang salah).

Untuk model sentimen:

  • Mean absolut error (MAE) dan mean kuadrat error (RSE) mengukur jarak antara nilai sentimen yang diprediksi dan nilai sentimen sebenarnya. Nilai yang lebih rendah menunjukkan model yang lebih akurat.

  • Kappa berbobot linear dan kappa berbobot kuadrat mengukur seberapa dekat nilai sentimen yang ditetapkan oleh model sesuai dengan nilai yang ditetapkan oleh pelabel manusia. Nilai yang lebih tinggi menunjukkan model yang lebih akurat.

Gunakan metrik ini untuk mengevaluasi kesiapan model Anda. Skor presisi dan perolehan yang rendah dapat menunjukkan bahwa model Anda memerlukan data pelatihan tambahan atau memiliki anotasi yang tidak konsisten. Presisi dan perolehan yang sempurna dapat menunjukkan bahwa data terlalu mudah dan mungkin tidak digeneralisasi dengan baik. Lihat Panduan Pemula untuk tips selengkapnya tentang cara mengevaluasi model.

Jika Anda tidak puas dengan tingkat kualitas, Anda dapat kembali ke langkah-langkah sebelumnya untuk meningkatkan kualitas:

  • Pertimbangkan untuk menambahkan lebih banyak dokumen ke label apa pun yang berkualitas rendah.
  • Anda mungkin perlu menambahkan jenis dokumen yang berbeda. Misalnya, dokumen yang lebih panjang atau lebih pendek, dokumen karya penulis berbeda yang menggunakan kata-kata atau gaya yang berbeda.
  • Anda dapat merapikan label.
  • Pertimbangkan untuk menghapus label sepenuhnya jika Anda tidak memiliki cukup dokumen pelatihan.

Setelah membuat perubahan, latih dan evaluasi model baru hingga mencapai tingkat kualitas yang cukup tinggi.

UI Web

Guna meninjau metrik evaluasi untuk model Anda:

  1. Klik ikon bola lampu di menu navigasi kiri untuk menampilkan model yang tersedia.

    Untuk melihat model project yang berbeda, pilih project dari menu drop-down di kanan atas panel judul.

  2. Klik baris untuk model yang ingin dievaluasi.

  3. Jika perlu, klik tab Evaluasi tepat di bawah panel judul.

    Jika pelatihan untuk model telah selesai, AutoML Natural Language akan menampilkan metrik evaluasinya.

    Evaluasi halaman

  4. Untuk melihat metrik untuk label tertentu, pilih nama label dari daftar label di bagian bawah halaman.

Contoh kode

Sampel ini memberikan evaluasi untuk model secara keseluruhan. Anda juga bisa mendapatkan metrik untuk label tertentu (displayName) menggunakan ID evaluasi.

REST

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • project-id: project ID Anda
  • location-id: lokasi untuk resource, us-central1 untuk Lokasi global, atau eu untuk Uni Eropa
  • model-id: ID model Anda

Metode HTTP dan URL:

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

Untuk mengirim permintaan, perluas salah satu opsi berikut:

Anda akan melihat respons JSON seperti berikut:

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

Untuk mempelajari cara menginstal dan menggunakan library klien untuk AutoML Natural Language, lihat library klien AutoML Natural Language. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Python AutoML Natural Language.

Untuk mengautentikasi AutoML Natural Language, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

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

Untuk mempelajari cara menginstal dan menggunakan library klien untuk AutoML Natural Language, lihat library klien AutoML Natural Language. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Java AutoML Natural Language.

Untuk mengautentikasi AutoML Natural Language, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.


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

Untuk mempelajari cara menginstal dan menggunakan library klien untuk AutoML Natural Language, lihat library klien AutoML Natural Language. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Node.js AutoML Natural Language.

Untuk mengautentikasi AutoML Natural Language, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

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

Untuk mempelajari cara menginstal dan menggunakan library klien untuk AutoML Natural Language, lihat library klien AutoML Natural Language. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Go AutoML Natural Language.

Untuk mengautentikasi AutoML Natural Language, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

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
}

Bahasa tambahan

C#: Ikuti Petunjuk penyiapan C# di halaman library klien lalu buka Dokumentasi referensi AutoML Natural Language untuk .NET.

PHP: Ikuti petunjuk penyiapan PHP di halaman library klien lalu buka Dokumentasi referensi AutoML Natural Language untuk PHP.

Ruby: Ikuti petunjuk penyiapan Ruby di halaman library klien, lalu buka Dokumentasi referensi AutoML Natural Language untuk Ruby.