Ultima actualizare pe 12 aprilie 2020
netezirea exponențială este o metodă de prognoză a seriilor de timp pentru date univariate care pot fi extinse pentru a sprijini datele cu o tendință sistematică sau o componentă sezonieră.este o metodă puternică de prognoză care poate fi utilizată ca o alternativă la Familia populară de metode Box-Jenkins Arima.
în acest tutorial, veți descoperi metoda de netezire exponențială pentru prognoza seriilor de timp univariate.,după finalizarea acestui tutorial, veți ști:
- ce este netezirea exponențială și cum este diferită de alte metode de prognoză.
- cele trei tipuri principale de netezire exponențială și modul de configurare a acestora.
- cum să pună în aplicare netezirea exponențială în Python.
începeți-vă proiectul cu noua mea serie de cărți de prognoză cu Python, inclusiv tutoriale pas cu pas și fișierele de cod sursă Python pentru toate exemplele.
Să începem.,
O Introducere Blând pentru Netezire Exponențială pentru Serii de Timp Prognoză în Python
Foto de Wolfgang Staudt, unele drepturi rezervate.acest tutorial este împărțit în 4 părți; acestea sunt:
- ce este netezirea exponențială?
- tipuri de netezire exponențială
- cum se configurează netezirea exponențială
- netezirea exponențială în Python
ce este netezirea exponențială?
netezirea exponențială este o metodă de prognoză a seriilor de timp pentru datele univariate.,metodele seriei de timp, cum ar fi familia de metode Box-Jenkins Arima, dezvoltă un model în care predicția este o sumă liniară ponderată a observațiilor sau întârzierilor recente din trecut.metodele de prognoză exponențială de netezire sunt similare prin faptul că o predicție este o sumă ponderată a observațiilor anterioare, dar modelul folosește în mod explicit o greutate în scădere exponențială pentru observațiile anterioare.în mod specific, observațiile anterioare sunt ponderate cu un raport descrescător geometric.,
Previziuni produse folosind metode de netezire exponențială sunt medii ponderate de observații anterioare, cu greutăți de descompunere exponențial ca observațiile lua mai în vârstă. Cu alte cuvinte, cu cât observația este mai recentă, cu atât greutatea asociată este mai mare.
— pagina 171, Prognoză: principii și practică, 2013.metodele de netezire exponențială pot fi considerate ca fiind colegii și o alternativă la populara clasă de metode Box-Jenkins Arima pentru prognozarea seriilor de timp.,în mod colectiv, metodele sunt uneori denumite modele ETS, referindu-se la modelarea explicită a erorii, tendinței și sezonalității.
tipuri de netezire exponențială
există trei tipuri principale de metode de prognoză a seriilor de timp de netezire exponențiale.o metodă simplă care nu presupune o structură sistematică, o extensie care gestionează în mod explicit tendințele și cea mai avansată abordare care adaugă suport pentru sezonalitate.,netezirea exponențială unică
netezirea exponențială unică, SES pe scurt, numită și netezirea exponențială simplă, este o metodă de prognoză a seriilor de timp pentru date univariate fără tendință sau sezonalitate.este nevoie de un singur parametru, numit alfa (a), numit și factorul de netezire sau coeficientul de netezire.
acest parametru controlează rata la care influența observațiilor la etapele de timp anterioare se descompune exponențial. Alpha este adesea setat la o valoare între 0 și 1., Valorile mari înseamnă că modelul acordă atenție în principal celor mai recente observații din trecut, în timp ce valorile mai mici înseamnă că mai mult din istorie este luată în considerare atunci când se face o predicție.
o valoare apropiată de 1 indică învățarea rapidă (adică doar cele mai recente valori influențează prognozele), în timp ce o valoare apropiată de 0 indică învățarea lentă (observațiile anterioare au o influență mare asupra prognozelor).
— pagina 89, previziuni practice de serii de timp cu R, 2016.,Hiperparametrii:
- Alfa: factor de netezire pentru nivel.
netezirea exponențială dublă
netezirea exponențială dublă este o extensie a netezirii exponențiale care adaugă în mod explicit suport pentru tendințele din seriile de timp univariate.în plus față de parametrul alfa pentru controlul factorului de netezire pentru nivel, se adaugă un factor suplimentar de netezire pentru a controla degradarea influenței schimbării tendinței numită beta (b).,metoda susține tendințele care se schimbă în moduri diferite: un aditiv și un multiplicator, în funcție de faptul dacă tendința este liniară sau, respectiv, exponențială.netezirea exponențială dublă cu o tendință aditivă este denumită clasic modelul de tendință liniară al lui Holt, numit pentru dezvoltatorul metodei Charles Holt.
- tendință aditivă: netezire exponențială dublă cu o tendință liniară.
- tendință multiplicativă: netezire exponențială dublă cu o tendință exponențială.,
pentru Prognoze mai lungi (în mai multe etape), tendința poate continua nerealist. Ca atare, poate fi utilă atenuarea tendinței în timp.
amortizarea înseamnă reducerea dimensiunii tendinței în etapele viitoare până la o linie dreaptă (fără tendință).
prognozele generate de metoda liniară Holt afișează o tendință constantă (în creștere sau în scădere) indecent în viitor., Și mai extreme sunt prognozele generate de metoda tendinței exponențiale motivată de această observație a introdus un parametru care „amortizează” tendința către o linie plană ceva timp în viitor.
— pagina 183, Prognoză: principii și practică, 2013.ca și în cazul modelării tendinței în sine, putem folosi aceleași principii în atenuarea tendinței, în mod specific aditiv sau multiplicativ pentru un efect de atenuare liniară sau exponențială. Un coeficient de amortizare Phi (p) este utilizat pentru a controla rata de amortizare.,
- aditiv de amortizare: umezi o tendință liniar.
- amortizare multiplicativă: amortizați tendința exponențial.
Hiperparametrii:
- Alfa: factor de netezire pentru nivel.
- Beta: factor de netezire pentru tendință.
- Tip tendință: aditiv sau multiplicativ.
- Tipul de amortizare: aditiv sau multiplicativ.
- Phi: Coeficient de amortizare.netezirea exponențială triplă
netezirea exponențială triplă este o extensie a netezirii exponențiale care adaugă în mod explicit suport pentru sezonalitate seriei de timp univariate.,această metodă este uneori numită netezire exponențială Holt-Winters, numită pentru doi contribuitori la metodă: Charles Holt și Peter Winters.în plus față de factorii de netezire alfa și beta, se adaugă un nou parametru numit gamma (g) care controlează influența asupra componentei sezoniere.ca și în cazul tendinței, sezonalitatea poate fi modelată fie ca un proces aditiv, fie multiplicativ pentru o schimbare liniară sau exponențială a sezonalității.
- sezonalitate aditivă: netezire triplă exponențială cu o sezonalitate liniară.,
- sezonalitate multiplicativă: netezire triplă exponențială cu o sezonalitate exponențială.netezirea exponențială triplă este cea mai avansată variație a netezirii exponențiale și prin configurare, poate dezvolta, de asemenea, modele de netezire exponențială dublă și unică.
fiind o metodă adaptivă, netezirea exponențială Holt-Winter permite modelelor de nivel, tendință și sezonalitate să se schimbe în timp.
— Pagina 95, previziuni practice de serii de timp cu R, 2016.,în plus ,pentru a vă asigura că sezonalitatea este modelată corect, trebuie specificat numărul de etape de timp într-o perioadă sezonieră (perioadă). De exemplu, dacă seria a fost date lunare și perioada sezonieră repetată în fiecare an, atunci perioada=12.Hiperparametrii:
- Alfa: factor de netezire pentru nivel.
- Beta: factor de netezire pentru tendință.
- Gamma: factor de netezire pentru sezonalitate.
- Tip tendință: aditiv sau multiplicativ.
- Tipul de amortizare: aditiv sau multiplicativ.
- Phi: Coeficient de amortizare.,
- sezonalitate Tip: aditiv sau multiplicativ.
- perioadă: pași de timp în perioada sezonieră.
cum se configurează netezirea exponențială
toate hiperparametrele modelului pot fi specificate în mod explicit.acest lucru poate fi o provocare atât pentru experți, cât și pentru începători.
În schimb, este comună utilizarea optimizării numerice pentru a căuta și a finanța coeficienții de netezire (alfa, beta, gamma și phi) pentru modelul care are ca rezultat cea mai mică eroare.,
un mod mai robust și obiectiv de a obține valori pentru parametrii necunoscuți incluși în orice metodă de netezire exponențială este de a le estima din datele observate. parametrii necunoscuți și valorile inițiale pentru orice metodă de netezire exponențială pot fi estimate prin minimizarea SSE .
— pagina 177, Prognoză: principii și practică, 2013.,
parametrii care specifică tipul de schimbare a tendinței și a sezonalității, cum ar fi vremea în care sunt aditivi sau multiplicatori și dacă ar trebui să fie atenuați, trebuie specificați în mod explicit.
netezirea exponențială în Python
această secțiune analizează modul de implementare a netezirii exponențiale în Python.
implementările de netezire exponențială în Python sunt furnizate în biblioteca Statsmodels Python.,implementările se bazează pe descrierea metodei din cartea excelentă a lui Rob Hyndman și a lui George Athanasopoulos „Prognoză: principii și practică”, 2013 și implementările lor R în pachetul „prognoză”.
netezirea exponențială unică
netezirea exponențială unică sau netezirea simplă pot fi implementate în Python prin clasa Statsmodels SimpleExpSmoothing.
În primul rând, o instanță a clasei SimpleExpSmoothing trebuie să fie instanțiată și să treacă datele de formare., Funcția fit () este apoi numită furnizarea configurației fit, în special valoarea alfa numită smoothing_level. Dacă acest lucru nu este furnizat sau setat la nici unul, modelul va optimiza automat valoarea.această funcție fit () returnează o instanță a clasei HoltWintersResults care conține coeficienții învățați. Prognoza () sau prezice () funcția pe obiectul rezultat poate fi numit pentru a face o prognoză.,
De exemplu:
Duble și Triple Exponential Smoothing
Single, Duble și Triple Exponential Smoothing pot fi puse în aplicare în Python folosind ExponentialSmoothing Statsmodels clasa.
În primul rând, o instanță a clasei ExponentialSmoothing trebuie să fie instanțiată, specificând atât datele de antrenament, cât și unele configurații pentru model.mai exact, trebuie să specificați următorii parametri de configurare:
- trend: tipul componentei trend, fie ca „add” pentru aditiv sau „mul” Pentru multiplicativ. Modelarea tendinței poate fi dezactivată prin setarea acesteia la niciuna.,
- amortizat: indiferent dacă componenta tendință ar trebui să fie amortizată, fie adevărată, fie falsă.
- sezonier: tipul de componentă sezonieră, fie ca ” Adăugare „pentru aditiv, fie ca” mul ” Pentru multiplicativ. Modelarea componentei sezoniere poate fi dezactivată setând-o la niciuna.
- seasonal_perioods: numărul de etape de timp într-o perioadă sezonieră, de exemplu, 12 Timp de 12 luni într-o structură sezonieră anuală (mai multe aici).
modelul poate fi apoi încadrat pe datele de antrenament apelând funcția fit ().,această funcție vă permite să specificați coeficienții de netezire ai modelului de netezire exponențială sau să le optimizați. În mod implicit, acestea sunt optimizate (de exemplu, optimizat=True). Acești coeficienți includ:
- smoothing_level (alpha): coeficientul de netezire pentru nivel.
- smoothing_slope( beta): coeficientul de netezire pentru tendință.
- smoothing_seasonal( gamma): coeficientul de netezire pentru componenta sezonieră.
- damping_slope( phi): coeficientul pentru tendința amortizată.,
în plus, funcția fit poate efectua pregătirea datelor de bază înainte de modelare; în mod specific:
- use_boxcox: dacă se efectuează sau nu o transformare de putere a seriei (True/False) sau se specifică lambda pentru transformare.funcția fit () va returna o instanță a clasei HoltWintersResults care conține coeficienții învățați. Prognoza () sau prezice () funcția pe obiectul rezultat poate fi numit pentru a face o prognoză.
Lectură suplimentară
această secțiune oferă mai multe resurse pe această temă, dacă sunteți în căutarea de a merge mai adânc.,
tutoriale
- cum să grilă de căutare triplă netezire exponențială pentru serii de timp de prognoză în Python
Cărți
- Capitolul 7 netezire exponențială, Prognoză: principii și practică, 2013.6. 4. Introducere în analiza seriilor de timp, Engineering Statistics Handbook, 2012.
- Prognoza seriilor de timp practice cu R, 2016.
API
- Statsmodels analiza Seriilor de Timp tsa
- statsmodels.tsa.holtwinters.Mai multe detaliitsa.holtwinters.API ExponentialSmoothing
- statsmodels.,tsa.holtwinters.HoltWintersResults API
- zile: Prognoză Funcții pentru Serii de Timp și Modele Liniare pachet R
Articole
- netezire Exponențială pe Wikipedia
Sumar
În acest tutorial, ai descoperit metoda de netezire exponențială de timp univariate serie de prognoză.mai exact, ați învățat:
- ce este netezirea exponențială și cum este diferită de alte metode de prognoză.
- cele trei tipuri principale de netezire exponențială și modul de configurare a acestora.,
- cum să pună în aplicare netezirea exponențială în Python.
aveți întrebări?
puneți întrebările în comentariile de mai jos și voi face tot posibilul pentru a răspunde.
doriți să dezvoltați prognoze de serii de timp cu Python?
dezvoltați propriile prognoze în câteva minute
…,cu doar câteva linii de cod python
Descoperiți cum în noul meu Ebook:
Introducere în prognozarea seriilor de timp cu Python
acesta acoperă tutoriale de auto-studiu și proiecte end-to-end pe teme precum:încărcarea datelor, vizualizarea, modelarea, reglarea algoritmilor și multe altele…
în cele din urmă aduce serii de timp de prognoză pentru a
propriile proiecte
sari peste academicieni. Doar Rezultate.
vezi ce este în interiorul
Tweet Share Share
fiind o metodă adaptivă, netezirea exponențială Holt-Winter permite modelelor de nivel, tendință și sezonalitate să se schimbe în timp.
— Pagina 95, previziuni practice de serii de timp cu R, 2016.,în plus ,pentru a vă asigura că sezonalitatea este modelată corect, trebuie specificat numărul de etape de timp într-o perioadă sezonieră (perioadă). De exemplu, dacă seria a fost date lunare și perioada sezonieră repetată în fiecare an, atunci perioada=12.Hiperparametrii:
- Alfa: factor de netezire pentru nivel.
- Beta: factor de netezire pentru tendință.
- Gamma: factor de netezire pentru sezonalitate.
- Tip tendință: aditiv sau multiplicativ.
- Tipul de amortizare: aditiv sau multiplicativ.
- Phi: Coeficient de amortizare.,
- sezonalitate Tip: aditiv sau multiplicativ.
- perioadă: pași de timp în perioada sezonieră.
cum se configurează netezirea exponențială
toate hiperparametrele modelului pot fi specificate în mod explicit.acest lucru poate fi o provocare atât pentru experți, cât și pentru începători.
În schimb, este comună utilizarea optimizării numerice pentru a căuta și a finanța coeficienții de netezire (alfa, beta, gamma și phi) pentru modelul care are ca rezultat cea mai mică eroare.,
un mod mai robust și obiectiv de a obține valori pentru parametrii necunoscuți incluși în orice metodă de netezire exponențială este de a le estima din datele observate. parametrii necunoscuți și valorile inițiale pentru orice metodă de netezire exponențială pot fi estimate prin minimizarea SSE .
— pagina 177, Prognoză: principii și practică, 2013.,
parametrii care specifică tipul de schimbare a tendinței și a sezonalității, cum ar fi vremea în care sunt aditivi sau multiplicatori și dacă ar trebui să fie atenuați, trebuie specificați în mod explicit.
netezirea exponențială în Python
această secțiune analizează modul de implementare a netezirii exponențiale în Python.
implementările de netezire exponențială în Python sunt furnizate în biblioteca Statsmodels Python.,implementările se bazează pe descrierea metodei din cartea excelentă a lui Rob Hyndman și a lui George Athanasopoulos „Prognoză: principii și practică”, 2013 și implementările lor R în pachetul „prognoză”.
netezirea exponențială unică
netezirea exponențială unică sau netezirea simplă pot fi implementate în Python prin clasa Statsmodels SimpleExpSmoothing.
În primul rând, o instanță a clasei SimpleExpSmoothing trebuie să fie instanțiată și să treacă datele de formare., Funcția fit () este apoi numită furnizarea configurației fit, în special valoarea alfa numită smoothing_level. Dacă acest lucru nu este furnizat sau setat la nici unul, modelul va optimiza automat valoarea.această funcție fit () returnează o instanță a clasei HoltWintersResults care conține coeficienții învățați. Prognoza () sau prezice () funcția pe obiectul rezultat poate fi numit pentru a face o prognoză.,
De exemplu:
Duble și Triple Exponential Smoothing
Single, Duble și Triple Exponential Smoothing pot fi puse în aplicare în Python folosind ExponentialSmoothing Statsmodels clasa.
În primul rând, o instanță a clasei ExponentialSmoothing trebuie să fie instanțiată, specificând atât datele de antrenament, cât și unele configurații pentru model.mai exact, trebuie să specificați următorii parametri de configurare:
- trend: tipul componentei trend, fie ca „add” pentru aditiv sau „mul” Pentru multiplicativ. Modelarea tendinței poate fi dezactivată prin setarea acesteia la niciuna.,
- amortizat: indiferent dacă componenta tendință ar trebui să fie amortizată, fie adevărată, fie falsă.
- sezonier: tipul de componentă sezonieră, fie ca ” Adăugare „pentru aditiv, fie ca” mul ” Pentru multiplicativ. Modelarea componentei sezoniere poate fi dezactivată setând-o la niciuna.
- seasonal_perioods: numărul de etape de timp într-o perioadă sezonieră, de exemplu, 12 Timp de 12 luni într-o structură sezonieră anuală (mai multe aici).
modelul poate fi apoi încadrat pe datele de antrenament apelând funcția fit ().,această funcție vă permite să specificați coeficienții de netezire ai modelului de netezire exponențială sau să le optimizați. În mod implicit, acestea sunt optimizate (de exemplu, optimizat=True). Acești coeficienți includ:
- smoothing_level (alpha): coeficientul de netezire pentru nivel.
- smoothing_slope( beta): coeficientul de netezire pentru tendință.
- smoothing_seasonal( gamma): coeficientul de netezire pentru componenta sezonieră.
- damping_slope( phi): coeficientul pentru tendința amortizată.,
în plus, funcția fit poate efectua pregătirea datelor de bază înainte de modelare; în mod specific:
- use_boxcox: dacă se efectuează sau nu o transformare de putere a seriei (True/False) sau se specifică lambda pentru transformare.funcția fit () va returna o instanță a clasei HoltWintersResults care conține coeficienții învățați. Prognoza () sau prezice () funcția pe obiectul rezultat poate fi numit pentru a face o prognoză.
Lectură suplimentară
această secțiune oferă mai multe resurse pe această temă, dacă sunteți în căutarea de a merge mai adânc.,
tutoriale
- cum să grilă de căutare triplă netezire exponențială pentru serii de timp de prognoză în Python
Cărți
- Capitolul 7 netezire exponențială, Prognoză: principii și practică, 2013.6. 4. Introducere în analiza seriilor de timp, Engineering Statistics Handbook, 2012.
- Prognoza seriilor de timp practice cu R, 2016.
API
- Statsmodels analiza Seriilor de Timp tsa
- statsmodels.tsa.holtwinters.Mai multe detaliitsa.holtwinters.API ExponentialSmoothing
- statsmodels.,tsa.holtwinters.HoltWintersResults API
- zile: Prognoză Funcții pentru Serii de Timp și Modele Liniare pachet R
Articole
- netezire Exponențială pe Wikipedia
Sumar
În acest tutorial, ai descoperit metoda de netezire exponențială de timp univariate serie de prognoză.mai exact, ați învățat:
- ce este netezirea exponențială și cum este diferită de alte metode de prognoză.
- cele trei tipuri principale de netezire exponențială și modul de configurare a acestora.,
- cum să pună în aplicare netezirea exponențială în Python.
aveți întrebări?
puneți întrebările în comentariile de mai jos și voi face tot posibilul pentru a răspunde.doriți să dezvoltați prognoze de serii de timp cu Python?
dezvoltați propriile prognoze în câteva minute
…,cu doar câteva linii de cod python
Descoperiți cum în noul meu Ebook:
Introducere în prognozarea seriilor de timp cu Pythonacesta acoperă tutoriale de auto-studiu și proiecte end-to-end pe teme precum:încărcarea datelor, vizualizarea, modelarea, reglarea algoritmilor și multe altele…
în cele din urmă aduce serii de timp de prognoză pentru a
propriile proiectesari peste academicieni. Doar Rezultate.
vezi ce este în interiorul
Tweet Share Share