Previsão Probabilística com Previsão Conformal e NeuralProphet.

Jan 21 2023
Em meus artigos anteriores, analisamos o NeuralProphet e avaliamos se ele oferece melhorias de desempenho em relação ao Facebook Prophet (TLDR; sim) e se geralmente oferece bom desempenho de previsão de ponto (TLDR; sim). O NeuralProphet é um modelo muito melhor para previsão de pontos, pois abordou o principal problema de seu predecessor, o Facebook Prophet — a incapacidade do Facebook Prophet de modelar dependências locais usando termos autorregressivos (AR).

Em meus artigos anteriores, analisamos o NeuralProphet e avaliamos se ele oferece melhorias de desempenho em relação ao Facebook Prophet (TLDR; sim) e se geralmente oferece bom desempenho de previsão de ponto (TLDR; sim).

O NeuralProphet é um modelo muito melhor para previsão de pontos, pois abordou o principal problema de seu predecessor, o Facebook Prophet — a incapacidade do Facebook Prophet de modelar dependências locais usando termos autorregressivos (AR). O NeuralProphet aproveita efetivamente a capacidade de modelar padrões locais, o que é essencial para prever o futuro a curto prazo.

A equipe principal de desenvolvimento do NeuralProphet lançou recentemente uma empolgante atualização de pacote. NeuralProphet agora inclui inovação de ponta em previsão probabilística, incluindo previsão probabilística de séries temporais usando Previsão Conformal .

A equipe principal de desenvolvimento do NeuralPropher divulgou esta declaração.

“Nosso objetivo [desenvolvedores principais do NeuralProphet] é acelerar a P&D da previsão conforme no espaço de séries temporais em qualquer domínio usando o NeuralProphet como a ferramenta de experimentação rápida e prototipagem. predição. Convidamos nossos amigos da comunidade de previsão conformal a colaborar e desenvolver conosco para tornar as mais recentes técnicas de previsão conforme mais acessíveis aos usuários nas configurações de séries temporais.”

Se você não estiver familiarizado com a Previsão Conformal, a Previsão Conformal Awesome pode ajudá-lo a começar neste campo muito popular e em rápido crescimento muito rapidamente. A previsão conforme é a melhor estrutura de quantificação de incerteza para o século XXI que permite a estimativa de incerteza e converte qualquer modelo estatístico, de máquina ou de aprendizado profundo em um modelo de previsão probabilístico.

Embora a previsão conforme tenha sido originalmente projetada expressamente para dados IID, a recente pesquisa e inovação em previsão conforme a estendeu para séries temporais e previsões. Pela primeira vez na história de séries temporais e previsões, a Previsão Conformal desbloqueou previsões probabilísticas robustas que podem produzir Intervalos de Previsão com cobertura de previsão especificada em qualquer nível de confiança selecionado.

Antes da previsão conforme ser estendida para séries temporais, a maioria dos modelos de previsão não conseguia produzir intervalos de previsão corretos. A maioria dos modelos de previsão existentes não pode produzir Intervalos de Previsão ou produz Intervalos de Previsão que são especificados incorretamente em termos de cobertura necessária correspondente aos níveis de confiança especificados.

A pesquisa mostrou que muitos modelos de previsão (incluindo modelos estatísticos, de máquina e de aprendizado profundo de todos os tipos) falham em estimar a incerteza adequadamente.

No artigo do professor da Darden Business School Yael Grushka-Cockayne, “ The M4 Forecasting Competition Prediction Intervals” , os pesquisadores mostraram que as submissões de competição de previsão M4 falharam em estimar a incerteza corretamente com intervalos de previsão geralmente não cobrindo conjuntos de teste com uma probabilidade especificada . A falta de cobertura correta pelos modelos de previsão resulta em tomadas de decisão incorretas, como falta/excesso de estoque no estoque, resultando em vendas perdidas, fidelidade prejudicada do cliente e baixas dispendiosas de estoque lento e obsoleto.

A previsão conforme resolve esse problema e, em um dos meus artigos anteriores, “ Previsão de previsão conforme com MAPIE ”, mostrei como a previsão conforme pode produzir intervalos de previsão confiáveis ​​usando um modelo chamado EnbPI ('Intervalos de previsão em lote Ensemble') que oferece alta qualidade previsões probabilísticas usando a funcionalidade amigável compatível com Scikit-learn implementada pelo MAPIE.

A equipe principal de desenvolvimento do NeuralProphet também tem trabalhado na implementação da Previsão Conformal, que foi recentemente integrada ao NeuralProphet. O lançamento recente do NeuralProphet inclui várias opções para previsão probabilística usando Previsão Conformal, incluindo a implementação de um dos modelos mais populares de Regressão Quantil Conformalizada (CQR). O CQR ajusta os intervalos preditivos dinamicamente de acordo com a incerteza local nas previsões.

Regressão Quantílica Conformalizada (CQR)

O CQR funciona sempre e sempre, e o faz por padrão devido às garantias de validade matemática incorporadas conferidas pelo uso de qualquer modelo na Previsão Conformal. Quando o CQR (ou qualquer outro método de previsão conforme em geral) produz um intervalo de previsão de 95%, pode-se ter certeza de que é 95% por padrão (sem ifs e sem mas como em outros métodos), independentemente da distribuição de dados, o tamanho da amostra e o regressor subjacente, seja um modelo estatístico, de aprendizado de máquina ou de aprendizado profundo.

Neste artigo, damos continuidade ao meu artigo 'Benchmarking NeuralProphet. Parte II — Explorando o conjunto de dados de eletricidade, onde produzimos previsões pontuais para séries temporais de eletricidade usando a funcionalidade linear e não linear (AR-Net) do NeuralProphet.

Aponte a previsão do NeuralProphet nos dados de teste

Em vez de treinar o NeuralProphet para produzir previsões pontuais, agora o treinamos para produzir quantis de previsão de modelo.

# specify quantiles 
quantile_lo, quantile_hi = 0.05, 0.95
quantiles = [quantile_lo, quantile_hi]
n_lags = 7

m_quantile_regression = NeuralProphet(
    growth='off',
    yearly_seasonality=False,
    weekly_seasonality=False,
    daily_seasonality=False,
    n_lags=n_lags,
    learning_rate=0.01,
    quantiles = quantiles
)

%%time
random_seed = 0

# Concatenate train_df and val_df as full training set
set_random_seed(random_seed)
metrics_quantile = m_quantile_regression.fit(pd.concat([train_df, val_df]),
   freq="D")

Previsões de regressão quantílica no conjunto de dados de eletricidade

Já terminamos? Não exatamente — lembre-se, a regressão quantílica clássica não produz intervalos de previsão calibrados. Só porque especificamos os quantis de 5% e 95% como uma lista de desejos, não significa que 90% dos pontos de teste estarão dentro desse intervalo de previsão.

É aqui que entra a mágica da previsão conforme — podemos corrigir intervalos de previsão produzidos por qualquer modelo, inclusive pela clássica regressão quantílica que usamos até agora para treinar o NeuralProphet.

NeuralProphet com regressão quantílica

Agora concluímos a última etapa — “ conformalizar” nosso modelo de previsão probabilística.

Tudo o que precisamos fazer é ligar. método conformal_predict() em nosso modelo de regressão quantílica, usamos um conjunto de calibração que foi reservado. O objetivo desta etapa é corrigir os Intervalos de Previsão criados pela regressão quantílica para que eles possam fornecer a cobertura declarada de acordo com o nível de confiança de 90% selecionado.

method = "naive"
alpha = 0.1
plotting_backend = "matplotlib"  # "plotly", None

naive_forecast_conformal_test_df = m_quantile_regression.conformal_predict
  (test_df,calibration_df=cal_df,alpha=alpha,method=method,plotting_backend=plotting_backend,)

Gráfico mostrando a meia largura do intervalo de previsão, dependendo do nível de confiança

Agora podemos traçar as previsões criadas usando o método 'ingênuo' (o método ingênuo calcula os resíduos no conjunto de calibração e, em seguida, usa o nível de confiança para selecionar o quantil apropriado para corrigir os intervalos de previsão produzidos pela regressão quantílica.

Correção dos intervalos de regressão quantílica usando o método ingênuo

Como podemos ver, os Intervalos de Previsão originais produzidos pela regressão quantílica eram excessivamente otimistas e o método de Previsão Conformal ingênuo os corrigiu.

Em seguida, usamos o método CQR mais poderoso.


method = "cqr"alpha = 0.1plotting_backend = "matplotlib"  # "plotly", None

cqr_forecast_conformal_test_df = m_quantile_regression.conformal_predict(
    test_df,
    calibration_df=cal_df,
    alpha=alpha,
    method=method,
    plotting_backend=plotting_backend,
)

Previsão conforme com o método CRQ

Referências:

  1. “Comparando o Profeta Neural. Parte I — Profeta Neural vs Profeta do Facebook.
  2. “Comparando o Profeta Neural. Parte II — explorando o conjunto de dados de eletricidade
  3. “Os Intervalos de Previsão da Competição de Previsão M4”
  4. Como prever quantis de uma forma mais inteligente (ou 'Bye-bye regressão quantílica, olá, regressão quantílica conforme) .
  5. https://pypi.org/project/neuralprophet/
  6. Tutorial de previsão conforme usando carga hospitalar de energia