Reduzir viés de previsão com agregação hierárquica

Nesta página, explicamos o que é previsão hierárquica, quais são seus objetivos e mostramos algumas estratégias de treinamento que podem ser empregadas para reduzir o viés nos seus modelos de previsão.

Para instruções detalhadas sobre como configurar a previsão hierárquica ao treinar seu modelo de previsão usando a API, consulte Treinar um modelo de previsão.

O que é previsão hierárquica

Geralmente, as séries temporais são estruturadas em uma hierarquia aninhada. Por exemplo, é possível dividir todo o inventário de produtos que um varejista vende em categorias de produtos. As categorias podem ser divididas em produtos individuais. As previsões dos produtos de uma categoria devem somar a previsão da própria categoria e, assim, a hierarquia.

Uma hierarquia de produtos e categorias.

Da mesma forma, a dimensão de tempo de uma única série temporal também pode exibir uma hierarquia. Por exemplo, as vendas previstas para um produto individual no nível do dia devem resultar em um total de vendas semanais previstas. A figura a seguir mostra esse grupo e a hierarquia temporal como uma matriz:

Uma matriz de série temporal.

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

  • Reduza a tendência geral para melhorar as métricas em todas as séries temporais (vendas totais).
  • Reduza a tendência temporal para melhorar as métricas no horizonte (promoções sazonais).
  • Reduza o viés no nível do grupo para melhorar as métricas em um grupo de séries temporais (vendas de itens).

Na Vertex AI, a previsão hierárquica considera a estrutura hierárquica da série temporal incorporando termos de perda adicionais para previsões 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 "category", as previsões no nível "category" serão a soma das previsões de todos os "products" na categoria. Se o objetivo do modelo for um erro absoluto (MAE), a perda incluirá o MAE para previsões nos níveis de "product" e "category". Isso ajuda a melhorar a consistência das previsões em níveis diferentes da hierarquia e, em alguns casos, até melhorar as métricas no nível mais baixo.

Configurar a agregação hierárquica para o treinamento de modelos

É possível configurar a agregação hierárquica ao treinar os modelos de previsão configurando AutoMLForecastingTrainingJob no SDK da 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 de grupo e tempo. Elas também permitem que você atribua pesos para aumentar a prioridade de minimizar a perda agregada em relação à perda individual. Por exemplo, se o peso for definido como 2.0, ele será ponderado duas vezes mais que a perda individual.

group_columns

Nomes de coluna na tabela de entrada de treinamento que identificam o agrupamento para o nível de hierarquia. As colunas precisam ser time_series_attribute_columns. Se a coluna de grupo não for definida, todas as séries temporais serão tratadas como parte do mesmo grupo e serão agregadas em todas as séries temporais.

group_total_weight

Peso da perda agregada do grupo em relação à perda individual. Desativado se estiver definido como 0.0 ou não estiver definido.

temporal_total_weight

Peso da perda agregada do tempo em relação à perda individual. Desativado se estiver definido como 0.0 ou não estiver definido.

group_temporal_total_weight

Ponderação do total de perda agregada (grupo x tempo) em relação à perda individual. Desativado se estiver definido como 0.0 ou não estiver definido. Se a coluna de grupo não for definida, todas as séries temporais serão tratadas como parte do mesmo grupo e serão agregadas em todas as séries temporais.

Estratégias para reduzir o viés

Comece com um tipo de agregação (grupo ou tempo) com uma ponderação de 10.0 e, em seguida, reduza pela metade ou o dobro do valor com base nos resultados.

Reduzir o viés geral

Em previsões detalhadas para a distribuição de estoque em lojas em que um erro ponderado absoluto (WAPE, na sigla em inglês) no nível do produto x da loja x data é usado como uma métrica de previsão, as previsões geralmente são subestimadas nos níveis agregados. Para compensar essa tendência geral, tente o seguinte:

  • Defina group_total_weight como 10.0.
  • Não defina a group_columns.
  • Não defina as outras ponderações.

Isso agrega todas as séries temporais e reduz o viés geral.

Reduzir o viés temporal

No planejamento de longo prazo, as previsões podem ser feitas no nível do produto x região x semana, mas as métricas relevantes podem ser medidas em relação aos totais sazonais. Para compensar esse viés temporal, tente o seguinte:

  • Defina temporal_total_weight como 10.0.
  • Não defina a group_columns.
  • Não defina as outras ponderações.

Isso se agrega a todas as datas no horizonte de uma série temporal e reduz o viés temporal.

Reduzir o viés de grupo

Para previsões com várias finalidades no processo de reabastecimento, previsões detalhadas no nível de produto x loja x data ou semana podem ser agregadas até produto x centro de distribuição x níveis de data para distribuição ou categoria do produto x níveis de data para os pedidos de materiais. Para isso, faça o seguinte:

  • Defina group_total_weight como 10.0.
  • Defina group_columns, por exemplo, ["region"] ou ["region", "category"]. Definir várias colunas usa o valor combinado para definir o grupo. Para melhores resultados, use colunas de grupo com 100 ou menos valores combinados distintos.
  • Não defina as outras ponderações.

Isso agrega todas as séries temporais no mesmo grupo para a mesma data e reduz o viés no nível do grupo.

Limites

  • Somente um nível de agregação de séries temporais é compatível. Se mais de uma coluna de agrupamento for especificada, como "produto, loja", a série temporal estará no mesmo grupo somente se compartilharem os mesmos valores de "produto" e "loja". de dados.
  • Recomendamos usar até cem grupos.

A seguir