En esta página se explica cómo entrenar un modelo de clasificación o regresión a partir de un conjunto de datos tabular mediante la Google Cloud consola o la API de Vertex AI.
Antes de empezar
Antes de entrenar un modelo, debes hacer lo siguiente:
Preparar un modelo
Google Cloud consola
En la Google Cloud consola, en la sección Vertex AI, vaya a la página Conjuntos de datos.
Haga clic en el nombre del conjunto de datos que quiera usar para entrenar su modelo y abra su página de detalles.
Si tu tipo de datos usa conjuntos de anotaciones, selecciona el que quieras usar en este modelo.
Haz clic en Entrenar un modelo nuevo.
Selecciona Otro.
En la página Entrenar nuevo modelo, sigue estos pasos:
Selecciona el método de entrenamiento del modelo.
AutoML
es una buena opción para una amplia variedad de casos prácticos.
Haz clic en Continuar.
Introduce el nombre visible del nuevo modelo.
Selecciona la columna de destino.
La columna de destino es el valor que predecirá el modelo.
Más información sobre los requisitos de la columna de destino
Opcional: Para exportar el conjunto de datos de prueba a BigQuery, marca la opción Exportar conjunto de datos de prueba a BigQuery e indica el nombre de la tabla.
Opcional: Para elegir cómo dividir los datos entre los conjuntos de entrenamiento, prueba y validación, abre las opciones avanzadas. Puedes elegir entre las siguientes opciones de división de datos:
- Aleatorio (opción predeterminada): Vertex AI selecciona aleatoriamente las filas asociadas a cada uno de los conjuntos de datos. De forma predeterminada, Vertex AI selecciona el 80% de las filas de datos para el conjunto de entrenamiento, el 10% para el conjunto de validación y el 10% para el conjunto de prueba.
- Manual: Vertex AI selecciona las filas de datos de cada conjunto de datos en función de los valores de una columna de división de datos. Indica el nombre de la columna de división de datos.
- Cronológico: Vertex AI divide los datos en función de la marca de tiempo de una columna de tiempo. Indica el nombre de la columna de tiempo.
Consulta más información sobre las divisiones de datos.
Haz clic en Continuar.
Opcional: Haz clic en Generar estadísticas. Al generar estadísticas, se rellenan los menús desplegables Transformación.
En la página Opciones de entrenamiento, revisa la lista de columnas y excluye del entrenamiento las columnas que no se deban usar para entrenar el modelo.
Revise las transformaciones seleccionadas para las funciones incluidas, así como si se permiten datos no válidos, y haga los cambios necesarios.
Consulta más información sobre las transformaciones y los datos no válidos.
Si quieres especificar una columna de ponderación o cambiar el objetivo de optimización predeterminado, abre Opciones avanzadas y selecciona las opciones que quieras.
Consulta más información sobre las columnas de peso y los objetivos de optimización.
Haz clic en Continuar.
En la ventana Computación y precios, configure los siguientes ajustes:
Introduce el número máximo de horas que quieres que se entrene el modelo.
Este ajuste te ayuda a limitar los costes de entrenamiento. El tiempo transcurrido real puede ser mayor que este valor, ya que hay otras operaciones implicadas en la creación de un modelo.
El tiempo de entrenamiento sugerido está relacionado con el tamaño de los datos de entrenamiento. En la tabla de abajo se muestran los intervalos de tiempo de entrenamiento sugeridos por número de filas. Un gran número de columnas también aumentará el tiempo de entrenamiento necesario.
Filas Tiempo de entrenamiento sugerido Menos de 100.000 Entre 1 y 3 horas De 100.000 a 1.000.000 De 1 a 6 horas 1.000.000 - 10.000.000 De 1 a 12 horas Más de 10.000.000 3-24 horas Haz clic en Start Training (Iniciar entrenamiento).
El entrenamiento del modelo puede llevar muchas horas, en función del tamaño y la complejidad de los datos, así como del presupuesto de entrenamiento, si has especificado uno. Puedes cerrar esta pestaña y volver a ella más adelante. Recibirás un correo cuando tu modelo haya terminado de entrenarse.
API
Selecciona un objetivo de tipo de datos tabulares.
Clasificación
Selecciona la pestaña correspondiente a tu idioma o entorno:
REST
Para entrenar un modelo, usa el comando trainingPipelines.create.
Entrena el modelo.
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
- LOCATION: tu región.
- PROJECT: tu ID de proyecto.
- TRAININGPIPELINE_DISPLAY_NAME: nombre visible del flujo de procesamiento de entrenamiento creado para esta operación.
- TARGET_COLUMN: la columna (valor) que quieres que prediga este modelo.
- WEIGHT_COLUMN: (opcional) la columna de peso. Más información
- TRAINING_BUDGET: la cantidad máxima de tiempo que quieres que se entrene el modelo, en milésimas de horas de nodo (1000 milésimas de horas de nodo equivalen a una hora de nodo).
- OPTIMIZATION_OBJECTIVE: solo es obligatorio si no quieres usar el objetivo de optimización predeterminado de tu tipo de predicción. Más información
- TRANSFORMATION_TYPE: se indica el tipo de transformación de cada columna usada para entrenar el modelo. Más información
- COLUMN_NAME: nombre de la columna con el tipo de transformación especificado. Se debe especificar cada columna que se use para entrenar el modelo.
- MODEL_DISPLAY_NAME: nombre visible del modelo recién entrenado.
- DATASET_ID: ID del conjunto de datos de entrenamiento.
-
Puedes proporcionar un objeto
Split
para controlar la división de los datos. Para obtener información sobre cómo controlar la división de datos, consulta Controlar la división de datos mediante REST. - PROJECT_NUMBER: el número de proyecto generado automáticamente de tu proyecto
Método HTTP y URL:
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT/locations/LOCATION/trainingPipelines
Cuerpo JSON de la solicitud:
{ "displayName": "TRAININGPIPELINE_DISPLAY_NAME", "trainingTaskDefinition": "gs://google-cloud-aiplatform/schema/trainingjob/definition/automl_tabular_1.0.0.yaml", "trainingTaskInputs": { "targetColumn": "TARGET_COLUMN", "weightColumn": "WEIGHT_COLUMN", "predictionType": "classification", "trainBudgetMilliNodeHours": TRAINING_BUDGET, "optimizationObjective": "OPTIMIZATION_OBJECTIVE", "transformations": [ {"TRANSFORMATION_TYPE_1": {"column_name" : "COLUMN_NAME_1"} }, {"TRANSFORMATION_TYPE_2": {"column_name" : "COLUMN_NAME_2"} }, ... }, "modelToUpload": {"displayName": "MODEL_DISPLAY_NAME"}, "inputDataConfig": { "datasetId": "DATASET_ID", } }
Para enviar tu solicitud, despliega una de estas opciones:
Deberías recibir una respuesta JSON similar a la siguiente:
{ "name": "projects/PROJECT_NUMBER/locations/us-central1/trainingPipelines/4567", "displayName": "myModelName", "trainingTaskDefinition": "gs://google-cloud-aiplatform/schema/trainingjob/definition/automl_tabular_1.0.0.yaml", "modelToUpload": { "displayName": "myModelName" }, "state": "PIPELINE_STATE_PENDING", "createTime": "2020-08-18T01:22:57.479336Z", "updateTime": "2020-08-18T01:22:57.479336Z" }
Java
Antes de probar este ejemplo, sigue las Java instrucciones de configuración de la guía de inicio rápido de Vertex AI con bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API Java de Vertex AI.
Para autenticarte en Vertex AI, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.
Node.js
Antes de probar este ejemplo, sigue las Node.js instrucciones de configuración de la guía de inicio rápido de Vertex AI con bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API Node.js de Vertex AI.
Para autenticarte en Vertex AI, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.
Python
Para saber cómo instalar o actualizar el SDK de Vertex AI para Python, consulta Instalar el SDK de Vertex AI para Python. Para obtener más información, consulta la documentación de referencia de la API Python.
Regresión
Selecciona la pestaña correspondiente a tu idioma o entorno:
REST
Para entrenar un modelo, usa el comando trainingPipelines.create.
Entrena el modelo.
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
- LOCATION: tu región.
- PROJECT: .
- TRAININGPIPELINE_DISPLAY_NAME: nombre visible del flujo de procesamiento de entrenamiento creado para esta operación.
- TARGET_COLUMN: la columna (valor) que quieres que prediga este modelo.
- WEIGHT_COLUMN: (opcional) la columna de peso. Más información
- TRAINING_BUDGET: la cantidad máxima de tiempo que quieres que se entrene el modelo, en milésimas de horas de nodo (1000 milésimas de horas de nodo equivalen a una hora de nodo).
- OPTIMIZATION_OBJECTIVE: solo es obligatorio si no quieres usar el objetivo de optimización predeterminado de tu tipo de predicción. Más información
- TRANSFORMATION_TYPE: se indica el tipo de transformación de cada columna usada para entrenar el modelo. Más información
- COLUMN_NAME: nombre de la columna con el tipo de transformación especificado. Se debe especificar cada columna que se use para entrenar el modelo.
- MODEL_DISPLAY_NAME: nombre visible del modelo recién entrenado.
- DATASET_ID: ID del conjunto de datos de entrenamiento.
-
Puedes proporcionar un objeto
Split
para controlar la división de los datos. Para obtener información sobre cómo controlar la división de datos, consulta Controlar la división de datos mediante REST. - PROJECT_NUMBER: el número de proyecto generado automáticamente de tu proyecto
Método HTTP y URL:
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT/locations/LOCATION/trainingPipelines
Cuerpo JSON de la solicitud:
{ "displayName": "TRAININGPIPELINE_DISPLAY_NAME", "trainingTaskDefinition": "gs://google-cloud-aiplatform/schema/trainingjob/definition/automl_tabular_1.0.0.yaml", "trainingTaskInputs": { "targetColumn": "TARGET_COLUMN", "weightColumn": "WEIGHT_COLUMN", "predictionType": "regression", "trainBudgetMilliNodeHours": TRAINING_BUDGET, "optimizationObjective": "OPTIMIZATION_OBJECTIVE", "transformations": [ {"TRANSFORMATION_TYPE_1": {"column_name" : "COLUMN_NAME_1"} }, {"TRANSFORMATION_TYPE_2": {"column_name" : "COLUMN_NAME_2"} }, ... }, "modelToUpload": {"displayName": "MODEL_DISPLAY_NAME"}, "inputDataConfig": { "datasetId": "DATASET_ID", } }
Para enviar tu solicitud, despliega una de estas opciones:
Deberías recibir una respuesta JSON similar a la siguiente:
{ "name": "projects/PROJECT_NUMBER/locations/us-central1/trainingPipelines/4567", "displayName": "myModelName", "trainingTaskDefinition": "gs://google-cloud-aiplatform/schema/trainingjob/definition/automl_tabular_1.0.0.yaml", "modelToUpload": { "displayName": "myModelName" }, "state": "PIPELINE_STATE_PENDING", "createTime": "2020-08-18T01:22:57.479336Z", "updateTime": "2020-08-18T01:22:57.479336Z" }
Java
Antes de probar este ejemplo, sigue las Java instrucciones de configuración de la guía de inicio rápido de Vertex AI con bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API Java de Vertex AI.
Para autenticarte en Vertex AI, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.
Node.js
Antes de probar este ejemplo, sigue las Node.js instrucciones de configuración de la guía de inicio rápido de Vertex AI con bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API Node.js de Vertex AI.
Para autenticarte en Vertex AI, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.
Python
Para saber cómo instalar o actualizar el SDK de Vertex AI para Python, consulta Instalar el SDK de Vertex AI para Python. Para obtener más información, consulta la documentación de referencia de la API Python.
Controlar la división de datos mediante REST
Puedes controlar cómo se divide tu conjunto de datos de entrenamiento entre los conjuntos de entrenamiento, validación y prueba. Cuando uses la API de Vertex AI, usa el objeto Split
para determinar la división de tus datos. El objeto Split
se puede incluir en el objeto inputDataConfig
como uno de los varios tipos de objetos, cada uno de los cuales proporciona una forma diferente de dividir los datos de entrenamiento.
Los métodos que uses para dividir los datos dependerán del tipo de datos:
FractionSplit
:- TRAINING_FRACTION: la fracción de los datos de entrenamiento que se va a usar en el conjunto de entrenamiento.
- VALIDATION_FRACTION: la fracción de los datos de entrenamiento que se va a usar en el conjunto de validación.
- TEST_FRACTION: la fracción de los datos de entrenamiento que se va a usar en el conjunto de prueba.
Si especifica alguna de las fracciones, debe especificar todas. La suma de las fracciones debe ser 1,0. Más información
"fractionSplit": { "trainingFraction": TRAINING_FRACTION, "validationFraction": VALIDATION_FRACTION, "testFraction": TEST_FRACTION },
PredefinedSplit
:- DATA_SPLIT_COLUMN: columna que contiene los valores de división de datos (
TRAIN
,VALIDATION
yTEST
).
Especifica manualmente la división de datos de cada fila mediante una columna de división. Más información
"predefinedSplit": { "key": DATA_SPLIT_COLUMN },
- DATA_SPLIT_COLUMN: columna que contiene los valores de división de datos (
TimestampSplit
:- TRAINING_FRACTION: porcentaje de los datos de entrenamiento que se va a usar en el conjunto de entrenamiento. El valor predeterminado es 0,80.
- VALIDATION_FRACTION: porcentaje de los datos de entrenamiento que se va a usar en el conjunto de datos de validación. El valor predeterminado es 0,10.
- TEST_FRACTION: porcentaje de los datos de entrenamiento que se va a usar en el conjunto de prueba. El valor predeterminado es 0,10.
- TIME_COLUMN: la columna que contiene las marcas de tiempo.
Si especifica alguna de las fracciones, debe especificar todas. Las fracciones deben sumar 1,0. Más información
"timestampSplit": { "trainingFraction": TRAINING_FRACTION, "validationFraction": VALIDATION_FRACTION, "testFraction": TEST_FRACTION, "key": TIME_COLUMN }
Objetivos de optimización para modelos de clasificación o regresión
Cuando entrenas un modelo, Vertex AI selecciona un objetivo de optimización predeterminado en función del tipo de modelo y del tipo de datos que se utilice en la columna de destino.
Los modelos de clasificación son los más adecuados para lo siguiente:Objetivo de optimización | Valor de la API | Usa este objetivo si quieres... |
---|---|---|
Área por debajo de la curva de ROC | maximize-au-roc |
Maximiza el área por debajo de la curva de característica operativa del receptor (ROC). Distingue entre clases. Valor predeterminado de la clasificación binaria. |
Pérdida logarítmica | minimize-log-loss |
Se mantienen las probabilidades de inferencia lo más precisas posible. Es el único objetivo admitido para la clasificación multiclase. |
Área por debajo de la curva de PR | maximize-au-prc |
Maximiza el área por debajo de la curva de precisión-recuperación. Optimiza los resultados de las inferencias de la clase menos común. |
Precisión en la recuperación | maximize-precision-at-recall |
Optimiza la precisión con un valor de recuperación específico. |
Recuperación con precisión | maximize-recall-at-precision |
Optimiza la recuperación con un valor de precisión específico. |
Objetivo de optimización | Valor de la API | Usa este objetivo si quieres... |
---|---|---|
RMSE | minimize-rmse |
Minimizar la raíz cuadrada del error cuadrático medio (RMSE). Captura los valores más extremos de forma precisa. Valor predeterminado. |
MAE | minimize-mae |
Minimizar el error absoluto medio (MAE). Se ven los valores extremos como valores atípicos que tienen un impacto menor en el modelo. |
RMSLE | minimize-rmsle |
Minimiza el error logarítmico cuadrático medio de la raíz (RMSLE). Penaliza los errores según el tamaño relativo en lugar del valor absoluto. Resulta muy útil cuando tanto los valores predichos como los disponibles pueden ser de gran tamaño. |
Siguientes pasos
- Evalúa tu modelo.
- Consulta cómo exportar tu modelo.