Senast uppdaterad den 12 April 2020
exponentiell utjämning är en prognosmetod för tidsserier för univariate data som kan utökas för att stödja data med en systematisk trend eller säsongskomponent.
det är en kraftfull prognosmetod som kan användas som ett alternativ till den populära Box-Jenkins ARIMA-familjen av metoder.
i denna handledning kommer du att upptäcka exponentiell utjämningsmetod för univariate time series prognoser.,
Efter att ha slutfört denna handledning kommer du att veta:
- vad exponentiell utjämning är och hur det skiljer sig från andra prognosmetoder.
- de tre huvudtyperna av exponentiell utjämning och hur man konfigurerar dem.
- hur man implementerar exponentiell utjämning i Python.
Starta ditt projekt med min nya Boktidsserieprognos med Python, inklusive steg-för-steg-handledning och Python-källkodsfilerna för alla exempel.
låt oss komma igång.,
en mild introduktion till exponentiell utjämning för tidsserier prognoser i Python
foto av Wolfgang Staudt, vissa rättigheter reserverade.
handledning Översikt
denna handledning är uppdelad i 4 delar; de är:
- Vad är exponentiell utjämning?
- typer av exponentiell utjämning
- Hur konfigurerar exponentiell utjämning
- exponentiell utjämning i Python
Vad är exponentiell utjämning?
exponentiell utjämning är en prognosmetod för tidsserier för univariate data.,
tidsseriemetoder som Box-Jenkins ARIMA-familjen av metoder utvecklar en modell där förutsägelsen är en viktad linjär summa av senaste tidigare observationer eller lags.
exponentiell utjämning prognosmetoder är likartade genom att en förutsägelse är en viktad summa av tidigare observationer, men modellen använder uttryckligen en exponentiellt minskande vikt för tidigare observationer.
specifikt viktas tidigare observationer med ett geometriskt minskande förhållande.,
prognoser som produceras med hjälp av exponentiella utjämningsmetoder är viktade medelvärden av tidigare observationer, med vikterna förfaller exponentiellt när observationerna blir äldre. Med andra ord, ju senare observationen desto högre är den associerade vikten.
— sidan 171, prognos: principer och praxis, 2013.
exponentiella utjämningsmetoder kan betraktas som kamrater och ett alternativ till den populära Box-Jenkins ARIMA-klassen av metoder för tidsserieprognoser.,
kollektivt kallas metoderna ibland ETS-modeller, med hänvisning till explicit modellering av fel, Trend och säsonglighet.
typer av exponentiell utjämning
det finns tre huvudtyper av exponentiell utjämning tidsserier prognosmetoder.
en enkel metod som förutsätter ingen systematisk struktur, en förlängning som uttryckligen hanterar trender och den mest avancerade metoden som lägger till stöd för säsongsvariationer.,
enkel exponentiell utjämning
enkel exponentiell utjämning, SES för kort, även kallad enkel exponentiell utjämning, är en tidsserie prognosmetod för univariate data utan en trend eller säsongs.
det kräver en enda parameter, kallad alfa (A), även kallad utjämningsfaktorn eller utjämningskoefficienten.
denna parameter styr den hastighet med vilken observationernas påverkan vid tidigare steg förfaller exponentiellt. Alpha är ofta inställd på ett värde mellan 0 och 1., Stora värden innebär att modellen främst uppmärksammar de senaste tidigare observationerna, medan mindre värden betyder mer av historien beaktas när man gör en förutsägelse.
ett värde nära 1 indikerar snabb inlärning (det vill säga endast de senaste värdena påverkar prognoserna), medan ett värde nära 0 indikerar långsam inlärning (tidigare observationer har ett stort inflytande på prognoser).
— sidan 89, praktiska tidsserier prognoser med r, 2016.,
Hyperparametrar:
- Alfa: Utjämningsfaktor för nivån.
Dubbel exponentiell utjämning
Dubbel exponentiell utjämning är ett tillägg till exponentiell utjämning som uttryckligen lägger till stöd för trender i univariate tidsserien.
förutom alfa-parametern för styrning av utjämningsfaktorn för nivån tillsätts en ytterligare utjämningsfaktor för att kontrollera förfallet av påverkan av förändringen i trend som kallas beta (B).,
metoden stöder trender som förändras på olika sätt: en tillsats och en multiplikativ, beroende på om trenden är linjär respektive exponentiell.
Dubbel exponentiell utjämning med en additiv trend kallas klassiskt Holts linjära trendmodell, uppkallad efter utvecklaren av metoden Charles Holt.
- additiv Trend: Dubbel exponentiell utjämning med en linjär trend.
- multiplikativ Trend: Dubbel exponentiell utjämning med en exponentiell trend.,
för prognoser för längre intervall (multi-step) kan trenden fortsätta på orealistiskt. Som sådan kan det vara användbart att dämpa trenden över tiden.
dämpning innebär att trendens storlek minskar över framtida tidssteg ner till en rak linje (ingen trend).
prognoserna som genereras av Holts linjära metod visar en konstant trend (ökar eller minskar) oanständigt in i framtiden., Ännu mer extrema är prognoserna som genereras av exponentiell trendmetod motiverad av denna observation introducerade en parameter som” dämpar ” trenden till en platt linje någon gång i framtiden.
— sidan 183, prognos: principer och praxis, 2013.
som med modellering av trenden själv kan vi använda samma principer för att dämpa trenden, specifikt additivt eller multiplikativt för en linjär eller exponentiell dämpningseffekt. En dämpningskoefficient Phi (p) används för att styra dämpningshastigheten.,
- additiv dämpning: dämpa en trend linjärt.
- multiplikativ dämpning: dämpa trenden exponentiellt.
Hyperparametrar:
- Alfa: Utjämningsfaktor för nivån.
- Beta: Utjämningsfaktor för trenden.
- Trendtyp: additiv eller multiplikativ.
- Dämpad typ: additiv eller multiplikativ.
- Phi: Dämpningskoefficient.
Triple exponentiell utjämning
Triple exponentiell utjämning är en förlängning av exponentiell utjämning som uttryckligen lägger till stöd för säsongs till univariate tidsserien.,
denna metod kallas ibland Holt-Winters exponentiell utjämning, uppkallad efter två bidragsgivare till metoden: Charles Holt och Peter Winters.
förutom alfa-och betautjämningsfaktorerna läggs en ny parameter till kallad gamma (g) som styr påverkan på säsongskomponenten.
som med trenden kan säsongsvariationen modelleras som antingen en additiv eller multiplikativ process för en linjär eller exponentiell förändring i säsongsvariationen.
- additiv säsongsmässighet: trippel exponentiell utjämning med en linjär säsongsmässighet.,
- multiplikativ säsongsmässighet: trippel exponentiell utjämning med en exponentiell säsongsmässighet.
Triple exponentiell utjämning är den mest avancerade variationen av exponentiell utjämning och genom konfiguration, det kan också utveckla dubbla och enda exponentiell utjämning modeller.
att vara en adaptiv metod, Holt-Winter exponentiell utjämning tillåter nivå, trend och säsongs mönster att förändras över tiden.
— sidan 95, praktiska tidsserier prognoser med r, 2016.,
för att säkerställa att säsongsvariationen är korrekt modellerad måste antalet tidssteg under en säsongsperiod (Period) anges. Till exempel, om serien var månadsdata och säsongsperioden upprepas varje år, då perioden=12.
Hyperparametrar:
- Alfa: Utjämningsfaktor för nivån.
- Beta: Utjämningsfaktor för trenden.
- Gamma: Utjämningsfaktor för säsongsvariationen.
- Trendtyp: additiv eller multiplikativ.
- Dämpad typ: additiv eller multiplikativ.
- Phi: Dämpningskoefficient.,
- säsongsmässig Typ: additiv eller multiplikativ.
- Period: tidssteg under säsongsperioden.
så här konfigurerar du exponentiell utjämning
alla modellhyperparametrar kan anges uttryckligen.
detta kan vara utmanande för både experter och nybörjare.
istället är det vanligt att använda numerisk optimering för att söka efter och finansiera utjämningskoefficienterna (alfa, beta, gamma och phi) för modellen som resulterar i det lägsta felet.,
ett mer robust och objektivt sätt att få värden för okända parametrar som ingår i någon exponentiell utjämningsmetod är att uppskatta dem från de observerade data. de okända parametrarna och de ursprungliga värdena för någon exponentiell utjämningsmetod kan uppskattas genom att minimera SSE .
— Sidan 177, Prognoser: principer och praxis, 2013.,
de parametrar som anger typen av förändring i trend och säsongsvariation, såsom väder de är additiva eller multiplikativa och om de ska dämpas, måste anges uttryckligen.
exponentiell utjämning i Python
det här avsnittet tittar på hur man implementerar exponentiell utjämning i Python.
implementeringarna av exponentiell utjämning i Python tillhandahålls i Statsmodels Python-biblioteket.,
implementeringarna baseras på beskrivningen av metoden i rob Hyndman och George Athanasopoulos utmärkta bok ”prognos: principer och praxis”, 2013 och deras r-implementeringar i deras ”prognos” – paket.
enkel exponentiell utjämning
enkel exponentiell utjämning eller enkel utjämning kan implementeras i Python via SimpleExpSmoothing Statsmodels klassen.
För det första måste en instans av SimpleExpSmoothing klassen instansieras och passerade träningsdata., Fit () – funktionen kallas sedan för att tillhandahålla fit-konfigurationen, speciellt alfavärdet smoothing_level. Om detta inte tillhandahålls eller är inställt på ingen, optimerar modellen automatiskt värdet.
funktionen fit() returnerar en instans av klassen HoltWintersResults som innehåller de inlärda koefficienterna. Prognosen() eller funktionen predict () på resultatobjektet kan anropas för att göra en prognos.,
till exempel:
dubbel och trippel exponentiell utjämning
enkel, dubbel och trippel exponentiell utjämning kan genomföras i Python med hjälp av ExponentialSmoothing Statsmodels klass.
först måste en instans av ExponentialSmoothing-klassen instansieras, med angivande av både träningsdata och viss konfiguration för modellen.
specifikt måste du ange följande konfigurationsparametrar:
- trend: typ av trendkomponent, som antingen ”Lägg till” för tillsats eller ”mul” för multiplikativ. Modellering trenden kan inaktiveras genom att ställa in den till ingen.,
- dämpad: huruvida trendkomponenten ska dämpas, antingen sant eller falskt.
- säsong: typ av säsongskomponent, som antingen ”Lägg till” för tillsats eller ”mul” för multiplikativ. Modellering av säsongskomponenten kan inaktiveras genom att ställa in den till ingen.
- seasonal_periods: antalet tidssteg under en säsongsperiod, t.ex. 12 i 12 månader i en årlig säsongsstruktur (mer här).
modellen kan sedan passa på träningsdata genom att anropa fit () – funktionen.,
med den här funktionen kan du antingen ange utjämningskoefficienterna för exponentiell utjämningsmodell eller få dem optimerade. Som standard är de optimerade (t.ex. optimerade=Sant). Dessa koefficienter inkluderar:
- smoothing_level (alpha): utjämningskoefficienten för nivån.
- smoothing_slope (beta): utjämningskoefficienten för trenden.
- smoothing_seasonal (gamma): utjämningskoefficienten för säsongskomponenten.
- damping_slope (phi): koefficienten för dämpad trend.,
dessutom kan fit-funktionen utföra grundläggande dataförberedelse före modellering; specifikt:
- use_boxcox: huruvida du ska utföra en effektförändring av serien (Sant/Falskt) eller ange lambda för transformationen.
funktionen fit() returnerar en instans av klassen HoltWintersResults som innehåller de inlärda koefficienterna. Prognosen() eller funktionen predict () på resultatobjektet kan anropas för att göra en prognos.
Ytterligare läsning
det här avsnittet innehåller mer resurser om ämnet om du vill gå djupare.,
Tutorials
- hur man Grid Sök Triple exponentiell utjämning för tidsserier prognoser i Python
böcker
- Kapitel 7 exponentiell utjämning, prognoser: principer och praxis, 2013.
- Avsnitt 6.4. Introduktion till Time Series Analysis, Engineering Statistics Handbook, 2012.
- praktiska tidsserier prognoser med R, 2016.
API
- Statsmodels time Series analysis tsa
- statsmodels.tsa.holtwinters.SimpleExpSmoothing API
- statsmodels.tsa.holtwinters.ExponentialSmoothing API
- statsmodels.,tsa.holtwinters.HoltWintersResults API
- prognos: Prognosfunktioner för tidsserier och linjära modeller r-paket
artiklar
- exponentiell utjämning på Wikipedia
sammanfattning
i den här guiden upptäckte du exponentiell utjämningsmetod för univariate time series prognoser.
specifikt lärde du dig:
- vad exponentiell utjämning är och hur det skiljer sig från andra prognosmetoder.
- de tre huvudtyperna av exponentiell utjämning och hur man konfigurerar dem.,
- hur man implementerar exponentiell utjämning i Python.
har du några frågor?
Ställ dina frågor i kommentarerna nedan och jag kommer att göra mitt bästa för att svara.
vill du utveckla Tidsserieprognoser med Python?
utveckla dina egna prognoser på några minuter
…,med bara några rader av python-kod
Upptäck hur i min nya Ebook:
introduktion till Time Series prognoser med Python
det omfattar självstudier tutorials och end-to-end projekt om ämnen som:laddar data, visualisering, modellering, algoritm tuning, och mycket mer…
slutligen föra tidsserier prognoser till
dina egna projekt
hoppa över akademiker. Bara Resultat.
se vad som finns inuti