Функции календаря для прогнозирования временных рядов в 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 , Minute Hour , и Second . Если столбец является датой без времени, Hour , Minute и Second будут иметь значение 0. |
Праздничные функции
При необходимости AutoML может создавать функции, представляющие праздники из определенной страны или региона. Эти функции настраиваются в AutoML с помощью country_or_region_for_holidays
параметра , который принимает код страны ISO.
Примечание
Праздничные функции можно сделать только для временных рядов с ежедневной частотой.
В следующей таблице перечислены функции праздников:
Имя функции | Описание |
---|---|
Holiday |
Функция строки, указывающая, является ли дата национальным или региональным праздником. Дни в пределах определенного диапазона праздника также отмечены. |
isPaidTimeOff |
Двоичная функция, которая принимает значение 1, если день является "оплачиваемым отпуском" в заданной стране или регионе. |
AutoML использует открытые наборы данных Azure в качестве источника сведений о праздниках. Дополнительные сведения см. в документации по PublicHolidays .
Чтобы лучше понять создание функций праздников, рассмотрим следующие примеры данных:
Чтобы сделать американские праздничные характеристики для этих данных, мы задаем 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'
)
Созданные функции праздников выглядят следующим образом:
Обратите внимание, что для созданных компонентов префикс _automl_
добавляется к именам столбцов. AutoML обычно использует этот префикс, чтобы отличать входные признаки от спроектированных признаков.