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 , DayOfWeek DayOfYear , QuarterOfYear , WeekOfMonth , Hour , , Minute a Second . Pokud je sloupec datum bez času, Hour Minute , 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:
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:
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
- Přečtěte si další informace o tom, jak nastavit AutoML pro trénování modelu prognózování časových řad.
- Projděte si nejčastější dotazy k prognózování automatického strojového učení.
- Přečtěte si o funkcích opožděných prognóz autoML.
- Přečtěte si o tom, jak AutoML používá strojové učení k vytváření modelů prognóz.