En esta página, se muestra cómo entrenar un modelo de clasificación o regresión a partir de un conjunto de datos tabular mediante la consola de Goggle Cloud o la API de Vertex AI.
Antes de comenzar
Antes de entrenar un modelo, debes completar lo siguiente:
Entrenar un modelo
Consola de Google Cloud
En la sección Vertex AI de la consola de Google Cloud, ve a la página Conjuntos de datos.
Haz clic en el nombre del conjunto de datos que deseas usar para entrenar tu modelo a fin de abrir su página de detalles.
Si tu tipo de datos usa conjuntos de anotaciones, selecciona el conjunto de anotaciones que deseas usar para este modelo.
Haga clic en Entrenar un modelo nuevo.
Selecciona Otros.
En la página Entrenar un modelo nuevo, completa los siguientes pasos:
Selecciona el método de entrenamiento de modelos.
AutoML
es una buena opción para una amplia gama de casos de uso.
Haz clic en Continuar.
Ingresa el nombre visible de tu modelo nuevo.
Selecciona la columna objetivo.
La columna objetivo es el valor que el modelo predecirá.
Obtén más información sobre los requisitos de las columnas de destino.
Opcional: Para exportar tu conjunto de datos de prueba a BigQuery, marca Exportar conjunto de datos de prueba a BigQuery y proporciona el nombre de la tabla.
Opcional: Para elegir cómo dividir los datos entre conjuntos de entrenamiento, prueba y validación, abre las Opciones avanzadas. Puedes elegir entre las siguientes opciones de división de datos:
- Aleatoria (predeterminada): Vertex AI selecciona de forma aleatoria las filas asociadas con cada conjunto de datos. De forma predeterminada, Vertex AI selecciona el 80% de tus 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 filas de datos para cada uno de los conjuntos de datos según los valores de una columna de división de datos. Proporciona 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 en una columna de tiempo. Proporciona el nombre de la columna de tiempo.
Obtén más información sobre las divisiones de datos.
Haz clic en Continuar.
Opcional: Haz clic en Generar estadísticas. La generación de estadísticas propaga los menús desplegables de Transformación.
En la página Opciones de entrenamiento, revisa tu lista de columnas y excluye del entrenamiento todas las que no se deban usar para entrenar el modelo.
Revisa las transformaciones seleccionadas para los atributos incluidos, junto con la posibilidad de permitir datos no válidos y realiza las actualizaciones necesarias.
Obtén más información sobre las transformaciones y los datos no válidos.
Si deseas especificar una columna de peso o cambiar tu objetivo de optimización del valor predeterminado, abre las Opciones avanzadas y realiza tus selecciones.
Obtén más información sobre las columnas de ponderación y los objetivos de optimización.
Haz clic en Continuar.
En la página Procesamiento y precios, realiza la configuración de la siguiente manera:
Ingresa el número máximo de horas para las que deseas que se entrene el modelo.
Esta configuración te ayuda a limitar los costos de entrenamiento. El tiempo real transcurrido puede ser más largo que este valor, ya que hay otras operaciones involucradas en la creación de un modelo nuevo.
El tiempo de entrenamiento sugerido se relaciona con el tamaño de los datos de entrenamiento. En la siguiente tabla, se muestran los intervalos de tiempo de entrenamiento sugeridos por conteo de filas; una gran cantidad de columnas también aumentará el tiempo de entrenamiento.
Filas Tiempo de entrenamiento sugerido Menor que 100,000 1-3 horas 100,000-1,000,000 1-6 horas 1,000,000-10,000,000 1-12 horas Más de 10,000,000 De 3 a 24 horas Haz clic en Comenzar entrenamiento.
El entrenamiento de modelos puede tardar muchas horas, según el tamaño y la complejidad de tus datos y tu presupuesto de entrenamiento, si especificaste uno. Puedes cerrar esta pestaña y regresar a ella más tarde. Recibirás un correo electrónico cuando tu modelo haya finalizado el entrenamiento.
API
Selecciona un objetivo de tipo de datos tabulares.
Clasificación
Selecciona una pestaña para tu idioma o entorno:
REST
Usa el comando trainingPipelines.create para entrenar un modelo.
Entrena el modelo.
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- LOCATION: Tu región.
- PROJECT: El ID del proyecto.
- TRAININGPIPELINE_DISPLAY_NAME: El nombre visible de la canalización de entrenamiento creada para esta operación.
- TARGET_COLUMN: La columna (valor) que deseas que prediga este modelo.
- WEIGHT_COLUMN: la columna de ponderación (opcional). Obtén más información.
- TRAINING_BUDGET: la cantidad máxima de tiempo que deseas que se entrene el modelo, en milihoras de procesamiento de nodos (1,000 milihoras de procesamiento de nodos equivalen a una hora de procesamiento de nodos).
- OPTIMIZATION_OBJECTIVE: es necesario solo si no deseas el objetivo de optimización predeterminado para tu tipo de predicción. Obtén más información.
- TRANSFORMATION_TYPE: El tipo de transformación se proporciona para cada columna que se usa a fin de entrenar el modelo. Obtén más información.
- COLUMN_NAME: El nombre de la columna con el tipo de transformación especificado. Se debe especificar cada columna que se usa 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 tu división de datos. Si deseas obtener información para controlar la división de datos, consulta Controla la división de datos mediante REST. - PROJECT_NUMBER: el número de proyecto de tu proyecto generado de forma automática.
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, expande una de estas opciones:
Deberías recibir una respuesta JSON similar a la que se muestra a continuación:
{ "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 instrucciones de configuración para Java incluidas en la guía de inicio rápido de Vertex AI sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Vertex AI Java.
Para autenticarte en Vertex AI, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Node.js
Antes de probar este ejemplo, sigue las instrucciones de configuración para Node.js incluidas en la guía de inicio rápido de Vertex AI sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Vertex AI Node.js.
Para autenticarte en Vertex AI, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Python
Si deseas obtener información para instalar o actualizar el SDK de Vertex AI para Python, consulta Instala el SDK de Vertex AI para Python. Si deseas obtener más información, consulta la documentación de referencia de la API de Python.
Regresión
Selecciona una pestaña para tu idioma o entorno:
REST
Usa el comando trainingPipelines.create para entrenar un modelo.
Entrena el modelo.
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- LOCATION: Tu región.
- PROJECT: El ID del proyecto.
- TRAININGPIPELINE_DISPLAY_NAME: El nombre visible de la canalización de entrenamiento creada para esta operación.
- TARGET_COLUMN: La columna (valor) que deseas que prediga este modelo.
- WEIGHT_COLUMN: la columna de ponderación (opcional). Obtén más información.
- TRAINING_BUDGET: la cantidad máxima de tiempo que deseas que se entrene el modelo, en milihoras de procesamiento de nodos (1,000 milihoras de procesamiento de nodos equivalen a una hora de procesamiento de nodos).
- OPTIMIZATION_OBJECTIVE: es necesario solo si no deseas el objetivo de optimización predeterminado para tu tipo de predicción. Obtén más información.
- TRANSFORMATION_TYPE: El tipo de transformación se proporciona para cada columna que se usa a fin de entrenar el modelo. Obtén más información.
- COLUMN_NAME: El nombre de la columna con el tipo de transformación especificado. Se debe especificar cada columna que se usa 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 tu división de datos. Si deseas obtener información para controlar la división de datos, consulta Controla la división de datos mediante REST. - PROJECT_NUMBER: el número de proyecto de tu proyecto generado de forma automática.
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, expande una de estas opciones:
Deberías recibir una respuesta JSON similar a la que se muestra a continuación:
{ "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 instrucciones de configuración para Java incluidas en la guía de inicio rápido de Vertex AI sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Vertex AI Java.
Para autenticarte en Vertex AI, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Node.js
Antes de probar este ejemplo, sigue las instrucciones de configuración para Node.js incluidas en la guía de inicio rápido de Vertex AI sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Vertex AI Node.js.
Para autenticarte en Vertex AI, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Python
Si deseas obtener información para instalar o actualizar el SDK de Vertex AI para Python, consulta Instala el SDK de Vertex AI para Python. Si deseas obtener más información, consulta la documentación de referencia de la API de Python.
Controla la división de datos mediante REST
Puedes controlar cómo se dividen los 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 datos. El objeto Split
se puede incluir en el objeto inputDataConfig
como uno de varios tipos de objeto, cada uno de los cuales proporciona una forma diferente de dividir los datos de entrenamiento.
Los métodos que puedes usar para dividir tus datos dependen de tu tipo de datos:
FractionSplit
:- TRAINING_FRACTION: La fracción de los datos de entrenamiento que se usarán para el conjunto de entrenamiento.
- VALIDATION_FRACTION: La fracción de los datos de entrenamiento que se usarán para el conjunto de validación.
- TEST_FRACTION: La fracción de los datos de entrenamiento que se usarán para el conjunto de prueba.
Si se especifican cualquiera de las fracciones, se deben especificar todas. Las fracciones deben sumar hasta 1.0. Obtén más información.
"fractionSplit": { "trainingFraction": TRAINING_FRACTION, "validationFraction": VALIDATION_FRACTION, "testFraction": TEST_FRACTION },
PredefinedSplit
:- DATA_SPLIT_COLUMN: La columna que contiene los valores de división de datos (
TRAIN
,VALIDATION
yTEST
).
Especifica manualmente la división de datos para cada fila mediante una columna dividida. Obtén más información.
"predefinedSplit": { "key": DATA_SPLIT_COLUMN },
- DATA_SPLIT_COLUMN: La columna que contiene los valores de división de datos (
TimestampSplit
:- TRAINING_FRACTION: El porcentaje de los datos de entrenamiento que se usará para el conjunto de entrenamiento. El valor predeterminado es 0.80.
- VALIDATION_FRACTION: El porcentaje de los datos de entrenamiento que se usará para el conjunto de validación. El valor predeterminado es 0.10.
- TEST_FRACTION: El porcentaje de los datos de entrenamiento que se usarán para el conjunto de prueba. El valor predeterminado es 0.10.
- TIME_COLUMN: La columna que contiene las marcas de tiempo.
Si se especifican cualquiera de las fracciones, se deben especificar todas. Las fracciones deben sumar 1.0. Obtén más información.
"timestampSplit": { "trainingFraction": TRAINING_FRACTION, "validationFraction": VALIDATION_FRACTION, "testFraction": TEST_FRACTION, "key": TIME_COLUMN }
Objetivos de optimización para los modelos de regresión o clasificación
Cuando entrenas un modelo, Vertex AI selecciona un objetivo de optimización predeterminado según el tipo de modelo y el tipo de datos que se usa para la columna objetivo.
Los modelos de clasificación son mejores para los siguientes casos:Objetivo de optimización | Valor de la API | Usa este objetivo si quieres… |
---|---|---|
AUC ROC | maximize-au-roc |
Maximizar área bajo la curva de característica operativa del receptor (ROC). Distingue las clases. Valor predeterminado para la clasificación binaria. |
Pérdida logística | minimize-log-loss |
Mantener las probabilidades de predicción lo más precisas posible. Solo es compatible con la clasificación de clases múltiples. |
AUC PR | maximize-au-prc |
Maximizar área debajo de la curva de precisión-recuperación. Optimiza los resultados para las predicciones de la clase menos común. |
Precisión en recuperación | maximize-precision-at-recall |
Optimizar la precisión en un valor de recuperación específico. |
Recuperación en precisión | maximize-recall-at-precision |
Optimizar 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 |
Minimiza raíz cuadrada del error cuadrático medio (RMSE). Captura valores más extremos con exactitud. Valor predeterminado |
MAE | minimize-mae |
Minimizar el error absoluto promedio (MAE) Observa los valores extremos como valores atípicos con un impacto menor en el modelo. |
RMSLE | minimize-rmsle |
Minimizar el error de registro de la raíz cuadrada de la media (RMSLE) Penaliza errores de tamaño relativo en lugar de valor absoluto. Es útil cuando los valores previstos y reales pueden ser bastante grandes. |
¿Qué sigue?
- Evalúa tu modelo.
- Obtén más información sobre cómo exportar tu modelo.