Funkce kalendáře pro prognózování časových řad v autoML

Tento článek se zaměřuje na funkce založené na kalendáři, které autoML vytváří za účelem zvýšení přesnosti prognózování regresních modelů. Vzhledem k tomu, že svátky mohou mít silný vliv na chování modelovaného systému, může čas před, během a po svátku ovlivnit vzory série. Každý svátek vygeneruje okno nad existující datovou sadou, ke kterému může žák přiřadit efekt. To může být užitečné zejména ve scénářích, jako jsou svátky, které generují vysoké nároky na konkrétní produkty. Obecnější informace o metodologii prognózování v AutoML najdete v článku s přehledem metod . Pokyny a příklady pro trénování modelů prognóz v AutoML najdete v našem článku o nastavení autoML pro prognózování časových řad .

V rámci přípravy funkcí autoML transformuje sloupce typu datetime poskytnuté v trénovacích datech na nové sloupce funkcí založených na kalendáři. Tyto funkce můžou regresním modelům pomoct naučit se sezónním vzorům v několika intervalech. AutoML může vždy vytvářet funkce kalendáře z časového indexu časové řady, protože se jedná o požadovaný sloupec v trénovacích datech. Funkce kalendáře jsou také vytvořené z jiných sloupců s typem datetime (pokud existují). Další informace o požadavcích na data najdete v průvodci tím, jak AutoML používá vaše data .

AutoML bere v úvahu dvě kategorie funkcí kalendáře: standardní funkce, které jsou zcela založené na hodnotách data a času, a funkce svátků, které jsou specifické pro zemi nebo oblast světa. Tyto funkce si projdeme ve zbývající části článku.

Funkce standardního kalendáře

Následující tabulka obsahuje úplnou sadu standardních funkcí kalendáře AutoML spolu s ukázkovým výstupem. Příklad používá standardní YY-mm-dd %H-%m-%d formát pro reprezentaci data a času.

Název funkce Description Příklad výstupu pro 2011-01-01 00:25:30
year Číselná funkce představující kalendářní rok 2011
year_iso Představuje rok ISO definovaný v ISO 8601. Roky ISO začínají prvním týdnem v roce, který má čtvrtek. Pokud je například 1. leden pátek, začíná rok ISO 4. ledna. Roky ISO se mohou lišit od kalendářních roků. 2010
half Funkce označující, jestli je datum v první nebo druhé polovině roku. Hodnota 1 je 1, pokud datum předchází 1. červenci a v opačném případě 2.
quarter Číselná funkce představující čtvrtletí daného data Přebírá hodnoty 1, 2, 3 nebo 4 představující první, druhé, třetí, čtvrté čtvrtletí kalendářního roku. 1
month Číselná funkce představující kalendářní měsíc Přebírá hodnoty 1 až 12. 1
month_lbl Řetězcová funkce představující název měsíce. Leden
day Číselná funkce představující den v měsíci Přebírá hodnoty od 1 do 31. 1
hour Číselná funkce představující hodinu dne Přebírá hodnoty 0 až 23. 0
minute Číselná funkce představující minutu v rámci hodiny. Přebírá hodnoty 0 až 59. 25
second Číselná funkce představující sekundu daného data a času. V případě, že je k dispozici pouze formát data, se předpokládá hodnota 0. Přebírá hodnoty 0 až 59. 30
am_pm Číselná funkce označující, jestli je čas ráno nebo večer. Je to 0 pro časy před 12:0 a 1 pro časy po 12:0. 0
am_pm_lbl Funkce řetězce označující, jestli je čas ráno nebo večer. "am"
hour12 Číselná funkce představující hodinu dne ve 12hodinovém formátu. Vezme hodnoty 0 až 12 pro první polovinu dne a 1 až 11 pro druhou polovinu. 0
wday Číselná funkce představující den v týdnu Přebírá hodnoty 0 až 6, kde 0 odpovídá pondělí. 5
wday_lbl Funkce řetězce představující název dne v týdnu.
qday Číselná funkce představující den v rámci čtvrtletí. Přebírá hodnoty 1 až 92. 1
yday Číselná funkce představující den v roce. Vezme hodnoty 1 až 365 nebo 1 až 366 v případě přestupného roku. 1
week Číselná funkce představující týden ISO podle definice v ISO 8601. Týdny ISO vždy začínají v pondělí a končí v neděli. Vezme hodnoty 1 až 52 nebo 53 pro roky, kdy 1. leden spadá na čtvrtek, nebo pro přestupné roky s 1. lednem připadajícím na středu. 52

Ve všech případech nemusí být vytvořena úplná sada standardních funkcí kalendáře. Vygenerovaná sada závisí na frekvenci časové řady a na tom, jestli trénovací data obsahují kromě časového indexu funkce datetime. Následující tabulka ukazuje funkce vytvořené pro různé typy sloupců:

Účel sloupce Funkce kalendáře
Časový index Úplná sada minus funkce kalendáře, které mají vysokou korelaci s jinými funkcemi. Pokud je například frekvence časových řad denní, odeberou se všechny funkce s podrobnější než denní frekvencí, protože neposkytují užitečné informace.
Jiný sloupec datetime Redukovaná sada skládající se z Year, Month, Day, DayOfWeekDayOfYear, QuarterOfYear, WeekOfMonth, Hour, , Minutea Second. Pokud je sloupec datum bez času, HourMinute, a Second bude mít hodnotu 0.

Funkce svátků

AutoML může volitelně vytvářet funkce představující svátky z konkrétní země nebo oblasti. Tyto funkce se v AutoML konfigurují pomocí parametru country_or_region_for_holidays , který přijímá kód země ISO.

Poznámka

Funkce svátků se dají udělat jenom pro časové řady s denní frekvencí.

Funkce svátků jsou shrnuté v následující tabulce:

Název funkce Description
Holiday Funkce řetězce, která určuje, jestli je datum státním nebo regionálním svátkem. Vyznačené jsou také dny v rámci určitého rozsahu svátků.
isPaidTimeOff Binární funkce, která má hodnotu 1, pokud je den "placeným svátkem" v dané zemi nebo oblasti.

AutoML jako zdroj informací o svátcích používá Azure Open Datasets. Další informace najdete v dokumentaci k PublicHolidays .

Pokud chcete lépe porozumět generování funkcí svátků, podívejte se na následující ukázková data:

sample_data

Abychom pro tato data vytvořili funkce amerických svátků, nastavili country_or_region_for_holiday jsme v nastavení prognózy hodnotu NA "US", jak je znázorněno v následující ukázce kódu:

from azure.ai.ml import automl

# create a forcasting job
forecasting_job = automl.forecasting(
    compute='test_cluster',   # Name of single or multinode AML compute infrastructure created by user
    experiment_name=exp_name, # name of experiment 
    training_data=sample_data,  
    target_column_name='demand',
    primary_metric='NormalizedRootMeanSquaredError',
    n_cross_validations=3,
    enable_model_explainability=True
)

# set custom forecast settings
forecasting_job.set_forecast_settings(
    time_column_name='timeStamp',
    country_or_region_for_holidays='US'
)

Vygenerované funkce svátků vypadají jako na následujícím výstupu:

sample_data_output

Všimněte si, že vygenerované funkce mají předponu _automl_ před názvy sloupců. AutoML obecně používá tuto předponu k odlišení vstupních funkcí od navržených funkcí.

Další kroky