Klik voor meer informatie over auteur Maarit Widmann.
Een complete toepassing voor tijdreeksanalyse omvat de stappen in a data Science cyclus van het verkrijgen van toegang tot het transformeren, modelleren, evalueren en implementeren van tijdreeksgegevens. Voor tijdreeksgegevens verschillen de specifieke taken in deze stappen echter in vergelijking met cross-sectionele gegevens. Cross-sectionele gegevens worden bijvoorbeeld verzameld als een momentopname van één object op een bepaald tijdstip, terwijl tijdreeksgegevens worden verzameld door hetzelfde object gedurende een bepaalde periode te observeren. De reguliere patronen in tijdreeksgegevens hebben hun specifieke terminologie en bepalen de vereiste voorbewerking voordat wordt overgegaan tot het modelleren van tijdreeksen. Tijdreeksen kunnen met veel soorten modellen worden gemodelleerd, maar specifieke tijdreeksmodellen, zoals een ARIMA-model, maken gebruik van de temporele structuur tussen de waarnemingen.
In dit artikel introduceren we de meest voorkomende taken tijdens het bouwen van een tijdreekstoepassing. Tenslotte brengen we de theorie in de praktijk door een voorbeeldapplicatie te bouwen in het Analytics Platform.
Toegang tot tijdreeksen
Tijdreeksen hebben verschillende bronnen en toepassingen: dagelijkse verkoopgegevens voor het voorspellen van de vraag, jaarlijkse macro-economische gegevens voor politieke planning op de lange termijn, sensorgegevens van een smartwatch voor het analyseren van een trainingssessie, en nog veel meer. Al deze tijdreeksen verschillen bijvoorbeeld in hun granulariteit, regelmaat en zuiverheid: we kunnen er zeker van zijn dat we voor dit jaar een bbp-waarde voor ons land hebben, en ook voor de komende tien jaar, maar we kunnen niet garanderen dat de sensor van ons slimme horloge presteert stabiel bij elke oefening en bij elke temperatuur. Het kan ook zijn dat tijdreeksgegevens niet met regelmatige tussenpozen beschikbaar zijn, maar alleen kunnen worden verzameld op basis van willekeurige gebeurtenispunten, zoals ziekte-infecties of spontane klantbezoeken. Wat al dit soort tijdreeksgegevens echter gemeen hebben, is dat ze in de loop van de tijd uit dezelfde bron worden verzameld.
Tijdreeksen voor regularisatie en reiniging
Zodra we de tijdreeksgegevens hebben, is de volgende stap om deze op gelijke afstand van elkaar te maken met een geschikte granulariteit, continu en schoon. De vereiste taken zijn afhankelijk van de oorspronkelijke vorm van de gegevens en ook van onze analytics doel. Als we bijvoorbeeld een promotie van een product van een week plannen, zijn we mogelijk geïnteresseerd in gedetailleerdere gegevens dan wanneer we een overzicht willen krijgen van de verkoop van een bepaald product.
sorteer
Tijdreeksen moeten op tijd worden gesorteerd. Wanneer u gegevens in trainings- en testsets verdeelt, moet u er rekening mee houden dat u de tijdelijke structuur tussen de records behoudt door gegevens van boven/onder te gebruiken voor testen/training. Als uw gegevens meer dan één record per tijdstempel bevatten, moet u deze op tijdstempel aggregeren. Als u bijvoorbeeld meerdere bestellingen per dag heeft en geïnteresseerd bent in de dagelijkse verkopen, moet u de verkopen voor elke dag bij elkaar optellen. Als u bovendien geïnteresseerd bent in de tijdreeksen met een andere granulariteit dan wat u momenteel in de gegevens heeft (bijvoorbeeld maandelijkse verkopen in plaats van dagelijkse verkopen), kunt u de gegevens verder aggregeren met de gewenste granulariteit.
Ontbrekende waarden
Als sommige tijdstempels ontbreken, moet u ze in de tijdreeks introduceren om deze gelijkmatig verdeeld te maken. Soms maken de ontbrekende records deel uit van de dynamiek van de tijdreeksen (een aandelenmarkt sluit bijvoorbeeld op vrijdag en opent op maandag).
Wanneer u de ontbrekende tijdstempels in de gegevens introduceert, ontbreken uiteraard de bijbehorende waarden. U kunt deze ontbrekende waarden imputeren door bijvoorbeeld lineaire interpolatie of voortschrijdend gemiddelde waarden. Bedenk echter dat de beste techniek voor het toeschrijven van ontbrekende waarden afhangt van de reguliere dynamiek in de gegevens. Als u bijvoorbeeld de wekelijkse seizoensinvloeden in de dagelijkse gegevens inspecteert en er ontbreekt een waarde voor één zaterdag, dan is de waarde van de afgelopen zaterdag waarschijnlijk de beste vervanging. Als de ontbrekende waarden niet willekeurig ontbreken, zoals de ontbrekende slotkoersen van de aandelenmarkt in het weekend, kunt u ze vervangen door een vaste waarde, die in dit geval 0 zou zijn. Aan de andere kant, als de ontbrekende waarden willekeurig zijn en ver genoeg in het verleden voorkomen, kunt u de gegevens na de ontbrekende waarde gebruiken en de oudere gegevens negeren.
Onregelmatige patronen
Een goede manier om met snelle fluctuaties en uitschieters om te gaan, is door de gegevens glad te strijken. Er kunnen verschillende technieken worden gebruikt, zoals voortschrijdend gemiddelde en exponentiële afvlakking. Door de waarden die buiten de grenzen van een boxplot liggen te verwijderen, worden de gegevens bovendien vloeiender. Houd er rekening mee dat sterke seizoensinvloeden in de gegevens kunnen leiden tot een wijdverbreide boxplot, en dat het dan beter is om een voorwaardelijke boxplot te gebruiken om uitschieters te detecteren.
Soms laat de tijdreeks echter slechts een zeer onregelmatig fenomeen zien! In zo’n geval kun je proberen de tijdreeks regelmatiger te maken door er een deelverzameling van te extraheren, bijvoorbeeld door alleen de verkopen van één product te beschouwen in plaats van de verkopen van de hele supermarkt, of door de gegevens te clusteren.
Tijdreeksen verkennen en transformeren
Op dit punt hebben we onze tijdreeksgegevens in de vorm die geschikt is om deze visueel en numeriek te verkennen. De verschillende plots en statistieken onthullen lange- en kortetermijnpatronen en temporele relaties in de tijdreeksen die we kunnen gebruiken om de dynamiek ervan beter te begrijpen en de toekomstige ontwikkeling ervan te voorspellen.
Visuele verkenning van tijdreeksen
De basisgrafiek voor het onderzoeken van tijdreeksen is de lijngrafiek (Figuur 3) die een mogelijke richting, regelmatige en onregelmatige fluctuaties, uitschieters, hiaten of keerpunten in de tijdreeks laat zien. Als u een regelmatig patroon in uw tijdreeks waarneemt, zoals de jaarlijkse seizoensinvloeden in de verkoop van dranken, kunt u elke seizoenscyclus (jaar) afzonderlijk inspecteren in een seizoensgrafiek (Figuur 3). In de seizoensgrafiek kunt u bijvoorbeeld gemakkelijk zien of juli dit jaar een sterkere verkoopmaand was dan vorig jaar, of dat de maandelijkse verkopen jaar na jaar stijgen.
Als u geïnteresseerd bent in wat er binnen de seizoenen gebeurt, zoals wat de gemiddelde verkoop in de zomermaanden is en hoeveel en in welke richting de verkoop elke maand varieert, kunt u dit soort dynamiek inspecteren in een voorwaardelijke boxplot (figuur 3). Nog een ander bruikbaar plot voor het verkennen van tijdreeksen is het lag-plot (Figuur 3). De lag-grafiek toont de relatie tussen de huidige waarden en waarden uit het verleden, bijvoorbeeld de verkopen van vandaag en de verkopen van de week ervoor.
Klassieke ontleding van tijdreeksen
Klassieke decompositie, dat wil zeggen het ontleden van de tijdreeksen in trend, seizoensinvloeden en residu, biedt een goede maatstaf voor prognoses. Het resterende deel van de tijdreeks, het residu, zou dat moeten zijn stationair, en kan bijvoorbeeld worden voorspeld door een ARIMA-model. Bedenk echter dat als de resterende reeks niet stationair is, er mogelijk enkele aanvullende transformaties nodig zijn, zoals differentie van de eerste orde of logtransformatie van de oorspronkelijke tijdreeks.
Ten eerste, als de tijdreeks een richting, een trend, laat zien, kan de tijdreeks worden gedetrendeerd, bijvoorbeeld door een regressiemodel door de gegevens te passen, of door een voortschrijdend gemiddelde te berekenen.
Ten tweede: als de tijdreeks een regelmatige fluctuatie vertoont – een seizoensinvloed – kan de tijdreeks daarvoor worden aangepast. U kunt de vertraging vinden waar de belangrijkste seizoensinvloeden optreden in de autocorrelatiegrafiek van de tijdreeksen. Als u bijvoorbeeld een piek bij vertraging 7 waarneemt en u beschikt over dagelijkse gegevens, dan hebben de gegevens een wekelijkse seizoensinvloed. De seizoensinvloeden kunnen worden aangepast door de gegevens te differentiëren op het moment waarop de grootste piek optreedt. Als u de tweede seizoensinvloeden in de gegevens wilt aanpassen, kunt u dit doen door de procedure voor de aangepaste (gedifferentieerde) tijdreeksen te herhalen.
Als u tenslotte een stationaire tijdreeks heeft bereikt die klaar is om te worden gemodelleerd door bijvoorbeeld een ARIMA-model, kunt u een laatste controle uitvoeren met bijvoorbeeld Ljung-box-test voor stationariteit.
Modelleren en evalueren van tijdreeksen
Nu gaan we verder met het modelleren van het resterende deel van de tijdreeks dat de onregelmatige dynamiek ervan bevat. Dit kunnen we doen met ARIMA-modellen, machine learning modellen, neurale netwerken en vele variaties daarop. We modelleren vaak het resterende deel van de tijdreeks met deze modellen, omdat het stationair is. Het ontleden van de tijdreeksen is echter niet altijd nodig, omdat sommige modellen, zoals bijvoorbeeld het seizoensgebonden ARIMA-model, ook werken voor het modelleren van niet-stationaire tijdreeksen.
Hieronder verzamelen we enkele eigenschappen van deze verschillende modelleringstechnieken, hun overeenkomsten en verschillen, zodat u de beste kunt kiezen voor uw gebruiksscenario. Onthoud ook dat het nuttig is om meerdere modellen te trainen, en er zelfs een ensemble van te bouwen!
ARIMA-modellen
ARIMA (Autoregressief Integrated Moving Average)-model is een lineair regressiemodel tussen de huidige en vroegere waarden (AR-gedeelte), en ook tussen de huidige en vroegere voorspellingsfouten (MA-gedeelte). Als het model een I-deel heeft dat niet nul is, worden de gegevens gedifferentieerd om het stationair te maken. Basis ARIMA-modellen gaan ervan uit dat de tijdreeksen stationair zijn, en stationaire tijdreeksen hebben op de lange termijn geen voorspelbare patronen. De afnemende nauwkeurigheid van de langetermijnvoorspellingen is te zien aan de toenemende betrouwbaarheidsintervallen van de voorspellingen. Het hebben van meer gegevens is niet altijd beter voor het trainen van ARIMA-modellen: grote datasets kunnen het schatten van de modelparameters van een ARIMA-model tijdrovend maken en het verschil tussen het werkelijke proces en het modelproces vergroten.
Machine Learning-modellen
Machine learning-modellen gebruiken de vertraagde waarden als voorspellingskolommen en negeren de tijdelijke structuur tussen de doelkolom en de voorspellingskolommen. Machine learning-modellen kunnen ook langetermijnpatronen en keerpunten in de gegevens identificeren, op voorwaarde dat er voldoende gegevens in de trainingsgegevens aanwezig zijn om deze patronen vast te stellen. Over het algemeen geldt dat hoe meer onregelmatigheden de gegevens laten zien, hoe meer gegevens nodig zijn voor het trainen van het model. Wanneer u een machine learning-model toepast, is het raadzaam om het residu te modelleren. Anders bouw je misschien een model dat ingewikkelder is dan het klassieke decompositiemodel, maar dat eigenlijk niets nieuws leert!
Tips voor modelselectie
Ten eerste zijn sommige verschijnselen moeilijk te voorspellen, en in zo’n geval is het vaak zinvol om voor een eenvoudiger model te kiezen en geen middelen te investeren in het modelleren van iets dat niet nauwkeurig kan worden voorspeld.
Ten tweede zijn de prestaties van het model niet het enige criterium. Als belangrijke beslissingen gebaseerd zijn op de resultaten van het model, kan de interpreteerbaarheid ervan belangrijker zijn dan een iets betere prestatie. Dat gezegd hebbende, zou een neuraal netwerk kunnen verliezen ten opzichte van een eenvoudig klassiek decompositiemodel, hoewel het iets beter voorspelde.
Ten derde kan het toevoegen van verklarende variabelen aan uw model de nauwkeurigheid van de voorspelling verbeteren. In een dergelijk model moeten echter ook de verklarende variabelen worden voorspeld, en de toenemende complexiteit van het model is niet altijd de grotere nauwkeurigheid waard. Soms zijn ruwe schattingen voldoende om de beslissingen te ondersteunen: als de verzendkosten in tientallen en honderden worden berekend, hoeft de voorspelde vraag ook niet gedetailleerder te zijn.
Modelevaluatie
Na het trainen van een model is de volgende stap het evalueren ervan. Voor prognoses binnen de steekproef is de testset de trainingsset zelf, zodat het modelproces wordt aangepast aan de gegevens die zijn gebruikt voor het trainen van het model. Voor prognoses buiten de steekproef volgt de testset in de tijd de trainingsset.
Eén aanbevolen foutmetriek voor het evalueren van een tijdreeksmodel is de gemiddelde absolute procentuele fout (MAPE), omdat het de fout op een universele schaal weergeeft, als percentage van de werkelijke waarde. Als de werkelijke waarde echter nul is, wordt deze metriek niet gedefinieerd, en ook geen andere foutmetriek, zoals de wortel van de gemiddelde kwadratische fout (RMSE), zal ik doen. Wat echter vaak wordt aanbevolen, is om het NIET te gebruiken R-kwadraat. De R-kwadraat-metriek past niet in de context van tijdreeksanalyse, omdat de nadruk ligt op het voorspellen van toekomstige systematische variabiliteit van de doelkolom in plaats van het modelleren van alle variabiliteit in het verleden.
Voorspellen en reconstrueren van tijdreeksen
We zijn er bijna! De laatste stap is het voorspellen van toekomstige waarden en het reconstrueren van het signaal.
Dynamische prognoses
Als u een model heeft dat op de lange termijn geen nauwkeurige prognoses kan geven, verbetert dynamische implementatie vaak de nauwkeurigheid van prognoses die buiten de steekproef vallen. Bij dynamische implementatie wordt slechts één punt in de toekomst tegelijk voorspeld en worden de gegevens uit het verleden bijgewerkt met deze voorspellingswaarde om de volgende voorspelling te genereren (Afbeelding 5).
Trend- en seizoensinvloeden herstellen
Als we ten slotte de tijdreeksen ontleden voordat we gaan voorspellen, moeten we de trend en/of seizoensinvloeden in de voorspellingen herstellen. Als we de seizoensinvloeden aanpassen door de gegevens te differentiëren, beginnen we het signaal te reconstrueren door waarden toe te voegen op het moment waarop de seizoensinvloeden optreden. Als we bijvoorbeeld dagelijkse gegevens y hadden waarbij we seizoensverschillen zouden toepassen bij lag 7 (wekelijkse seizoensinvloeden), zou het herstellen van deze seizoensinvloeden de volgende berekening vereisen op basis van de voorspelde waarden yt+1, yt+2, ... yt+h :
WAAR thet laatste tijdstip in de trainingsgegevens is, en h is de voorspellingshorizon.
Om de tweede seizoensinvloeden te herstellen, zouden we de hierboven beschreven stap herhalen voor de herstelde tijdreeksen. Als we de trendcomponent naar de tijdreeks zouden willen herstellen, zouden we het regressiemodel dat de trend weergeeft, toepassen op de herstelde tijdreeks.
Voltooi de Time Series-applicatie in het Analytics Platform
Laten we tot slot eens kijken hoe u deze stappen in de praktijk kunt brengen met behulp van ons Analytics Platform. De werkstroom Toegang tot tijdreeksen voor transformatie en modellering (beschikbaar op de Hub) in Figuur 6 toont de stappen van toegang tot opschonen, visueel verkennen, ontleden en modelleren van tijdreeksen. Voor sommige van deze taken gebruiken we tijdreekscomponenten die workflows inkapselen als functionaliteiten die specifiek zijn voor tijdreeksen: aggregeren van de gegevens met de geselecteerde granulariteit, uitvoeren van de klassieke decompositie, en meer.
In dit voorbeeld gebruiken we de Voorbeeld – Superstore gegevens verstrekt door Tableau. In onze analyse concentreren we ons op de bestellingen van alle producten van 2014 tot en met 2017 – in totaal 9994 records. We starten de voorbewerking door de gegevens om te zetten in tijdreeksgegevens door de totale omzet per dag te berekenen. Nu hebben we slechts één waarde per dag, maar sommige dagen ontbreken omdat er op deze dagen geen bestellingen zijn ingediend. Daarom introduceren we deze dagen in de tijdreeksen en vervangen we de ontbrekende verkoopwaarden door een vaste waarde 0. Daarna aggregeren we de gegevens op maandniveau en houden we bij verdere analyse rekening met de gemiddelde verkopen in elke maand.
Voor visuele verkenning aggregeren we de gegevens ook op jaarniveau, en we ontdekken dat er een keerpunt is aan het begin van het jaar 2015, zoals de lijngrafiek aan de rechterkant in Figuur 7 laat zien. De lijngrafiek aan de linkerkant toont de jaarlijkse seizoensinvloeden in de gegevens: er zijn twee reguliere pieken aan het einde van elk jaar en een lagere piek aan het begin van elk jaar. We detecteren ook jaarlijkse seizoensinvloeden in de gegevens, zoals blijkt uit de grote piek bij vertraging 12 in de ACF-grafiek aan de linkerkant. We ontleden de tijdreeksen in trend, seizoensinvloeden en residu, en deze componenten worden weergegeven in de lijngrafiek in het midden van Figuur 7. De ACF-grafiek aan de rechterkant vertoont geen significante autocorrelatie in de residureeksen.
Vervolgens modelleren we de residuele reeksen van de maandelijkse gemiddelde verkopen met een ARIMA-model. Na het differentiëren bij vertraging 12 bedraagt de lengte van de tijdreeks 36 waarnemingen. We zoeken naar het beste model met de Auto ARIMA Learner-component met maximale bestelling 4 voor de AR- en MA-onderdelen en maximale bestelling 1 voor het I-onderdeel. Het best presterende model op basis van Akaike informatiecriterium is ARIMA (0, 1, 4), en de resulterende MAPE op basis van voorspellingen in de steekproef is 1.153.
Ten slotte beoordelen we de nauwkeurigheid van de voorspelling buiten de steekproef. De werkstroom Voorspellen en reconstrueren van tijdreeksen (beschikbaar op de Hub) in Figuur 8 laat zien hoe de dagelijkse verkopen in 2017 kunnen worden voorspeld op basis van de maandelijkse gegevens in de jaren 2014 tot 2016 (24 observaties) en het winnende ARIMA-model (0,1,4) met behulp van de dynamische implementatie benadering. Daarna reconstrueren we het signaal, in dit geval herstellen we de trend en de jaarlijkse seizoensinvloeden naar de voorspelde waarden (12 maandelijkse gemiddelde verkoopwaarden). We vergelijken de werkelijke en voorspelde waarden en verkrijgen een MAPE van 0.336.
Samengevat
Tijdreeksen, of het nu gaat om sensorgegevens die het gedrag van een klein object nanoseconde na nanoseconde laten zien, macro-economische gegevens voor de 20e eeuw of iets daartussenin, hebben specifieke analysetechnieken die van toepassing zijn op het verkrijgen van toegang tot, het manipuleren en het modelleren van stappen.
In dit artikel hebben we u kennis laten maken met de basisprincipes van analysetechnieken voor tijdreeksen, waarmee u aan de slag kunt gaan als u met tijdreeksgegevens werkt.
Referenties
[1] Chambers, John C., Satinder K. Mullick en Donald D. Smith. Hoe u de juiste voorspellingstechniek kiest. Harvard Universiteit, Graduate School of Business Administration, 1971.
[2] Hyndman, Rob J. en George Athanasopoulos. Prognose: principes en praktijk. OTexts, 2018.
Bron: https://www.dataversity.net/building-a-time-series-analysis-application/
- absoluut
- Extra
- analyse
- analytics
- Aanvraag
- toepassingen
- AR
- dit artikel
- auto
- De Basis
- criterium
- BEST
- Dranken
- lichaam
- Box camera's
- bouw
- Gebouw
- bedrijfsdeskundigen
- Schoonmaak
- Kolom
- Gemeen
- bestanddeel
- vertrouwen
- landen
- Actueel
- gegevens
- dag
- Vraag
- Ontwikkeling
- Ziekte
- schattingen
- Event
- Oefening
- exploratie
- Figuur
- Tot slot
- Voornaam*
- geschikt
- Focus
- vrijdag
- toekomst
- Het BBP
- Algemeen
- George
- goed
- afstuderen
- Behandeling
- harvard
- Harvard University
- Hoe
- How To
- HTTPS
- Honderden
- identificeren
- beeld
- infecties
- informatie
- IT
- juli-
- Groot
- leiden
- LEARN
- leerling
- leren
- Niveau
- Lijn
- lang
- machine learning
- groot
- Markt
- Metriek
- model
- modellering
- maandag
- maandelijkse gegevens
- maanden
- beweging
- netwerk
- netwerken
- Neural
- neuraal netwerk
- neurale netwerken
- opent
- bestellen
- orders
- Overige
- Patronen
- prestatie
- planning
- platform
- voorspelling
- Product
- Producten
- promotie
- archief
- regressie
- Relaties
- Resources
- Resultaten
- verkoop
- Scale
- School
- gekozen
- zin
- -Series
- reeks
- Verzending
- Eenvoudig
- Klein
- slim
- Momentopname
- So
- begin
- gestart
- statistiek
- voorraad
- beurs
- ingediend
- zomer
- ondersteuning
- Tableau
- doelwit
- proef
- The Basics
- De toekomst
- niet de tijd of
- top
- Trainingen
- Transformatie
- Universeel
- universiteit-
- waarde
- Bekijk de introductievideo
- week
- per week
- Wat is
- Wikipedia
- binnen
- Mijn werk
- workflow
- training
- waard
- jaar
- jaar
- nul