Nesta página, mostramos como treinar um modelo de classificação ou regressão AutoML a partir de um conjunto de dados tabular usando o Console do Cloud ou a API Vertex AI.
Objetivos de otimização para modelos tabulares de classificação ou regressão do AutoML
Quando você treina um modelo do AutoML usando um conjunto de dados em tabela, 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. Objetivo aceito apenas para 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. |
Os modelos de regressão são melhores para:
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 valores mais precisos 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. |
Antes de começar
Antes de treinar um modelo, é preciso concluir as seguintes etapas:
Treinar um modelo do AutoML
Console do 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.
Na página Treinar novo modelo, conclua as seguintes etapas:
Selecione o
AutoML como o método de treinamento e clique em Continuar.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.
Se você quiser exportar o 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.
Se você quiser controlar manualmente a divisão de dados, abra as Opções avançadas.
A divisão de dados padrão é aleatória. Dependendo dos dados, selecione Manual para usar uma coluna de divisão de dados, controle as porcentagens para a divisão de dados ou forneça uma coluna Data/hora. Saiba mais sobre as divisões de dados.
Clique em Continuar.
Clique em Gerar estatísticas se ainda não tiver feito isso.
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.
Se você usar uma coluna de divisão de dados, ela precisa ser incluída.
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 janela Computação e preços, insira o número máximo de horas em que você quer treinar o modelo.
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 Para mais informações sobre preços de treinamento, consulte a página de preços.
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 e LINHA DE CMD
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 ou o número 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: número do seu projeto (aparece na resposta).
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
Para saber como instalar e usar a biblioteca de cliente para Vertex AI, consulte Bibliotecas de cliente Vertex AI. Para mais informações, consulte a documentação de referência da API Vertex AI para Java.
Node.js
Para saber como instalar e usar a biblioteca de cliente para Vertex AI, consulte Bibliotecas de cliente Vertex AI. Para mais informações, consulte a documentação de referência da API Vertex AI para Node.js.
Python
Para saber como instalar e usar a biblioteca de cliente para Vertex AI, consulte Bibliotecas de cliente Vertex AI. Para mais informações, consulte a documentação de referência da API Vertex AI para Python.
Regressão
Selecione uma guia para seu idioma ou ambiente:
REST e LINHA DE CMD
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 ou o número 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: número do seu projeto (aparece na resposta).
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
Para saber como instalar e usar a biblioteca de cliente para Vertex AI, consulte Bibliotecas de cliente Vertex AI. Para mais informações, consulte a documentação de referência da API Vertex AI para Java.
Node.js
Para saber como instalar e usar a biblioteca de cliente para Vertex AI, consulte Bibliotecas de cliente Vertex AI. Para mais informações, consulte a documentação de referência da API Vertex AI para Node.js.
Python
Para saber como instalar e usar a biblioteca de cliente para Vertex AI, consulte Bibliotecas de cliente Vertex AI. Para mais informações, consulte a documentação de referência da API Vertex AI para 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 InputConfig
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. Não usada para dados de vídeo.
- 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 precisam ser adicionadas a 1,0. Os valores padrão das frações variam de acordo com o tipo de dados. 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 precisam ser adicionadas a 1,0. Saiba mais.
"timestampSplit": { "trainingFraction": TRAINING_FRACTION, "validationFraction": VALIDATION_FRACTION, "testFraction": TEST_FRACTION, "key": TIME_COLUMN }
A seguir
- Avalie o modelo.
- Saiba como exportar seu modelo.