Atualizada por Último sobre 12 de abril de 2020
suavização Exponencial é uma série de tempo, método de previsão para univariada de dados que pode ser estendido para oferecer suporte a dados com uma tendência sistemática ou componente sazonal.
é um poderoso método de previsão que pode ser usado como uma alternativa à popular família de métodos Arima Box-Jenkins.
neste tutorial, irá descobrir o método de suavização exponencial para a previsão de séries temporais univariadas.,
Após completar este tutorial, você saberá:
- O que é a suavização exponencial e como é diferente de outros métodos de previsão.
- os três principais tipos de suavização exponencial e como configurá-los.
- Como implementar a suavização exponencial em Python.
kick-start o seu projecto com a minha nova previsão de séries cronológicas de livros em Python, incluindo tutoriais passo-a-passo e os ficheiros de código-fonte em Python para todos os exemplos.vamos começar.,
a Gentle Introduction to Exponential Smoothing for Time Series for for for Forecasting in Python
Photo by Wolfgang Staudt, some rights reserved.
Visão Geral do Tutorial
Este tutorial está dividido em 4 partes; elas são:
- O que é a suavização exponencial?
- Tipos de Suavização Exponencial
- Como Configurar Suavização Exponencial
- Suavização Exponencial em Python
o Que É de Suavização Exponencial?
suavização exponencial é um método de previsão de séries temporais para dados univariados.,
Métodos de séries cronológicas como a família de métodos Box-Jenkins ARIMA desenvolvem um modelo onde a previsão é uma soma linear ponderada de observações passadas recentes ou lags.
os métodos de previsão exponencial de nivelamento são semelhantes em que uma previsão é uma soma ponderada de observações passadas, mas o modelo explicitamente usa um peso exponencialmente decrescente para observações passadas.especificamente, as observações anteriores são ponderadas com uma razão geometricamente decrescente.,
previsões produzidas usando métodos de suavização exponencial são médias ponderadas de observações passadas, com os pesos a decair exponencialmente à medida que as observações envelhecem. Por outras palavras, quanto mais recente for a observação, maior será o peso associado.
— Page 171, Forecasting: principles and practice, 2013.
métodos de suavização exponencial podem ser considerados como pares e uma alternativa à popular classe de métodos ARIMA Box-Jenkins para previsão de séries temporais.,
coletivamente, os métodos são por vezes referidos como modelos ETS, referindo-se à modelagem explícita de erro, tendência e Sazonalidade.
tipos de suavização exponencial
Existem três tipos principais de métodos de previsão de séries cronológicas de suavização exponencial.
um método simples que assume nenhuma estrutura sistemática, uma extensão que lida explicitamente com tendências, e a abordagem mais avançada que adiciona suporte à sazonalidade.,
Smoothing exponencial único
Smoothing exponencial único, SES para curto, também chamado de Smoothing exponencial simples, é um método de previsão de séries temporais para dados univariados sem uma tendência ou sazonalidade.
requer um único parâmetro, chamado alfa (a), também chamado de fator de suavização ou coeficiente de suavização.
Este parâmetro controla a taxa a que a influência das observações em etapas anteriores decai exponencialmente. Alpha é muitas vezes definido para um valor entre 0 e 1., Grandes valores significam que o modelo presta atenção principalmente às observações passadas mais recentes, enquanto valores menores significam que mais da história é tida em conta ao fazer uma previsão.
Um valor próximo de 1 indica que a aprendizagem rápida (que é apenas a mais recente valores influenciam as previsões), enquanto um valor próximo de 0 indica lento de aprendizagem (observações passadas têm uma grande influência nas previsões).
— Page 89, Practical Time Series Forecasting with R, 2016.,
Hiperparametros:
- Alfa: Factor de nivelamento para o nível.
suavização Dupla exponencial
suavização Dupla exponencial é uma extensão à suavização exponencial que adiciona explicitamente suporte para as tendências na série cronológica univariada.
além do parâmetro alfa para controlar o Fator de alisamento para o nível, um fator adicional de alisamento é adicionado para controlar o decaimento da influência da mudança de tendência chamada beta (b).,
O método suporta tendências que mudam de maneiras diferentes: um aditivo e multiplicativo, dependendo se a tendência é linear ou exponencial, respectivamente.
alisamento Duplo exponencial com uma tendência aditiva é classicamente referido como modelo de tendência linear de Holt, nomeado para o desenvolvedor do método Charles Holt.
- tendência aditiva: suavização Dupla exponencial com uma tendência linear.
- tendência multiplicativa: suavização exponencial dupla com uma tendência exponencial.,
para previsões de longo alcance (multi-etapas), a tendência pode continuar irrealisticamente. Como tal, pode ser útil para atenuar a tendência ao longo do tempo.
amortecimento significa reduzir a dimensão da tendência no futuro para uma linha recta (sem tendência).
as previsões geradas pelo método linear de Holt mostram uma tendência constante (aumentando ou diminuindo) indecentemente para o futuro., Ainda mais extremas são as previsões geradas pelo método de tendência exponencial motivado por esta observação introduziu um parâmetro que “amortece” a tendência para uma linha plana algum tempo no futuro.
— Page 183, Forecasting: principles and practice, 2013.
Como com a modelagem da tendência em si, podemos usar os mesmos princípios, em umedecer a tendência, especificamente additively ou multiplicatively para um linear ou exponencial efeito amortecimento. Utiliza-se um coeficiente de amortecimento Phi (p) para controlar a velocidade de amortecimento.,
- amortecimento aditivo: amortecer uma tendência linearmente.amortecimento multiplicativo: amortecer exponencialmente a tendência.
Hiperparametros:
- Alfa: Factor de nivelamento para o nível.Beta: Factor de suavização da tendência.tipo de tendência: aditivo ou multiplicativo.tipo amortecedor: aditivo ou multiplicativo.coeficiente de amortecimento.
suavização exponencial tripla
suavização exponencial tripla é uma extensão da suavização exponencial que adiciona explicitamente suporte para a sazonalidade à série cronológica univariada.,este método é algumas vezes chamado de alisamento exponencial de Holt-Winters, nomeado por dois contribuintes para o método: Charles Holt e Peter Winters.
além dos fatores de alisamento alfa e beta, um novo parâmetro é adicionado chamado gamma (g) que controla a influência sobre o componente sazonal.a sazonalidade pode ser modelada como um processo aditivo ou multiplicativo para uma mudança linear ou exponencial na sazonalidade.sazonalidade aditiva: suavização exponencial tripla com sazonalidade linear.,sazonalidade multiplicativa: suavização exponencial tripla com sazonalidade exponencial exponencial.
alisamento exponencial triplo é a variação mais avançada de alisamento exponencial e através da configuração, ele também pode desenvolver modelos de alisamento duplo e único exponencial.
sendo um método adaptativo, a suavização exponencial de Holt-Winter permite que os padrões de nível, tendência e sazonalidade mudem ao longo do tempo.
— Page 95, Practical Time Series Forecasting with R, 2016.,além disso, para garantir que a sazonalidade é modelada corretamente, o número de etapas de tempo em um período sazonal (período) deve ser especificado. Por exemplo, se as séries fossem dados mensais e o período sazonal se repetisse todos os anos, então o período=12.
Hiperparametros:
- Alfa: Factor de nivelamento para o nível.Beta: Factor de suavização da tendência.Gama: Factor de suavização da sazonalidade.tipo de tendência: aditivo ou multiplicativo.tipo amortecedor: aditivo ou multiplicativo.coeficiente de amortecimento.,tipo de sazonalidade: aditivo ou multiplicativo.período: etapas temporais no período sazonal.
Como configurar a suavização exponencial
todos os hiperparâmetros do modelo podem ser especificados explicitamente.isto pode ser um desafio para especialistas e iniciantes.
em vez disso, é comum usar otimização numérica para procurar e financiar os coeficientes de suavização (alfa, beta, gama e phi) para o modelo que resulta no erro mais baixo.,
uma forma mais robusta e objetiva de obter valores para os parâmetros desconhecidos incluídos em qualquer método de suavização exponencial é estimá-los a partir dos dados observados. os parâmetros desconhecidos e os valores iniciais para qualquer método de suavização exponencial podem ser estimados minimizando o SSE .
— Page 177, Forecasting: principles and practice, 2013.,os parâmetros que especificam o tipo de mudança na tendência e sazonalidade, tais como as condições meteorológicas, são aditivos ou multiplicativos e se devem ser atenuados, devem ser especificados explicitamente.
suavização exponencial em Python
Esta secção procura como implementar a suavização exponencial em Python.
as implementações de suavização exponencial em Python são fornecidas na biblioteca de Python Statsmodels.,
as implementações são baseadas na descrição do método no excelente livro de Rob Hyndman e George Athanasopoulos “Forecasting: Principles and Practice,” 2013 and their R implementations in their “forecast” package.
a suavização exponencial única
a suavização exponencial única ou a suavização simples podem ser implementadas em Python através da classe de Statsmodels SimpleExpSmoothing.
Em primeiro lugar, uma instância da classe Simpleexplementação deve ser instanciada e passar os dados de formação., A função fit () é então chamada fornecendo a configuração fit, especificamente o valor alfa chamado smoothing_level. Se isso não for fornecido ou configurado para nenhum, o modelo irá automaticamente otimizar o valor.
Esta função fit () devolve uma instância da classe HoltWintersResults que contém os coeficientes aprendidos. A função predict() ou predict() no objeto resultado pode ser chamada para fazer uma previsão.,
Por exemplo:
suavização exponencial dupla e tripla
suavização exponencial simples, dupla e tripla pode ser implementada em Python usando a classe de Statsmodels de expansão exponencial exponencial.
Em primeiro lugar, uma instância da classe Exponencialsmoothing deve ser instanciada, especificando tanto os dados de treinamento quanto alguma configuração para o modelo.
Especificamente, você deve especificar os seguintes parâmetros de configuração:
- tendência: O tipo de componente de tendência, como “adicionar” para o aditivo ou “mul” para multiplicativo. Modelar a tendência pode ser desativado definindo-a para nenhuma.,
- damped: se o componente de tendência deve ou não ser damped, verdadeiro ou Falso.
- sazonal: o tipo de componente sazonal, quer como “add” para aditivo, quer como “mul” Para multiplicativo. Modelagem do componente sazonal pode ser desativado definindo-o para nenhum.
- sazonal_periodos: o número de etapas temporais num período sazonal, por exemplo, 12 para 12 meses numa estrutura sazonal anual (mais aqui).
o modelo pode então ser adequado nos dados de treinamento, chamando a função fit ().,
Esta função permite-lhe indicar os coeficientes de suavização do modelo de suavização exponencial ou optimizá-los. Por padrão, eles são otimizados (por exemplo, otimizados=True). Estes coeficientes incluem:
- smoothing_level( alfa): o coeficiente de nivelamento para o nível.
- smoothing_ slope (beta): o coeficiente de suavização da tendência.
- smoothing_seasonal( gama): o coeficiente de nivelamento do componente sazonal.
- damping_ slope (phi): o coeficiente para a tendência atenuada.,
adicionalmente, a função fit pode realizar a preparação básica de dados antes da modelagem; especificamente:
- use_boxcox: se deve ou não realizar uma transformação de potência da série (verdadeiro / falso) ou especificar o lambda para a transformação.
a função fit () irá devolver uma instância da classe HoltWintersResults que contém os coeficientes aprendidos. A função predict() ou predict() no objeto resultado pode ser chamada para fazer uma previsão.
Leitura Adicional
Esta secção fornece mais recursos sobre o tópico se você está procurando ir mais fundo.,
tutoriais
- Como Procurar na grelha uma suavização exponencial tripla para a previsão das séries cronológicas em Python
livros
- Capítulo 7 suavização exponencial, Previsão: princípios e prática, 2013.Secção 6. 4. Introduction to Time Series Analysis, Engineering Statistics Handbook, 2012.previsão das séries cronológicas práticas com R, 2016.
API
- Statsmodels análise das séries cronológicas tsa
- statsmodels.tsa.holtwinters.SimpleExpSmoothing API
- statsmodels.tsa.holtwinters.Exponencialsmoothing API
- statsmodels.,tsa.holtwinters.HoltWintersResults API
- previsão: a Previsão de Funções por Séries de Tempo e de Modelos Lineares R o pacote
Artigos
- suavização Exponencial na Wikipédia
Resumo
neste tutorial, você descobriu o método de suavização exponencial para univariados de séries de tempo de previsão.
especificamente, você aprendeu:
- O que é a suavização exponencial e como é diferente de outros métodos de previsão.
- os três principais tipos de suavização exponencial e como configurá-los.,
- Como implementar a suavização exponencial em Python.tem alguma pergunta?Faça suas perguntas nos comentários abaixo e farei o meu melhor para responder.
deseja desenvolver previsões de séries cronológicas com Python?
desenvolva as suas próprias previsões em minutos
…,with just a few lines of python code
Discover how in my new Ebook:
Introduction to Time Series Forecasting With Pythonit covers self-study tutorials and end-to-end projects on topics like:Loading data, visualization, modeling, algorithm tuning, and much more…
finalmente trazer a previsão de séries cronológicas para os seus próprios projetos
saltar os acadêmicos. Apenas Resultados.
ver o que está dentro de
Tweet Share