Reduza o desvio da previsão com a agregação hierárquica

Esta página explica a previsão hierárquica, os respetivos objetivos e mostra as estratégias de preparação que pode usar para reduzir a parcialidade nos seus modelos de previsão.

Para obter instruções detalhadas sobre como configurar a previsão hierárquica quando preparar o modelo de previsão através da API, consulte o artigo Prepare um modelo de previsão.

O que é a previsão hierárquica

As séries cronológicas são frequentemente estruturadas numa hierarquia aninhada. Por exemplo, todo o inventário de produtos de um retalhista pode ser dividido em categorias de produtos. As categorias podem ser divididas em produtos individuais. Quando prevê vendas futuras, as previsões dos produtos de uma categoria têm de corresponder à previsão da própria categoria e assim sucessivamente na hierarquia.

Uma hierarquia de produtos e categorias.

Da mesma forma, a dimensão de tempo de uma única série cronológica também pode apresentar uma hierarquia. Por exemplo, as vendas previstas de um produto individual ao nível do dia têm de corresponder às vendas semanais previstas do produto. A figura seguinte mostra este grupo e a hierarquia temporal como uma matriz:

Uma matriz de intervalos temporais.

A previsão hierárquica tem três objetivos:

  • Reduza a parcialidade geral para melhorar as métricas em todas as séries cronológicas (total de vendas).
  • Reduza a parcialidade temporal para melhorar as métricas ao longo do horizonte (vendas sazonais).
  • Reduza a parcialidade ao nível do grupo para melhorar as métricas num grupo de séries cronológicas (vendas de artigos).

No Vertex AI, a previsão hierárquica tem em conta a estrutura hierárquica das séries cronológicas incorporando termos de perda adicionais para inferências agregadas.

Hierarchical loss = (1 x loss) +
                    (temporal total weight x temporal total loss) +
                    (group total weight x group total loss) +
                    (group temporal total weight x group temporal total loss)

Por exemplo, se o grupo hierárquico for "categoria", as inferências ao nível da "categoria" são a soma das inferências de todos os "produtos" na categoria. Se o objetivo do modelo for o erro absoluto médio (MAE), a perda inclui o MAE para inferências nos níveis "produto" e "categoria". Isto ajuda a melhorar a consistência das previsões a diferentes níveis da hierarquia e, em alguns casos, pode até melhorar as métricas ao nível mais baixo.

Configure a agregação hierárquica para a preparação de modelos

Configure a agregação hierárquica quando preparar os seus modelos de previsão configurando AutoMLForecastingTrainingJob no SDK do Vertex AI ou configurando hierarchyConfig na API Vertex AI.

Os parâmetros disponíveis para AutoMLForecastingTrainingJob e hierarchyConfig incluem:

  • group_columns
  • group_total_weight
  • temporal_total_weight
  • group_temporal_total_weight

Os parâmetros permitem diferentes combinações de perdas agregadas por grupo e tempo. Também lhe permitem atribuir ponderações para aumentar a prioridade de minimizar a perda agregada em relação à perda individual. Por exemplo, se o peso for 2.0, é ponderado duas vezes mais do que a perda individual.

group_columns

Os nomes das colunas na tabela de entrada de preparação identificam o agrupamento para o nível da hierarquia. As colunas têm de ser time_series_attribute_columns. Se não definir a coluna de grupo, todas as séries cronológicas são tratadas como parte do mesmo grupo e agregadas em todas as séries cronológicas.

group_total_weight

Peso da perda agregada do grupo relativamente à perda individual. Desativado se for definido como 0.0 ou não for definido.

temporal_total_weight

Peso da perda agregada no tempo relativamente à perda individual. Desativado se for definido como 0.0 ou não for definido.

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 não definir a coluna de grupo, todas as séries cronológicas são tratadas como parte do mesmo grupo e agregadas em todas as séries cronológicas.

Estratégias para reduzir o preconceito

Comece com um tipo de agregação (grupo ou tempo) com um peso de 10.0 e, em seguida, reduza ou duplique o valor com base nos resultados.

Reduza a parcialidade geral

Nas previsões detalhadas para distribuir o stock pelas lojas, em que o erro percentual absoluto ponderado (WAPE) ao nível do produto x loja x data é usado como uma métrica de previsão, as previsões são frequentemente inferiores ao previsto nos níveis agregados. Para compensar esta tendência geral, experimente o seguinte:

  • Defina group_total_weight como 10.0.
  • Deixar group_columns não definido.
  • Deixe outros pesos não definidos.

Isto agrega todas as séries cronológicas e reduz a parcialidade geral.

Reduza a parcialidade temporal

No planeamento a longo prazo, as previsões podem ser feitas ao nível de produto x região x semana, mas as métricas relevantes podem ser medidas relativamente aos totais sazonais. Para compensar esta parcialidade temporal, experimente o seguinte:

  • Defina temporal_total_weight como 10.0.
  • Deixar group_columns não definido.
  • Deixe outros pesos não definidos.

Esta agregação é feita em todas as datas no horizonte de uma série cronológica e reduz a parcialidade temporal.

Reduza o desvio ao nível do grupo

Para previsões que são multifuncionais no processo de reabastecimento, as previsões detalhadas ao nível do produto x loja x data ou semana podem ser agregadas até aos níveis de produto x centro de distribuição x data para distribuição ou categoria de produto x data para encomendas de materiais. Para o fazer, siga estes passos:

  • Defina group_total_weight como 10.0.
  • Defina group_columns, por exemplo, ["region"] ou ["region", "category"]. A definição de várias colunas de grupo usa o respetivo valor combinado para definir o grupo. Para obter os melhores resultados, use colunas de grupo com 100 ou menos valores combinados distintos.
  • Deixe outros pesos não definidos.

Esta agregação é feita em todas as séries cronológicas no mesmo grupo para a mesma data e reduz o desvio ao nível do grupo.

Limites

  • Só é suportado um nível de agregação de séries cronológicas. Se especificar mais do que uma coluna de agrupamento, como "produto, loja", a série cronológica está no mesmo grupo apenas se partilharem os mesmos valores de "produto" e "loja".
  • Recomendamos que use 100 ou menos grupos.

O que se segue?