Share via


Visão geral de métodos de previsão no AutoML

Este artigo se concentra nos métodos que o AutoML usa para preparar dados de série temporal e criar modelos de previsão. Encontre instruções e exemplos para treinamento de modelos de previsão no AutoML em nosso artigo configurar o AutoML para previsão de série temporal.

O AutoML usa vários métodos para prever valores de série temporal. Esses métodos podem ser atribuídos a duas categorias de maneira geral:

  1. Modelos de série temporal que usam valores históricos da quantidade da destino para fazer previsões no futuro.
  2. Modelos de regressão ou explicativos que usam variáveis preditoras para prever valores de destino.

Por exemplo, considere o problema de prever a demanda diária por uma determinada marca de suco de laranja em um supermercado. Vamos supor que $y_t$ represente a demanda por essa marca no dia $t$. Um modelo de série temporal prevê a demanda em $t+1$ usando alguma função da demanda histórica,

$y_{t+1} = f(y_t, y_{t-1}, \ldots, y_{t-s})$.

A função $f$ geralmente tem parâmetros que ajustamos usando a demanda observada no passado. A quantidade de histórico que $f$ usa para fazer previsões, $s$, também pode ser considerada um parâmetro do modelo.

O modelo de série temporal no exemplo de demanda por suco de laranja pode não ser preciso o suficiente, pois usa apenas informações sobre a demanda passada. Há muitos outros fatores que provavelmente influenciam a demanda futura, como preço, dia da semana e se é um feriado ou não. Considere um modelo de regressão que usa essas variáveis preditoras,

$y = g(\text{preço}, \text{dia da semana}, \text{feriado})$.

Novamente, $g$ geralmente tem um conjunto de parâmetros, incluindo aqueles que regem a regularização, que o AutoML ajusta usando valores passados da demanda e dos preditores. Omitimos $t$ da expressão para enfatizar que o modelo de regressão usa padrões de correlação entre variáveis definidas contemporaneamente para fazer previsões. Ou seja, para prever $y_{t+1}$ com base em $g$, devemos saber em qual dia da semana $t+1$ cai, se é um feriado, e o preço do suco de laranja no dia $t+1$. As duas primeiras informações são sempre facilmente encontradas consultando um calendário. O preço de varejo geralmente é definido com antecedência, então o preço do suco de laranja provavelmente também é conhecido um dia antes. No entanto, o preço pode não ser conhecido 10 dias no futuro! É importante entender que a utilidade dessa regressão será limitada pelo quão longe no futuro precisaremos de previsões, também conhecida como horizonte de previsão, e até que ponto sabemos os valores futuros dos preditores.

Importante

Os modelos de regressão de previsão do AutoML pressupõem que todos os recursos fornecidos pelo usuário sejam conhecidos no futuro, pelo menos até o horizonte de previsão.

Os modelos de regressão de previsão do AutoML também podem ser ampliados para usar valores históricos de destino e preditores. O resultado é um modelo híbrido com características de um modelo de série temporal e um modelo de regressão pura. Quantidades históricas são variáveis preditoras adicionais na regressão e nos referimos a elas como quantidades defasadas. A ordem da defasagem refere-se a quão distante no passado o valor é conhecido. Por exemplo, o valor atual de uma defasagem da ordem dois em relação ao destino para nosso exemplo de demanda de suco de laranja é a demanda de suco observada há dois dias.

Outra diferença notável entre os modelos de série temporal e os modelos de regressão está na maneira como eles geram previsões. Os modelos de série temporal geralmente são definidos por relações de recursão e produzem uma previsão por vez. Para prever muitos períodos no futuro, eles iteram até o horizonte de previsão, retroalimentando previsões anteriores no modelo para gerar a próxima previsão de um período adiante, conforme necessário. Por outro lado, os modelos de regressão são os chamados previsores diretos, que geram todas as previsões até o horizonte de uma só vez. Os previsores diretos podem ser preferíveis em relação aos recursivos porque os modelos recursivos acumulam o erro de previsão quando retroalimentam as previsões anteriores no modelo. Quando os recursos de defasagem são incluídos, o AutoML faz algumas modificações importantes nos dados de treinamento para que os modelos de regressão possam funcionar como previsões diretas. Confira o artigo recursos de defasagem para obter mais detalhes.

Modelos de previsão no AutoML

A tabela a seguir lista os modelos de previsão implementados no AutoML e a qual categoria eles pertencem:

Modelos do Time Series Modelos de regressão
Naive, Seasonal Naive, Average, Seasonal Average, ARIMA(X), Exponential Smoothing SGD linear, LARS LASSO, Rede elástica, Prophet, Vizinhos mais próximo K, Árvore de decisão, Floresta aleatória, Árvores extremamente aleatórias, Árvores reforçadas com gradiente, LightGBM, XGBoost, TCNForecaster

Os modelos em cada categoria são listados aproximadamente na ordem da complexidade dos padrões que eles podem incorporar, também conhecidos como a capacidade do modelo. Um modelo Naive, que simplesmente prevê o último valor observado, tem baixa capacidade, enquanto a TCNFecaster (rede convolucional temporal), uma rede neural profunda com potencialmente milhões de parâmetros ajustáveis, tem alta capacidade.

É importante ressaltar que o AutoML também inclui modelos ensemble que criam combinações ponderadas dos modelos de melhor desempenho para aprimorar ainda mais a precisão. Para previsão, usamos um soft voting ensemble em que a composição e os pesos são encontrados por meio do Algoritmo de Seleção Ensemble do Caruana.

Observação

Há dois alertas importantes para ensembles de modelos de previsão:

  1. No momento, a TCN não pode ser incluída em ensembles.
  2. Por padrão, o AutoML desabilita outro método ensemble, o stack ensemble, que está incluído em tarefas de regressão e classificação padrão no AutoML. O stack ensemble ajusta um metamodelo nas melhores previsões de modelo para encontrar pesos de ensemble. Descobrimos em parâmetros de comparação internos que essa estratégia tem uma tendência maior de sobreajustar dados de série temporal. Isso pode resultar em generalização incorreta e, portanto, o stack ensemble fica desabilitado por padrão. No entanto, se desejado, ele pode ser habilitado na configuração do AutoML.

Como o AutoML usa seus dados

O AutoML aceita dados de série temporal no formato tabular e "largo"; ou seja, cada variável deve ter sua própria coluna correspondente. O AutoML requer que uma das colunas seja o eixo de tempo para o problema de previsão. Esta coluna deve ser analisável em um tipo datetime. O conjunto de dados de série temporal mais simples consiste em uma coluna de tempo e uma coluna de destino numérica. O destino é a variável que se pretende prever no futuro. Veja a seguir um exemplo do formato neste caso simples:

timestamp quantidade
2012-01-01 100
2012-01-02 97
2012-01-03 106
... ...
2013-12-31 347

Em casos mais complexos, os dados podem conter outras colunas alinhadas com o índice de tempo.

timestamp SKU price anunciado quantidade
2012-01-01 JUICE1 3,5 0 100
2012-01-01 BREAD3 5.76 0 47
2012-01-02 JUICE1 3,5 0 97
2012-01-02 BREAD3 5.5 1 68
... ... ... ... ...
2013-12-31 JUICE1 3,75 0 347
2013-12-31 BREAD3 5.7 0 94

Neste exemplo, há um SKU, um preço de varejo e um sinalizador que indica se um item foi anunciado, além do carimbo de data/hora e da quantidade de destino. Evidentemente, há duas séries neste conjunto de dados: uma para o SKU JUICE1 e outra para o SKU BREAD3; a coluna SKU é uma coluna de ID de série temporal, pois o agrupamento por ela resultará em dois grupos que contêm uma única série cada. Antes fazer a varredura com os modelos, o AutoML faz uma validação básica da configuração de entrada e dos dados e adiciona recursos projetados.

Requisitos de comprimento de dados

Para treinar um modelo de previsão, você deve ter uma quantidade suficiente de dados históricos. Essa quantidade limite varia de acordo com a configuração do treinamento. Se você forneceu dados de validação, o número mínimo de observações de treinamento necessárias por série temporal será fornecido por,

$T_{\text{user validation}} = H + \text{max}(l_{\text{max}}, s_{\text{window}}) + 1$,

onde $H$ é o horizonte da previsão, $l_{\text{max}}$ é a ordem máxima de defasagem e $s_{\text{window}}$ é o tamanho da janela para recursos de agregação contínua. Se você estiver usando a validação cruzada, o número mínimo de observações será,

$T_{\text{CV}} = 2H + (n_{\text{CV}} - 1) n_{\text{step}} + \text{max}(l_{\text{max}}, s_{\text{window}}) + 1$,

onde $n_{\text{CV}}$ é o número de dobras de validação cruzada e $n_{\text{step}}$ é o tamanho da etapa CV ou deslocamento entre as dobras CV. A lógica básica por trás dessas fórmulas é que você sempre deve ter pelo menos um horizonte de observações de treinamento para cada série temporal, incluindo alguns preenchimentos para defasagens e divisões de validação cruzada. Confira a seleção do modelo de previsão para obter mais informações sobre a validação cruzada para previsão.

Tratamento de dados ausentes

Os modelos de série temporal do AutoML exigem observações espaçadas regularmente no tempo. Este espaçamento regular inclui casos como observações mensais ou anuais em que o número de dias entre observações pode variar. Antes da modelagem, o AutoML deve garantir que nenhum valor esteja faltando e que as observações sejam regulares. Portanto, há dois casos de dados ausentes:

  • Um valor está ausente em alguma célula nos dados tabulares
  • Uma linha está ausente, o que corresponde a uma observação esperada, dada a frequência da série temporal

No primeiro caso, o AutoML atribui valores ausentes usando técnicas comuns e configuráveis.

Um exemplo de uma linha esperada ausente é mostrado na tabela a seguir:

timestamp quantidade
2012-01-01 100
2012-01-03 106
2012-01-04 103
... ...
2013-12-31 347

Esta série supostamente tem uma frequência diária, mas não há observação para 2 de janeiro de 2012. Nesse caso, o AutoML tentará preencher os dados adicionando uma nova linha para 2 de janeiro de 2012. O novo valor para a coluna quantity e para outras colunas nos dados serão atribuídos como outros valores ausentes. Claramente, o AutoML deve saber a frequência da série para preencher lacunas de observação como esta. O AutoML detecta automaticamente essa frequência ou o usuário pode fornecê-la na configuração.

O método de atribuição para preencher valores ausentes pode ser configurado na entrada. Os métodos padrão estão listados na seguinte tabela:

Tipo de coluna Método de atribuição padrão
Destino Preenchimento avançado (a última observação é propagada adiante)
Recurso numérico Valor mediano

Os valores ausentes para recursos categóricos são tratados durante a codificação numérica, incluindo uma categoria adicional correspondente a um valor ausente. A atribuição é implícita nesse caso.

Engenharia de recursos automatizada

Geralmente, o AutoML adiciona novas colunas aos dados do usuário para aumentar a precisão da modelagem. O recurso projetado pode incluir o seguinte:

Grupo de recursos Padrão/Opcional
Recursos de calendário derivados do índice de tempo (por exemplo, dia da semana) Padrão
Recursos categóricos derivados de IDs da série temporal Padrão
Codificação de tipos categóricos em tipos numéricos Padrão
Recursos de indicador para feriados associados a determinado país ou região Opcional
Defasagens da quantidade de destino Opcional
Defasagens de colunas de recursos Opcional
Agregações de janela móvel (por exemplo, média móvel) da quantidade de destino Opcional
Decomposição sazonal (STL) Opcional

É possível configurar os recursos do SDK do AutoML por meio da classe ForecastingJob ou da interface da Web do Estúdio do Azure Machine Learning.

Detecção e processamento de séries temporais não estacionárias

Uma série temporal onde a média e a variância mudam ao longo do tempo é chamada de não estacionária. Por exemplo, as séries temporais que exibem tendências estocásticas são não estacionárias por natureza. Para visualizar isso, a imagem a seguir plota uma série que geralmente é uma tendência ascendente. Agora, calcule e compare os valores médios da primeira e da segunda metade da série. Elas são a mesma coisa? Aqui, a média da série na primeira metade do gráfico é significativamente menor do que na segunda metade. O fato de que a média da série depende do intervalo de tempo que está sendo observado é um exemplo dos momentos de variação de tempo. Aqui, a média de uma série é o primeiro momento.

Diagram showing retail sales for a non-stationary time series.

Em seguida, vamos examinar a imagem a seguir, que plota a série original em primeiras diferenças, $\Delta y_{t} = y_t - y_{t-1}$. A média da série é aproximadamente constante ao longo do intervalo de tempo, enquanto a variância parece variar. Portanto, este é um exemplo de uma série temporal estacionária de primeira ordem.

Diagram showing retail sales for a weakly stationary time series.

Os modelos de regressão do AutoML não podem lidar inerentemente com tendências estocásticas ou outros problemas conhecidos associados a séries temporais não estacionárias. Como resultado, a precisão da previsão fora de amostra pode ser inadequada se essas tendências estiverem presentes.

O AutoML analisa automaticamente o conjunto de dados de série temporal para determinar a estacionariedade. Quando séries temporais não estacionárias são detectadas, o AutoML aplica automaticamente uma transformação de diferenciação para atenuar o impacto do comportamento não estacionário.

Varredura do modelo

Depois que os dados foram preparados com o tratamento dos dados ausentes e a engenharia de recursos, o AutoML fará a varredura de um conjunto de modelos e hiperparâmetros usando um serviço de recomendação de modelo. Os modelos são classificados com base em métricas de validação ou validação cruzada e, opcionalmente, os melhores modelos podem ser usados em um modelo ensemble. O melhor modelo, ou qualquer um dos modelos treinados, pode ser inspecionado, baixado ou implantado para produzir previsões conforme necessário. Confira o artigo de seleção e varredura de modelo para obter mais detalhes.

Agrupamento de modelos

Quando um conjunto de dados contém mais de uma série temporal, como no exemplo de dados fornecido, há várias maneiras de modelar esses dados. Por exemplo, podemos simplesmente agrupar pelas colunas de ID da série temporal e treinar modelos independentes para cada série. Uma abordagem mais geral é particionar os dados em grupos que podem conter séries múltiplas e provavelmente relacionadas e treinar um modelo por grupo. Por padrão, a previsão do AutoML usa uma abordagem mista para agrupamento de modelos. Os modelos de série temporal, além do ARIMAX e Prophet, atribuem uma série a um grupo e outros modelos de regressão atribuem todas as séries a um único grupo. A tabela a seguir resume os agrupamentos de modelos em duas categorias, um para um e muitos para um:

Cada série no próprio grupo (1:1) Todas as séries em grupo único (N:1)
Naive, Seasonal Naive, Average, Seasonal Average, Exponential Smoothing, ARIMA, ARIMAX, Prophet SGD linear, LARS LASSO, Rede elástica, Vizinhos mais próximo K, Árvore de decisão, Floresta aleatória, Árvores extremamente aleatórias, Árvores reforçadas com gradiente, LightGBM, XGBoost, TCNForecaster

Agrupamentos de modelos mais gerais são possíveis por meio da solução Many-Models do AutoML; confira o nosso Many-Models – notebook do ML automatizado.

Próximas etapas