Поделиться через


Функции календаря для прогнозирования временных рядов в AutoML

В этой статье рассматриваются функции на основе календаря, создаваемые AutoML для повышения точности моделей прогнозирования регрессии. Так как праздники могут иметь сильное влияние на поведение моделиированной системы, время до, во время и после праздника может предвзять шаблоны серии. Каждый праздник создает окно по существующему набору данных, которому учащийся может назначить эффект. Это может быть особенно полезно в таких сценариях, как праздники, которые создают высокие требования для конкретных продуктов. Дополнительные общие сведения о методологии прогнозирования в AutoML см. в этой статье . Инструкции и примеры для обучения моделей прогнозирования в AutoML можно найти в нашей статье по настройке AutoML для прогнозирования временных рядов .

В рамках проектирования функций AutoML преобразует столбцы типов даты и времени, предоставляемые в обучающих данных в новые столбцы функций на основе календаря. Эти функции могут помочь моделям регрессии узнать сезонные закономерности на нескольких частотах. AutoML всегда может создавать функции календаря из индекса времени временных рядов, так как это обязательный столбец в обучающих данных. Функции календаря также создаются из других столбцов с типом datetime, если они присутствуют. Узнайте, как AutoML использует руководство по данным для получения дополнительных сведений о требованиях к данным .

AutoML рассматривает две категории функций календаря: стандартные функции, основанные полностью на значениях даты и времени и функциях праздников, относящихся к стране или региону мира. Мы рассмотрим эти функции в оставшейся части статьи.

Стандартные функции календаря

В следующей таблице показан полный набор стандартных функций календаря AutoML вместе с примером выходных данных. В примере используется стандартный YY-mm-dd %H-%m-%d формат представления datetime.

Имя функции Description Пример выходных данных для 2011-01-01 00:25:30
year Числовая функция, представляющая календарный год 2011
year_iso Представляет ISO-год, определенный в ISO 8601. Год в формате ISO начинается в первую неделю года, в которой есть четверг. Например, если 1 января является пятницей, ISO-год начинается 4 января. Годы ISO могут отличаться от календарных лет. 2010
half Функция, указывающая, находится ли дата в первой или второй половине года. Это 1, если дата до 1 июля и 2 в противном случае.
quarter Числовые признаки, представляющие четверть заданной даты. Он принимает значения 1, 2, 3 или 4, представляющие первый, второй, третий, четвертый квартал календарного года. 1
month Числовая функция, представляющая календарный месяц. Он принимает значения от 1 до 12. 1
month_lbl Функция строки, представляющая имя месяца. "Январь"
day Числовая функция, представляющая день месяца. Он принимает значения от 1 до 31. 1
hour Числовая функция, представляющая час дня. Он принимает значения от 0 до 23. 0
minute Числовая функция, представляющая минуту в течение часа. Он принимает значения от 0 до 59. 25
second Числовая функция, представляющая секунду заданного даты и времени. В случае, если указан только формат даты, предполагается значение 0. Он принимает значения от 0 до 59. 30
am_pm Числовые признаки, указывающие, находится ли время утром или вечером. Это 0 раз до 12 вечера и 1 раз после 12 вечера. 0
am_pm_lbl Функция строки, указывающая, находится ли время утром или вечером. 'am'
hour12 Числовая функция, представляющая час дня на 12 часов. Он принимает значения от 0 до 12 за первую половину дня и 1–11 для второй половины. 0
wday Числовые признаки, представляющие день недели. Он принимает значения от 0 до 6, где 0 соответствует понедельнику. 5
wday_lbl Функция строки, представляющая имя дня недели.
qday Числовые признаки, представляющие день в пределах квартала. Он принимает значения от 1 до 92. 1
yday Числовая функция, представляющая день года. Он принимает значения 1–365 или 1–366 в случае високосного года. 1
week Числовые признаки, представляющие неделю ISO, как определено в ISO 8601. Недели ISO всегда начинаются в понедельник и заканчиваются в воскресенье. Он принимает значения 1–52, или 53 в течение многих лет, имеющих 1-е января падение в четверг или на високосные годы, имея 1-й январь падение в среду. 52

Полный набор стандартных функций календаря не может быть создан во всех случаях. Созданный набор зависит от частоты временных рядов и того, содержат ли обучающие данные функции datetime в дополнение к индексу времени. В следующей таблице показаны функции, созданные для различных типов столбцов:

Назначение столбцов. Функции календаря
Индекс времени Полный набор функций календаря минус, имеющих высокую корреляцию с другими функциями. Например, если частота временных рядов ежедневно, то любые функции с более детализированной частотой, чем ежедневно, будут удалены, так как они не предоставляют полезные сведения.
Другой столбец datetime Сокращенный набор, состоящий из Year, Month, DayOfWeekWeekOfMonthDayQuarterOfYearHourDayOfYearMinuteи .Second Если столбец является датой без времени, Hourи MinuteSecond значением будет 0.

Функции праздников

AutoML может при необходимости создавать функции, представляющие праздники из определенной страны или региона. Эти функции настраиваются в AutoML с помощью country_or_region_for_holidays параметра, который принимает код страны ISO.

Примечание.

Функции праздников можно сделать только для временных рядов с ежедневной частотой.

В следующей таблице приведены сведения о функциях праздников:

Имя функции Description
Holiday Функция строки, указывающая, является ли дата национальным или региональным праздником. Дни в течение некоторого диапазона праздника также отмечены.
isPaidTimeOff Двоичная функция, которая принимает значение 1, если день является "платным отпуском" в данной стране или регионе.

AutoML использует наборы данных Azure Open Dataset в качестве источника сведений о празднике. Дополнительные сведения см. в документации PublicHolidays .

Чтобы лучше понять поколение функций праздников, рассмотрим следующие примеры данных:

sample_data

Чтобы сделать американские функции праздников для этих данных, мы зададим country_or_region_for_holiday значение "US" в параметрах прогноза , как показано в следующем примере кода:

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

Созданные функции праздников выглядят следующим образом:

sample_data_output

Обратите внимание, что созданные функции имеют префикс _automl_ , предустановленный к их именам столбцов. AutoML обычно использует этот префикс для отличия входных функций от инженерных функций.

Следующие шаги