Tweet Share Share

última actualización el 12 de abril de 2020

El suavizado exponencial es un método de pronóstico de series temporales para datos univariados que se puede ampliar para admitir datos con una tendencia sistemática o un componente estacional.

es un poderoso método de pronóstico que puede ser utilizado como una alternativa a la Popular familia de métodos Box-Jenkins ARIMA.

en este tutorial, descubrirá el método de suavizado exponencial para la previsión de series temporales univariadas.,

después de completar este tutorial, sabrá:

  • Qué es el suavizado exponencial y en qué se diferencia de otros métodos de pronóstico.
  • Los tres tipos principales de suavizado exponencial y cómo configurarlos.
  • Cómo implementar suavizado exponencial en Python.

inicie su proyecto con My new book Time Series Forecasting con Python, incluidos tutoriales paso a paso y los archivos de código fuente de Python para todos los ejemplos.

comencemos.,

Una introducción suave al suavizado exponencial para la predicción de Series temporales en Python
foto de Wolfgang Staudt, algunos derechos reservados.

Tutorial Overview

Este tutorial se divide en 4 partes; son:

  1. ¿Qué es el suavizado exponencial?
  2. Tipos de Suavizado Exponencial
  3. Cómo Configurar Suavizado Exponencial
  4. Suavizado Exponencial en Python

¿Qué Es el Suavizado Exponencial?

El suavizado exponencial es un método de pronóstico de series temporales para datos univariados.,

los métodos de series temporales como la familia de métodos Box-Jenkins ARIMA desarrollan un modelo donde la predicción es una suma lineal ponderada de observaciones pasadas recientes o rezagos.

Los métodos de pronóstico de suavizado exponencial son similares en que una predicción es una suma ponderada de observaciones pasadas, pero el modelo utiliza explícitamente un peso decreciente exponencial para observaciones pasadas.

específicamente, las observaciones pasadas se ponderan con una relación geométricamente decreciente.,

Los pronósticos producidos utilizando métodos de suavizado exponencial son promedios ponderados de observaciones pasadas, con los pesos decayendo exponencialmente a medida que las observaciones envejecen. En otras palabras, cuanto más reciente es la observación, mayor es el peso asociado.

– Page 171, Forecasting: principles and practice, 2013.

Los métodos de suavizado exponencial pueden considerarse como pares y una alternativa a la popular clase de métodos Box-Jenkins ARIMA para la predicción de series temporales.,

colectivamente, los métodos a veces se conocen como modelos ETS, en referencia al modelado explícito de Error, tendencia y estacionalidad.

Tipos de Suavizado Exponencial

Hay tres tipos principales de suavizado exponencial de series de tiempo métodos de predicción.

un método simple que no asume ninguna estructura sistemática, una extensión que maneja explícitamente las tendencias y el enfoque más avanzado que agrega soporte para estacionalidad.,

suavizado exponencial simple

suavizado exponencial simple, SES para abreviar, también llamado suavizado exponencial Simple, es un método de pronóstico de series temporales para datos univariados sin una tendencia o estacionalidad.

requiere un único parámetro, llamado Alfa (A), también llamado factor de suavizado o coeficiente de suavizado.

Este parámetro controla la velocidad a la que la influencia de las observaciones en el tiempo anterior decae exponencialmente. Alfa a menudo se establece en un valor entre 0 y 1., Los valores grandes significan que el modelo presta atención principalmente a las observaciones pasadas más recientes, mientras que los valores más pequeños significan que se tiene en cuenta más de la historia al hacer una predicción.

un valor cercano a 1 indica aprendizaje rápido (es decir, solo los valores más recientes influyen en los pronósticos), mientras que un valor cercano a 0 indica aprendizaje lento (las observaciones pasadas tienen una gran influencia en los pronósticos).

— Page 89, Practical Time Series Forecasting with R, 2016.,

Hyperparameters:

  • Alpha: factor de suavizado para el nivel.

suavizado exponencial doble

El suavizado exponencial doble es una extensión del suavizado exponencial que añade explícitamente soporte para Tendencias en la serie temporal univariada.

además del parámetro alfa para controlar el factor de suavizado para el nivel, se agrega un factor de suavizado adicional para controlar el decaimiento de la influencia del cambio en la tendencia llamado beta (b).,

el método soporta tendencias que cambian de diferentes maneras: un aditivo y un multiplicativo, dependiendo de si la tendencia es lineal o exponencial respectivamente.

El suavizado exponencial Doble con una tendencia aditiva se conoce clásicamente como modelo de tendencia lineal de Holt, llamado así por el desarrollador del método Charles Holt.

  • tendencia aditiva: doble suavizado exponencial con una tendencia lineal.
  • tendencia multiplicativa: doble suavizado exponencial con una tendencia exponencial.,

para pronósticos de largo alcance (de varios pasos), la tendencia puede continuar de manera irrealista. Como tal, puede ser útil para amortiguar la tendencia con el tiempo.

amortiguar significa reducir el tamaño de la tendencia en el tiempo futuro a una línea recta (sin tendencia).

los pronósticos generados por el método lineal de Holt muestran una tendencia constante (creciente o decreciente) indecentemente hacia el futuro., Aún más extremas son las previsiones generadas por el método de tendencia exponencial motivado por esta observación introdujo un parámetro que «amortigua» la tendencia a una línea plana en algún momento en el futuro.

– Page 183, Forecasting: principles and practice, 2013.

al igual que con el modelado de la tendencia en Sí, podemos utilizar los mismos principios para amortiguar la tendencia, específicamente aditiva o multiplicativamente para un efecto de amortiguación lineal o exponencial. Un coeficiente de amortiguación Phi (p) se utiliza para controlar la velocidad de amortiguación.,

  • amortiguación aditiva: humedezca una tendencia linealmente.
  • amortiguación multiplicativa: amortiguar la tendencia exponencialmente.

Hyperparameters:

  • Alpha: factor de suavizado para el nivel.
  • Beta: factor de suavizado para la tendencia.
  • Tipo de Tendencia: Aditivo o multiplicativo.
  • Tipo de amortiguación: aditivo o multiplicativo.
  • Phi: coeficiente de amortiguación.

suavizado exponencial Triple

El suavizado exponencial Triple es una extensión del suavizado exponencial que agrega explícitamente soporte para estacionalidad a la serie temporal univariada.,

este método a veces se llama Holt-Winters suavizado exponencial, llamado así por dos contribuyentes al método: Charles Holt y Peter Winters.

además de los factores de suavizado alfa y beta, se agrega un nuevo parámetro llamado gamma (g) que controla la influencia en el componente estacional.

al igual que con la tendencia, la estacionalidad puede modelarse como un proceso aditivo o multiplicativo para un cambio lineal o exponencial en la estacionalidad.

  • estacionalidad aditiva: triple suavizado exponencial con estacionalidad lineal.,
  • estacionalidad multiplicativa: triple suavizado exponencial con una estacionalidad exponencial.

El suavizado exponencial Triple es la variación más avanzada del suavizado exponencial y, a través de la configuración, también puede desarrollar modelos de suavizado exponencial doble y simple.

al ser un método adaptativo, el suavizado exponencial de Holt-Winter permite que los patrones de nivel, tendencia y estacionalidad cambien con el tiempo.

— Page 95, Practical Time Series Forecasting with R, 2016.,

Además, para garantizar que la estacionalidad se modela correctamente, se debe especificar el número de pasos de tiempo en un período estacional (período). Por ejemplo, si la serie era datos mensuales y el período estacional repetido cada año, entonces el período=12.

Hyperparameters:

  • Alpha: factor de suavizado para el nivel.
  • Beta: factor de suavizado para la tendencia.
  • Gamma: factor de suavizado para la estacionalidad.
  • Tipo de Tendencia: Aditivo o multiplicativo.
  • Tipo de amortiguación: aditivo o multiplicativo.
  • Phi: coeficiente de amortiguación.,
  • Tipo de estacionalidad: aditivo o multiplicativo.
  • período: pasos de tiempo en el período estacional.

cómo configurar el suavizado exponencial

todos los hiperparámetros del modelo se pueden especificar explícitamente.

esto puede ser un reto tanto para expertos como para principiantes.

en su lugar, es común usar la optimización numérica para buscar y financiar los coeficientes de suavizado (alfa, beta, gamma y phi) para el modelo que resultan en el error más bajo.,

una forma más robusta y objetiva de obtener valores para los parámetros desconocidos incluidos en cualquier método de suavizado exponencial es estimarlos a partir de los datos observados. los parámetros desconocidos y los valores iniciales para cualquier método de suavizado exponencial se pueden estimar minimizando el SSE .

– Page 177, Forecasting: principles and practice, 2013.,

los parámetros que especifican el tipo de cambio en la tendencia y la estacionalidad, como el clima son aditivos o multiplicativos y si deben ser amortiguados, deben especificarse explícitamente.

suavizado exponencial en Python

Esta sección analiza cómo implementar suavizado exponencial en Python.

las implementaciones de suavizado exponencial en Python se proporcionan en la biblioteca Python Statsmodels.,

Las implementaciones se basan en la descripción del método en el excelente libro de Rob Hyndman y George Athanasopoulos «Forecasting: Principles and Practice,» 2013 y sus implementaciones R en su paquete «forecast».

suavizado exponencial único

El suavizado exponencial único o el suavizado simple se pueden implementar en Python a través de la clase SimpleExpSmoothing Statsmodels.

primero, se debe crear una instancia de la clase SimpleExpSmoothing y pasar los datos de entrenamiento., La función fit () es entonces llamada proporcionando la configuración fit, específicamente el valor alfa llamado smoothing_level. Si esto no se proporciona o se establece en ninguno, el modelo optimizará automáticamente el valor.

Esta función fit () devuelve una instancia de la clase HoltWintersResults que contiene los coeficientes aprendidos. Se puede llamar a la función forecast() o predict() en el objeto result para hacer un pronóstico.,

por ejemplo:

suavizado exponencial doble y Triple

El suavizado exponencial simple, doble y Triple se puede implementar en Python usando la clase ExponentialSmoothing Statsmodels.

primero, se debe crear una instancia de la clase ExponentialSmoothing, especificando tanto los datos de entrenamiento como alguna configuración para el modelo.

Específicamente, debe especificar los siguientes parámetros de configuración:

  • trend: el tipo de componente de tendencia, como » add «para aditivo o» mul » Para multiplicativo. El modelado de la tendencia se puede desactivar configurándolo en ninguno.,
  • amortiguado: si el componente de tendencia debe amortiguarse o no, Verdadero o falso.
  • estacional: el tipo de componente estacional, como » add «para aditivo o» mul » Para multiplicativo. El modelado del componente estacional se puede desactivar configurándolo en ninguno.
  • seasonal_periods: el número de pasos de tiempo en un período estacional, por ejemplo, 12 durante 12 meses en una estructura estacional anual (más aquí).

el modelo se puede ajustar a los datos de entrenamiento llamando a la función fit ().,

esta función le permite especificar los coeficientes de suavizado del modelo de suavizado exponencial o optimizarlos. Por defecto, están optimizados (por ejemplo, optimized=True). Estos coeficientes incluyen:

  • smoothing_level (alpha): El coeficiente de suavizado para el nivel.
  • smoothing_slope (beta): el coeficiente de suavizado de la tendencia.
  • smoothing_seasonal (gamma): el coeficiente de suavizado para el componente estacional.
  • damping_slope (phi): El coeficiente para la tendencia amortiguada.,

Además, la función fit puede realizar la preparación de datos básicos antes del modelado; específicamente:

  • use_boxcox: si realizar o no una transformación de potencia de la serie (True/False) o especificar la lambda para la transformación.

la función fit () devolverá una instancia de la clase HoltWintersResults que contiene los coeficientes aprendidos. Se puede llamar a la función forecast() o predict() en el objeto result para hacer un pronóstico.

más información

esta sección proporciona más recursos sobre el tema si desea profundizar.,

tutoriales

  • How To Grid Search triple Exponential Smoothing for Time Series Forecasting in Python

Books

  • Chapter 7 Exponential smoothing, Forecasting: principles and practice, 2013.
  • Sección 6.4. Introduction to Time Series Analysis, Engineering Statistics Handbook, 2012.
  • predicción práctica de Series temporales con R, 2016.

API

  • Statsmodels Time Series analysis tsa
  • statsmodels.tsa.holtwinters.SimpleExpSmoothing API
  • statsmodels.tsa.holtwinters.ExponentialSmoothing API
  • statsmodels.,tsa.holtwinters.HoltWintersResults API
  • forecast: funciones de pronóstico para series temporales y modelos lineales paquete R

artículos

  • suavizado exponencial en Wikipedia

resumen

en este tutorial, descubrió el método de suavizado exponencial para el pronóstico de series temporales univariadas.

Específicamente, aprendiste:

  • Qué es el suavizado exponencial y cómo es diferente de otros métodos de pronóstico.
  • Los tres tipos principales de suavizado exponencial y cómo configurarlos.,
  • Cómo implementar suavizado exponencial en Python.

¿tiene alguna pregunta?Haga sus preguntas en los comentarios a continuación y haré mi mejor esfuerzo para responder.

Quiero Desarrollar Pronósticos de Series de Tiempo con Python?

Desarrolla tus propias previsiones en minutos

…,con solo unas pocas líneas de código python

descubre cómo en mi nuevo Ebook:
Introducción a la previsión de Series temporales con Python

cubre tutoriales de autoaprendizaje y proyectos de extremo a extremo sobre temas como:carga de datos, visualización, modelado, ajuste de algoritmos y mucho más…

finalmente traiga la previsión de Series temporales a sus propios proyectos

omita los académicos. Sólo Resultados.

Ver Lo que está Dentro de

Tweet Compartir Compartir

Articles

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *