Kalenderfunktioner för tidsserieprognoser i AutoML

Den här artikeln fokuserar på de kalenderbaserade funktioner som AutoML skapar för att öka precisionen för prognostisering av regressionsmodeller. Eftersom helgdagar kan ha en stark inverkan på hur det modellerade systemet beter sig kan tiden före, under och efter en semester påverka seriens mönster. Varje helgdag genererar ett fönster över din befintliga datauppsättning som eleven kan tilldela en effekt till. Detta kan vara särskilt användbart i scenarier som helgdagar som genererar höga krav på specifika produkter. Mer allmän information om prognostiseringsmetodik i AutoML finns i artikeln om metodöversikt för metoder . Instruktioner och exempel för modeller för träningsprognoser i AutoML finns i vår artikel om att konfigurera AutoML för tidsserieprognoser .

Som en del av funktionsframställning omvandlar AutoML kolumner av typen datetime som tillhandahålls i träningsdata till nya kolumner med kalenderbaserade funktioner. Dessa funktioner kan hjälpa regressionsmodeller att lära sig säsongsmönster i flera takter. AutoML kan alltid skapa kalenderfunktioner från tidsindexet för tidsserien eftersom detta är en obligatorisk kolumn i träningsdata. Kalenderfunktioner skapas också från andra kolumner med datetime-typ, om sådana finns. Se hur AutoML använder din dataguide för mer information om datakrav.

AutoML tar hänsyn till två kategorier av kalenderfunktioner: standardfunktioner som helt baseras på datum- och tidsvärden och semesterfunktioner som är specifika för ett land eller en region i världen. Vi går över dessa funktioner i resten av artikeln.

Standardkalenderfunktioner

Följande tabell visar den fullständiga uppsättningen av AutoML:s standardkalenderfunktioner tillsammans med ett exempel på utdata. I exemplet används standardformatet YY-mm-dd %H-%m-%d för datetime-representation.

Funktionsnamn Description Exempel på utdata för 2011-01-01 00:25:30
year Numerisk funktion som representerar kalenderåret 2011
year_iso Representerar ISO-år enligt definitionen i ISO 8601. ISO-åren börjar den första veckan på året som har en torsdag. Om till exempel 1 januari är en fredag börjar ISO-året den 4 januari. ISO-år kan skilja sig från kalenderår. 2010
half Funktion som anger om datumet är under första eller andra halvan av året. Det är 1 om datumet är före 1 juli och 2 annars.
quarter Numerisk funktion som representerar kvartalet för det angivna datumet. Det tar värdena 1, 2, 3 eller 4 som representerar första, andra, tredje, fjärde kvartalet i kalenderåret. 1
month Numerisk funktion som representerar kalendermånaden. Det tar värdena 1 till och med 12. 1
month_lbl Strängfunktion som representerar namnet på månaden. "Januari"
day Numerisk funktion som representerar dagen i månaden. Det tar värden från 1 till 31. 1
hour Numerisk funktion som representerar timmen på dagen. Det tar värdena 0 till och med 23. 0
minute Numerisk funktion som representerar minuten inom en timme. Det tar värdena 0 till 59. 25
second Numerisk funktion som representerar den andra av den angivna datetime. Om endast datumformat anges antas det som 0. Det tar värdena 0 till 59. 30
am_pm Numerisk funktion som anger om tiden är på morgonen eller kvällen. Det är 0 för tider före 12:00 och 1 för tider efter 12:00. 0
am_pm_lbl Strängfunktion som anger om tiden är på morgonen eller kvällen. "am"
hour12 Numerisk funktion som representerar timmen på dagen på en 12-timmarsklocka. Det tar värden 0 till 12 för första halvan av dagen och 1 till 11 för andra halvlek. 0
wday Numerisk funktion som representerar veckodagen. Det tar värdena 0 till och med 6, där 0 motsvarar måndag. 5
wday_lbl Strängfunktion som representerar namnet på veckodagen.
qday Numerisk funktion som representerar dagen inom kvartalet. Det tar värdena 1 till 92. 1
yday Numerisk funktion som representerar dagen på året. Det tar värdena 1 till 365, eller 1 till 366 när det gäller skottår. 1
week Numerisk funktion som representerar ISO-veckan enligt definitionen i ISO 8601. ISO-veckorna börjar alltid på måndag och slutar på söndag. Det tar värden 1 till 52, eller 53 för år som har 1 januari som faller på torsdag eller för skottår med 1 januari som faller på onsdag. 52

Den fullständiga uppsättningen standardkalenderfunktioner kanske inte skapas i alla fall. Den genererade uppsättningen beror på tidsseriens frekvens och om träningsdata innehåller datetime-funktioner utöver tidsindexet. I följande tabell visas de funktioner som skapats för olika kolumntyper:

Kolumnsyfte Kalenderfunktioner
Tidsindex Den fullständiga uppsättningen minus kalenderfunktioner som har hög korrelation med andra funktioner. Om t.ex. tidsseriefrekvensen är daglig tas alla funktioner med en mer detaljerad frekvens än dagligen bort eftersom de inte ger användbar information.
Annan datetime-kolumn En reducerad uppsättning som består av Year, Month, Day, DayOfWeek, DayOfYear, QuarterOfYear, WeekOfMonth, Hour, Minuteoch Second. Om kolumnen är ett datum utan tid, Hour, Minuteoch Second blir 0.

Semesterfunktioner

AutoML kan också skapa funktioner som representerar helgdagar från ett visst land eller en viss region. Dessa funktioner konfigureras i AutoML med hjälp av parametern country_or_region_for_holidays , som accepterar en ISO-landskod.

Anteckning

Semesterfunktioner kan endast göras för tidsserier med daglig frekvens.

I följande tabell sammanfattas semesterfunktionerna:

Funktionsnamn Description
Holiday Strängfunktion som anger om ett datum är en nationell/regional helgdag. Dagar inom ett visst intervall av en semester markeras också.
isPaidTimeOff Binär funktion som tar värde 1 om dagen är en "betald ledighetssemester" i det angivna landet eller regionen.

AutoML använder Azure Open Datasets som källa för semesterinformation. Mer information finns i PublicHolidays-dokumentationen .

Tänk på följande exempeldata för att bättre förstå genereringen av semesterfunktioner:

sample_data

För att skapa amerikanska semesterfunktioner för dessa data anger country_or_region_for_holiday vi till "US" i prognosinställningarna enligt följande kodexempel:

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'
)

De genererade semesterfunktionerna ser ut som följande utdata:

sample_data_output

Observera att genererade funktioner har prefixet _automl_ före kolumnnamnen. AutoML använder vanligtvis det här prefixet för att skilja indatafunktioner från konstruerade funktioner.

Nästa steg