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

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

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

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

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

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

Имя функции Описание Пример выходных данных для 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:00 и 1 для раз после 12:00. 0
am_pm_lbl Функция строки, указывающая, является ли время утренним или вечерним. 'am'
hour12 Числовая функция, представляющая час дня в 12-часовых часах. Он принимает значения от 0 до 12 для первой половины дня и от 1 до 11 для второй половины. 0
wday Числовой признак, представляющий день недели. Принимает значения от 0 до 6, где 0 соответствует понедельнику. 5
wday_lbl Функция string, представляющая название дня недели.
qday Числовой признак, представляющий день в квартале. Принимает значения от 1 до 92. 1
yday Числовой признак, представляющий день года. Он принимает значения от 1 до 365 или от 1 до 366 в случае високосного года. 1
week Числовой признак, представляющий неделю ISO , как определено в ISO 8601. Недели ISO всегда начинаются с понедельника и заканчиваются в воскресенье. Он принимает значения от 1 до 52, или 53 для лет, имеющих 1-е января падает на четверг или для високосных лет, имеющих 1-е января падает на среду. 52

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

Назначение столбцов. Функции календаря
Индекс времени Полный набор функций календаря, которые имеют высокую корреляцию с другими функциями. Например, если частота временных рядов является ежедневной, все функции с более детализированной частотой, чем ежедневно, будут удалены, так как они не предоставляют полезных сведений.
Другой столбец даты и времени Сокращенный набор, состоящий из Year, Month, Day, DayOfWeek, DayOfYear, QuarterOfYear, WeekOfMonth, MinuteHour, и Second. Если столбец является датой без времени, Hour, Minuteи Second будут иметь значение 0.

Праздничные функции

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

Примечание

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

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

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

AutoML использует открытые наборы данных Azure в качестве источника сведений о праздниках. Дополнительные сведения см. в документации по 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 обычно использует этот префикс, чтобы отличать входные признаки от спроектированных признаков.

Дальнейшие действия