Nesta página, mostramos como treinar um modelo de classificação ou regressão de um conjunto de dados tabular usando o console do Google Cloud ou a API Vertex AI.
Antes de começar
Antes de treinar um modelo, é preciso concluir as seguintes etapas:
Treinar um modelo
Console do Google Cloud
No Console do Google Cloud, na seção da Vertex AI, acesse a página Conjuntos de dados.
Clique no nome do conjunto de dados que você quer usar para treinar seu modelo para abrir a página de detalhes.
Se o tipo de dados usar conjuntos de anotações, selecione o conjunto que você quer usar neste modelo.
Clique em Treinar novo modelo.
Selecione Outras.
Na página Treinar novo modelo, conclua as seguintes etapas:
Selecione o método de treinamento do modelo.
- A
AutoML
é uma boa escolha para vários casos de uso.
Clique em Continuar.
- A
Digite o nome de exibição do novo modelo.
Selecione a coluna de destino.
A coluna de objetivo é o valor que o modelo prevê.
Saiba mais sobre os requisitos da coluna de destino.
Opcional: para exportar seu conjunto de dados de teste para o BigQuery, marque Exportar conjunto de dados de teste para o BigQuery e forneça o nome da tabela.
Opcional: para escolher como dividir os dados entre conjuntos de treinamento, teste e validação, abra as Opções avançadas. Você pode escolher entre as seguintes opções de divisão de dados:
- Aleatória (padrão): a Vertex AI seleciona aleatoriamente as linhas associadas a cada um dos conjuntos de dados. Por padrão, a Vertex AI seleciona aleatoriamente 80% das linhas de dados para o conjunto de treinamento, 10% para o conjunto de validação e 10% para o conjunto de teste.
- Manual: a Vertex AI seleciona linhas de dados para cada um dos conjuntos de dados com base nos valores em uma coluna de divisão de dados. Forneça o nome da coluna de divisão de dados.
- Cronológico: a Vertex AI divide os dados com base no carimbo de data/hora em uma coluna de tempo. Forneça o nome da coluna de hora.
Saiba mais sobre as divisões de dados.
Clique em Continuar.
Opcional: clique em Gerar estatísticas. A geração de estatísticas preenche os menus suspensos Transformação.
Na página Opções de treinamento, revise a lista de colunas e exclua as colunas do treinamento que não podem ser usadas para treinar o modelo.
Analise as transformações selecionadas para os recursos incluídos, confirme se os dados inválidos são permitidos e faça as atualizações necessárias.
Saiba mais sobre transformações e dados inválidos.
Se você quiser especificar uma coluna de peso ou alterar seu objetivo de otimização para que ele seja diferente do padrão, abra as Opções avançadas e faça suas seleções.
Saiba mais sobre colunas de peso e objetivos de otimização.
Clique em Continuar.
Na página Computação e preços, configure da seguinte maneira:
Insira o número máximo de horas que você quer que o modelo treine.
Essa configuração ajuda a limitar os custos de treinamento. O tempo decorrido real pode ser maior do que esse valor, porque há outras operações envolvidas na criação de um novo modelo.
O tempo de treinamento sugerido está relacionado ao tamanho dos seus dados de treinamento. A tabela abaixo mostra os intervalos de tempo de treinamento sugeridos por contagem de linhas; um número de colunas muito grande também aumentará o tempo de treinamento.
Linhas Tempo de treinamento sugerido Inferior a 100.000 1 a 3 horas 100.000 a 1.000.000 1 a 6 horas 1.000.000 a 10.000.000 1 a 12 horas Superior a 10.000.000 3 a 24 horas Clique em Iniciar treinamento.
O treinamento do modelo pode levar muitas horas dependendo do tamanho e da complexidade dos dados, além do orçamento de treinamento, se você tiver especificado um. Você pode fechar essa guia e voltar a ela mais tarde. Você receberá um e-mail quando o treinamento do seu modelo for concluído.
API
Selecione um objetivo de tipo de dados em tabela.
Classificação
Selecione uma guia para seu idioma ou ambiente:
REST
Use o comando trainingPipelines.create para treinar um modelo.
Treine o modelo.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- LOCATION: sua região.
- PROJECT: o ID do projeto.
- TRAININGPIPELINE_DISPLAY_NAME: nome de exibição do pipeline de treinamento criado para esta operação.
- TARGET_COLUMN: a coluna (valor) que você quer que esse modelo preveja.
- WEIGHT_COLUMN: (opcional) a coluna de peso. Saiba mais.
- TRAINING_BUDGET: o tempo máximo que você quer que o modelo seja treinado, em mil horas de uso do nó (1.000 horas de uso do nó equivalem a uma hora de uso do nó).
- OPTIMIZATION_OBJECTIVE: obrigatório somente se você não quiser o objetivo de otimização padrão para seu tipo de previsão. Saiba mais.
- TRANSFORMATION_TYPE: o tipo de transformação é fornecido para cada coluna usada para treinar o modelo. Saiba mais.
- COLUMN_NAME: o nome da coluna com o tipo de transformação especificado. É preciso especificar todas as colunas usadas para treinar o modelo.
- MODEL_DISPLAY_NAME: nome de exibição do modelo recém-treinado.
- DATASET_ID: ID do conjunto de dados de treinamento;
-
Você pode fornecer um objeto
Split
para controlar sua divisão de dados. Para informações sobre como controlar a divisão de dados, consulte Como controlar a divisão de dados usando REST. - PROJECT_NUMBER: o número do projeto gerado automaticamente
Método HTTP e URL:
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT/locations/LOCATION/trainingPipelines
Corpo JSON da solicitação:
{ "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 a solicitação, expanda uma destas opções:
Você receberá uma resposta JSON semelhante a esta:
{ "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 testar esse exemplo, siga as instruções de configuração para Java no Guia de início rápido da Vertex AI sobre como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Vertex AI para Java.
Para autenticar na Vertex AI, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Node.js
Antes de testar esse exemplo, siga as instruções de configuração para Node.js no Guia de início rápido da Vertex AI sobre como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Vertex AI para Node.js.
Para autenticar na Vertex AI, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Python
Para saber como instalar o SDK da Vertex AI para Python, consulte Instalar o SDK da Vertex AI para Python. Para mais informações, consulte a documentação de referência da API Python.
Regressão
Selecione uma guia para seu idioma ou ambiente:
REST
Use o comando trainingPipelines.create para treinar um modelo.
Treine o modelo.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- LOCATION: sua região.
- PROJECT: o ID do projeto.
- TRAININGPIPELINE_DISPLAY_NAME: nome de exibição do pipeline de treinamento criado para esta operação.
- TARGET_COLUMN: a coluna (valor) que você quer que esse modelo preveja.
- WEIGHT_COLUMN: (opcional) a coluna de peso. Saiba mais.
- TRAINING_BUDGET: o tempo máximo que você quer que o modelo seja treinado, em mil horas de uso do nó (1.000 horas de uso do nó equivalem a uma hora de uso do nó).
- OPTIMIZATION_OBJECTIVE: obrigatório somente se você não quiser o objetivo de otimização padrão para seu tipo de previsão. Saiba mais.
- TRANSFORMATION_TYPE: o tipo de transformação é fornecido para cada coluna usada para treinar o modelo. Saiba mais.
- COLUMN_NAME: o nome da coluna com o tipo de transformação especificado. É preciso especificar todas as colunas usadas para treinar o modelo.
- MODEL_DISPLAY_NAME: nome de exibição do modelo recém-treinado.
- DATASET_ID: ID do conjunto de dados de treinamento;
-
Você pode fornecer um objeto
Split
para controlar sua divisão de dados. Para informações sobre como controlar a divisão de dados, consulte Como controlar a divisão de dados usando REST. - PROJECT_NUMBER: o número do projeto gerado automaticamente
Método HTTP e URL:
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT/locations/LOCATION/trainingPipelines
Corpo JSON da solicitação:
{ "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 a solicitação, expanda uma destas opções:
Você receberá uma resposta JSON semelhante a esta:
{ "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 testar esse exemplo, siga as instruções de configuração para Java no Guia de início rápido da Vertex AI sobre como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Vertex AI para Java.
Para autenticar na Vertex AI, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Node.js
Antes de testar esse exemplo, siga as instruções de configuração para Node.js no Guia de início rápido da Vertex AI sobre como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Vertex AI para Node.js.
Para autenticar na Vertex AI, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Python
Para saber como instalar o SDK da Vertex AI para Python, consulte Instalar o SDK da Vertex AI para Python. Para mais informações, consulte a documentação de referência da API Python.
Controlar a divisão de dados usando REST
É possível controlar como os dados de treinamento são divididos entre os conjuntos de
treinamento, validação e teste. Ao usar a API Vertex AI, use o
objeto Split
para
determinar a divisão de dados. O objeto Split
pode ser incluído no objeto inputDataConfig
como um dos vários tipos de objeto, cada um fornecendo uma maneira diferente de
dividir os dados de treinamento.
Os métodos que podem ser usados para dividir os dados dependem do tipo de dados:
FractionSplit
:- TRAINING_FRACTION: a fração dos dados de treinamento a ser usada para o conjunto de treinamento.
- VALIDATION_FRACTION: a fração dos dados de treinamento a ser usada para o conjunto de validação.
- TEST_FRACTION: a fração dos dados de treinamento a ser usada para o conjunto de teste.
Se alguma das frações for especificada, tudo deverá ser especificado. As frações devem somar 1,0. Saiba mais.
"fractionSplit": { "trainingFraction": TRAINING_FRACTION, "validationFraction": VALIDATION_FRACTION, "testFraction": TEST_FRACTION },
PredefinedSplit
:- DATA_SPLIT_COLUMN: a coluna que contém os valores de divisão de dados (
TRAIN
,VALIDATION
,TEST
).
Especifique manualmente a divisão de dados para cada linha usando uma coluna dividida. Saiba mais.
"predefinedSplit": { "key": DATA_SPLIT_COLUMN },
- DATA_SPLIT_COLUMN: a coluna que contém os valores de divisão de dados (
TimestampSplit
:- TRAINING_FRACTION: a porcentagem dos dados de treinamento a ser usada para o conjunto de treinamento. O padrão é 0,80.
- VALIDATION_FRACTION: a porcentagem dos dados de treinamento a ser usada para o conjunto de validação. O padrão é 0,10.
- TEST_FRACTION: a porcentagem dos dados de treinamento a ser usada para o conjunto de teste. O padrão é 0,10.
- TIME_COLUMN: a coluna que contém os carimbos de data/hora.
Se alguma das frações for especificada, tudo deverá ser especificado. As frações devem totalizar 1,0. Saiba mais.
"timestampSplit": { "trainingFraction": TRAINING_FRACTION, "validationFraction": VALIDATION_FRACTION, "testFraction": TEST_FRACTION, "key": TIME_COLUMN }
Objetivos de otimização para modelos de classificação ou regressão
Ao treinar um modelo, a Vertex AI seleciona um objetivo de otimização padrão com base no tipo de modelo e no tipo de dados usado na coluna de destino.
Os modelos de classificação são ideais para:Objetivo da otimização | Valor da API | Use este objetivo se você quiser... |
---|---|---|
AUC ROC | maximize-au-roc |
Área sob a curva de característica de operação do receptor (ROC, na sigla em inglês). Distinguir entre classes. Valor padrão para classificação binária. |
Log Perda | minimize-log-loss |
Manter o máximo possível de precisão nas probabilidades de predição. É o único objetivo compatível com a classificação multiclasse. |
AUC PR | maximize-au-prc |
Maximizar a área sob curva de precisão-recall. Otimizar resultados para predições da classe menos comum. |
Precisão em recall | maximize-precision-at-recall |
Otimize a precisão com um valor de recall específico. |
Recall na precisão | maximize-recall-at-precision |
Otimizar recall em um valor de precisão específico. |
Objetivo da otimização | Valor da API | Use este objetivo se você quiser... |
---|---|---|
REMQ | minimize-rmse |
Minimizar a raiz do erro médio quadrado (REMQ) Captura mais valores extremos com precisão. Valor padrão. |
MAE | minimize-mae |
Minimizar erro médio absoluto (MAE, na sigla em inglês). Ver os valores extremos como outliers, o que impacta menos o modelo. |
RMSLE | minimize-rmsle |
Minimizar o erro logarítmico quadrado médio (RMSLE, na sigla em inglês). Penaliza o erro conforme o tamanho relativo e não o valor absoluto. É útil quando valores previstos e reais podem ser muito grandes. |
A seguir
- Avalie o modelo.
- Saiba como exportar seu modelo.