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 vytvoří za účelem zvýšení přesnosti předpovědí regresních modelů. Vzhledem k tomu, že svátky mohou mít silný vliv na to, jak se modelovaný systém chová, čas před, během a po svátcích může ovlivnit vzory řad. Každá svátek vygeneruje okno nad existující datovou sadou, ke které může žák přiřadit efekt. To může být zvlášť užitečné ve scénářích, jako jsou svátky, které generují vysoké požadavky na konkrétní produkty. Další obecné 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 věnovaném nastavení AutoML pro prognózování časových řad.

AutoML jako součást přípravy funkcí transformuje sloupce typu datetime poskytované v trénovacích datech na nové sloupce funkcí založených na kalendáři. Tyto funkce můžou pomoct regresním modelům učit se sezónní vzory 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 se také skládají z jiných sloupců s typem datetime, pokud existují. Další informace o požadavcíchnach

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

Standardní funkce kalendáře

Následující tabulka ukazuje ú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 Popis 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 roku, který má čtvrtek. Pokud je například 1. ledna 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. Je to 1, pokud datum předchází 1. červenci a 2 jinak.
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. 0
month Číselná funkce představující kalendářní měsíc Přebírá hodnoty 1 až 12. 0
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. 0
hour Číselná funkce představující hodinu dne Přebírá hodnoty 0 až 23. 0
minute Číselná funkce představující minutu v hodině 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 zadán pouze formát data, pak se předpokládá jako 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 0krát před 12:00 a 1x po 12:00. 0
am_pm_lbl Řetězcová funkce 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 Řetězcová funkce 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. 0
yday Číselná funkce představující den v roce V případě přestupného roku přebírá hodnoty 1 až 365 nebo 1 až 366. 0
week Číselná funkce představující týden ISO definovaný v iso 8601. Týdny ISO vždy začínají v pondělí a končí v neděli. Trvá hodnoty 1 až 52 nebo 53 let, které mají 1. leden padající ve čtvrtek nebo pro přestupné roky, které mají 1. leden padající ve středu. 52

Úplná sada standardních funkcí kalendáře se nemusí vytvářet ve všech případech. Vygenerovaná sada závisí na frekvenci časových řad a na tom, jestli trénovací data obsahují kromě indexu času i funkce data a času. Následující tabulka uvádí 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ší frekvencí, než je denní doba, protože neposkytují užitečné informace.
Jiný sloupec datetime Redukovaná sada skládající se z Year, , DayOfYearQuarterOfYearWeekOfMonthDayOfWeekDayMonth, , Hour, , Minutea .Second Pokud je sloupec datum bez času, HourMinutebude a Second bude 0.

Funkce svátků

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

Poznámka:

Funkce svátků lze provádět pouze pro časové řady s denní frekvencí.

Následující tabulka shrnuje funkce svátků:

Název funkce Popis
Holiday Řetězcová funkce, která určuje, jestli je datum státní/regionální svátky. Dny v určitém rozsahu svátků jsou také označené.
isPaidTimeOff Binární funkce, která přebírá hodnotu 1, pokud je den "placeným volnou dovolenou" v dané zemi nebo oblasti.

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

Pokud chcete lépe porozumět generování funkcí svátků, zvažte následující ukázková data:

sample_data

Abychom pro tato data nastavili americké funkce svátků, nastavíme country_or_region_for_holiday v nastavení prognózy hodnotu "USA", 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 následující výstup:

sample_data_output

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

Další kroky