Ultimo aggiornamento il 12 aprile 2020
Lo smoothing esponenziale è un metodo di previsione di serie temporali per dati univariati che può essere esteso per supportare dati con una tendenza sistematica o una componente stagionale.
È un potente metodo di previsione che può essere utilizzato come alternativa alla popolare famiglia di metodi Box-Jenkins ARIMA.
In questo tutorial, scoprirai il metodo di smoothing esponenziale per la previsione di serie temporali univariate.,
Dopo aver completato questo tutorial, saprai:
- Cos’è lo smoothing esponenziale e come è diverso dagli altri metodi di previsione.
- I tre tipi principali di smoothing esponenziale e come configurarli.
- Come implementare lo smoothing esponenziale in Python.
Avvia il tuo progetto con il mio nuovo libro Time Series Forecasting Con Python, inclusi tutorial passo-passo e i file di codice sorgente Python per tutti gli esempi.
Iniziamo.,
Una delicata introduzione allo smoothing esponenziale per la previsione di serie temporali in Python
Foto di Wolfgang Staudt, alcuni diritti riservati.
Panoramica del tutorial
Questo tutorial è diviso in 4 parti; sono:
- Cos’è lo smoothing esponenziale?
- Tipi di smoothing esponenziale
- Come configurare lo Smoothing esponenziale
- Smoothing esponenziale in Python
Che cos’è lo Smoothing esponenziale?
Lo smoothing esponenziale è un metodo di previsione di serie temporali per dati univariati.,
I metodi delle serie temporali come la famiglia di metodi Box-Jenkins ARIMA sviluppano un modello in cui la previsione è una somma lineare ponderata di osservazioni o ritardi recenti.
I metodi di previsione dello smoothing esponenziale sono simili in quanto una previsione è una somma ponderata delle osservazioni passate, ma il modello utilizza esplicitamente un peso decrescente esponenzialmente per le osservazioni passate.
In particolare, le osservazioni passate sono ponderate con un rapporto geometricamente decrescente.,
Le previsioni prodotte utilizzando metodi di smoothing esponenziale sono medie ponderate delle osservazioni passate, con i pesi che decadono esponenzialmente man mano che le osservazioni invecchiano. In altre parole, più recente è l’osservazione maggiore è il peso associato.
— Pagina 171, Forecasting: principles and practice, 2013.
I metodi di smoothing esponenziale possono essere considerati come peer e un’alternativa alla popolare classe di metodi Box-Jenkins ARIMA per la previsione di serie temporali.,
Collettivamente, i metodi sono talvolta indicati come modelli ETS, riferendosi alla modellazione esplicita di Errore, tendenza e stagionalità.
Tipi di smoothing esponenziale
Esistono tre tipi principali di metodi di previsione delle serie temporali di smoothing esponenziale.
Un metodo semplice che non assume alcuna struttura sistematica, un’estensione che gestisce esplicitamente le tendenze e l’approccio più avanzato che aggiunge il supporto per la stagionalità.,
Single Exponential Smoothing
Single Exponential Smoothing, SES in breve, chiamato anche Simple Exponential Smoothing, è un metodo di previsione di serie temporali per dati univariati senza tendenza o stagionalità.
Richiede un singolo parametro, chiamato alpha (a), chiamato anche fattore di levigatura o coefficiente di levigatura.
Questo parametro controlla la velocità con cui l’influenza delle osservazioni nei passaggi temporali precedenti decade in modo esponenziale. Alpha è spesso impostato su un valore compreso tra 0 e 1., Valori grandi significano che il modello presta attenzione principalmente alle osservazioni passate più recenti, mentre valori più piccoli significano che più della storia viene presa in considerazione quando si effettua una previsione.
Un valore vicino a 1 indica un apprendimento rapido (cioè, solo i valori più recenti influenzano le previsioni), mentre un valore vicino a 0 indica un apprendimento lento (le osservazioni passate hanno una grande influenza sulle previsioni).
— Pagina 89, Previsione pratica delle serie temporali con R, 2016.,
Iperparametri:
- Alfa: fattore di livellamento per il livello.
Double Exponential Smoothing
Double Exponential Smoothing è un’estensione di Exponential Smoothing che aggiunge esplicitamente il supporto per le tendenze nelle serie temporali univariate.
Oltre al parametro alfa per il controllo del fattore di levigatura per il livello, viene aggiunto un ulteriore fattore di levigatura per controllare il decadimento dell’influenza del cambiamento di tendenza chiamato beta (b).,
Il metodo supporta tendenze che cambiano in modi diversi: un additivo e un moltiplicativo, a seconda che il trend sia lineare o esponenziale rispettivamente.
Il livellamento esponenziale doppio con una tendenza additiva è classicamente indicato come modello di tendenza lineare di Holt, dal nome dello sviluppatore del metodo Charles Holt.
- Additive Trend: Doppia lisciatura esponenziale con andamento lineare.
- Trend Moltiplicativo: Doppio Smoothing Esponenziale con un trend esponenziale.,
Per previsioni a più lungo raggio (multi-step), la tendenza potrebbe continuare in modo irrealistico. Come tale, può essere utile per smorzare la tendenza nel tempo.
Smorzamento significa ridurre la dimensione della tendenza nel tempo futuro passi verso una linea retta (nessuna tendenza).
Le previsioni generate dal metodo lineare di Holt mostrano una tendenza costante (crescente o decrescente) indecentemente verso il futuro., Ancora più estreme sono le previsioni generate dal metodo trend esponenziale Motivato da questa osservazione introdotto un parametro che “smorza” la tendenza ad una linea piatta qualche tempo in futuro.
— Pagina 183, Forecasting: principles and practice, 2013.
Come per la modellazione della tendenza stessa, possiamo utilizzare gli stessi principi per smorzare la tendenza, in modo specifico addizionale o moltiplicativo per un effetto di smorzamento lineare o esponenziale. Un coefficiente di smorzamento Phi (p) viene utilizzato per controllare la velocità di smorzamento.,
- Additive Dampening: Inumidire una tendenza linearmente.
- Smorzamento moltiplicativo: smorzare la tendenza in modo esponenziale.
Iperparametri:
- Alfa: fattore di livellamento per il livello.
- Beta: fattore di livellamento per la tendenza.
- Tipo di tendenza: additivo o moltiplicativo.
- Tipo di smorzamento: additivo o moltiplicativo.
- Phi: Coefficiente di smorzamento.
Triple Exponential Smoothing
Triple Exponential Smoothing è un’estensione del Smoothing esponenziale che aggiunge esplicitamente il supporto per la stagionalità alle serie temporali univariate.,
Questo metodo è talvolta chiamato Smoothing esponenziale Holt-Winters, chiamato per due contributori al metodo: Charles Holt e Peter Winters.
Oltre ai fattori di livellamento alfa e beta, viene aggiunto un nuovo parametro chiamato gamma (g) che controlla l’influenza sul componente stagionale.
Come per la tendenza, la stagionalità può essere modellata come un processo additivo o moltiplicativo per un cambiamento lineare o esponenziale nella stagionalità.
- Stagionalità additiva: Triplo smoothing esponenziale con stagionalità lineare.,
- Stagionalità moltiplicativa: triplo smoothing esponenziale con una stagionalità esponenziale.
Lo smoothing esponenziale triplo è la variante più avanzata dello smoothing esponenziale e, attraverso la configurazione, può anche sviluppare modelli di smoothing esponenziale doppio e singolo.
Essendo un metodo adattivo, il livellamento esponenziale di Holt-Winter consente ai modelli di livello, tendenza e stagionalità di cambiare nel tempo.
— Pagina 95, Previsione pratica delle serie temporali con R, 2016.,
Inoltre, per garantire che la stagionalità sia modellata correttamente, è necessario specificare il numero di passaggi temporali in un periodo stagionale (Periodo). Ad esempio, se la serie era dati mensili e il periodo stagionale ripetuto ogni anno, allora il Periodo=12.
Iperparametri:
- Alfa: fattore di livellamento per il livello.
- Beta: fattore di livellamento per la tendenza.
- Gamma: fattore di smoothing per la stagionalità.
- Tipo di tendenza: additivo o moltiplicativo.
- Tipo di smorzamento: additivo o moltiplicativo.
- Phi: Coefficiente di smorzamento.,
- Tipo di stagionalità: Additivo o moltiplicativo.
- Periodo: Fasi temporali nel periodo stagionale.
Come configurare lo smoothing esponenziale
Tutti gli iperparametri del modello possono essere specificati esplicitamente.
Questo può essere impegnativo per esperti e principianti.
Invece, è comune utilizzare l’ottimizzazione numerica per cercare e finanziare i coefficienti di livellamento (alfa, beta, gamma e phi) per il modello che risulta nell’errore più basso.,
un modo più robusto e oggettivo per ottenere valori per i parametri sconosciuti inclusi in qualsiasi metodo di smoothing esponenziale è stimarli dai dati osservati. i parametri sconosciuti e i valori iniziali per qualsiasi metodo di smoothing esponenziale possono essere stimati riducendo al minimo l’SSE .
— Pagina 177, Forecasting: principles and practice, 2013.,
I parametri che specificano il tipo di cambiamento nel trend e nella stagionalità, come il tempo sono additivi o moltiplicativi e se devono essere smorzati, devono essere specificati esplicitamente.
Smoothing esponenziale in Python
Questa sezione esamina come implementare lo smoothing esponenziale in Python.
Le implementazioni di Smoothing esponenziale in Python sono fornite nella libreria Python Statsmodels.,
Le implementazioni si basano sulla descrizione del metodo nell’eccellente libro di Rob Hyndman e George Athanasopoulos “Forecasting: Principles and Practice”, 2013 e le loro implementazioni R nel loro pacchetto “forecast”.
Single Exponential Smoothing
Single Exponential Smoothing o Simple smoothing possono essere implementati in Python tramite la classe SimpleExpSmoothing Statsmodels.
In primo luogo, un’istanza della classe SimpleExpSmoothing deve essere istanziata e passato i dati di formazione., La funzione fit () viene quindi chiamata fornendo la configurazione fit, in particolare il valore alfa chiamato smoothing_level. Se questo non viene fornito o impostato su Nessuno, il modello ottimizzerà automaticamente il valore.
Questa funzione fit() restituisce un’istanza della classe HoltWintersResults che contiene i coefficienti appresi. La funzione forecast() o predict () sull’oggetto result può essere chiamata per effettuare una previsione.,
Ad esempio:
Smoothing esponenziale doppio e triplo
Lo Smoothing esponenziale singolo, doppio e triplo può essere implementato in Python utilizzando la classe Statsmodels ExponentialSmoothing.
In primo luogo, un’istanza della classe ExponentialSmoothing deve essere istanziata, specificando sia i dati di allenamento che alcune configurazioni per il modello.
Nello specifico, è necessario specificare i seguenti parametri di configurazione:
- trend: Il tipo di componente di trend, come “add” per additivo o “mul” per moltiplicativo. La modellazione della tendenza può essere disabilitata impostandola su Nessuno.,
- smorzato: indica se il componente di tendenza deve essere smorzato, Vero o Falso.
- stagionale: Il tipo di componente stagionale, come” add “per additivo o” mul” per moltiplicativo. La modellazione del componente stagionale può essere disabilitata impostandolo su Nessuno.
- seasonal_periods: il numero di passaggi temporali in un periodo stagionale, ad esempio 12 per 12 mesi in una struttura stagionale annuale (più qui).
Il modello può quindi essere inserito nei dati di allenamento chiamando la funzione fit ().,
Questa funzione consente di specificare i coefficienti di smoothing del modello di smoothing esponenziale o di ottimizzarli. Per impostazione predefinita, sono ottimizzati (ad esempio ottimizzato=True). Questi coefficienti includono:
- smoothing_level (alpha): il coefficiente di livellamento per il livello.
- smoothing_slope (beta): il coefficiente di levigatura per la tendenza.
- smoothing_seasonal (gamma): il coefficiente di levigatura per il componente stagionale.
- damping_slope (phi): il coefficiente per la tendenza smorzata.,
Inoltre, la funzione fit può eseguire la preparazione dei dati di base prima della modellazione; in particolare:
- use_boxcox: se eseguire o meno una trasformazione di potenza della serie (Vero / Falso) o specificare il lambda per la trasformazione.
La funzione fit() restituirà un’istanza della classe HoltWintersResults che contiene i coefficienti appresi. La funzione forecast() o predict () sull’oggetto result può essere chiamata per effettuare una previsione.
Ulteriori letture
Questa sezione fornisce più risorse sull’argomento se stai cercando di approfondire.,
Tutorial
- Come griglia di ricerca Triple Smoothing esponenziale per la previsione di serie temporali in Python
Libri
- Capitolo 7 Smoothing esponenziale, Previsione: principi e pratica, 2013.
- Sezione 6.4. Introduzione all’analisi delle serie temporali, Manuale di ingegneria statistica, 2012.
- Previsione pratica delle serie temporali con R, 2016.
API
- Statsmodels Analisi delle serie temporali tsa
- statsmodels.TSA.holtwinters.Per maggiori informazioni clicca qui.TSA.holtwinters.API di avvio esponenziale
- statsmodels.,TSA.holtwinters.HoltWintersResults API
- previsione: Funzioni di previsione per serie temporali e modelli lineari R pacchetto
Articoli
- Smoothing esponenziale su Wikipedia
Riepilogo
In questo tutorial, hai scoperto il metodo di smoothing esponenziale per la previsione di serie temporali univariate.
In particolare, hai imparato:
- Cos’è lo smoothing esponenziale e in che modo è diverso dagli altri metodi di previsione.
- I tre tipi principali di smoothing esponenziale e come configurarli.,
- Come implementare lo smoothing esponenziale in Python.
Hai qualche domanda?
Fai le tue domande nei commenti qui sotto e farò del mio meglio per rispondere.
Vuoi sviluppare previsioni di serie temporali con Python?
Sviluppa le tue previsioni in pochi minuti
…,con poche righe di codice python
Scopri come nel mio nuovo Ebook:
Introduzione alla previsione delle serie temporali con Python
Copre tutorial di autoapprendimento e progetti end-to-end su argomenti come: Caricamento dei dati, visualizzazione, modellazione, ottimizzazione degli algoritmi e molto altro…
Infine porta le previsioni delle serie temporali a
I tuoi progetti
Salta gli accademici. Solo risultati.
Guarda cosa c’è dentro