Dela via


Översikt över prognosmetoder i AutoML

Den här artikeln beskriver de metoder som AutoML i Azure Machine Learning använder för att förbereda tidsseriedata och skapa prognosmodeller. Anvisningar och exempel om modeller för träningsprognoser i AutoML finns i Konfigurera AutoML för prognostisering av tidsserier.

Prognosmetoder i AutoML

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

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

Anta att du behöver prognostisera den dagliga efterfrågan på ett visst märke av apelsinjuice från en livsmedelsbutik. För uttrycket ska $y_t$ representera efterfrågan för det här varumärket på dag $t$. En tidsseriemodell förutsäger efterfrågan på $t+1$ med hjälp av någon funktion av historisk efterfrågan med följande uttryck:

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

Funktionen $f$ har ofta parametrar som du justerar med hjälp av observerad efterfrågan från det förflutna. 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 endast använder information om tidigare efterfrågan. Det finns många andra faktorer som kan påverka framtida efterfrågan, till exempel pris, veckodag och semesterperioder. Överväg en regressionsmodell som använder dessa förutsägelsevariabler med följande uttryck:

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

Återigen har funktionen $g$ vanligtvis en uppsättning parametrar, inklusive värden som styr regularisering, som AutoML justerar med hjälp av tidigare värden för efterfrågan och prediktorerna. Du 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. Om du vill förutsäga $y_{t+1}$ från $g$, måste du veta vilken dag i veckan som motsvarar $t+1$, om dagen är en helgdag och apelsinjuicepriset på dagen $t+1$. De två första uppgifterna är enkla att identifiera med hjälp av en kalender. Ett detaljhandelspris anges ofta i förväg, så priset på apelsinjuice är sannolikt också känt en dag i förväg. Priset kanske dock 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 du behöver prognoser, även kallat prognoshorisonten, och i vilken utsträckning du 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 extra förutsägelsevariabler i den regression som kallas fördröjda 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 exemplet 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. Rekursionsrelationer definierar vanligtvis tidsseriemodeller som producerar 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 betraktas däremot som direkta prognosmakare som genererar alla prognoser fram till horisonten i ett enda försök. Direkta prognosmakare kan vara att föredra framför rekursiva metoder 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 Fördröj funktioner för tidsserieprognoser i AutoML.

Prognosmodeller i AutoML

AutoML i Machine Learning implementerar följande prognosmodeller. För varje kategori visas modellerna 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 (DNN) med potentiellt miljontals tunable-parametrar, har hög kapacitet.

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

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

Kommentar

Det finns två viktiga varningar för prognosmodellensembler:

  • TCN kan för närvarande inte ingå i ensembler.
  • Som standard inaktiverar AutoML stackensemblemetoden, som ingår i standardregression och klassificeringsuppgifter i AutoML. Stackensemblen passar en metamodell på de bästa modellprognoserna för att hitta ensemblevikter. Under den interna benchmarkingen har den här strategin en ökad tendens att överanpassa tidsseriedata. Det här resultatet kan leda till dålig generalisering, så stackensemblen är inaktiverad som standard. Du kan aktivera ensemblen i AutoML-konfigurationen efter behov.

Så använder AutoML dina data

AutoML accepterar tidsseriedata i tabellformatet "wide". Varje variabel måste ha en egen motsvarande kolumn. AutoML kräver att en kolumn är tidsaxeln för prognosproblemet. Den här kolumnen måste kunna parsas till en datetime-typ. Den enklaste datamängden för tidsserier består av en tidskolumn och en numerisk målkolumn. Målet är den variabel som du tänker förutsäga i framtiden. I följande tabell visas exempelvärden för det här formatet:

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

I mer komplexa fall kan datauppsättningen innehålla andra kolumner som är justerade med tidsindexet:

timestamp SKU price Annonseras kvantitet
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

Det andra exemplet innehåller en SKU, ett detaljhandelspris och en flagga som anger om ett objekt annonserades utöver tidsstämpeln och målkvantiteten. Den andra datamängden visar två serier: en för JUICE1 SKU och en för BREAD3 SKU. SKU-kolumnen är en tidsserie-ID-kolumn eftersom gruppering efter dessa kolumnvärden genererar två grupper som var och en innehåller en enda serie. Innan modellsvepningen 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 anger valideringsdata uttrycks det minsta antalet träningsobservationer som krävs per tidsserie på följande sätt:

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

I det här uttrycket är $H$ prognoshorisonten, $l_{\text{max}}$ är den maximala fördröjningsordningen och $s_{\text{window}}$ är fönsterstorleken för rullande aggregeringsfunktioner. Om du använder korsvalidering uttrycks det minsta antalet observationer på följande sätt:

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

I den här versionen är $n_{\text{CV}}$ antalet korsvalideringsveckningar 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 Modellval i AutoML.

Datahantering saknas

Tidsseriemodellerna i AutoML kräver regelbundet tidsrymdsobservationer, vilket inkluderar fall som månatliga eller årliga observationer där antalet dagar mellan observationer kan variera. Innan modelleringsprocessen initieras måste AutoML se till att det inte finns några saknade serievärden och att observationerna är regelbundna. Det innebär att det finns två saknade datafall:

  • Ett värde saknas för vissa celler i tabelldata.
  • En rad saknas, vilket 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. I följande tabell visas ett exempel på en förväntad rad som saknas:

timestamp kvantitet
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 2 januari 2012 (2012-01-02). I det här fallet försöker AutoML fylla i data genom att lägga till en ny rad för det saknade värdet. Det nya värdet för quantity kolumnen och andra kolumner i data imputeras sedan som andra saknade värden. För att köra den här processen måste AutoML känna igen seriefrekvensen för att kunna fylla i observationsluckor, vilket visas i det här fallet. AutoML identifierar automatiskt den här frekvensen, eller så kan användaren ange den i konfigurationen.

Imputationsmetoden för att ange saknade värden kan konfigureras i indata. I följande tabell visas standardmetoderna:

Kolumntyp Standardimputeringsmetod
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 en annan 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. Konstruerade funktioner kan innehålla standardobjekt eller valfria objekt.

Standardtekniker:

  • Kalenderfunktioner som härleds från tidsindexet, till exempel veckodag
  • Kategoriska funktioner som härleds från tidsserie-ID:t
  • Kodning av kategoriska typer till numerisk typ

Valfria funktioner:

Du kan konfigurera funktionalisering från AutoML SDK med hjälp av 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 icke-stationär. Tidsserier som uppvisar stokastiska trender är icke-stationära av naturen.

Följande bild visar en visualisering för det här scenariot. Diagrammet ritar en serie som vanligtvis trendar uppåt. Om du beräknar och jämför medelvärdet (medelvärdet) för den första och andra halvan av serien kan du identifiera skillnaderna. Medelvärdet av serien under den första halvan av diagrammet är mindre än medelvärdet i andra halvlek. Det faktum att medelvärdet för serien beror på tidsintervallet under granskning är ett exempel på de tidsberoende ögonblicken. I det här scenariot är medelvärdet för en serie det första ögonblicket.

Diagram som visar detaljhandelsförsäljning för en icke-stationär tidsserie.

Nästa bild visar ett diagram 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 scenariot visar ett exempel på en stationär tidsserie i första ordningen:

Diagram som visar detaljhandelsförsäljningen för en svagt stationär tidsserie.

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 när sådana trender finns.

AutoML analyserar automatiskt en tidsseriedatauppsättning för att fastställa dess nivå eller stationaritet. När icke-stationära tidsserier identifieras tillämpar AutoML automatiskt en differentieringstransformering för att minimera effekterna 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 Modellsopning och val för prognostisering i AutoML.

Modellgruppering

När en datauppsättning innehåller mer än en tidsserie finns det flera sätt att modellera data. Du kan gruppera efter data i tidsserie-ID-kolumnerna 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.

Så här använder varje modelltyp grupper:

  • Varje serie i en separat grupp (1:1): Naive, Seasonal Naive, Average, Seasonal Average, Exponential Smoothing, ARIMA, ARIMAX, Prophet

  • Alla serier i samma grupp (N:1): 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 med hjälp av lösningen många modeller i AutoML. Mer information finns i Många modeller – Automatiserad ML-notebook-fil.