Evalúa modelos de previsión de AutoML

En esta página, se muestra cómo evaluar tus modelos de previsión de AutoML.

Vertex AI proporciona métricas de evaluación de modelos para ayudarte a determinar el rendimiento de tus modelos, como las métricas de precisión y recuperación. Vertex AI calcula las métricas de evaluación mediante el conjunto de pruebas.

Cómo usas las métricas de evaluación de modelos

Las métricas de evaluación de modelos proporcionan medidas cuantitativas sobre el rendimiento de tu modelo en el conjunto de prueba. La forma en la que interpretas y usas esas métricas depende de la necesidad de tu empresa y del problema que tu modelo esté entrenado para resolver. Por ejemplo, es posible que tengas una tolerancia más baja para los falsos positivos que para los falsos negativos, o viceversa. Estos tipos de preguntas afectan las métricas en las que te enfocarás.

Métricas de evaluación que muestra Vertex AI

Vertex AI muestra varias métricas de evaluación diferentes, como los límites de confianza, precisión y recuperación. Las métricas que muestra Vertex AI dependen del objetivo del modelo. Por ejemplo, Vertex AI proporciona diferentes métricas de evaluación para un modelo de clasificación de imágenes en comparación con un modelo de detección de objetos de imagen.

Un archivo de esquema determina qué métricas de evaluación proporciona Vertex AI para cada objetivo.

Puedes ver y descargar archivos de esquema desde la siguiente ubicación de Cloud Storage:
gs://google-cloud-aiplatform/schema/modelevaluation/

Las métricas de evaluación para los modelos de previsión son las siguientes:

  • MAE: El error absoluto promedio (MAE) es la diferencia absoluta promedio entre los valores objetivo y los valores previstos. Esta métrica puede variar de cero a infinito, y cuanto más bajo sea el valor, mejor será la calidad del modelo.
  • RMSE: El error de la raíz cuadrada de la media es la raíz cuadrada de la diferencia cuadrada promedio entre los valores objetivo y previsto. RMSE es más sensible a los valores atípicos que MAE, por lo que si te preocupan los grandes errores, RMSE puede ser una métrica más útil para evaluar. Al igual que MAE, cuanto más bajo el valor, mayor será la calidad del modelo (0 representa un predictor perfecto).
  • RMSLE: La métrica del error logarítmico de la raíz cuadrada de la media es similar a RMSE, excepto que usa el logaritmo natural de los valores previstos y reales más 1. RMSLE penaliza con mayor peso la subpredicción que la sobrepredicción. También puede ser una buena métrica cuando no se desea penalizar con mayor peso las diferencias para los valores de predicciones grandes que para los valores de predicciones pequeños. Esta métrica puede variar de cero a infinito y, cuanto más bajo sea el valor, mejor será la calidad del modelo. La métrica de evaluación RMSLE se muestra solo si todos los valores previstos y las etiquetas no son negativos.
  • r^2: r al cuadrado es el cuadrado del coeficiente de correlación de Pearson entre las etiquetas y los valores previstos. Esta métrica puede variar entre cero y uno; cuanto más alto sea el valor, mejor será la calidad del modelo.
  • MAPE: El error porcentual absoluto promedio (MAPE) es el promedio de la diferencia porcentual absoluta entre los valores previstos y las etiquetas. Esta métrica puede variar entre cero y un valor infinito; cuanto más bajo sea el valor, mejor será la calidad del modelo.
    MAPE no se muestra si la columna objetivo contiene valores 0. En este caso, MAPE no está definido.
  • WAPE: El error porcentual absoluto ponderado (WAPE) es la diferencia general entre el valor que predice un modelo y los valores que se observan sobre los valores observados. En comparación con el RMSE, el WAPE se calcula en función de las diferencias generales, en lugar de las diferencias individuales, que pueden estar muy influenciadas por valores bajos o intermitentes. Un valor más bajo indica un modelo de mejor calidad.
  • RMSPE: La raíz cuadrada del error cuadrático medio (RMPSE) muestra el RMSE como un porcentaje de los valores reales en lugar de como un número absoluto. Un valor más bajo indica un modelo de mejor calidad.
  • Cuantil: Es el porcentaje de cuantil, que indica la probabilidad de que un valor observado esté por debajo del valor previsto. Por ejemplo, en el cuantil 0.2, se espera que los valores observados sean más bajos que los valores previstos el 20% del tiempo. Vertex AI proporciona esta métrica si especificas minimize-quantile-loss para el objetivo de optimización.
  • Cuantil observado: Muestra el porcentaje de valores reales que eran inferiores al valor previsto de un cuantil dado. Vertex AI proporciona esta métrica si especificas minimize-quantile-loss para el objetivo de optimización.
  • Pérdida de pinball escalado: Es la pérdida de pinball escalada en un cuantil particular. Un valor más bajo indica un modelo de mayor calidad en el cuantil determinado. Vertex AI proporciona esta métrica si especificas minimize-quantile-loss para el objetivo de optimización.

Obtén métricas de evaluación

Puedes obtener un conjunto agregado de métricas de evaluación para tu modelo y, para algunos objetivos, métricas de evaluación de una clase o etiqueta en particular. Las métricas de evaluación para una clase o etiqueta en particular también se conocen como fragmento de evaluación. En el siguiente contenido, se describe cómo obtener métricas de evaluación agregadas y secciones de evaluación mediante la API o la consola de Google Cloud.

Consola de Cloud

  1. En la sección Vertex AI de la consola de Google Cloud, vaya a la página Modelos.

    Ir a la página Modelos

  2. En el menú desplegable Región, selecciona la región en la que se encuentra tu modelo.

  3. En la lista de modelos, haz clic en tu modelo para abrir la pestaña Evaluar.

    En la pestaña Evaluar, puedes ver las métricas de evaluación agregadas de tu modelo, como Precisión promedio y Recuperación.

    Si el objetivo del modelo tiene porciones de evaluación, la consola mostrará una lista de etiquetas. Puedes hacer clic en una etiqueta para ver las métricas de evaluación de esa etiqueta, como se muestra en el siguiente ejemplo:

    Selección de etiquetas en la consola

API

Las solicitudes a la API a fin de obtener métricas de evaluación son las mismas para cada tipo de datos y objetivo, pero los resultados son diferentes. En los siguientes ejemplos, se muestra la misma solicitud, pero respuestas diferentes.

Obtén métricas totales de evaluación de modelos

Las métricas agregadas de evaluación del modelo proporcionan información sobre el modelo como un todo. Para ver información sobre una porción específica, enumera las porciones de evaluación del modelo.

Para ver las métricas totales de la evaluación del modelo, usa el método projects.locations.models.evaluations.get.

Selecciona una pestaña que corresponda a tu idioma o entorno:

LÍNEA DE REST Y CMD

Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

  • LOCATION: Región en la que se almacena tu modelo.
  • PROJECT: Tu ID del proyecto o número de proyecto.
  • MODEL_ID: El ID de tu modelo.
  • PROJECT_NUMBER: Número de proyecto de tu proyecto (aparece en la respuesta).
  • EVALUATION_ID: ID para la evaluación del modelo (aparece en la respuesta).

Método HTTP y URL:

GET https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT/locations/LOCATION/models/MODEL_ID/evaluations

Para enviar tu solicitud, elige una de estas opciones:

curl

Ejecuta el siguiente comando:

curl -X GET \
-H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
"https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT/locations/LOCATION/models/MODEL_ID/evaluations"

PowerShell

Ejecuta el siguiente comando:

$cred = gcloud auth application-default print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT/locations/LOCATION/models/MODEL_ID/evaluations" | Select-Object -Expand Content

Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

Obtén métricas para un solo fragmento

Si deseas ver las métricas de evaluación de una solo porción, usa el método projects.locations.models.evaluations.slices.get. Debes tener el ID de porción, que se proporciona cuando Enumeras todas las porciones. En la siguiente muestra, se aplica a todos los tipos de datos y objetivos.

LÍNEA DE REST Y CMD

Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

  • LOCATION: Región en la que se encuentra el modelo. Por ejemplo, us-central1.
  • PROJECT: Tu ID del proyecto o número de proyecto.
  • MODEL_ID: El ID de tu modelo.
  • EVALUATION_ID: ID de la evaluación del modelo que contiene el fragmento de evaluación que se debe recuperar.
  • SLICE_ID: ID de un fragmento de evaluación para obtener.
  • PROJECT_NUMBER: Número de proyecto de tu proyecto (aparece en la respuesta).
  • EVALUATION_METRIC_SCHEMA_FILE_NAME: El nombre de un archivo de esquema que define las métricas de evaluación para mostrar, como classification_metrics_1.0.0.

Método HTTP y URL:

GET https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT/locations/LOCATION/models/MODEL_ID/evaluations/EVALUATION_ID/slices/SLICE_ID

Para enviar tu solicitud, elige una de estas opciones:

curl

Ejecuta el siguiente comando:

curl -X GET \
-H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
"https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT/locations/LOCATION/models/MODEL_ID/evaluations/EVALUATION_ID/slices/SLICE_ID"

PowerShell

Ejecuta el siguiente comando:

$cred = gcloud auth application-default print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT/locations/LOCATION/models/MODEL_ID/evaluations/EVALUATION_ID/slices/SLICE_ID" | Select-Object -Expand Content

Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

Java

Si deseas obtener información para instalar y usar la biblioteca cliente de Vertex AI, consulta las bibliotecas cliente de Vertex AI. Si deseas obtener más información, consulta la documentación de referencia de la API de Vertex AI para Java.


import com.google.cloud.aiplatform.v1.ModelEvaluationSlice;
import com.google.cloud.aiplatform.v1.ModelEvaluationSlice.Slice;
import com.google.cloud.aiplatform.v1.ModelEvaluationSliceName;
import com.google.cloud.aiplatform.v1.ModelServiceClient;
import com.google.cloud.aiplatform.v1.ModelServiceSettings;
import java.io.IOException;

public class GetModelEvaluationSliceSample {

  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace these variables before running the sample.
    // To obtain evaluationId run the code block below after setting modelServiceSettings.
    //
    // try (ModelServiceClient modelServiceClient = ModelServiceClient.create(modelServiceSettings))
    // {
    //   String location = "us-central1";
    //   ModelName modelFullId = ModelName.of(project, location, modelId);
    //   ListModelEvaluationsRequest modelEvaluationsrequest =
    //   ListModelEvaluationsRequest.newBuilder().setParent(modelFullId.toString()).build();
    //   for (ModelEvaluation modelEvaluation :
    //     modelServiceClient.listModelEvaluations(modelEvaluationsrequest).iterateAll()) {
    //       System.out.format("Model Evaluation Name: %s%n", modelEvaluation.getName());
    //   }
    // }
    String project = "YOUR_PROJECT_ID";
    String modelId = "YOUR_MODEL_ID";
    String evaluationId = "YOUR_EVALUATION_ID";
    String sliceId = "YOUR_SLICE_ID";
    getModelEvaluationSliceSample(project, modelId, evaluationId, sliceId);
  }

  static void getModelEvaluationSliceSample(
      String project, String modelId, String evaluationId, String sliceId) throws IOException {
    ModelServiceSettings modelServiceSettings =
        ModelServiceSettings.newBuilder()
            .setEndpoint("us-central1-aiplatform.googleapis.com:443")
            .build();

    // 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 (ModelServiceClient modelServiceClient = ModelServiceClient.create(modelServiceSettings)) {
      String location = "us-central1";
      ModelEvaluationSliceName modelEvaluationSliceName =
          ModelEvaluationSliceName.of(project, location, modelId, evaluationId, sliceId);

      ModelEvaluationSlice modelEvaluationSlice =
          modelServiceClient.getModelEvaluationSlice(modelEvaluationSliceName);

      System.out.println("Get Model Evaluation Slice Response");
      System.out.format("Model Evaluation Slice Name: %s\n", modelEvaluationSlice.getName());
      System.out.format("Metrics Schema Uri: %s\n", modelEvaluationSlice.getMetricsSchemaUri());
      System.out.format("Metrics: %s\n", modelEvaluationSlice.getMetrics());
      System.out.format("Create Time: %s\n", modelEvaluationSlice.getCreateTime());

      Slice slice = modelEvaluationSlice.getSlice();
      System.out.format("Slice Dimensions: %s\n", slice.getDimension());
      System.out.format("Slice Value: %s\n", slice.getValue());
    }
  }
}

Node.js

Si deseas obtener información para instalar y usar la biblioteca cliente de Vertex AI, consulta las bibliotecas cliente de Vertex AI. Si quieres obtener más información, consulta la documentación de referencia de la API de Vertex AI para Node.js.

/**
 * TODO(developer): Uncomment these variables before running the sample
 * (not necessary if passing values as arguments). To obtain evaluationId,
 * instantiate the client and run the following the commands.
 */
// const parentName = `projects/${project}/locations/${location}/models/${modelId}`;
// const evalRequest = {
//   parent: parentName
// };
// const [evalResponse] = await modelServiceClient.listModelEvaluations(evalRequest);
// console.log(evalResponse);

// const modelId = 'YOUR_MODEL_ID';
// const evaluationId = 'YOUR_EVALUATION_ID';
// const sliceId = 'YOUR_SLICE_ID';
// const project = 'YOUR_PROJECT_ID';
// const location = 'YOUR_PROJECT_LOCATION';

// Imports the Google Cloud Model Service client library
const {ModelServiceClient} = require('@google-cloud/aiplatform');
// Specifies the location of the api endpoint
const clientOptions = {
  apiEndpoint: 'us-central1-aiplatform.googleapis.com',
};
// Specifies the location of the api endpoint
const modelServiceClient = new ModelServiceClient(clientOptions);

async function getModelEvaluationSlice() {
  // Configure the parent resource
  const name = `projects/${project}/locations/${location}/models/${modelId}/evaluations/${evaluationId}/slices/${sliceId}`;
  const request = {
    name,
  };

  // Get and print out a list of all the endpoints for this resource
  const [response] = await modelServiceClient.getModelEvaluationSlice(
    request
  );

  console.log('Get model evaluation slice');
  console.log(`\tName : ${response.name}`);
  console.log(`\tMetrics_Schema_Uri : ${response.metricsSchemaUri}`);
  console.log(`\tMetrics : ${JSON.stringify(response.metrics)}`);
  console.log(`\tCreate time : ${JSON.stringify(response.createTime)}`);

  console.log('Slice');
  const slice = response.slice;
  console.log(`\tDimension :${slice.dimension}`);
  console.log(`\tValue :${slice.value}`);
}
getModelEvaluationSlice();

Python

Si deseas obtener información para instalar y usar la biblioteca cliente de Vertex AI, consulta las bibliotecas cliente de Vertex AI. Si deseas obtener más información, consulta la documentación de referencia de la API de Vertex AI para Python.

from google.cloud import aiplatform

def get_model_evaluation_slice_sample(
    project: str,
    model_id: str,
    evaluation_id: str,
    slice_id: str,
    location: str = "us-central1",
    api_endpoint: str = "us-central1-aiplatform.googleapis.com",
):
    """
    To obtain evaluation_id run the following commands where LOCATION
    is the region where the model is stored, PROJECT is the project ID,
    and MODEL_ID is the ID of your model.

    model_client = aiplatform.gapic.ModelServiceClient(
        client_options={
            'api_endpoint':'LOCATION-aiplatform.googleapis.com'
            }
        )
    evaluations = model_client.list_model_evaluations(parent='projects/PROJECT/locations/LOCATION/models/MODEL_ID')
    print("evaluations:", evaluations)
    """
    # The AI Platform services require regional API endpoints.
    client_options = {"api_endpoint": api_endpoint}
    # Initialize client that will be used to create and send requests.
    # This client only needs to be created once, and can be reused for multiple requests.
    client = aiplatform.gapic.ModelServiceClient(client_options=client_options)
    name = client.model_evaluation_slice_path(
        project=project,
        location=location,
        model=model_id,
        evaluation=evaluation_id,
        slice=slice_id,
    )
    response = client.get_model_evaluation_slice(name=name)
    print("response:", response)

¿Qué sigue?