Sdílet prostřednictvím


Přehled metod prognózování v AutoML

Tento článek popisuje metody, které AutoML ve službě Azure Machine Learning používá k přípravě dat časových řad a vytváření modelů prognózování. Pokyny a příklady k trénování modelů prognóz v AutoML najdete v tématu Nastavení autoML pro prognózování časových řad.

Metody prognózování v AutoML

AutoML používá k prognózování hodnot časových řad několik metod. Tyto metody lze zhruba přiřadit ke dvěma kategoriím:

  • Modely časových řad, které používají historické hodnoty cílového množství k předpovědím do budoucnosti
  • Regrese nebo vysvětlující modely, které k prognózování hodnot cíle používají proměnné prediktoru

Předpokládejme, že potřebujete předpovídat denní poptávku po konkrétní značce pomerančové šťávy z obchodu s potravinami. U výrazu $y_t$ představuje poptávku po této značce v den $t$. Model časových řad předpovídá poptávku na $t+1$ pomocí některé funkce historické poptávky s následujícím výrazem:

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

Funkce $f$ má často parametry, které ladíte pomocí pozorované poptávky z minulosti. Množství historie, které $f$ používá k předpovědím, $s$, lze také považovat za parametr modelu.

Model časové řady v příkladu s oranžovou šťávou nemusí být dostatečně přesný, protože používá pouze informace o minulé poptávce. Existuje mnoho dalších faktorů, které můžou ovlivnit budoucí poptávku, například cenu, den v týdnu a období svátků. Zvažte regresní model, který používá tyto proměnné prediktoru s následujícím výrazem:

$y = g(\text{price}, \text{den v týdnu}, \text{svátek})$

Funkce $g$ má obecně sadu parametrů, včetně hodnot, které řídí regularizaci, které AutoML ladí pomocí minulých hodnot poptávky a prediktorů. Z výrazu vynecháte $t$ a zvýrazníte, že regresní model používá korelační vzory mezi souběžně definovanými proměnnými k vytváření předpovědí. Pokud chcete předpovědět $y_{t+1}$ z $g$, potřebujete vědět, který den v týdnu odpovídá $t+1$, zda je den svátek, a oranžová džusová cena v den $t+1$. První dva údaje se dají snadno identifikovat pomocí kalendáře. Maloobchodní cena je obvykle nastavena předem, takže cena pomerančové šťávy je pravděpodobně známa také jeden den předem. Cena však nemusí být známa 10 dní do budoucnosti. Je důležité pochopit, že nástroj této regrese je omezený tím, jak daleko do budoucnosti potřebujete prognózy, označované také jako horizont prognózy a do jaké míry znáte budoucí hodnoty prediktorů.

Důležité

Modely regrese prognózy AutoML předpokládají, že všechny funkce poskytované uživatelem jsou známé v budoucnu aspoň až do horizontu prognózy.

Modely regrese prognóz autoML je také možné rozšířit tak, aby používaly historické hodnoty cíle a prediktorů. Výsledkem je hybridní model s charakteristikami modelu časové řady a čistým regresním modelem. Historické množství jsou extra vysvětlující proměnné v regresi označované jako opožděné množství. Pořadí prodlevy označuje, jak daleko je hodnota známa. Například aktuální hodnota objednávky-dvě prodlevy cíle pro oranžovou poptávku šťávy je pozorovaná poptávka od šťávy před dvěma dny.

Dalším důležitou rozdílem mezi modely časových řad a regresními modely je způsob, jakým generují prognózy. Rekurzní vztahy obecně definují modely časových řad, které vytvářejí prognózy jednorázově. Pokud chcete předpovědět mnoho období do budoucnosti, iterují horizont prognózy a podle potřeby předpovídají předchozí prognózy zpět do modelu, aby vygenerovaly příští prognózu s jedním obdobím dopředu. Naproti tomu regresní modely jsou považovány za přímé prognózy , které generují všechny prognózy až do horizontu v jednom pokusu. Přímé predikce mohou být vhodnější než rekurzivní metody, protože rekurzivní modely představují chybu složené předpovědi, když předpovídají předchozí prognózy zpět do modelu. Když jsou zahrnuty funkce prodlevy, AutoML provede některé důležité úpravy trénovacích dat, aby regresní modely mohly fungovat jako přímé prognózovací moduly. Další informace najdete v tématu Lag features for time-series forecasting in AutoML.

Modely prognózování v AutoML

AutoML ve službě Machine Learning implementuje následující modely prognózování. Pro každou kategorii jsou modely uvedeny zhruba v pořadí složitosti vzorů, které mohou zahrnovat, označované také jako kapacita modelu. Naivní model, který jednoduše předpovídá poslední pozorovanou hodnotu, má nízkou kapacitu, zatímco dočasná konvoluční síť (TCNForecaster), hlubokou neurální síť (DNN) s potenciálně miliony vyladěných parametrů má vysokou kapacitu.

Modely časových řad Regresní modely
Naive, Seasonal Naive, Average, Seasonal Average, Seasonal Average, ARIMA(X), Exponential Smoothing Lineární SGD, LARS LARS LASSO, Elastic Net, Prorok, K nejbližší sousedy, rozhodovací strom, náhodný les, extrémně randomizované stromy, přechodové zesílené stromy, LightGBM, XGBoost, TCNForecaster

AutoML také obsahuje souborové modely, které vytvářejí vážené kombinace nejvýkonnějších modelů pro další zlepšení přesnosti. Pro prognózování použijete soubor s měkkým hlasováním, kde se složení a váhy nacházejí pomocí Caruana Ensemble Selection Algorithm.

Poznámka:

Existují dvě důležitá upozornění pro předpovídací modelové skupiny:

  • TCN nelze v současné době zahrnout do souborů.
  • AutoML ve výchozím nastavení zakáže metodu souboru zásobníku, která je součástí výchozí regrese a klasifikačních úloh v AutoML. Soubor zásobníku odpovídá metamodelu na nejlepší prognózy modelu k nalezení hmotnosti souboru. Během interního srovnávacího testování má tato strategie větší tendenci k datům časových řad. Výsledkem může být špatná generalizace, takže soubor zásobníku je ve výchozím nastavení zakázaný. Podle potřeby můžete soubor povolit v konfiguraci AutoML.

Jak AutoML používá vaše data

AutoML přijímá data časových řad v tabulkovém "širokém" formátu. Každá proměnná musí mít svůj vlastní odpovídající sloupec. AutoML vyžaduje, aby jeden sloupec byl časovou osou pro problém prognózování. Tento sloupec musí být parsovatelný do typu datetime. Nejjednodušší datová sada časových řad se skládá z časového sloupce a číselného cílového sloupce. Cílem je proměnná, kterou chcete předpovědět do budoucnosti. Následující tabulka ukazuje ukázkové hodnoty pro tento formát:

časové razítko množství.
2012-01-01 100
2012-01-02 97
2012-01-03 106
... ...
2013-12-31 347

Ve složitějších případech může datová sada obsahovat další sloupce zarovnané s časovým indexem:

časové razítko Skladová jednotka (SKU) price inzerovaný množství.
2012-01-01 JUICE1 3.5 0 100
2012-01-01 BREAD3 5.76 0 47
2012-01-02 JUICE1 3.5 0 97
2012-01-02 BREAD3 5.5 0 68
... ... ... ... ...
2013-12-31 JUICE1 3.75 0 347

Druhý příklad obsahuje skladovou položku, maloobchodní cenu a příznak označující, jestli byla položka inzerována kromě časového razítka a cílového množství. Druhá datová sada odhalí dvě řady: jednu pro skladovou položku JUICE1 a druhou pro skladovou položku BREAD3. Sloupec skladové položky je sloupec ID časové řady, protože seskupení podle těchto hodnot sloupců vytváří dvě skupiny, které každý obsahuje jednu řadu. Před úklidem modelu autoML provede základní ověření vstupní konfigurace a dat a přidá zkonstruované funkce.

Požadavky na délku dat

Pokud chcete vytrénovat model prognózování, musíte mít dostatek historických dat. Toto prahové množství se liší podle konfigurace trénování. Pokud zadáte ověřovací data, minimální počet trénovacích pozorování požadovaných pro každou časnou řadu se vyjadřuje takto:

$T_{\text{ověření uživatele}} = H + \text{max}(l_{\text{max}}, s_{\text{window}}) + 1$

V tomto výrazu je $H$ horizont prognózy, $l_{\text{max}}$ je maximální pořadí prodlevy a $s_{\text{window}}$ je velikost okna pro kumulativní agregační funkce. Pokud použijete křížové ověření, minimální počet pozorování se vyjadřuje takto:

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

V této verzi je $n_{\text{CV}}$ počet záhybů křížového ověření a $n_{\text{step}}$ je velikost kroku CV nebo posun mezi přeložením CV. Základní logika těchto vzorců spočívá v tom, že byste vždy měli mít alespoň horizont trénovacích pozorování pro každou časovou řadu, včetně některých odsazení prodlev a rozdělení křížového ověření. Další informace o křížové ověřování pro prognózování naleznete v tématu Výběr modelu v AutoML.

Chybějící zpracování dat

Modely časových řad v AutoML vyžadují pravidelně rozložená pozorování v čase, což zahrnuje případy, jako jsou měsíční nebo roční pozorování, ve kterých se počet dnů mezi pozorováními může lišit. Před zahájením procesu modelování musí AutoML zajistit, aby nebyly nalezeny žádné hodnoty řad a aby pozorování byla běžná. V důsledku toho existují dva případy chybějících dat:

  • U některých buněk v tabulkových datech chybí hodnota.
  • Chybí řádek, který odpovídá očekávanému pozorování vzhledem k frekvenci časových řad.

V prvním případě AutoML imputuje chybějící hodnoty pomocí běžných konfigurovatelných technik. Následující tabulka ukazuje příklad očekávaného řádku, který chybí:

časové razítko množství.
2012-01-01 100
2012-01-03 106
2012-01-04 103
... ...
2013-12-31 347

Tato série má zdánlivě denní frekvenci, ale pro 2. ledna 2012 (2.012-01-02) není žádné pozorování. V tomto případě se AutoML pokusí vyplnit data přidáním nového řádku pro chybějící hodnotu. Nová hodnota pro quantity sloupec a všechny ostatní sloupce v datech jsou pak imputovány jako ostatní chybějící hodnoty. Aby bylo možné tento proces provést, musí AutoML rozpoznat frekvenci řad, aby bylo možné vyplnit mezery pozorování, jak je znázorněno v tomto případě. AutoML tuto frekvenci automaticky rozpozná, případně ji uživatel může poskytnout v konfiguraci.

Metodu imputace pro zadávání chybějících hodnot je možné nakonfigurovat ve vstupu. Následující tabulka uvádí výchozí metody:

Typ sloupce Výchozí metoda imputace
Cíl Přeposlání (poslední pozorování přenesené dopředu)
Číselná funkce Medián hodnoty

Chybějící hodnoty pro kategorické funkce se zpracovávají během číselného kódování zahrnutím jiné kategorie, která odpovídá chybějící hodnotě. Imputace je v tomto případě implicitní.

Automatizované inženýrství funkcí

AutoML obecně přidává nové sloupce do uživatelských dat, aby se zvýšila přesnost modelování. Inženýrované funkce můžou obsahovat výchozí nebo volitelné položky.

Výchozí propracované funkce:

  • Funkce kalendáře odvozené z časového indexu, například dne v týdnu
  • Kategorické funkce odvozené z ID časových řad
  • Kódování typů kategorií na číselný typ

Volitelné zkonstruované funkce:

Featurizace můžete nakonfigurovat ze sady AutoML SDK pomocí třídy ForecastingJob nebo z webového rozhraní studio Azure Machine Learning.

Detekce a zpracování nonstationárních časových řad

Časová řada, ve které se v průběhu času mění střední hodnota a odchylka, se nazývá neschytná. Časové řady, které vykazují stochastické trendy, jsou podle povahy nonstationární.

Následující obrázek představuje vizualizaci pro tento scénář. Graf vykreslí řadu, která obecně roste směrem nahoru. Pokud vypočítáte a porovnáte střední (průměr) hodnoty pro první a druhou polovinu řady, můžete identifikovat rozdíly. Průměr řady v první polovině grafu je menší než průměr ve druhé polovině. Skutečnost, že průměr řady závisí na časovém intervalu, který se kontroluje, je příkladem časových momentů, které se liší. V tomto scénáři je průměr série prvním okamžikem.

Diagram znázorňující maloobchodní prodej pro nesouvisenou časovou řadu

Následující obrázek znázorňuje graf, který vykreslí původní řadu v prvních rozdílech, $\Delta y_{t} = y_t – y_{t-1}$. Průměr řady je zhruba konstantní v časovém rozsahu, zatímco se rozptyl zdá být různý. Tento scénář ukazuje příklad řady pevných časů prvního řádu:

Diagram znázorňující maloobchodní prodej pro slabě pevnou časovou řadu

Modely regrese AutoML nemohou ze své podstaty řešit stochastické trendy ani jiné dobře známé problémy spojené s nonstationární časovou řadou. V důsledku toho může být přesnost předpovědí mimo vzorky při výskytu takových trendů špatná.

AutoML automaticky analyzuje datovou sadu časových řad, aby určila její úroveň nebo staticitu. Když se zjistí jiná časová řada, autoML automaticky použije rozdílovou transformaci, aby se zmírnit účinky nonstationárního chování.

Uklidování modelů

Jakmile budou data připravená s chybějícím zpracováním dat a technikou funkcí, AutoML přemísít sadu modelů a hyperparametry pomocí služby doporučení modelu.

Modely jsou seřazené na základě metrik ověřování nebo křížového ověření a pak je možné je volitelně použít v modelu souboru. Nejlepší model nebo některý z natrénovaných modelů je možné podle potřeby zkontrolovat, stáhnout nebo nasadit, aby se vytvořily prognózy. Další informace naleznete v tématu Úklid a výběr modelu pro prognózování v AutoML.

Seskupování modelů

Pokud datová sada obsahuje více než jednu časovou řadu, existuje několik způsobů modelování dat. Data ve sloupcích ID časové řady můžete seskupit a vytrénovat nezávislé modely pro každou řadu. Obecnějším přístupem je rozdělit data do skupin, které můžou obsahovat více (pravděpodobně souvisejících) řad a trénovat model na skupinu.

Ve výchozím nastavení používá prognózování AutoML smíšený přístup k seskupování modelů. Modely časových řad, plus ARIMAX a Prorok, přiřazují jednu řadu k jedné skupině a další regresní modely přiřazují všechny řady k jedné skupině.

Jednotlivé typy modelů používají skupiny:

  • Každá série v samostatné skupině (1:1): Naive, Seasonal Naive, Average, Seasonal Average, Seasonal Average, Exponential Smoothing, ARIMA, ARIMAX, Prorok

  • Všechny řady ve stejné skupině (N:1):: Lineární SGD, LARS LASSO, Elastic Net, K Nearest Souseds, Decision Tree, Random Forest, Extremely Randomized Tree, Gradient Boosted Trees, LightGBM, XGBoost, TCNForecaster

Obecnější seskupení modelů je možné pomocí mnoha řešení modelů v AutoML. Další informace najdete v tématu Mnoho modelů – poznámkový blok automatizovaného strojového učení.