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
Daily
se 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 grouping
Group by columns
Group 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 columns
ouGroup all
.Temporal total weight
.Group temporal total weight
. Este campo só pode ser definido se selecionar a opçãoGroup by columns
ouGroup 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
,month
ouyear
. Selecioneday
se 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
day
e 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-loss
e a inferência probabilística. Forneça uma lista de até cinco números únicos entre0
e1
, 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
Split
para 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
windowConfig
para 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 atrainingTaskInputs
do 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 atrainingTaskInputs
do 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 atrainingTaskInputs
do pedido JSON. COLUMN_NAME refere-se ao nome da coluna com valoresTrue
ouFalse
."windowConfig": { "column": "COLUMN_NAME" }, ```
Para saber mais, consulte o artigo Estratégias de janela dinâmica.