Esta página mostra-lhe como preparar um modelo de classificação ou regressão a partir de um conjunto de dados tabulares através da Google Cloud consola ou da API Vertex AI.
Antes de começar
Antes de preparar um modelo, tem de concluir o seguinte:
Prepare um modelo
Google Cloud consola
Na Google Cloud consola, na secção Vertex AI, aceda à página Conjuntos de dados.
Clique no nome do conjunto de dados que quer usar para formar o modelo e abrir a respetiva página de detalhes.
Se o seu tipo de dados usar conjuntos de anotações, selecione o conjunto de anotações que quer usar para este modelo.
Clique em Formar novo modelo.
Selecione Outro.
Na página Preparar novo modelo, conclua os seguintes passos:
Selecione o método de preparação do modelo.
AutoML
é uma boa escolha para uma grande variedade de exemplos de utilização.
Clique em Continuar.
Introduza o nome a apresentar do novo modelo.
Selecione a coluna de destino.
A coluna de destino é o valor que o modelo vai prever.
Saiba mais acerca dos requisitos da coluna de destino.
Opcional: para exportar o conjunto de dados de teste para o BigQuery, selecione Exportar conjunto de dados de teste para o BigQuery e indique o nome da tabela.
Opcional: para escolher como dividir os dados entre os conjuntos de preparação, teste e validação, abra as Opções avançadas. Pode escolher entre as seguintes opções de divisão de dados:
- Aleatório (predefinição): o Vertex AI seleciona aleatoriamente as linhas associadas a cada um dos conjuntos de dados. Por predefinição, o Vertex AI seleciona 80% das linhas de dados para o conjunto de preparação, 10% para o conjunto de validação e 10% para o conjunto de testes.
- Manual: o Vertex AI seleciona linhas de dados para cada um dos conjuntos de dados com base nos valores numa coluna de divisão de dados. Indique o nome da coluna de divisão de dados.
- Cronológico: o Vertex AI divide os dados com base na data/hora numa coluna de tempo. Indique o nome da coluna de tempo.
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 pendentes de Transformação.
Na página Opções de preparação, reveja a lista de colunas e exclua todas as colunas da preparação que não devem ser usadas para preparar o modelo.
Reveja as transformações selecionadas para as funcionalidades incluídas, bem como se os dados inválidos são permitidos, e faça as atualizações necessárias.
Saiba mais sobre as transformações e os dados inválidos.
Se quiser especificar uma coluna de ponderação ou alterar o objetivo de otimização predefinido, abra as Opções avançadas e faça as suas seleções.
Saiba mais acerca das colunas de ponderação e dos objetivos de otimização.
Clique em Continuar.
Na janela Cálculo e preços, configure da seguinte forma:
Introduza o número máximo de horas durante as quais quer que o modelo seja preparado.
Esta definição ajuda a limitar os custos de treino. O tempo decorrido real pode ser superior a este valor, porque existem outras operações envolvidas na criação de um novo modelo.
O tempo de preparação sugerido está relacionado com o tamanho dos seus dados de preparação. A tabela abaixo mostra os intervalos de tempo de preparação sugeridos por número de linhas. Um grande número de colunas também aumenta o tempo de preparação necessário.
Linhas Tempo de treino sugerido Menos de 100 000 1 a 3 horas 100 000 - 1 000 000 1 a 6 horas 1 000 000 - 10 000 000 1 a 12 horas Mais de 10 000 000 3 a 24 horas Clique em Iniciar preparação.
A preparação do modelo pode demorar muitas horas, consoante a dimensão e a complexidade dos seus dados e o orçamento de preparação, se tiver especificado um. Pode fechar este separador e regressar a ele mais tarde. Vai receber um email quando o modelo tiver concluído o treino.
API
Selecione um objetivo de tipo de dados tabulares.
Classificação
Selecione um separador para o seu idioma ou ambiente:
REST
Use o comando trainingPipelines.create para preparar um modelo.
Prepare o modelo.
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- LOCATION: a sua região.
- PROJECT: o seu ID do projeto.
- TRAININGPIPELINE_DISPLAY_NAME: Nome a apresentar para o pipeline de preparação criado para esta operação.
- TARGET_COLUMN: a coluna (valor) que quer que este modelo preveja.
- WEIGHT_COLUMN: (opcional) a coluna de ponderação. Saiba mais.
- TRAINING_BUDGET: O período máximo durante o qual quer que o modelo seja preparado, em milissegundos de horas de nó (1000 milissegundos de horas de nó equivalem a uma hora de nó).
- OPTIMIZATION_OBJECTIVE: obrigatório apenas se não quiser o objetivo de otimização predefinido para o seu tipo de previsão. Saiba mais.
- TRANSFORMATION_TYPE: O tipo de transformação é fornecido para cada coluna usada para preparar o modelo. Saiba mais.
- COLUMN_NAME: o nome da coluna com o tipo de transformação especificado. Todas as colunas usadas para preparar o modelo têm de ser especificadas.
- MODEL_DISPLAY_NAME: nome a apresentar para o modelo recém-formado.
- DATASET_ID: ID do conjunto de dados de preparação.
-
Pode fornecer um objeto
Split
para controlar a divisão dos dados. Para obter informações sobre como controlar a divisão de dados, consulte o artigo Controlar a divisão de dados através de REST. - PROJECT_NUMBER: o número do projeto gerado automaticamente do seu projeto
Método HTTP e URL:
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT/locations/LOCATION/trainingPipelines
Corpo JSON do pedido:
{ "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 o seu pedido, expanda uma destas opções:
Deve receber uma resposta JSON semelhante à seguinte:
{ "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 experimentar este exemplo, siga as Javainstruções de configuração no início rápido do Vertex AI com bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Java Vertex AI.
Para se autenticar no Vertex AI, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.
Node.js
Antes de experimentar este exemplo, siga as Node.jsinstruções de configuração no início rápido do Vertex AI com bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Node.js Vertex AI.
Para se autenticar no Vertex AI, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.
Python
Para saber como instalar ou atualizar o SDK Vertex AI para Python, consulte o artigo Instale o SDK Vertex AI para Python. Para mais informações, consulte a Python documentação de referência da API.
Regressão
Selecione um separador para o seu idioma ou ambiente:
REST
Use o comando trainingPipelines.create para preparar um modelo.
Prepare o modelo.
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- LOCATION: a sua região.
- PROJECT: .
- TRAININGPIPELINE_DISPLAY_NAME: Nome a apresentar para o pipeline de preparação criado para esta operação.
- TARGET_COLUMN: a coluna (valor) que quer que este modelo preveja.
- WEIGHT_COLUMN: (opcional) a coluna de ponderação. Saiba mais.
- TRAINING_BUDGET: O período máximo durante o qual quer que o modelo seja preparado, em milissegundos de horas de nó (1000 milissegundos de horas de nó equivalem a uma hora de nó).
- OPTIMIZATION_OBJECTIVE: obrigatório apenas se não quiser o objetivo de otimização predefinido para o seu tipo de previsão. Saiba mais.
- TRANSFORMATION_TYPE: O tipo de transformação é fornecido para cada coluna usada para preparar o modelo. Saiba mais.
- COLUMN_NAME: o nome da coluna com o tipo de transformação especificado. Todas as colunas usadas para preparar o modelo têm de ser especificadas.
- MODEL_DISPLAY_NAME: nome a apresentar para o modelo recém-formado.
- DATASET_ID: ID do conjunto de dados de preparação.
-
Pode fornecer um objeto
Split
para controlar a divisão dos dados. Para obter informações sobre como controlar a divisão de dados, consulte o artigo Controlar a divisão de dados através de REST. - PROJECT_NUMBER: o número do projeto gerado automaticamente do seu projeto
Método HTTP e URL:
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT/locations/LOCATION/trainingPipelines
Corpo JSON do pedido:
{ "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 o seu pedido, expanda uma destas opções:
Deve receber uma resposta JSON semelhante à seguinte:
{ "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 experimentar este exemplo, siga as Javainstruções de configuração no início rápido do Vertex AI com bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Java Vertex AI.
Para se autenticar no Vertex AI, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.
Node.js
Antes de experimentar este exemplo, siga as Node.jsinstruções de configuração no início rápido do Vertex AI com bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Node.js Vertex AI.
Para se autenticar no Vertex AI, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.
Python
Para saber como instalar ou atualizar o SDK Vertex AI para Python, consulte o artigo Instale o SDK Vertex AI para Python. Para mais informações, consulte a Python documentação de referência da API.
Controle a divisão de dados através de REST
Pode controlar a forma como os dados de preparação são divididos entre os conjuntos de preparação, validação e teste. Quando usa a API Vertex AI, use o objeto Split
para determinar a divisão dos dados. O objeto Split
pode ser incluído no objeto inputDataConfig
como um de vários tipos de objetos, cada um dos quais oferece uma forma diferente de dividir os dados de preparação.
Os métodos que usa para dividir os dados dependem do tipo de dados:
FractionSplit
:- TRAINING_FRACTION: a fração dos dados de preparação a usar para o conjunto de preparação.
- VALIDATION_FRACTION: a fração dos dados de preparação a usar para o conjunto de validação.
- TEST_FRACTION: a fração dos dados de treino a usar para o conjunto de testes.
Se especificar alguma das frações, especifique todas. As frações têm de totalizar 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 divididos dos dados
(
TRAIN
,VALIDATION
,TEST
).
Especificar manualmente a divisão de dados para cada linha através de uma coluna de divisão. Saiba mais.
"predefinedSplit": { "key": DATA_SPLIT_COLUMN },
- DATA_SPLIT_COLUMN: a coluna que contém os valores divididos dos dados
(
TimestampSplit
:- TRAINING_FRACTION: a percentagem dos dados de preparação a usar para o conjunto de preparação. A predefinição é 0,80.
- VALIDATION_FRACTION: a percentagem dos dados de preparação a usar para o conjunto de validação. A predefinição é 0,10.
- TEST_FRACTION: a percentagem dos dados de preparação a usar para o conjunto de testes. A predefinição é 0,10.
- TIME_COLUMN: a coluna que contém as indicações de tempo.
Se especificar alguma das frações, especifique todas. As frações têm de somar 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
Quando prepara um modelo, o Vertex AI seleciona um objetivo de otimização predefinido com base no tipo de modelo e no tipo de dados usado para a coluna de destino.
Os modelos de classificação são mais adequados para:Objetivo de otimização | Valor da API | Use este objetivo se quiser… |
---|---|---|
AUC ROC | maximize-au-roc |
Maximizar a área abaixo da curva de caraterística operacional do recetor (ROC). Distingue entre classes. Valor predefinido para a classificação binária. |
Perda de registos | minimize-log-loss |
Manter as probabilidades de inferências o mais precisas possível. Objetivo suportado apenas para a classificação multiclasse. |
AUC PR | maximize-au-prc |
Maximize a área abaixo da curva de precisão-recolha. Otimiza os resultados para inferências para a classe menos comum. |
Precisão na capacidade de recordar | maximize-precision-at-recall |
Otimize a precisão a um valor de recall específico. |
Recuperação com precisão | maximize-recall-at-precision |
Otimize a capacidade de memorização a um valor de precisão específico. |
Objetivo de otimização | Valor da API | Use este objetivo se quiser… |
---|---|---|
RMSE | minimize-rmse |
Minimizar o erro quadrático médio (RMSE). Captura valores mais extremos com precisão. Valor predefinido. |
MAE | minimize-mae |
Minimizar o erro absoluto médio (MAE). Considera os valores extremos como valores atípicos com menor impacto no modelo. |
RMSLE | minimize-rmsle |
Minimizar o erro de registo quadrático médio (RMSLE). Penaliza o erro no tamanho relativo em vez do valor absoluto. Útil quando os valores previstos e reais podem ser bastante elevados. |
O que se segue?
- Avalie o seu modelo.
- Saiba como exportar o seu modelo.