Översikt över prognosmetoder i AutoML

Den här artikeln fokuserar på de metoder som AutoML använder för att förbereda tidsseriedata och skapa prognosmodeller. Instruktioner och exempel för modeller för träningsprognoser i AutoML finns i vår artikel om att konfigurera AutoML för tidsserieprognoser .

AutoML använder flera metoder för att prognostisera tidsserievärden. Dessa metoder kan tilldelas ungefär två kategorier:

  1. Tidsseriemodeller som använder historiska värden för målkvantiteten för att göra förutsägelser i framtiden.
  2. Regression, eller förklarande, modeller som använder förutsägelsevariabler för att prognostisera värden för målet.

Tänk till exempel på problemet med att förutsäga den dagliga efterfrågan på ett visst märke av apelsinjuice från en livsmedelsbutik. Låt $y_t$ representera efterfrågan på det här varumärket på dag $t$. En tidsseriemodell förutsäger efterfrågan på $t+1$ med någon funktion av historisk efterfrågan,

$y_{t+1} = f(y_t, y_{t-1}, \ldots, y_{t-s})$.

Funktionen $f$ har ofta parametrar som vi finjusterar med hjälp av observerad efterfrågan från tidigare. Mängden historik som $f$ använder för att göra förutsägelser, $s$, kan också betraktas som en parameter för modellen.

Tidsseriemodellen i exemplet med efterfrågan på apelsinjuice kanske inte är tillräckligt exakt eftersom den bara använder information om tidigare efterfrågan. Det finns många andra faktorer som sannolikt påverkar framtida efterfrågan, till exempel pris, veckodag och om det är en semester eller inte. Överväg en regressionsmodell som använder dessa förutsägelsevariabler,

$y = g(\text{price}, \text{day of week}, \text{holiday})$.

Återigen har $g$ vanligtvis en uppsättning parametrar, inklusive de som styr regularisering, som AutoML justerar med tidigare värden för efterfrågan och prediktorerna. Vi utelämnar $t$ från uttrycket för att betona att regressionsmodellen använder korrelationsmönster mellan samtidigt definierade variabler för att göra förutsägelser. För att förutsäga $y_{t+1}$ från $g$, måste vi veta vilken dag i veckan $t+1$ som infaller, om det är en semester och apelsinjuicepriset på dagen $t+1$. De första två informationsdelarna är alltid lätta att hitta genom att konsultera en kalender. Ett detaljhandelspris anges vanligtvis i förväg, så priset på apelsinjuice är sannolikt också känt en dag framåt. Men priset kanske inte är känt 10 dagar in i framtiden! Det är viktigt att förstå att nyttan av den här regressionen begränsas av hur långt in i framtiden vi behöver prognoser, även kallat prognoshorisonten, och i vilken utsträckning vi känner till prediktorernas framtida värden.

Viktigt!

AutoML:s prognosregressionsmodeller förutsätter att alla funktioner som tillhandahålls av användaren är kända i framtiden, åtminstone fram till prognoshorisonten.

AutoML:s prognosregressionsmodeller kan också utökas för att använda historiska värden för målet och prediktorerna. Resultatet är en hybridmodell med egenskaper hos en tidsseriemodell och en ren regressionsmodell. Historiska kvantiteter är ytterligare förutsägelsevariabler i regressionen och vi kallar dem för eftersläpande kvantiteter. Fördröjningens ordning refererar till hur långt tillbaka värdet är känt. Till exempel är det aktuella värdet för en order-två fördröjning av målet för vårt exempel på efterfrågan på apelsinjuice den observerade juiceefterfrågan från för två dagar sedan.

En annan viktig skillnad mellan tidsseriemodellerna och regressionsmodellerna är hur de genererar prognoser. Tidsseriemodeller definieras vanligtvis av rekursionsrelationer och skapar prognoser en i taget. För att prognostisera många perioder in i framtiden itererar de upp till prognoshorisonten och matar in tidigare prognoser i modellen igen för att generera nästa prognos för en period framåt efter behov. Regressionsmodellerna är däremot så kallade direkta prognosmakare som genererar alla prognoser upp till horisonten på en gång. Direkta prognosmakare kan vara att föredra framför rekursiva eftersom rekursiva modeller förvärrar förutsägelsefel när de matar in tidigare prognoser i modellen igen. När fördröjningsfunktioner ingår gör AutoML några viktiga ändringar i träningsdata så att regressionsmodellerna kan fungera som direkta prognosmakare. Mer information finns i artikeln om fördröjningsfunktioner.

Prognosmodeller i AutoML

I följande tabell visas de prognosmodeller som implementeras i AutoML och vilken kategori de tillhör:

Tidsseriemodeller Regressionsmodeller
Naive, Seasonal Naive, Average, Seasonal Average, ARIMA(X), Exponential Smoothing Linjär SGD, LARS LASSO, Elastic Net, Prophet, K Nearest Neighbors, Decision Tree, Random Forest, Extremely Randomized Trees, Gradient Boosted Trees, LightGBM, XGBoost, TCNForecaster

Modellerna i varje kategori visas ungefär i ordning efter komplexiteten i mönster som de kan införliva, även kallat modellkapacitet. En Naive-modell, som helt enkelt förutspår det senast observerade värdet, har låg kapacitet medan Temporal Convolutional Network (TCNForecaster), ett djupt neuralt nätverk med potentiellt miljontals tunable-parametrar, har hög kapacitet.

Det är viktigt att AutoML även innehåller ensemblemodeller som skapar viktade kombinationer av de bäst presterande modellerna för att ytterligare förbättra noggrannheten. För prognostisering använder vi en mjuk röstningsensemble där sammansättning och vikter hittas via Caruana Ensemble Selection Algorithm.

Kommentar

Det finns två viktiga varningar för prognosmodellensembler:

  1. TCN kan för närvarande inte ingå i ensembler.
  2. AutoML inaktiverar som standard en annan ensemblemetod, stackensemblen, som ingår i standardregression och klassificeringsuppgifter i AutoML. Stackensemblen passar en metamodell på de bästa modellprognoserna för att hitta ensemblevikter. Vi har upptäckt i intern benchmarking att den här strategin har en ökad tendens att överanpassa tidsseriedata. Detta kan leda till dålig generalisering, så stackensemblen är inaktiverad som standard. Det kan dock aktiveras om du vill i AutoML-konfigurationen.

Så använder AutoML dina data

AutoML accepterar tidsseriedata i tabellformat, "brett" format; Varje variabel måste alltså ha en egen motsvarande kolumn. AutoML kräver att en av kolumnerna är tidsaxeln för prognosproblemet. Den här kolumnen måste kunna parsas till en datetime-typ. Den enklaste datauppsättningen för tidsserier består av en tidskolumn och en numerisk målkolumn. Målet är variabeln som man tänker förutsäga i framtiden. Följande är ett exempel på formatet i det här enkla fallet:

timestamp quantity
2012-01-01 100
2012-01-02 97
2012-01-03 106
... ...
2013-12-31 347

I mer komplexa fall kan data innehålla andra kolumner som är justerade med tidsindexet.

timestamp SKU price Annonseras quantity
2012-01-01 JUICE1 3.5 0 100
2012-01-01 BRÖD3 5.76 0 47
2012-01-02 JUICE1 3.5 0 97
2012-01-02 BRÖD3 5,5 1 68
... ... ... ... ...
2013-12-31 JUICE1 3.75 0 347
2013-12-31 BRÖD3 5.7 0 94

I det här exemplet finns det en SKU, ett detaljhandelspris och en flagga som anger om ett objekt annonserades utöver tidsstämpeln och målkvantiteten. Det finns uppenbarligen två serier i den här datamängden – en för JUICE1 SKU och en för BREAD3 SKU; SKU kolumnen är en tidsserie-ID-kolumn eftersom gruppering efter den ger två grupper som innehåller en enda serie vardera. Innan du sveper över modeller utför AutoML grundläggande validering av indatakonfigurationen och data och lägger till konstruerade funktioner.

Krav på datalängd

Om du vill träna en prognosmodell måste du ha tillräckligt med historiska data. Den här tröskelvärdeskvantiteten varierar med träningskonfigurationen. Om du har angett valideringsdata anges det minsta antalet träningsobservationer som krävs per tidsserie av,

$T_{\text{user validation}} = H + \text{max}(l_{\text{max}}, s_{\text{window}}) + 1$,

där $H$ är prognoshorisonten är $l_{\text{max}}$ den maximala fördröjningsordningen och $s_{\text{window}}$ är fönsterstorleken för rullande aggregeringsfunktioner. Om du använder korsvalidering är det minsta antalet observationer,

$T_{\text{CV}} = 2H + (n_{\text{CV}} - 1) n_{\text{step}} + \text{max}(l_{\text{max}}, s_{\text{window}}) + 1$,

där $n_{\text{CV}}$ är antalet korsvalideringsdelegeringar och $n_{\text{step}}$ är cv-stegstorleken eller förskjutningen mellan CV-vikningar. Den grundläggande logiken bakom dessa formler är att du alltid bör ha minst en horisont av träningsobservationer för varje tidsserie, inklusive viss utfyllnad för fördröjningar och korsvalideringsdelningar. Mer information om korsvalidering för prognostisering finns i val av prognostiseringsmodell.

Datahantering saknas

AutoML:s tidsseriemodeller kräver regelbundet tidsrymdsobservationer. Regelbundet fördelade, här, innehåller fall som månatliga eller årliga observationer där antalet dagar mellan observationer kan variera. Före modellering måste AutoML se till att det inte finns några saknade serievärden och att observationerna är regelbundna. Det finns därför två saknade datafall:

  • Ett värde saknas för vissa celler i tabelldata
  • En rad saknas som motsvarar en förväntad observation med tanke på tidsseriefrekvensen

I det första fallet imputerar AutoML saknade värden med hjälp av vanliga, konfigurerbara tekniker.

Ett exempel på en saknad, förväntad rad visas i följande tabell:

timestamp quantity
2012-01-01 100
2012-01-03 106
2012-01-04 103
... ...
2013-12-31 347

Den här serien har till synes en daglig frekvens, men det finns ingen observation för Jan. 2, 2012. I det här fallet försöker AutoML fylla i data genom att lägga till en ny rad för 2 januari 2012. Det nya värdet för quantity kolumnen och andra kolumner i data kommer sedan att imputeras som andra saknade värden. Det är uppenbart att AutoML måste känna till seriefrekvensen för att fylla i observationsluckor som denna. AutoML identifierar automatiskt den här frekvensen, eller så kan användaren ange den i konfigurationen.

Imputationsmetoden för att fylla saknade värden kan konfigureras i indata. Standardmetoderna visas i följande tabell:

Kolumntyp Standardmetod för imputation
Mål Framåtfyllning (senaste observationen har förts vidare)
Numerisk funktion Medianvärde

Saknade värden för kategoriska funktioner hanteras under numerisk kodning genom att inkludera ytterligare en kategori som motsvarar ett värde som saknas. Imputation är implicit i det här fallet.

Automatiserad funktionsutveckling

AutoML lägger vanligtvis till nya kolumner i användardata för att öka modelleringsprecisionen. Den konstruerade funktionen kan innehålla följande:

Funktionsgrupp Standard/valfritt
Kalenderfunktioner som härleds från tidsindexet (till exempel veckodag) Standardvärde
Kategoriska funktioner som härleds från tidsserie-ID:t Standardvärde
Kodning av kategoriska typer till numerisk typ Standardvärde
Indikatorfunktioner för helgdagar som är associerade med ett visst land eller en viss region Valfritt
Fördröjning av målkvantitet Valfritt
Fördröjningar av funktionskolumner Valfritt
Löpande fönsteraggregeringar (till exempel rullande medelvärde) av målkvantitet Valfritt
Säsongsmässig nedbrytning (STL) Valfritt

Du kan konfigurera funktionalisering från AutoML SDK via klassen ForecastingJob eller från Azure Machine Learning-studio-webbgränssnittet.

Identifiering och hantering av icke-stationära tidsserier

En tidsserie där medelvärde och varians ändras över tid kallas för en icke-stationär. Till exempel är tidsserier som uppvisar stokastiska trender icke-stationära av naturen. För att visualisera detta ritar följande bild en serie som vanligtvis trendar uppåt. Beräkna och jämför nu medelvärdet (medelvärdet) för den första och andra halvan av serien. Är de likadana? Här är medelvärdet av serien under den första halvan av diagrammet betydligt mindre än i andra halvlek. Det faktum att medelvärdet för serien beror på tidsintervallet man tittar på är ett exempel på de tidsberoende ögonblicken. Här är medelvärdet av en serie det första ögonblicket.

Diagram showing retail sales for a non-stationary time series.

Nu ska vi undersöka följande bild, som ritar den ursprungliga serien i första skillnaderna, $\Delta y_{t} = y_t – y_{t-1}$. Medelvärdet för serien är ungefär konstant över tidsintervallet medan variansen verkar variera. Det här är alltså ett exempel på en första ordningens stationära tidsserie.

Diagram showing retail sales for a weakly stationary time series.

AutoML-regressionsmodeller kan inte hantera stokastiska trender eller andra välkända problem som är associerade med icke-stationära tidsserier. Därför kan prognosprecisionen vara dålig om sådana trender finns.

AutoML analyserar automatiskt tidsseriedatauppsättningen för att fastställa stationaritet. När icke-stationära tidsserier identifieras tillämpar AutoML automatiskt en differentieringstransformering för att minimera effekten av icke-stationärt beteende.

Modellsopning

När data har förberetts med saknad datahantering och funktionsutveckling sveper AutoML över en uppsättning modeller och hyperparametrar med hjälp av en modellrekommendationstjänst. Modellerna rangordnas baserat på validerings- eller korsvalideringsmått och sedan, om du vill, kan de översta modellerna användas i en ensemblemodell. Den bästa modellen, eller någon av de tränade modellerna, kan inspekteras, laddas ned eller distribueras för att skapa prognoser efter behov. Mer information finns i artikeln om modellsanering och urval .

Modellgruppering

När en datauppsättning innehåller mer än en tidsserie, som i det angivna dataexemplet, finns det flera sätt att modellera dessa data. Vi kan till exempel bara gruppera efter tidsserie-ID-kolumner och träna oberoende modeller för varje serie. En mer allmän metod är att partitionera data i grupper som var och en kan innehålla flera, sannolikt relaterade serier och träna en modell per grupp. Som standard använder AutoML-prognostisering en blandad metod för modellgruppering. Tidsseriemodeller, plus ARIMAX och Prophet, tilldelar en serie till en grupp och andra regressionsmodeller tilldelar alla serier till en enda grupp. I följande tabell sammanfattas modellgrupperingarna i två kategorier, en-till-en och många-till-en:

Varje serie i egen grupp (1:1) Alla serier i enskild grupp (N:1)
Naive, Seasonal Naive, Average, Seasonal Average, Exponential Smoothing, ARIMA, ARIMAX, Prophet Linjär SGD, LARS LASSO, Elastic Net, K Nearest Neighbors, Decision Tree, Random Forest, Extremely Randomized Trees, Gradient Boosted Trees, LightGBM, XGBoost, TCNForecaster

Mer allmänna modellgrupper är möjliga via AutoML:s lösning för många modeller. se vår Många modeller – Automatiserad ML-notebook-fil.

Nästa steg