Esta página mostra-lhe como preparar um modelo de previsão a partir de um conjunto de dados tabular usando a consola Google Cloud ou a API Vertex AI.
Antes de começar
Antes de preparar um modelo de previsão, conclua 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 Método de preparação, configure o seguinte:
Selecione o método de preparação do modelo. Para saber mais, consulte o artigo Métodos de preparação de modelos.
Clique em Continuar.
Na página Detalhes do modelo, configure o seguinte:
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.
Se não tiver definido as colunas Identificador da série e Data/hora no conjunto de dados, selecione-as agora.
Selecione o Nível de detalhe dos dados. Selecione
Dailyse quiser usar a modelagem de efeitos de feriados. Saiba como escolher o nível de detalhe dos dados.Opcional: no menu pendente Regiões de feriados, escolha uma ou mais regiões geográficas para ativar a modelagem de efeitos de feriados. Durante a preparação, o Vertex AI cria funcionalidades categóricas de feriados no modelo com base na data da coluna Data/hora e nas regiões geográficas especificadas. Só pode selecionar esta opção quando a granularidade dos dados estiver definida como
Daily. Por predefinição, a modelagem de efeitos de feriados está desativada. Para saber mais acerca das regiões geográficas usadas para a modelação do efeito de férias, consulte o artigo Regiões de férias.Introduza a janela de contexto e o horizonte de previsão.
O horizonte de previsão determina até que ponto o modelo prevê o valor-alvo para cada linha de dados de inferência. O Horizonte de previsão é especificado em unidades de Nível de detalhe dos dados.
O período de contexto define o intervalo de tempo passado que o modelo analisa durante a preparação (e para as previsões). Por outras palavras, para cada ponto de dados de preparação, o período de contexto determina o intervalo de tempo em que o modelo procura padrões preditivos. A capacidade de resposta é especificada em unidades de detalhe dos dados.
Se quiser exportar o seu conjunto de dados de teste para o BigQuery, selecione Exportar conjunto de dados de teste para o BigQuery e indique o nome da tabela.
Se quiser controlar manualmente a divisão de dados ou configurar o período de previsão, abra as Opções avançadas.
A divisão de dados predefinida é cronológica, com as percentagens padrão de 80/10/10. Se quiser especificar manualmente as linhas que são atribuídas a cada divisão, selecione Manual e especifique a coluna de divisão de dados.
Saiba mais sobre as divisões de dados.
Selecione uma estratégia de período contínuo para a geração do período de previsão. A estratégia predefinida é Count.
- Contagem: defina o valor para o número máximo de janelas na caixa de texto fornecida.
- Passada: defina o valor do comprimento da passada na caixa de texto fornecida.
- Coluna: selecione o nome da coluna adequado no menu pendente apresentado.
Para saber mais, consulte o artigo Estratégias de janela dinâmica.
Clique em Continuar.
Na página Opções de preparação, configure o seguinte:
Se ainda não o fez, clique em Gerar estatísticas.
A geração de estatísticas preenche os menus pendentes de Transformação.
Reveja a lista de colunas e exclua todas as colunas da preparação que não devem ser usadas para preparar o modelo.
Se estiver a usar uma coluna de divisão de dados, esta deve ser incluída.
Reveja as transformações selecionadas para as funcionalidades incluídas e faça as atualizações necessárias.
As linhas que contêm dados inválidos para a transformação selecionada são excluídas da preparação. Saiba mais acerca das transformações.
Para cada coluna incluída para a preparação, especifique o Tipo de funcionalidade para saber como essa funcionalidade se relaciona com a respetiva série cronológica e se está disponível no momento da previsão. Saiba mais sobre o tipo e a disponibilidade das funcionalidades.
Se quiser especificar uma coluna de ponderação, alterar o objetivo de otimização da predefinição ou ativar a previsão hierárquica, abra as Opções avançadas.
Opcional. Se quiser especificar uma coluna de peso, selecione-a na lista pendente. Saiba mais sobre as colunas de ponderação.
Opcional. Se quiser selecionar o objetivo de otimização, selecione-o na lista. Saiba mais acerca dos objetivos de otimização.
Opcional. Se quiser usar a previsão hierárquica, selecione Ativar previsão hierárquica. Pode escolher entre três opções de agrupamento:
No groupingGroup by columnsGroup all
Também pode optar por definir as seguintes ponderações de perdas agregadas:
Group total weight. Este campo só pode ser definido se selecionar a opçãoGroup by columnsouGroup all.Temporal total weight.Group temporal total weight. Este campo só pode ser definido se selecionar a opçãoGroup by columnsouGroup all.
Saiba mais sobre a previsão hierárquica.
Clique em Continuar.
Na página Cálculo e preços, configure o seguinte:
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 preparação. 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 a dimensão do horizonte de previsão e os dados de preparação. A tabela abaixo apresenta alguns exemplos de execuções de preparação de previsões e o intervalo de tempo de preparação necessário para preparar um modelo de alta qualidade.
Linhas Funcionalidades Horizonte de previsão Tempo de treino 12 milhões 10 6 3 a 6 horas 20 milhões 50 13 6 a 12 horas 16 milhões 30 365 24 a 48 horas Para informações sobre os preços da preparação, consulte a página de preços.
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 separador para o seu idioma ou ambiente:
REST
Use o comando trainingPipelines.create para preparar um 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.
- TRAINING_PIPELINE_DISPLAY_NAME: nome a apresentar para o pipeline de preparação criado para esta operação.
-
TRAINING_TASK_DEFINITION: o método de preparação do modelo.
- Codificador denso de séries cronológicas (TiDE)
gs://google-cloud-aiplatform/schema/trainingjob/definition/time_series_dense_encoder_forecasting_1.0.0.yaml - Temporal Fusion Transformer (TFT)
gs://google-cloud-aiplatform/schema/trainingjob/definition/temporal_fusion_transformer_time_series_forecasting_1.0.0.yaml - AutoML (L2L)
gs://google-cloud-aiplatform/schema/trainingjob/definition/automl_forecasting_1.0.0.yaml - Seq2Seq+
gs://google-cloud-aiplatform/schema/trainingjob/definition/seq2seq_plus_time_series_forecasting_1.0.0.yaml
- Codificador denso de séries cronológicas (TiDE)
- TARGET_COLUMN: a coluna (valor) que quer que este modelo preveja.
- TIME_COLUMN: a coluna de tempo. Saiba mais.
- TIME_SERIES_IDENTIFIER_COLUMN: a coluna do identificador da série cronológica. Saiba mais.
- 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ó).
-
GRANULARITY_UNIT: a unidade a usar para a granularidade dos dados de preparação e o horizonte de previsão e a janela de contexto. Pode ser
minute,hour,day,week,monthouyear. Selecionedayse quiser usar a modelagem de efeitos de feriados. Saiba como escolher o nível de detalhe dos dados. - GRANULARITY_QUANTITY: o número de unidades de detalhe que compõem o intervalo entre as observações nos dados de preparação. Tem de ser 1 para todas as unidades, exceto minutos, que podem ser 1, 5, 10, 15 ou 30. Saiba como escolher o nível de detalhe dos dados.
- GROUP_COLUMNS: Nomes das colunas na tabela de entrada de dados de preparação que identificam o agrupamento para o nível da hierarquia. As colunas têm de ser `time_series_attribute_columns`. Saiba mais.
- GROUP_TOTAL_WEIGHT: Peso da perda agregada do grupo relativamente à perda individual. Desativado se estiver definido como "0.0" ou não estiver definido. Se a coluna de grupo não estiver definida, todas as séries cronológicas são tratadas como parte do mesmo grupo e são agregadas em todas as séries cronológicas. Saiba mais.
- TEMPORAL_TOTAL_WEIGHT: peso da perda agregada no tempo relativamente à perda individual. Desativado se estiver definido como "0.0" ou não estiver definido. Saiba mais.
- GROUP_TEMPORAL_TOTAL_WEIGHT: Peso da perda agregada total (grupo x tempo) relativamente à perda individual. Desativado se estiver definido como "0.0" ou não estiver definido. Se a coluna de grupo não estiver definida, todas as séries cronológicas são tratadas como parte do mesmo grupo e são agregadas em todas as séries cronológicas. Saiba mais.
-
HOLIDAY_REGIONS: (Opcional) Pode selecionar uma ou mais regiões geográficas para ativar a modelagem do efeito de
feriados. Durante a preparação, o Vertex AI cria caraterísticas categóricas de feriados no modelo com base na data de TIME_COLUMN e nas regiões geográficas especificadas. Para a ativar, defina GRANULARITY_UNIT como
daye especifique uma ou mais regiões no campo HOLIDAY_REGIONS. Por predefinição, a modelagem de efeitos de feriados está desativada. Para saber mais, consulte o artigo Regiões de feriados. - FORECAST_HORIZON: O horizonte de previsão determina até que ponto o modelo prevê o valor alvo para cada linha de dados de inferência. O horizonte de previsão é especificado em unidades de granularidade dos dados (GRANULARITY_UNIT). Saiba mais.
- CONTEXT_WINDOW: A janela de contexto define o intervalo de tempo passado que o modelo analisa durante a preparação (e para previsões). Por outras palavras, para cada ponto de dados de preparação, o período de contexto determina o intervalo de tempo em que o modelo procura padrões preditivos. A capacidade de resposta é especificada em unidades de detalhe dos dados (GRANULARITY_UNIT). Saiba mais.
- OPTIMIZATION_OBJECTIVE: Por predefinição, o Vertex AI minimiza o erro quadrático médio (RMSE). Se quiser um objetivo de otimização diferente para o seu modelo de previsão, escolha uma das opções em Objetivos de otimização para modelos de previsão. Se optar por minimizar a perda de quantil, também tem de especificar um valor para QUANTILES.
-
PROBABILISTIC_INFERENCE: (Opcional) Se for definido como
true, os modelos do Vertex AI modelam a distribuição de probabilidade da previsão. A inferência probabilística pode melhorar a qualidade do modelo ao processar dados ruidosos e quantificar a incerteza. Se forem especificados os valores QUANTILES, o Vertex AI também devolve os quantis da distribuição de probabilidade. A inferência probabilística só é compatível com os métodos de preparaçãoTime series Dense Encoder (TiDE)eAutoML (L2L). É incompatível com a previsão hierárquica e o objetivo de otimizaçãominimize-quantile-loss. -
QUANTILES: Quantis a usar para o objetivo de otimização
minimize-quantile-losse a inferência probabilística. Forneça uma lista de até cinco números únicos entre0e1, exclusivo. - TIME_SERIES_ATTRIBUTE_COL: o nome ou os nomes das colunas que são atributos de séries cronológicas. Saiba mais.
- AVAILABLE_AT_FORECAST_COL: O nome ou os nomes das colunas de covariáveis cujo valor é conhecido no momento da previsão. Saiba mais.
- UNAVAILABLE_AT_FORECAST_COL: o nome ou os nomes das colunas de covariáveis cujo valor é desconhecido no momento da 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
Splitpara controlar a divisão dos dados. Para obter informações sobre como controlar a divisão de dados, consulte o artigo Controle a divisão de dados através de REST. -
Pode fornecer um objeto
windowConfigpara configurar uma estratégia de período contínuo para a geração do período de previsão. Para mais informações, consulte o artigo Configure a estratégia de período dinâmico através da API 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": "TRAINING_PIPELINE_DISPLAY_NAME",
"trainingTaskDefinition": "TRAINING_TASK_DEFINITION",
"trainingTaskInputs": {
"targetColumn": "TARGET_COLUMN",
"timeColumn": "TIME_COLUMN",
"timeSeriesIdentifierColumn": "TIME_SERIES_IDENTIFIER_COLUMN",
"weightColumn": "WEIGHT_COLUMN",
"trainBudgetMilliNodeHours": TRAINING_BUDGET,
"dataGranularity": {"unit": "GRANULARITY_UNIT", "quantity": GRANULARITY_QUANTITY},
"hierarchyConfig": {"groupColumns": GROUP_COLUMNS, "groupTotalWeight": GROUP_TOTAL_WEIGHT, "temporalTotalWeight": TEMPORAL_TOTAL_WEIGHT, "groupTemporalTotalWeight": GROUP_TEMPORAL_TOTAL_WEIGHT}
"holidayRegions" : ["HOLIDAY_REGIONS_1", "HOLIDAY_REGIONS_2", ...]
"forecast_horizon": FORECAST_HORIZON,
"context_window": CONTEXT_WINDOW,
"optimizationObjective": "OPTIMIZATION_OBJECTIVE",
"quantiles": "QUANTILES",
"enableProbabilisticInference": "PROBABILISTIC_INFERENCE",
"time_series_attribute_columns": ["TIME_SERIES_ATTRIBUTE_COL_1", "TIME_SERIES_ATTRIBUTE_COL_2", ...]
"available_at_forecast_columns": ["AVAILABLE_AT_FORECAST_COL_1", "AVAILABLE_AT_FORECAST_COL_2", ...]
"unavailable_at_forecast_columns": ["UNAVAILABLE_AT_FORECAST_COL_1", "UNAVAILABLE_AT_FORECAST_COL_2", ...]
"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/LOCATION/trainingPipelines/TRAINING_PIPELINE_ID",
"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"
}
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
Controla a forma como os dados de preparação são divididos entre os conjuntos de preparação, validação e teste. Use uma coluna dividida para especificar manualmente a divisão de dados para cada linha e fornecê-la como parte de um objeto PredefinedSplit
Split no inputDataConfig do pedido JSON.
DATA_SPLIT_COLUMN é a coluna que contém os valores divididos dos dados
(TRAIN, VALIDATION, TEST).
"predefinedSplit": {
"key": DATA_SPLIT_COLUMN
},
Saiba mais acerca das divisões de dados.
Configure a estratégia de período flutuante através de REST
Forneça um objeto windowConfig para configurar uma estratégia de intervalo variável para a geração do intervalo de previsão. A estratégia predefinida é maxCount.
Para usar a opção
maxCount, adicione o seguinte atrainingTaskInputsdo pedido JSON. MAX_COUNT_VALUE refere-se ao número máximo de janelas."windowConfig": { "maxCount": MAX_COUNT_VALUE }, ```Para usar a opção
strideLength, adicione o seguinte atrainingTaskInputsdo pedido JSON. STRIDE_LENGTH_VALUE refere-se ao valor do comprimento da passada."windowConfig": { "strideLength": STRIDE_LENGTH_VALUE }, ```Para usar a opção
column, adicione o seguinte atrainingTaskInputsdo pedido JSON. COLUMN_NAME refere-se ao nome da coluna com valoresTrueouFalse."windowConfig": { "column": "COLUMN_NAME" }, ```
Para saber mais, consulte o artigo Estratégias de janela dinâmica.