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 , Minute och 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:
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:
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
- Läs mer om hur du konfigurerar AutoML för att träna en prognosmodell för tidsserier.
- Bläddra bland vanliga frågor och svar om AutoML-prognos.
- Lär dig mer om eftersläpande autoML-prognosfunktioner.
- Lär dig mer om hur AutoML använder maskininlärning för att skapa prognosmodeller.