Dela via


Kalenderfunktioner för tidsserieprognoser i AutoML

Den här artikeln fokuserar på de kalenderbaserade funktioner som AutoML skapar för att öka noggrannheten för prognostisering av regressionsmodeller. Eftersom helgdagar kan ha ett starkt inflytande 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 prognosmetoder 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 datetime-typ 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 tidsserierna eftersom det här är en obligatorisk kolumn i träningsdata. Kalenderfunktioner skapas också från andra kolumner med datetime-typ, om några 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 beskrivning 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 infaller under första eller andra halvå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ärden 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 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 dagens timme. 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 och med 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 och med 59. 30
am_pm Numerisk funktion som anger om tiden är på morgonen eller kvällen. Det är 0 för gånger före 12:00 och 1 för gånger 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 dagens timme 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 halvåret. 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ärden 1 till 365, eller 1 till 366 vid 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 med 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 bestående av Year, Month, Day, DayOfWeek, DayOfYear, QuarterOfYear, WeekOfMonth, Hour, Minuteoch Second. Om kolumnen är ett datum utan tid blir Hour, Minute, och Second 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.

Kommentar

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

I följande tabell sammanfattas semesterfunktionerna:

Funktionsnamn beskrivning
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ärdet 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 göra amerikanska semesterfunktioner för dessa data anger country_or_region_for_holiday vi till "USA" 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öregås av sina kolumnnamn. AutoML använder vanligtvis det här prefixet för att skilja indatafunktioner från konstruerade funktioner.

Nästa steg