Hver virksomhet trenger evnen til å forutsi fremtiden nøyaktig for å ta bedre beslutninger og gi selskapet et konkurransefortrinn. Med historiske data kan bedrifter forstå trender, komme med spådommer om hva som kan skje og når, og inkludere denne informasjonen i fremtidige planer, fra produktetterspørsel til lagerplanlegging og bemanning. Hvis en prognose er for høy, kan bedrifter overinvestere i produkter og ansatte, noe som resulterer i bortkastede investeringer. Hvis prognosen er for lav, kan selskaper underinvestere, noe som fører til mangel på råvarer og varelager, noe som skaper en dårlig kundeopplevelse.
Tidsserieprognoser er en teknikk som forutsier fremtidige tidsseriedata basert på historiske data. Tidsserieprognoser er nyttig på flere felt, inkludert detaljhandel, finans, logistikk og helsetjenester. Etterspørselsprognoser bruker historiske tidsseriedata for å gjøre fremtidige estimater i forhold til kundenes etterspørsel over en spesifikk periode og effektivisere beslutningsprosessen for tilbud og etterspørsel på tvers av virksomheter. Brukstilfeller for etterspørselsprognose inkluderer å forutsi billettsalg i transportbransjen, aksjekurser, antall sykehusbesøk, antall kunderepresentanter som skal ansettes for flere lokasjoner i neste måned, produktsalg på tvers av flere regioner i neste kvartal, skyserverbruk for neste dag for en videostrømmetjeneste, strømforbruk for flere regioner i løpet av neste uke, antall IoT-enheter og sensorer som energiforbruk og mer.
Tidsseriedata er kategorisert som univariat og multivariant. For eksempel er det totale strømforbruket for en enkelt husholdning en univariat tidsserie over en periode. Når flere univariate tidsserier er stablet på hverandre, kalles det en multivariat tidsserie. For eksempel utgjør det totale strømforbruket til 10 forskjellige (men korrelerte) husholdninger i et enkelt nabolag et multivariat tidsseriedatasett.
De tradisjonelle tilnærmingene for tidsserieprognoser inkluderer automatisk regressiv integrert glidende gjennomsnitt (ARIMA) for univariate tidsseriedata og vektor autoregresjon (VAR) for multivariate tidsseriedata. Disse metodene krever ofte kjedelig dataforbehandling og funksjonsgenerering før modelltrening. Disse utfordringene løses ved hjelp av dyplæringsmetoder (DL) ved å automatisere funksjonsgenereringstrinnet før modelltrening, for eksempel å inkludere ulike datanormaliseringer, etterslep, forskjellige tidsskalaer, noen kategoriske data, håndtere manglende verdier og mer, med bedre prediksjon kraft og rask GPU-aktivert opplæring og distribusjon.
I dette innlegget viser vi deg hvordan du distribuerer en etterspørselsprognoseløsning ved hjelp av Amazon SageMaker JumpStart. Vi leder deg gjennom en ende-til-ende-løsning for en etterspørselsprognoseoppgave ved hjelp av tre toppmoderne tidsseriealgoritmer: LSTNet, Profetenog SageMaker DeepAR, som er tilgjengelige i GluonTS og Amazon SageMaker. Inndataene er en multivariabel tidsserie som inkluderer timevis strømforbruk av 321 brukere fra 2012–2014. Deretter tar hver algoritme de historiske multivariable og korrelerte tidsseriedataene for å trene og produsere nøyaktige prediksjoner (multivariate verdier) over et prediksjonsintervall. For hver av tidsseriealgoritmene har vi to utganger: en trent modell på timen data om strømforbruk og et SageMaker-endepunkt som kan forutsi fremtidige (multivariate) verdier gitt et prediksjonsintervall.
Alternativt, hvis du leter etter en fullstendig administrert tjeneste for å levere svært nøyaktige prognoser, uten å skrive kode, anbefaler vi å sjekke ut Amazon Prognose. Amazon Forecast er en tidsserieprognosetjeneste basert på maskinlæring (ML) og bygget for analyse av forretningsmålinger. Basert på den samme teknologien som brukes på Amazon.com, bruker Amazon Forecast maskinlæring for å kombinere tidsseriedata med tilleggsvariabler for å bygge prognoser.
Løsningsoversikt
Følgende diagram viser arkitekturen for ende-til-ende opplærings- og distribusjonsprosessen.
Løsningsarbeidsflyten er som følger:
- Inndata for trening ligger i en Amazon enkel lagringstjeneste (Amazon S3) bøtte.
- Den gitte SageMaker-notatbok henter inndataene og starter følgende trinn.
- For hver av de LSTNet, Profetenog SageMaker DeepAR algoritmer, trener en modell og evaluer resultatene ved hjelp av SageMaker.
- Distribuer den trente modellen og lag et SageMaker-endepunkt, som er en HTTPS-endepunkt som er i stand til å gi spådommer.
- Overvåk modelltrening og distribusjon via Amazon CloudWatch.
- Inndataene for inferencing er plassert i en S3-bøtte. Fra SageMaker-notisboken, send forespørslene til SageMaker-endepunktet og lag forutsigelser.
Forutsetninger
For å prøve ut løsningen på din egen konto, sørg for at du har følgende på plass:
- En AWS-konto for å bruke denne løsningen. Hvis du ikke har en konto, kan du registrer deg for en.
- Løsningen skissert i dette innlegget er en del av Amazon SageMaker JumpStart. For å kjøre denne JumpStart 1P-løsningen og få infrastrukturen til å distribuere til AWS-kontoen din, må du opprette en aktiv Amazon SageMaker Studio forekomst (se Ombord på Amazon SageMaker Domain).
Når Studio-forekomsten er klar, kan du starte Studio og få tilgang til JumpStart. JumpStart-funksjoner er ikke tilgjengelige i SageMaker notebook-forekomster, og du kan ikke få tilgang til dem gjennom SageMaker APIer eller AWS kommandolinjegrensesnitt (AWS CLI).
Start løsningen
For å starte løsningen, fullfør følgende trinn:
- Åpne JumpStart ved å bruke JumpStart-startprogrammet i Kom i gang eller ved å velge JumpStart-ikonet i venstre sidefelt.
- på Solutions delen velger Etterspørsel etterspørsel for å åpne løsningen i en annen Studio-fane.
- I kategorien Etterspørselsprognose velger du Start for å distribuere løsningsressursene.
- En annen fane åpnes som viser distribusjonsstatusen og de genererte artefaktene. Når distribusjonen er fullført, vises en Open Notebook-knapp. Velge Åpne Notebook for å åpne løsningsnotisboken i Studio.
I de følgende delene leder vi deg gjennom trinnene i løsningen for dyp etterspørselsprognose.
Dataforberedelse og visualisering
Datasettet vi bruker her er den multivariate tidsserien strømforbruk data hentet fra Dua, D. og Graff, C. (2019). UCI Machine Learning Repository, Irvine, CA: University of California, School of Information and Computer Science. Vi bruker en renset versjon av dataene som inneholder 321 tidsserier med 1-times frekvens, fra 1. januar 2012 med 26,304 XNUMX tidstrinn. Vi har også levert vekslingskurs datasett i tilfelle du vil prøve med andre datasett også.
Vi har levert verktøy for å lage datarammen fra tog- og testdata. Treningsdataene inkluderer timeverdier for strømforbruk (for de 321 husstandene) fra 2012-01-01 00:00:00 til 2014-05-26 19:00:00, og testdataene inneholder verdier fra 2012-01-01 00 :00:00 til 2014-06-02 19:00:00 (7 flere dager med timedata sammenlignet med treningsdataene). For å trene en prognosemodell for tidsserier CONTEXT_LENGTH
definerer lengden på hver inngangstidsserie, og PREDICTION_LENGTH definerer lengden på hver utgangstidsserie.
Fordi CONTEXT_LENGTH
og PREDICTION_LENGTH
er satt til 168 (7 dager) og 24 (neste 1 dag), plotter vi de siste 7 dagene av treningsdataene og den påfølgende 1 dagen av testdataene for demonstrasjonsformål. De plottede treningsdataene og testdataene er fra 2014-05-19 20:00:00 til 2014-05-26 19:00:00, og fra 2014-05-26 20:00:00 til 2014-05-27 02 :00:00, henholdsvis. For demonstrasjonsformål plotter vi bare de 11 tidsseriene av totalt 321, som vist i følgende figur.
Tren modellene
Denne delen demonstrerer trening LSTNet modell ved hjelp av GluonTSen Profeten modell ved hjelp av GluonTSOg SageMaker DeepAR modell med og uten hyperparameteroptimalisering (HPO). For hver av disse trente vi først modellen uten HPO, deretter trente vi modellen med HPO. Vi demonstrerer hvordan modellytelsen øker med HPO ved å vise sammenligningsverdiene, nemlig RRSE (Root Relative Squared Error), MAPE (Mean Absolute Percentage Error) og sMAPE (symmetrisk Mean Absolute Percentage Error). For HPO bruker vi RRSE som evalueringsmetrikken for alle de tre algoritmene.
Tren en optimal LSTNet-modell ved hjelp av GluonTS
LSTNet er en dyp læringsmodell som inkorporerer tradisjonelle autoregressive lineære modeller parallelt med den ikke-lineære nevrale nettverksdelen, noe som gjør den ikke-lineære dyplæringsmodellen mer robust for tidsserier som bryter med skalaendringer. For informasjon om matematikken bak LSTNet, se Modellering av lang- og kortsiktige temporale mønstre med dype nevrale nettverk.
Vi trener først en LSTNet-modell uten HPO. Med hyperparametrene definert kan vi kjøre treningsjobben. Vi bruker GluonTS med MXNet som backend dyplæringsrammeverket for å definere og trene vår LSTNet-modell. SageMaker får det til å gjøre dette med rammeberegningene, som allerede har satt opp rammene for dyp læring. Her lager vi en SageMaker MXNet-estimator og sender inn modelltreningsskriptet vårt, hyperparametre, samt antall og type treningsforekomster vi ønsker.
Deretter trener vi en optimal LSTNet-modell med HPO og forbedrer modellytelsen ytterligere med SageMaker automatisk modellinnstilling. SageMaker automatisk modellinnstilling, også kjent som hyperparameterinnstilling, finner den beste versjonen av en modell ved å kjøre mange treningsjobber på datasettet ditt ved å bruke algoritmen og rekkevidden av hyperparametere som du angir. Den velger deretter hyperparameterverdiene som resulterer i en modell som gir best ytelse, målt med en beregning du velger. Den beste modellen og dens tilsvarende hyperparametre er valgt på valideringsdata fra 2014-05-26 20:00:00 til 2014-06-01 19:00:00 (tilsvarer 6 dager). Deretter distribuerer vi den beste modellen i et endepunkt som vi kan spørre etter prediksjon. Til slutt blir den beste modellen evaluert på holdout-testdata fra 2014-06-01 20:00:00 til 2014-06-02 19:00:00 (tilsvarende neste 1 dag). Tabellen nedenfor sammenligner modellens ytelse.
Metrics | LSTNet uten HPO | LSTNet med HPO |
RRSE | 0.555 | 0.506 |
KART | 0.318 | 0.301 |
sMAPE | 0.337 | 0.323 |
Treningstid (minutter) | 10.780 | 57.242 |
Inferenstid (sekunder) | 5.202 | 5.340 |
Bortsett fra trenings- og inferenstiden, for RRSE, MAPE og sMAPE, indikerer mindre verdier bedre prediktiv ytelse. Derfor kan vi observere ytelsen til modellen trent med HPO er betydelig bedre enn den som er trent uten HPO.
Tren en optimal profetmodell ved å bruke GluonTS med HPO
Profeten er en algoritme for å forutsi tidsseriedata basert på en additiv modell der ikke-lineære trender passer med årlige, ukentlige og daglige sesongvariasjoner, pluss ferieeffekter. Det fungerer best med tidsserier som har sterke sesongeffekter og flere sesonger med historiske data. Prophet er robust overfor manglende data og endringer i trenden, og håndterer vanligvis uteliggere godt. For implementering av profetens algoritme bruker vi GluonTS versjon, som er en tynn omslag for å kalle fbprofet pakke. Først trener vi en profetmodell uten HPO ved å bruke SageMaker Estimator. Deretter trener vi en optimal profetmodell med med SageMaker Automatisk modellinnstilling (HPO) og forbedre modellens ytelse ytterligere.
Metrics | Profet uten HPO | Profet med HPO |
RRSE | 0.183 | 0.147 |
KART | 0.288 | 0.278 |
sMAPE | 0.278 | 0.289 |
Treningstid (minutter) | - | 45.633 |
Inferenstid (sekunder) | 44.813 | 45.327 |
De metriske verdiene med HPO-innstilling er mindre enn de uten HPO-innstilling på samme testdata. Dette indikerer at HPO-innstilling forbedrer modellytelsen ytterligere.
Tren en optimal SageMaker DeepAR-modell med HPO
SageMaker DeepAR-prognosealgoritmen er en overvåket læringsalgoritme for prognoser for skalare (endimensjonale) tidsserier ved bruk av tilbakevendende nevrale nettverk (RNN). Klassiske prognosemetoder, som autoregressivt integrert glidende gjennomsnitt (ARIMA) eller eksponentiell utjevning (ETS), passer til en enkelt modell til hver individuelle tidsserie. De bruker deretter den modellen for å ekstrapolere tidsserien inn i fremtiden.
I mange applikasjoner har du imidlertid mange lignende tidsserier på tvers av et sett med tverrsnittsenheter. Du kan for eksempel ha tidsseriegrupperinger for etterspørsel etter forskjellige produkter, serverbelastninger og forespørsler om nettsider. For denne typen applikasjoner kan du dra nytte av å trene en enkelt modell i fellesskap over alle tidsseriene. DeepAR tar denne tilnærmingen. Når datasettet ditt inneholder hundrevis av relaterte tidsserier, overgår DeepAR standard ARIMA- og ETS-metodene. Du kan også bruke den trente modellen til å generere prognoser for nye tidsserier som ligner på de den har blitt trent på. For informasjon om matematikken bak DeepAR, se DeepAR: Probabilistisk prognose med autoregressive tilbakevendende nettverk.
I likhet med innstillingene i de tidligere modellene trener vi først en DeepAR-modell uten HPO. Deretter trener vi en optimal DeepAR-modell med HPO. Deretter distribuerer vi den beste modellen i et endepunkt som vi kan spørre etter prediksjon. Tabellen nedenfor sammenligner modellens ytelse.
Metrics | DeepAR uten HPO | DeepAR med HPO |
RRSE | 0.136 | 0.098 |
KART | 0.087 | 0.099 |
sMAPE | 0.104 | 0.116 |
Treningstid (minutter) | 24.048 | 210.530 |
Inferenstid (sekunder) | 68.411 | 72.829 |
Metrikkverdiene med HPO-innstilling er mindre enn de uten HPO-innstilling på samme testdata. Dette indikerer at HPO-innstilling forbedrer modellytelsen ytterligere.
Evaluer modellytelsen til alle tre algoritmene på samme holdout-testdata
I denne delen sammenligner vi modellytelsen fra de tre modellene som er trent fra HPO. Basert på inputdataene kan sammenligningene variere for ulike inputdatasett. Følgende tabell som sammenligner de tre algoritmene for eksempelstrøminngangsdataene som brukes i dette innlegget.
Metrics | LSTNet med HPO | Profet med HPO | DeepAR med HPO |
RRSE | 0.506 | 0.147 | 0.098 |
KART | 0.302 | 0.278 | 0.099 |
sMAPE | 0.323 | 0.289 | 0.116 |
Treningstid (minutter) | 57.242 | 45.633 | 210.530 |
Inferenstid (sekunder) | 5.340 | 45.327 | 72.829 |
Følgende figurer visualiserer disse resultatene.
Følgende figur er en annen måte å visualisere resultatene på.
Trenings- og testdataene (grunnsannheten) vises som den svarte hellinjen (atskilt med den røde vertikale linjen) i plottet. Forutsigelsene fra forskjellige prognosealgoritmer vises som stiplede linjer. Jo nærmere streklinjen kommer den svarte heltrukket, desto mer nøyaktige er spådommene.
Rydd opp
Når du er ferdig med denne løsningen, sørg for at du sletter alle uønskede AWS-ressurser for å unngå utilsiktede belastninger. Løsningsnotisboken gir oppryddingskode. På løsningsfanen kan du også velge Slett alle ressurser i Slett løsning seksjon.
konklusjonen
I dette innlegget introduserte vi en ende-til-ende-løsning for en etterspørselsprognoseoppgave ved å bruke tre toppmoderne tidsseriealgoritmer: LSTNet, Prophet og SageMaker DeepAR, som er tilgjengelige i GluonTS og SageMaker. Vi diskuterte tre treningstilnærminger: å trene en optimal LSTNet-modell ved hjelp av GluonTS, å trene en optimal profetmodell ved å bruke GluonTS, og å trene en optimal SageMaker DeepAR-modell med HPO. For hver av disse trente vi først modellen uten HPO, og deretter trente vi modellen med HPO. Vi demonstrerte hvordan modellytelsen øker med HPO ved å sammenligne beregninger, nemlig RRSE, MAPE og sMAPE.
I dette innlegget brukte vi strømdataene som vårt input-datasett. Du kan imidlertid endre inngangen og ta med dine egne data til en S3-bøtte. Du kan bruke disse dataene til å trene modellene og få forskjellige ytelsesresultater og velge den beste algoritmen deretter.
På SageMaker-konsollen åpner du Studio og starter løsningen i JumpStart for å komme i gang, eller du kan sjekke ut løsningens GitHub repository for å se gjennom koden og mer informasjon.
Om forfatterne
Alak Eswaradass er senior løsningsarkitekt ved AWS med base i Chicago, Illinois. Hun brenner for å hjelpe kunder med å designe skyarkitekturer ved å bruke AWS-tjenester for å løse forretningsutfordringer. Hun har en mastergrad i informatikk. Før hun begynte i AWS, jobbet hun for forskjellige helseorganisasjoner, og hun har inngående erfaring med å bygge komplekse systemer, teknologiinnovasjon og forskning. Hun henger med døtrene sine og utforsker naturen på fritiden.
Dr. Xin Huang er en Applied Scientist for Amazon SageMaker JumpStart og Amazon SageMaker innebygde algoritmer. Han fokuserer på å utvikle skalerbare maskinlæringsalgoritmer. Hans forskningsinteresser er innen naturlig språkbehandling, forklarbar dyp læring på tabelldata og robust analyse av ikke-parametrisk rom-tid-klynger.
- "
- 10
- 100
- 11
- 2019
- 7
- a
- evne
- Om oss
- Absolute
- adgang
- tilsvar
- Logg inn
- nøyaktig
- tvers
- aktiv
- Ytterligere
- Fordel
- algoritme
- algoritmer
- Alle
- allerede
- Amazon
- analyse
- En annen
- APIer
- Søknad
- søknader
- anvendt
- tilnærming
- tilnærminger
- arkitektur
- AREA
- Automatisk
- Automatisere
- tilgjengelig
- gjennomsnittlig
- AWS
- før du
- bak
- nytte
- BEST
- Bedre
- Svart
- pin
- grensen
- bringe
- bygge
- innebygd
- virksomhet
- bedrifter
- california
- stand
- saken
- saker
- utfordringer
- endring
- avgifter
- kontroll
- Chicago
- Velg
- nærmere
- Cloud
- kode
- Selskaper
- Selskapet
- sammenlignet
- konkurranse
- fullføre
- komplekse
- datamaskin
- informatikk
- Konsoll
- forbruk
- inneholder
- Tilsvarende
- kunne
- skape
- Opprette
- kunde
- kundeopplevelse
- Kunder
- daglig
- Dash
- dato
- dag
- Dager
- håndtering
- avgjørelser
- dyp
- Etterspørsel
- demonstrere
- demonstrert
- utplassere
- distribusjon
- utforming
- utvikle
- Enheter
- forskjellig
- hver enkelt
- effekter
- elektrisitet
- ende til ende
- Endpoint
- energi
- Ingeniørarbeid
- evaluere
- evaluering
- eksempel
- erfaring
- FAST
- Trekk
- Egenskaper
- Felt
- Figur
- Endelig
- finansiere
- funn
- Først
- passer
- fokuserer
- etter
- følger
- Rammeverk
- rammer
- Gratis
- fra
- videre
- framtid
- generere
- generert
- generasjonen
- GitHub
- skje
- helsetjenester
- høyde
- hjelpe
- her.
- Høy
- svært
- leie
- historisk
- husholdning
- husholdninger
- Hvordan
- Hvordan
- Men
- HTTPS
- Hundrevis
- ICON
- Illinois
- gjennomføring
- forbedre
- inkludere
- inkluderer
- Inkludert
- indikerer
- individuelt
- industri
- informasjon
- Infrastruktur
- Innovasjon
- inngang
- f.eks
- integrert
- interesser
- inventar
- investering
- IOT
- Iiot enheter
- IT
- Januar
- Jobb
- Jobb
- sammenføyning
- kjent
- Språk
- lansere
- lanseringer
- Fører
- læring
- linje
- linjer
- steder
- logistikk
- ser
- maskin
- maskinlæring
- gjøre
- GJØR AT
- fikk til
- mestere
- materialer
- matematikk
- metoder
- Metrics
- kunne
- ML
- modell
- modeller
- Måned
- mer
- flytting
- flere
- nemlig
- Naturlig
- behov
- nettverk
- nettverk
- neste
- bærbare
- Antall
- åpen
- åpner
- optimalisering
- rekkefølge
- organisasjoner
- Annen
- utendørs
- egen
- pakke
- del
- lidenskapelig
- prosent
- ytelse
- perioden
- planlegging
- planer
- dårlig
- makt
- forutsi
- prediksjon
- Spådommer
- forrige
- prosess
- prosessering
- produsere
- Produkt
- Produkter
- forutsatt
- gir
- formål
- Fjerdedel
- Raw
- anbefaler
- forespørsler
- krever
- forskning
- Ressurser
- Resultater
- detaljhandel
- anmeldelse
- root
- Kjør
- rennende
- salg
- samme
- skalerbar
- Skala
- Skole
- Vitenskap
- Forsker
- sekunder
- valgt
- Serien
- tjeneste
- Tjenester
- sett
- flere
- kortsiktig
- mindre
- Vis
- vist
- lignende
- Enkelt
- enkelt
- solid
- løsning
- Solutions
- LØSE
- noen
- spesifikk
- Standard
- startet
- state-of-the-art
- status
- lager
- lagring
- streaming
- streaming tjeneste
- effektivisere
- sterk
- studio
- Systemer
- Teknologi
- test
- Testing
- De
- derfor
- tre
- Gjennom
- billett
- tid
- tradisjonelle
- Tog
- Kurs
- transport
- Trender
- typisk
- forstå
- lomper
- universitet
- University of California
- bruke
- Brukere
- verktøy
- utnytte
- validering
- ulike
- versjon
- video
- uke
- ukentlig
- Hva
- Wikipedia
- uten
- arbeidet
- virker
- skriving
- Din