Klikk for å lære mer om forfatter Maarit Widmann.
En komplett tidsserieanalyseapplikasjon dekker trinnene i en data Science syklus fra tilgang til transformering, modellering, evaluering og distribusjon av tidsseriedata. For tidsseriedata er imidlertid de spesifikke oppgavene i disse trinnene forskjellige sammenlignet med tverrsnittsdata. For eksempel samles tverrsnittsdata inn som et øyeblikksbilde av ett objekt på ett tidspunkt, mens tidsseriedata samles inn ved å observere det samme objektet over en tidsperiode. De vanlige mønstrene i tidsseriedata har sin spesifikke terminologi, og de bestemmer nødvendig forbehandling før man går videre til modellering av tidsserier. Tidsserier kan modelleres med mange typer modeller, men spesifikke tidsseriemodeller, for eksempel en ARIMA-modell, tar i bruk den tidsmessige strukturen mellom observasjonene.
I denne artikkelen introduserer vi de vanligste oppgavene i reisen med å bygge en tidsserieapplikasjon. Til slutt setter vi teorien ut i praksis ved å bygge en eksempelapplikasjon i Analytics-plattformen.
Få tilgang til tidsserier
Tidsserier har ulike kilder og bruksområder: daglige salgsdata for etterspørselsprediksjon, årlige makroøkonomiske data for langsiktig politisk planlegging, sensordata fra en smartklokke for å analysere en treningsøkt, og mange flere. Alle disse tidsseriene er forskjellige, for eksempel når det gjelder granularitet, regularitet og renslighet: Vi kan være sikre på at vi har en BNP-verdi for landet vårt for dette året og for de neste 10 årene også, men vi kan ikke garantere at sensoren til smartklokken vår yter stabilt under enhver trening og ved hvilken som helst temperatur. Det kan også være at tidsseriedata ikke er tilgjengelig med jevne mellomrom, men kun kan samles inn fra tilfeldige hendelsespunkter, som sykdomsinfeksjoner eller spontane kundebesøk. Det alle disse typer tidsseriedata har til felles, er imidlertid at de er samlet inn fra samme kilde over tid.
Regulering og rengjøring tidsserier
Når vi har tidsseriedataene, er neste trinn å gjøre dem likt fordelt med passende granularitet, kontinuerlig og ren. De nødvendige oppgavene avhenger av den opprinnelige formen på dataene og også vår analytics hensikt. Hvis vi for eksempel planlegger en én ukes kampanje for et produkt, kan vi være interessert i mer detaljerte data enn om vi ønsker å få en oversikt over salget av et produkt.
Sortering
Tidsserier må sorteres etter tid. Når du deler data inn i trenings- og testsett, husk å bevare den tidsmessige strukturen mellom postene ved å ta data fra topp/bunn for testing/trening. Hvis dataene dine inneholder mer enn én oppføring per tidsstempel, må du samle dem etter tidsstemplet. For eksempel, når du har flere bestillinger per dag og du er interessert i det daglige salget, må du summere salget for hver dag. Videre, hvis du er interessert i tidsserien med en annen granularitet enn det du for øyeblikket har i dataene (for eksempel månedlig salg i stedet for daglig salg), kan du videre aggregere dataene med den foretrukne granulariteten.
Verdier som mangler
Hvis noen tidsstempler mangler, må du introdusere dem til tidsserien for å få den jevnt fordelt. Noen ganger er de manglende postene en del av dynamikken i tidsserien (for eksempel stenger et aksjemarked på en fredag og åpner på en mandag).
Når du introduserer de manglende tidsstemplene til dataene, mangler selvfølgelig de tilsvarende verdiene. Du kan imputere disse manglende verdiene ved for eksempel lineær interpolasjon eller glidende gjennomsnittsverdier. Husk imidlertid at den beste teknikken for å beregne manglende verdier avhenger av den vanlige dynamikken i dataene. For eksempel, hvis du inspiserer ukentlig sesongvariasjon i daglige data, og en verdi på en lørdag mangler, er den siste lørdagens verdi sannsynligvis den beste erstatningen. Hvis de manglende verdiene ikke mangler tilfeldig, som de manglende sluttkursene på aksjemarkedet i helgene, kan du erstatte dem med en fast verdi, som vil være 0 i dette tilfellet. På den annen side, hvis de manglende verdiene er tilfeldige og de forekommer langt nok i fortiden, kan du bruke dataene etter den manglende verdien, og ignorere de eldre dataene.
Uregelmessige mønstre
En god måte å håndtere raske svingninger og avvik på er å jevne ut dataene. Flere teknikker kan brukes, som f.eks glidende gjennomsnitt og eksponensiell utjevning. Ved å kutte verdiene som ligger utenfor værhårene til et boksplott, jevnes dataene også ut. Husk at sterk sesongvariasjon i dataene kan føre til et utbredt boksplott, og da er det bedre å bruke et betinget boksplott for å oppdage uteliggere.
Noen ganger viser imidlertid tidsserien bare et veldig uregelmessig fenomen! I et slikt tilfelle kan du prøve å gjøre tidsserien mer regelmessig ved å trekke ut en delmengde av den, for eksempel ved å vurdere bare salget av ett produkt i stedet for salget til hele supermarkedet, eller ved å gruppere dataene.
Utforske og transformere tidsserier
På dette tidspunktet har vi tidsseriedataene våre i form som er egnet for å utforske dem visuelt og numerisk. De forskjellige plottene og statistikkene avslører lang- og kortsiktige mønstre og tidsmessige sammenhenger i tidsserien som vi kan bruke til å bedre forstå dynamikken i den og forutsi dens fremtidige utvikling.
Visuell utforskning av tidsserier
Det grunnleggende plottet for å utforske tidsserier er linjeplottet (Figur 3) som viser en mulig retning, regelmessige og uregelmessige fluktuasjoner, uteliggere, gap eller vendepunkter i tidsserien. Hvis du observerer et regelmessig mønster i tidsserien din, for eksempel årlig sesongvariasjon i salget av drikkevarer, kan du deretter inspisere hver sesongsyklus (år) separat i et sesongbasert plot (figur 3). I sesongplottet kan du for eksempel enkelt se om juli var en sterkere salgsmåned i år enn i fjor, eller om månedsomsetningen øker år for år.
Hvis du er interessert i hva som skjer innenfor sesongene, for eksempel hva som er mediansalget i sommermånedene og hvor mye og i hvilken retning salget varierer hver måned, kan du inspisere denne typen dynamikk i et betinget boksplott(figur 3). Nok et nyttig plott for å utforske tidsserier er etterslepplotet (figur 3). Lagsplottet viser forholdet mellom gjeldende verdier og tidligere verdier, for eksempel salg i dag og salg uke før.
Klassisk dekomponering av tidsserier
Klassisk dekomponering, det vil si å dekomponere tidsserien i trend, sesongvariasjoner og gjenværende, gir en god målestokk for prognoser. Den resterende delen av tidsserien, resten, er ment å være stasjonær, og kan for eksempel prognoseres av en ARIMA-modell. Husk imidlertid at hvis restserien ikke er stasjonær, kan det være nødvendig med noen ekstra transformasjoner, for eksempel førsteordens forskjell eller loggtransformasjon av den opprinnelige tidsserien.
For det første, hvis tidsserien viser en retning, en trend, kan tidsserien avbrytes, for eksempel ved å tilpasse en regresjonsmodell gjennom dataene, eller ved å beregne en glidende gjennomsnittsverdi.
For det andre, hvis tidsserien viser en regelmessig svingning – en sesongvariasjon – kan tidsserien justeres for det. Du kan finne etterslepet der den store sesongvariasjonen oppstår i autokorrelasjonsplottet til tidsserien. For eksempel, hvis du observerer en topp ved lag 7, og du har daglige data, vil dataene ha ukentlig sesongvariasjon. Sesongvariasjonen kan justeres ved å skille dataene med etterslepet der den store toppen oppstår. Hvis du ønsker å justere andre sesongvariasjoner i dataene, kan du gjøre det ved å gjenta prosedyren for den justerte (forskjellige) tidsserien.
Til slutt, når du har nådd en stasjonær tidsserie som er klar til å bli modellert av for eksempel en ARIMA-modell, kan du gjøre en siste sjekk med f.eks. Ljung-boks test for stasjonaritet.
Modellering og evaluering av tidsserier
Nå går vi videre til å modellere den resterende delen av tidsserien som inneholder dens uregelmessige dynamikk. Vi kan gjøre dette med ARIMA-modeller, maskinlæring modeller, nevrale nettverk og mange varianter av dem. Vi modellerer ofte den resterende delen av tidsserien etter disse modellene, fordi den er stasjonær. Det er imidlertid ikke alltid nødvendig å dekomponere tidsserien, fordi noen modeller, som for eksempel den sesongbaserte ARIMA-modellen, også fungerer for modellering av ikke-stasjonære tidsserier.
I det følgende samler vi noen av egenskapene til disse forskjellige modelleringsteknikkene, deres likheter og forskjeller, slik at du kan velge den beste for ditt bruk. Husk også at det er nyttig å trene flere modeller, og til og med bygge et ensemble av dem!
ARIMA-modeller
ARIMA (Autoregressive Integrated Moving Average)-modellen er en lineær regresjonsmodell mellom nåværende og tidligere verdier (AR-del), og også mellom nåværende og tidligere prognosefeil (MA-del). Hvis modellen har en I-del som ikke er null, blir dataene differensiert for å gjøre den stasjonær. Grunnleggende ARIMA-modeller antar at tidsserien er stasjonær, og stasjonære tidsserier har ikke forutsigbare mønstre på lang sikt. Den fallende nøyaktigheten i langtidsprognosene kan sees i de økende konfidensintervallene til prognosene. Å ha mer data er ikke alltid bedre for å trene ARIMA-modeller: Store datasett kan gjøre det tidkrevende å estimere modellparametrene til en ARIMA-modell, samt overdrive forskjellen mellom den sanne prosessen og modellprosessen.
Maskinlæringsmodeller
Maskinlæringsmodeller bruker de forsinkede verdiene som prediktorkolonner, og de ignorerer den tidsmessige strukturen mellom målkolonnen og prediktorkolonnene. Maskinlæringsmodeller kan også identifisere langsiktige mønstre og vendepunkter i dataene, forutsatt at det er gitt nok data i treningsdataene til å etablere disse mønstrene. Generelt er det slik at jo flere uregelmessigheter dataene viser, jo mer data trengs for å trene modellen. Når du bruker en maskinlæringsmodell, anbefales det å modellere resten. Ellers kan du bygge en modell som er mer komplisert enn den klassiske nedbrytningsmodellen, men som faktisk ikke lærer noe nytt på toppen av det!
Tips om modellvalg
For det første er noen fenomener vanskelige å forutsi, og i et slikt tilfelle er det ofte fornuftig å gå for en enklere modell og ikke investere ressurser i å modellere noe som ikke kan forutses nøyaktig.
For det andre er ikke modellens ytelse det eneste kriteriet. Hvis viktige beslutninger er basert på resultatene av modellen, kan tolkningsevnen være viktigere enn en litt bedre ytelse. Når det er sagt, kan et nevralt nettverk tape mot en enkel klassisk dekomponeringsmodell, selv om den forutsier noe bedre.
For det tredje kan det å legge til forklarende variabler i modellen forbedre prognosenøyaktigheten. Men i en slik modell må de forklaringsvariablene også prognoseres, og den økende kompleksiteten til modellen er ikke alltid verdt den bedre nøyaktigheten. Noen ganger er grove anslag nok til å støtte avgjørelsene: Hvis fraktbeløp beregnes i titalls og hundrevis, trenger heller ikke prognosebehovet å ha en større detaljnivå.
Modellevaluering
Etter å ha trent en modell, er neste trinn å evaluere den. For in-sample prognoser er testsettet selve treningssettet, så modellprosessen tilpasses dataene som ble brukt til å trene modellen. For prognoser utenom utvalg, er testsettet etter treningssettet i tid.
En anbefalt feilmåling for å evaluere en tidsseriemodell er den gjennomsnittlige absolutte prosentvise feilen (KART), siden den gir feilen i en universell skala, som en prosentandel av den faktiske verdien. Imidlertid, hvis den sanne verdien er null, er ikke denne beregningen definert, og da også andre feilmålinger, som rotmiddelkvadratfeilen (RMSE), Vil gjøre. Det som ofte anbefales er imidlertid å IKKE bruke R-kvadrat. Den R-kvadrerte metrikken passer ikke inn i konteksten til tidsserieanalyse fordi fokuset er på å forutsi fremtidig systematisk variasjon av målkolonnen i stedet for å modellere all variasjon i fortiden.
Prognose og rekonstruere tidsserier
Vi er nesten der! Det siste trinnet er å forutsi fremtidige verdier og rekonstruere signalet.
Dynamisk prognoser
Hvis du har en modell som ikke kan gi nøyaktige prognoser på lang sikt, forbedrer dynamisk distribusjon ofte prognosenøyaktigheten utenom utvalget. I dynamisk distribusjon prognoseres bare ett punkt i fremtiden om gangen, og tidligere data oppdateres med denne prognoseverdien for å generere neste prognose (figur 5).
Gjenopprette trend og sesongvariasjoner
Til slutt, hvis vi dekomponerer tidsserien før prognoser, må vi gjenopprette trenden og/eller sesongvariasjonene til prognosene. Hvis vi justerer sesongvariasjonen ved å skille dataene, begynner vi å rekonstruere signalet ved å legge til verdier ved etterslepet der sesongvariasjonen oppstår. Hvis vi for eksempel hadde daglige data y der vi brukte sesongforskjell ved lag 7 (ukentlig sesongvariasjon), ville gjenoppretting av denne sesongvariasjonen kreve følgende beregning til prognoseverdiene yt+1, yt+2, ..., yt+h :
hvor ti er det siste tidspunktet i treningsdataene, og h er prognosehorisonten.
For å gjenopprette andre sesongvariasjoner, vil vi gjenta trinnet beskrevet ovenfor for den gjenopprettede tidsserien. Hvis vi ønsket å gjenopprette trendkomponenten til tidsserien, ville vi brukt regresjonsmodellen som representerer trenden på den gjenopprettede tidsserien.
Fullfør tidsserieapplikasjonen i Analytics-plattformen
Til slutt, la oss ta en titt på hvordan du gjør disse trinnene til praksis ved å bruke vår Analytics-plattform. Arbeidsflyten Få tilgang til Transforming and Modeling Time Series (tilgjengelig på huben) i figur 6 viser trinnene fra tilgang til rengjøring, visuelt utforskning, nedbryting og modellering av tidsserier. Til noen av disse oppgavene bruker vi tidsseriekomponenter som innkapsler arbeidsflyter som funksjonaliteter spesifikke for tidsserier: aggreger dataene med valgt granularitet, utfør den klassiske dekomponeringen og mer.
I dette eksemplet bruker vi Eksempel – Superstore data levert av Tableau. I vår analyse fokuserer vi på bestillingene av alle produkter fra 2014 til 2017 – til sammen 9994 poster. Vi starter forbehandlingen ved å omforme dataene til tidsseriedata ved å beregne det totale salget per dag. Nå har vi bare én verdi per dag, men noen dager mangler fordi det ikke ble sendt inn noen bestillinger på disse dagene. Derfor introduserer vi disse dagene til tidsserien og erstatter de manglende salgsverdiene med en fast verdi 0. Etter det aggregerer vi dataene på månedsnivå, og vurderer gjennomsnittlig salg i hver måned i videre analyse.
For visuell utforskning aggregerer vi også dataene på årsnivå, og vi finner ut at det er et vendepunkt i begynnelsen av året 2015, som linjediagrammet til høyre i figur 7 viser. Linjediagrammet til venstre viser den årlige sesongvariasjonen i dataene: det er to vanlige topper ved slutten av hvert år, og en lavere topp ved begynnelsen av hvert år. Vi oppdager også årlige sesongvariasjoner i dataene, som vist ved den store toppen ved lag 12 i ACF-plottet til venstre. Vi dekomponerer tidsserien i dens trend, sesongvariasjon og residual, og disse komponentene er vist i linjeplottet i midten i figur 7. ACF-plottet til høyre viser ingen signifikant autokorrelasjon i residualserien.
Deretter modellerer vi restserien av månedlig gjennomsnittlig salg med en ARIMA-modell. Etter forskjell ved lag 12 er lengden på tidsserien 36 observasjoner. Vi ser etter den beste modellen med Auto ARIMA Learner-komponenten med maks rekkefølge 4 for AR- og MA-delene og maksbestilling 1 for I-delen. Den beste modellen basert på Akaike informasjonskriterium er ARIMA (0, 1, 4), og den resulterende MAPE basert på prognoser i utvalg er 1.153.
Til slutt vurderer vi modellens prognosenøyaktighet utenfor prøven. Arbeidsflyten Prognose og rekonstruere tidsserier (tilgjengelig på Hub) i figur 8 viser hvordan man kan anslå det daglige salget i 2017 basert på månedlige data i årene 2014 til 2016 (24 observasjoner), og den vinnende ARIMA (0,1,4)-modellen ved bruk av dynamisk distribusjon nærme seg. Deretter rekonstruerer vi signalet, i dette tilfellet gjenoppretter vi trenden og den årlige sesongvariasjonen til prognoseverdiene (12 månedlige gjennomsnittlige salgsverdier). Vi sammenligner de faktiske verdiene og prognoseverdiene, og får en MAPE på 0.336.
Oppsummering
Tidsserier, det være seg sensordata som viser oppførselen til et lite objekt nanosekund etter nanosekund, makroøkonomiske data for det 20. århundre, eller noe i mellom, har spesifikke analyseteknikker som gjelder for tilgang til, manipulering og modellering av trinn.
I denne artikkelen har vi introdusert deg til det grunnleggende om analyseteknikker for tidsserier som hjelper deg å komme i gang når du jobber med tidsseriedata.
Referanser
[1] Chambers, John C., Satinder K. Mullick og Donald D. Smith. Hvordan velge riktig prognoseteknikk. Harvard University, Graduate School of Business Administration, 1971.
[2] Hyndman, Rob J. og George Athanasopoulos. Forecasting: Prinsipper og praksis. OTexts, 2018.
Kilde: https://www.dataversity.net/building-a-time-series-analysis-application/
- Absolute
- Ytterligere
- analyse
- analytics
- Søknad
- søknader
- AR
- Artikkel
- auto
- Grunnleggende
- benchmark
- BEST
- Drikkevarer
- kroppen
- Eske
- bygge
- Bygning
- virksomhet
- Rengjøring
- Kolonne
- Felles
- komponent
- selvtillit
- land
- Gjeldende
- dato
- dag
- Etterspørsel
- Utvikling
- sykdom
- estimater
- Event
- Øvelse
- leting
- Figur
- Endelig
- Først
- passer
- Fokus
- Fredag
- framtid
- BNP
- general
- George
- god
- oppgradere
- Håndtering
- harvard
- Harvard University
- Hvordan
- Hvordan
- HTTPS
- Hundrevis
- identifisere
- bilde
- Infeksjoner
- informasjon
- IT
- Juli
- stor
- føre
- LÆRE
- lærer
- læring
- Nivå
- linje
- Lang
- maskinlæring
- større
- marked
- Metrics
- modell
- modellering
- mandag
- månedlige data
- måneder
- flytte
- nettverk
- nettverk
- neural
- nevrale nettverket
- nevrale nettverk
- åpner
- rekkefølge
- ordrer
- Annen
- Mønster
- ytelse
- planlegging
- plattform
- prediksjon
- Produkt
- Produkter
- forfremmelse
- poster
- regresjon
- Relasjoner
- Ressurser
- Resultater
- salg
- Skala
- Skole
- valgt
- forstand
- Serien
- sett
- Levering
- Enkelt
- liten
- Smart
- Snapshot
- So
- Begynn
- startet
- statistikk
- lager
- aksjemarked
- innsendt
- sommer
- støtte
- Tableau
- Target
- test
- Grunnleggende
- Fremtiden
- tid
- topp
- Kurs
- Transformation
- Universell
- universitet
- verdi
- Se
- uke
- ukentlig
- Hva er
- Wikipedia
- innenfor
- Arbeid
- arbeidsflyt
- trening
- verdt
- år
- år
- null