Visão geral de métodos de previsão no AutoML
Este artigo descreve os métodos usados pelo AutoML no Azure Machine Learning para preparar dados de séries temporais e criar modelos de previsão. Para obter instruções e exemplos sobre como treinar modelos de previsão no AutoML, confira Configurar o AutoML para a previsão de séries temporais.
Métodos de previsão no AutoML
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:
- Modelos de séries temporais que usam valores históricos da quantidade pretendida para fazer previsões para o futuro
- Modelos de regressão, ou explicativos, que usam variáveis preditoras para prever valores da quantidade pretendida
Imagine que você precisa prever a demanda diária de uma determinada marca de suco de laranja em um supermercado. Para a expressão, deixe que $y_t$ represente a demanda por esta marca no dia $t$. Um modelo de série temporal prevê a demanda em $t+1$ usando alguma função de demanda histórica com a seguinte expressão:
$y_{t+1} = f(y_t, y_{t-1}, \ldots, y_{t-s})$
Em geral, a função $f$ tem parâmetros que você ajusta 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 de suco de laranja pode não ser preciso o suficiente porque usa apenas informações sobre a demanda anterior. Há muitos outros fatores que podem influenciar a demanda futura, como preço, dia da semana e períodos de feriados. Considere um modelo de regressão que usa essas variáveis preditoras com a seguinte expressão:
$y = g(\text{price}, \text{day of week}, \text{holiday})$
Lembre-se de que a função $g$ geralmente tem um conjunto de parâmetros, incluindo valores que controlam a regularização, que são ajustados pelo AutoML com o uso de valores anteriores da demanda e dos preditores. Você omite $t$ da expressão para enfatizar que o modelo de regressão usa padrões correlacionais entre variáveis definidas contemporaneamente para fazer previsões. Para prever $y_{t+1}$ a partir de $g$, você precisa saber qual dia da semana corresponde a $t+1$, se o dia é feriado e qual é o preço do suco de laranja no dia $t+1$. As duas primeiras informações são fáceis de identificar usando um calendário. O preço de varejo geralmente é definido com antecedência, portanto o preço do suco de laranja provavelmente também é conhecido com um dia de antecedência. No entanto, o preço pode não ser conhecido daqui a 10 dias. É importante entender que a utilidade dessa regressão é limitada pela distância no futuro em que você precisa fazer previsões, algo também chamado de horizonte de previsão, e até que ponto você conhece 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. As quantidades históricas são variáveis preditoras extras na regressão, denominadas quantidades defasadas. A ordem da defasagem refere-se a quão distante no passado o valor é conhecido. Por exemplo, o valor atual de um atraso de duas ordens de magnitude da quantidade pretendida para o exemplo de demanda de suco de laranja é a demanda de suco observada de dois dias atrás.
Outra diferença notável entre os modelos de séries temporais e os modelos de regressão é como eles geram previsões. Em geral, as relações de recursão definem modelos de séries temporais que produzem previsões uma 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. Em contraste, os modelos de regressão são considerados previsores diretos e geram todas as previsões até o horizonte em uma única tentativa. Os métodos de previsão direta podem ser preferíveis aos métodos recursivos porque os modelos recursivos agravam o erro de previsão quando alimentam previsões anteriores de volta ao modelo. Quando recursos de atraso 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 previsores diretos. Para saber mais, confira Recursos de atraso para previsão de séries temporais no AutoML.
Modelos de previsão no AutoML
O AutoML no Machine Learning implementa os modelos de previsão a seguir. Para cada categoria, os modelos são listados aproximadamente em ordem de complexidade dos padrões que podem incorporar, algo também conhecido como capacidade do modelo. Um modelo Naive, que simplesmente prevê o último valor observado, tem baixa capacidade, enquanto a Rede Convolucional Temporal (TCNForecaster), uma DNN (rede neural profunda) com potencialmente milhões de parâmetros ajustáveis, tem alta capacidade.
Modelos de série temporal | 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 |
O AutoML também inclui modelos de conjunto que criam combinações ponderadas dos modelos de melhor desempenho para melhorar ainda mais a precisão. Para previsão, usamos um conjunto de soft voting em que a composição e os pesos são encontrados por meio do algoritmo de seleção Caruana Ensemble.
Observação
Há dois alertas importantes para ensembles de modelos de previsão:
- No momento, a TCN não pode ser incluída em ensembles.
- Por padrão, o AutoML desabilita o método de conjunto de pilhas, que está incluído nas tarefas padrão de regressão e classificação no AutoML. O stack ensemble ajusta um metamodelo nas melhores previsões de modelo para encontrar pesos de ensemble. Durante o estabelecimento dos parâmetros de comparação internos, essa estratégia tem uma tendência maior de sobreajustar os dados de séries temporais. Esse resultado pode resultar em uma generalização ruim, portanto o conjunto de pilhas é desabilitado por padrão. É possível habilitar o conjunto na configuração do AutoML, conforme necessário.
Como o AutoML usa seus dados
O AutoML aceita dados de séries temporais em formato tabular "amplo". Cada variável deve ter a própria coluna correspondente. O AutoML exige que uma coluna 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éries temporais mais simples consiste em uma coluna de tempo e em uma coluna de destino numérica. O destino é a variável que você pretende prever para o futuro. A seguinte tabela mostra valores de exemplo para este formato:
timestamp | quantidade |
---|---|
2012-01-01 | 100 |
2012-01-02 | 97 |
2012-01-03 | 106 |
... | ... |
2013-12-31 | 347 |
Em casos mais complexos, o conjunto de dados pode 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 |
O segundo exemplo inclui um SKU, um preço de varejo e um sinalizador para indicar se um item foi anunciado, além do registro de data e hora e da quantidade pretendida. O segundo conjunto de dados revela duas séries: uma para o SKU JUICE1 e outra para o SKU BREAD3. A coluna SKU é uma coluna de ID de série temporal porque o agrupamento por esses valores de coluna produz dois grupos, cada um com uma única série. Antes da varredura do modelo, o AutoML faz a validação básica da configuração e dos dados de entrada e adiciona recursos de engenharia.
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ê fornecer dados de validação, o número mínimo de observações de treinamento necessárias por série temporal será expresso da seguinte forma:
$T_{\text{user validation}} = H + \text{max}(l_{\text{max}}, s_{\text{window}}) + 1$
Nesta expressão, $H$ é o horizonte de previsão, $l_{\text{max}}$ é a ordem de atraso máxima e $s_{\text{window}}$ é o tamanho da janela para recursos de agregação contínua. Se você usar validação cruzada, o número mínimo de observações será expresso da seguinte forma:
$T_{\text{CV}} = 2H + (n_{\text{CV}} - 1) n_{\text{step}} + \text{max}(l_{\text{max}}, s_{\text{window}}) + 1$
Nessa versão, $n_{\text{CV}}$ é o número de dobras de validação cruzada e $n_{\text{step}}$ é o tamanho da etapa do CV ou do deslocamento entre as dobras do 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. Para saber mais sobre a validação cruzada para previsão, confira Seleção de modelos no AutoML.
Tratamento de dados ausentes
Os modelos de séries temporais no AutoML exigem observações regularmente espaçadas no tempo, o que inclui casos como observações mensais ou anuais, em que o número de dias entre as observações pode variar. Antes de iniciar o processo de modelagem, o AutoML deve garantir que não haja valores de série ausentes e que as observações sejam regulares. Como resultado, há dois casos de dados ausentes:
- Um valor está faltando para alguma célula nos dados tabulares.
- Falta uma linha, que corresponde a uma observação esperada dada a frequência da série temporal.
No primeiro caso, o AutoML imputa valores ausentes usando técnicas configuráveis comuns. Esta tabela mostra um exemplo de uma linha esperada que está faltando:
timestamp | quantidade |
---|---|
2012-01-01 | 100 |
2012-01-03 | 106 |
2012-01-04 | 103 |
... | ... |
2013-12-31 | 347 |
Esta série aparentemente tem uma frequência diária, mas não há observação para 2 de janeiro de 2012 (02/01/2012). Nesse caso, o AutoML tenta preencher os dados adicionando uma nova linha para o valor ausente. Em seguida, o novo valor para a coluna quantity
e quaisquer outras colunas nos dados são imputados como outros valores ausentes. Para realizar esse processo, o AutoML deve reconhecer a frequência da série para poder preencher lacunas de observação, conforme demonstrado neste caso. O AutoML detecta automaticamente essa frequência ou o usuário pode fornecê-la na configuração.
O método de imputação para fornecer valores ausentes pode ser configurado na entrada. Esta tabela lista os métodos padrão:
Tipo de coluna | Método de imputação padrão |
---|---|
Destino | Preenchimento avançado (a última observação é propagada adiante) |
Característica numérica | Valor mediano |
Valores ausentes para recursos categóricos são tratados durante a codificação numérica incluindo outra categoria que corresponde 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. Os recursos de engenharia podem incluir itens padrão ou opcionais.
Recursos de engenharia padrão:
- Recursos de calendário derivados do índice de tempo, como dia da semana
- Recursos categóricos derivados de IDs da série temporal
- Codificação de tipos categóricos em tipos numéricos
Recursos de engenharia opcionais:
- Recursos do indicador para feriados associados a uma determinada região
- Defasagens da quantidade de destino
- Defasagens de colunas de recursos
- Agregações de janela móvel, como média móvel, da quantidade pretendida
- Decomposição sazonal ((decomposição sazonal e de tendências usando Loess (STL))
Você pode configurar a definição de recursos do SDK do AutoML usando a classe ForecastingJob ou a 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 em que a média e a variância mudam ao longo do tempo é chamada de não estacionária. Séries temporais que exibem tendências aleatórias são não estacionárias por natureza.
A imagem a seguir apresenta uma visualização para este cenário. O gráfico traça uma série que geralmente apresenta tendência ascendente. Se você calcular e comparar os valores médios da primeira e da segunda metades da série, poderá identificar as diferenças. A média da série na primeira metade do gráfico é menor que a média na segunda metade. O fato de a média da série depender do intervalo de tempo em análise é um exemplo dos momentos que variam com o tempo. Neste cenário, a média de uma série é o primeiro momento.
A próxima imagem mostra um gráfico que traça 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. Este cenário demonstra um exemplo de uma série temporal estacionária de primeira ordem:
Os modelos de regressão do AutoML não conseguem lidar inerentemente com tendências aleatórias ou outros problemas conhecidos associados a séries temporais não estacionárias. Como resultado, a precisão da previsão fora da amostra pode ser baixa quando essas tendências estão presentes.
O AutoML analisa automaticamente um conjunto de dados de séries temporais para determinar seu nível ou a estacionariedade. Quando séries temporais não estacionárias são detectadas, o AutoML aplica uma transformação diferencial automaticamente para minimizar os efeitos do comportamento não estacionário.
Varredura do modelo
Depois que os dados são preparados com o processamento de dados ausentes e a engenharia de recursos, o AutoML varre 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 principais modelos podem ser usados em um modelo de conjunto. O melhor modelo, ou qualquer um dos modelos treinados, pode ser inspecionado, baixado ou implantado para produzir previsões conforme necessário. Para saber mais, confira Varredura e seleção de modelos para previsões no AutoML.
Agrupamento de modelos
Quando um conjunto de dados contém mais de uma série temporal, há diversas maneiras de modelar os dados. Você pode agrupar os dados nas colunas de ID de séries temporais e treinar modelos independentes para cada série. Uma abordagem mais geral é particionar os dados em grupos que podem conter muitas séries (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.
Confira como cada tipo de modelo usa grupos:
Cada série em um grupo separado (1:1): Naive, Seasonal Naive, Average, Seasonal Average, Exponential Smoothing, ARIMA, ARIMAX e Prophet
Todas as séries do mesmo grupo (N:1): Linear SGD, LARS LASSO, Elastic Net, K Nearest Neighbors, Decision Tree, Random Forest, Extremely Randomized Trees, Gradient Boosted Trees, LightGBM, XGBoost e TCNForecaster
Agrupamentos de modelos mais gerais são possíveis usando a solução de muitos modelos no AutoML. Para saber mais, confira Muitos modelos – Notebook de ML automatizado.