Технический справочник по алгоритму временных рядов (Майкрософт)

Алгоритм временных рядов Microsoft включает два отдельных алгоритма:

  • алгоритм ARTXP, который появился в SQL Server 2005, оптимизирован для прогнозирования следующего вероятного значения в ряду;

  • алгоритм ARIMA добавлен в SQL Server 2008, чтобы повысить точность долгосрочного прогнозирования.

По умолчанию службы Службы Analysis Services используют каждый алгоритм отдельно для обучения модели, а затем объединяют результаты, чтобы получить самый лучший прогноз для переменного числа прогнозов. Также можно выбрать для использования только один алгоритм, в зависимости от имеющихся данных и требований к прогнозам. Начиная с выпуска SQL Server 2008 Enterprise, также можно настроить точку раздела, которая управляет слиянием алгоритмов в ходе создания прогнозов.

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

Реализация алгоритмов временных рядов

Группа исследований Microsoft разработала оригинальный алгоритм ARTXP, который применялся в SQL Server 2005. Он основан на реализации алгоритма дерева принятия решений Microsoft. Таким образом, алгоритм ARTXP можно описать как модель дерева с авторегрессией для представления данных в периодических временных рядах. Этот алгоритм устанавливает соотношение между переменным количеством предыдущих элементов и каждым текущим элементом, в отношении которого выполняется прогноз. Название ARTXP отражает тот факт, что алгоритм ART (или метод дерева с авторегрессией) применяется ко многим неизвестным первоначальным состояниям. Подробное описание алгоритма ARTXP см. в статье Модели деревьев с авторегрессией для анализа временных рядов

Алгоритм ARIMA был добавлен к алгоритму временных рядов (Майкрософт) в SQL Server 2008 для повышения точности долгосрочного прогнозирования. Это реализация процесса вычисления интегрированных скользящих средних с авторегрессией, описанного Боксом и Дженкинсом. Методология ARIMA (интегрированное скользящее среднее с авторегрессией) позволяет определять зависимости в результатах наблюдений в форме последовательных временных рядов, при этом модель включает описание случайных скачков. Метод ARIMA также поддерживает мультипликативную сезонность. Читателям, интересующимся работой алгоритма ARIMA, рекомендуется прочесть основополагающую работу Бокса и Дженкинса; в этом разделе приводятся конкретные подробности реализации методологии ARIMA в алгоритме временных рядов (Майкрософт).

По умолчанию алгоритм временных рядов (Майкрософт) использует оба метода (ARIMA и ARTXP) и объединяет результаты для повышения точности прогнозирования. Если необходимо использовать один определенный метод, можно настроить параметры алгоритма на использование только метода ARTXP или ARIMA либо выбрать определенное сочетание результатов работы методов. Обратите внимание, что алгоритм ARTXP поддерживает перекрестное прогнозирование, а алгоритм ARIMA — нет. Поэтому перекрестное прогнозирование доступно, только если используется сочетание алгоритмов или если в модели задано использование только алгоритма ARTXP.

Основные сведения о разностном порядке ARIMA

В этом разделе вводятся термины, необходимые для описания модели ARIMA, и обсуждается конкретная реализация вычисления разностей в алгоритме временных рядов (Майкрософт). С полным описанием этих терминов и понятий рекомендуется ознакомиться в публикации Бокса и Дженкинса.

  • Член — это составляющая математического уравнения. Например, член полиномного уравнения может состоять из сочетания переменных и констант.

  • Формула ARIMA, включенная в алгоритм временных рядов (Майкрософт), использует как авторегрессивные члены, так и члены скользящего среднего.

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

  • Цель вычисления разностей заключается в стабилизации временного ряда, который должен стать стационарным.

  • Разностный порядок представляет количество вычислений разности между значениями для временного ряда.

Алгоритм временных рядов (Майкрософт) извлекает значения из ряда данных и пытается согласовать их с шаблоном (закономерностью). Если ряд данных еще не является стационарным, алгоритм применяет разностный порядок. Каждое повышение разностного порядка, как правило, делает временной ряд более стационарным.

Например, если имеется временной ряд (z1, z2… zn), над которым выполняются вычисления с использованием единичного разностного порядка, будет получен новый ряд (y1, y2… yn-1), где yi = zi+1-zi. Если разностный порядок равен 2, алгоритм формирует новый ряд (x1, x2… xn-2), основанный на ряде y, полученном из уравнения первого порядка. Точная величина применяемой разности зависит от данных. В моделях, отображающих постоянные тренды, чаще всего используется единичный разностный порядок; второй разностный порядок может указывать на изменяющийся со временем тренд.

По умолчанию разностный порядок, используемый алгоритмом временых рядов (Майкрософт), равен -1, то есть алгоритм автоматически выбирает оптимальное значение разностного порядка. Как правило, оптимальное значение равно 1 (когда требуется вычисление разности), но в некоторых определенных ситуациях алгоритм увеличивает значение до максимального, равного 2.

Алгоритм временных рядов (Майкрософт) определяет оптимальный разностный порядок ARIMA, используя значения авторегрессии. Алгоритм исследует значения AR и устанавливает скрытый параметр ARIMA_AR_ORDER, который представляет порядок членов AR. Этот скрытый параметр ARIMA_AR_ORDER может принимать значения от -1 до 8. При значении по умолчанию -1 алгоритм автоматически выбирает подходящий разностный порядок.

Если значение параметра ARIMA_AR_ORDER больше 1, алгоритм умножает временной ряд на полиномный член. Если один из членов полиномной формулы разрешается с корнем 1 или близким к 1, алгоритм пытается сохранить стабильность модели, удаляя такой член и увеличивая разностный порядок на 1. Если разностный порядок уже максимален, член удаляется, а разностный порядок не изменяется.

Например, если значение AR = 2, получаемый полиномный член AR может иметь следующий вид: 1 – 1,4B + 0,45B^2 = (1- 0,9B) (1- 0,5B). Обратите внимание на член (1- 0,9B), корень которого составляет около 0,9. Алгоритм удаляет этот член из полиномной формулы, но не может увеличить разностный порядок на единицу, так как он уже равен максимальному значению 2.

Важно отметить, что единственный способ принудительного изменения разностного порядка — это использование недокументированного и неподдерживаемого параметра ARIMA_DIFFERENCE_ORDER. Этот скрытый параметр определяет, сколько раз алгоритм выполняет вычисление разностей для временных рядов, и может устанавливаться посредством ввода пользовательского параметра алгоритма. Однако изменять это значение не рекомендуется, если вы не готовы к экспериментам и не знакомы с выполняемыми вычислениями. Кроме того, учтите, что на данный момент нет механизма (и скрытых параметров), позволяющего управлять пороговым значением, при котором срабатывает увеличение разностного порядка.

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

Настройка алгоритма временных рядов (Майкрософт)

Алгоритм временных рядов Microsoft поддерживает несколько параметров, влияющих на поведение, производительность и точность получаемой модели интеллектуального анализа данных.

Обнаружение сезонности

Оба алгоритма поддерживают обнаружение сезонности, или периодичности. Службы Службы Analysis Services применяют быстрое преобразование Фурье для определения сезонности до этапа обучения.

Чтобы обеспечить самые лучшие результаты, можно управлять определением сезонности, задавая параметры алгоритма. Изменяя значение параметра AUTODETECT_SEASONALITY, можно изменить возможное количество создаваемых временных интервалов. Задавая значения для параметра PERIODICITY_HINT, можно передать в алгоритм данные об известных повторяющихся периодах и повысить точность обнаружения.

ПримечаниеПримечание

Алгоритмы ARTxp и ARIMA учитывают подсказки сезонности. Поэтому указание неправильной подсказки может отрицательно сказаться на результатах.

Совместное использование алгоритмов

По умолчанию службы Службы Analysis Services используют оба алгоритма, устанавливая для них одинаковые весовые коэффициенты. Однако начиная с выпуска SQL Server 2008 Enterprise можно изменить правило объединения результатов, выбрав параметр MIXED и указав параметр, который будет смещать баланс результатов в сторону краткосрочного или долгосрочного прогноза.

Если необходимо использовать перекрестное прогнозирование, необходимо указать параметр ARTXP или MIXED, поскольку алгоритм ARIMA не поддерживает перекрестное прогнозирование.

Выбор алгоритмов управляется параметром FORECAST_METHOD. По умолчанию параметр FORECAST_METHOD имеет значение MIXED, и службы Службы Analysis Services используют оба алгоритма, назначая для них весовые коэффициенты, которые максимально учитывают преимущества каждого алгоритма. Однако можно установить для параметра FORECAST_METHOD значение ARTXP, если нужно использовать только алгоритм ARTxp, или ARIMA, если нужно использовать только алгоритм ARIMA.

Кроме того, начиная с выпуска SQL Server 2008 Enterprise, в службах Службы Analysis Services можно изменять способ сочетания алгоритмов ARIMA и ARTXP. Можно управлять как начальной пропорцией сочетания, так и скоростью изменения этой пропорции, устанавливая параметр PREDICTION_SMOOTHING:

  • Если параметр PREDICTION_SMOOTHING имеет значение 0, в модели будет использоваться только алгоритм ARTxp.

  • Если параметр PREDICTION_SMOOTHING имеет значение 1, в модели будет использоваться только алгоритм ARIMA.

  • Если параметр set PREDICTION_SMOOTHING имеет значение между 0 и 1, модель назначает для алгоритма ARTxp весовые коэффициенты, экспоненциально убывающие с увеличением числа шагов прогнозирования. Алгоритм ARIMA получает весовые коэффициенты, которые в сумме с коэффициентами ARTxp составляют 1. Для сглаживания кривых в модели используется константа нормирования и стабилизации.

Если прогноз охватывает не более 5 временных срезов, то алгоритм ARTxp почти всегда будет лучшим выбором. Однако чем больше число прогнозируемых временных срезов, тем, как правило, лучшие результаты дает алгоритм ARIMA.

На следующей схеме показано, как модель объединяет результаты алгоритмов, если параметр PREDICTION_SMOOTHING имеет значение по умолчанию (0,5). Вначале алгоритмы ARIMA и ARTxp получают равные весовые коэффициенты, но по мере увеличения числа шагов прогнозирования вес алгоритма ARIMA растет.

стандартная кривая для сочетания алгоритмов временных рядов

Для сравнения представлена следующая схема, где показано объединение алгоритмов в случае, если параметр PREDICTION_SMOOTHING имеет значение 0,2. На шаге 0 модель присваивает ARIMA вес 0,2, а ARTXP — вес 0,8. Затем весовые коэффициенты для ARIMA экспоненциально возрастают, а для ARTxp — соответственно убывают.

кривая затухания для сочетания моделей временных рядов

Задание параметров алгоритма

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

Параметр

Описание

AUTO_DETECT_PERIODICITY

Указывает числовое значение от 0 до 1, используемое для обнаружения периодичности. Значение по умолчанию равно 0,6.

Если значение ближе к 0, то периодичность обнаруживается только для строго периодических данных.

Установка этого значения в значение, более близкое к 1, повышает вероятность обнаружения многих закономерностей, близких к периодическим, и автоматического создания подсказок периодичности.

ПримечаниеПримечание
Использование большого количества подсказок периодичности, скорее всего, значительно увеличит время обучения моделей, однако позволит повысить их точность.

COMPLEXITY_PENALTY

Управляет ростом дерева решений. Значение по умолчанию — 0,1.

Уменьшение этого значения повышает вероятность разбиения. Увеличение этого значения снижает вероятность разбиения.

ПримечаниеПримечание
Этот параметр доступен только в выпуске SQL Server Enterprise.

FORECAST_METHOD

Указывает, какой алгоритм используется для анализа и прогнозирования. Возможные значения — ARTXP, ARIMA и MIXED. Значение по умолчанию — MIXED.

HISTORIC_MODEL_COUNT

Указывает количество моделей с предысторией, которые будут построены. Значение по умолчанию — 1.

ПримечаниеПримечание
Этот параметр доступен только в выпуске SQL Server Enterprise.

HISTORICAL_MODEL_GAP

Указывает интервал времени между двумя последовательными моделями с предысторией. Значение по умолчанию — 10. Это значение выражено в единицах времени, которые определяются моделью.

Например, если установить это значение равным g, то модели с предысторией будут строиться для данных, усекаемых временными срезами в интервалах g, 2*g, 3*g и так далее.

ПримечаниеПримечание
Этот параметр доступен только в выпуске SQL Server Enterprise.

INSTABILITY_SENSITIVITY

Управляет точкой, в которой дисперсия прогноза превышает определенное пороговое значение и алгоритм ARTxp запрещает такие прогнозы. Значение по умолчанию равно 1.

ПримечаниеПримечание
Этот параметр не применяется к моделям, использующим только алгоритм ARIMA.

Значение по умолчанию (1) означает режим работы, аналогичный SQL Server 2005. Службы Службы Analysis Services отслеживают нормированное стандартное отклонение для каждого прогноза. Как только среднеквадратичное отклонение для какого-либо прогноза превышает пороговое значение, алгоритм временных рядов возвращает значение NULL и прекращает процесс прогнозирования.

Значение 0 отключает проверку нестабильности. Это значит, что можно создавать неограниченное число прогнозов независимо от дисперсии.

ПримечаниеПримечание
Этот параметр можно изменять только в выпуске SQL Server Enterprise. В выпуске SQL Server Standard службы Службы Analysis Services используют только значение по умолчанию (1).

MAXIMUM_SERIES_VALUE

Указывает максимальное значение, используемое для прогнозов. Этот параметр используется вместе с параметром MINIMUM_SERIES_VALUE для ограничения прогнозируемых величин определенным диапазоном значений. Например, можно указать, что прогнозируемый объем продаж для любого дня никогда не должен превышать количество изделий, имеющихся на складе.

ПримечаниеПримечание
Этот параметр доступен только в выпуске SQL Server Enterprise.

MINIMUM_SERIES_VALUE

Задает минимальное прогнозируемое значение. Этот параметр используется вместе с параметром MAXIMUM_SERIES_VALUE для ограничения прогнозируемых величин определенным диапазоном значений. Например, можно указать, что прогнозируемый объем продаж никогда не должен быть отрицательным числом.

ПримечаниеПримечание
Этот параметр доступен только в выпуске SQL Server Enterprise.

MINIMUM_SUPPORT

Указывает минимальное количество временных срезов, необходимых для создания разбиения в каждом дереве временных рядов. Значение по умолчанию — 10.

MISSING_VALUE_SUBSTITUTION

Указывает порядок заполнения пропусков в данных с предысторией. По умолчанию пропуски в данных не допускаются.

В следующей таблице перечислены возможные значения для этого параметра.

ЗначениеОписание
PreviousПовторяет значение из предыдущего временного среза.
MeanИспользует значение скользящего среднего среди временных рядов, использованных в обучении.
Числовая константаИспользует конкретное число для замены всех отсутствующих значений.
NoneЗамещает отсутствующие значения значениями, расположенными на кривой обученной модели. Это значение по умолчанию.

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

Службы Службы Analysis Services также используют значение этого параметра, чтобы заполнять пропуски в новых данных в ходе выполнения инструкции PREDICTION JOIN в модели временных рядов.

PERIODICITY_HINT

Предоставляет подсказку для алгоритма, касающуюся периодичности данных. Например, если продажи варьируются в зависимости от года, а в ряду в качестве единицы измерения используются месяцы, то периодичность равна 12. Этот параметр имеет формат {n [, n]}, где n — любое положительное число.

Число n внутри квадратных скобок [] является необязательным и может повторяться сколь угодно часто. Например, чтобы задать несколько подсказок периодичности для данных, пополняемых ежемесячно, можно ввести {12, 3, 1}, чтобы обнаруживать закономерности, проявляющиеся ежегодно, ежемесячно и ежеквартально. Однако подсказки периодичности сильно влияют на качество работы модели. Если заданная подсказка отличается от реальной периодичности, это может отрицательно сказаться на результатах.

Значение по умолчанию равно {1}.

ПримечаниеПримечание
Фигурные скобки указывать обязательно. Кроме того, этот параметр имеет строковый тип данных. Поэтому, если нужно ввести этот параметр в составе инструкции расширений интеллектуального анализа данных, необходимо поместить в кавычки числовое значение в фигурных скобках.

PREDICTION_SMOOTHING

Указывает, как модель должна использовать сочетание двух алгоритмов для оптимизации прогнозов. Можно ввести любое число от 0 до 1 или использовать одно из следующих значений.

ПримечаниеПримечание
Для управления обучением используется параметр FORECAST_METHOD.
ЗначениеОписание
0 Указывает, что при прогнозировании используется только алгоритм ARTxp. Процесс прогнозирования оптимизируется для небольшого числа прогнозов.
1Указывает, что при прогнозировании используется только алгоритм ARIMA. Процесс прогнозирования оптимизируется для большого числа прогнозов.
0.5(По умолчанию) Указывает, что при прогнозировании используются оба алгоритма, а их результаты объединяются.
ПримечаниеПримечание
Этот параметр доступен только в выпуске SQL Server Enterprise.

Флаги модели

Алгоритм временных рядов (Майкрософт) поддерживает следующие флаги моделирования. Чтобы задать порядок обработки в ходе анализа значений в каждом столбце, во время создания структуры или модели интеллектуального анализа данных определяются флаги модели. Дополнительные сведения см. в разделе Флаги моделирования (интеллектуальный анализ данных).

Флаг моделирования

Описание

NOT NULL

Указывает, что столбец не может принимать значение NULL. Если службы Analysis Services в ходе обучения модели обнаружат столбец со значением NULL, возникает ошибка.

Применяется к столбцам структуры интеллектуального анализа данных.

MODEL_EXISTENCE_ONLY

Столбец будет обрабатываться так, как будто у него два возможных состояния: отсутствует и присутствует. NULL означает отсутствие значения.

Применяется к столбцам модели интеллектуального анализа данных.

Требования

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

Входные и прогнозируемые столбцы

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

Cтолбец

Типы содержимого

Входной атрибут

Непрерывные, ключевые, ключевые времени и табличные

Прогнозируемый атрибут

Непрерывные, табличные

ПримечаниеПримечание

Типы содержимого Cyclical и Ordered поддерживаются, но алгоритм обрабатывает их как дискретные величины и не производит их особой обработки.

Журнал изменений

Обновленное содержимое

  • Добавлен новый раздел, описывающий реализацию вычисления разностей в алгоритме ARIMA.