Запрос модели временных рядов (службы Analysis Services — интеллектуальный анализ данных)

К модели интеллектуального анализа данных можно создать два вида запросов: запросы содержимого, возвращающие подробные сведения о закономерностях, обнаруженных при анализе, и прогнозирующие запросы, использующие закономерности, содержащиеся в модели, для прогнозирования новых данных. Например, запрос содержимого для модели временных рядов может возвратить дополнительные сведения о найденных периодических структурах; прогнозирующий запрос может выполнить прогнозы для следующих 5 — 10 временных срезов. Запрос также позволяет получить метаданные, описывающие модель.

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

Запросы содержимого

Получение подсказок периодичности для модели

Получение выражения для модели ARIMA

Получение выражения для модели ARTxp

Прогнозирующие запросы

Основные сведения о замене и добавлении данных временных рядов

Прогнозирование с помощью EXTEND_MODEL_CASES

Прогнозирование с помощью REPLACE_MODEL_CASES

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

Получение сведений о модели временных рядов

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

Образец запроса 1. Получение подсказок периодичности для модели

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

SELECT MINING_PARAMETERS 
FROM $system.DMSCHEMA_MINING_MODELS
WHERE MODEL_NAME = '<model name>'

Частичные результаты:

MINING_PARAMETERS

COMPLEXITY_PENALTY=0.1,MINIMUM_SUPPORT=10,PERIODICITY_HINT={1,3},….

Подсказкой периодичности по умолчанию является {1}; она появляется во всех моделях. Данный образец модели был создан с дополнительной подсказкой, которая может отсутствовать в окончательной модели.

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

Результаты были усечены для удобства чтения.

Вернуться в начало

Образец запроса 2. Получение выражения для модели ARIMA

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

Например, префикс TA означает, что узел является частью дерева ARIMA, тогда как префикс TS используется для деревьев ARTXP. Деревья корня ARIMA можно найти с помощью запроса к содержимому модели для узлов со значением NODE_TYPE, равным 27. Значение ATTRIBUTE_NAME можно использовать для поиска корневого узла ARIMA для конкретных рядов данных. В этом примере запроса выполняется поиск узлов ARIMA, представляющих значения объема продаж модели R250 в Европе.

SELECT NODE_UNIQUE_NAME
FROM Forecasting.CONTENT
WHERE ATTRIBUTE_NAME = 'R250 Europe: Quantity"
AND NODE_TYPE = 27

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

SELECT FLATTENED NODE_CAPTION as [Short equation], 
(SELECT ATTRIBUTE_NAME, ATTRIBUTE_VALUE 
FROM NODE_DISTRIBUTION) as t
FROM Forecasting.CONTENT
WHERE NODE_NAME = 'TA00000007'

Образец результатов:

Краткое выражение

t.ATTRIBUTE_NAME

t.ATTRIBUTE_VALUE

ARIMA (2,0,7)x(1,0,2)(12)

R250 Europe:Quantity(Intercept)

15.24….

ARIMA (2,0,7)x(1,0,2)(12)

R250 Europe:Quantity(Periodicity)

1

ARIMA (2,0,7)x(1,0,2)(12)

R250 Europe:Quantity(Periodicity)

12

Дополнительные сведения о том, как интерпретировать эту информацию, см. в разделе Содержимое модели интеллектуального анализа данных для моделей временных рядов (службы Analysis Services — интеллектуальный анализ данных).

Вернуться в начало

Образец запроса 3. Получение выражения для модели ARTXP

В моделях ARTxp на каждом уровне дерева хранится разная информация. Дополнительные сведения о структуре модели ARTxp и о том, как следует интерпретировать сведения в выражении, см. в разделе Содержимое модели интеллектуального анализа данных для моделей временных рядов (службы Analysis Services — интеллектуальный анализ данных).

Приведенная ниже инструкция DMX извлекает данные для части дерева ARTxp, представляющей объем продаж модели R250 в Европе.

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

Имя столбца вложенной таблицы — VARIANCE — должно быть заключено в скобки, чтобы отличаться от зарезервированного ключевого слова с таким же именем. Столбцы вложенной таблицы — PROBABILITY и SUPPORT — не включаются, поскольку у большинства вариантов они пустые.

SELECT NODE_CAPTION as [Split information], 
(SELECT ATTRIBUTE_NAME, ATTRIBUTE_VALUE,
   [VARIANCE]
   FROM NODE_DISTRIBUTION) AS t
FROM Forecasting.CONTENT
WHERE NODE_ATTRIBUTE_NAME = 'R250 Europe:Quantity'
AND NODE_TYPE = 15

Дополнительные сведения о том, как интерпретировать эту информацию, см. в разделе Содержимое модели интеллектуального анализа данных для моделей временных рядов (службы Analysis Services — интеллектуальный анализ данных).

Вернуться в начало

Создание прогнозов на модели временных рядов

Начиная с SQL Server 2008 Enterprise, можно добавлять новые данные в модель временных рядов и автоматически встраивать новые данные в эту модель. Добавить новые данные в модель интеллектуального анализа данных временных рядов можно одним из двух способов.

Основные сведения о замене и добавлении данных временных рядов

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

  • Если выбрано расширение данных, службы Службы Analysis Services добавляют новые данные в конец существующих обучающих данных. Число обучающих вариантов увеличивается. Увеличение количества обучающих вариантов полезно, чтобы модель постоянно обновлялась новыми данными. Например, если необходимо создать растущий с течением времени обучающий набор, можно просто дополнить модель.

    Чтобы добавить новые данные, создайте PREDICTION JOIN для модели временных рядов, определите источник новых данных и используйте аргумент EXTEND_MODEL_CASES.

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

    Замена вариантов полезна также и в том случае, если необходимо обучить модель на одном наборе вариантов, а затем применить эту модель к другому ряду данных. Для замены данных создайте PREDICTION JOIN в модели временных рядов, определите источник новых данных и используйте аргумент REPLACE_MODEL_CASES.

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

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

Независимо от того, дополняются обучающие данные или замещаются, прогнозы всегда начинаются с отметки времени, которая завершает исходный набор данных для обучения. Таким образом, если новые данные содержат n временных срезов и запрашиваются прогнозы для временных шагов с 1 по n, то период прогнозирования совпадет с периодом новых данных. Чтобы получить новые прогнозы для периодов времени, не охваченных имеющимися данными, необходимо либо начать прогнозирование с временного среза n+1 после нового ряда данных, либо запросить дополнительные временные срезы.

Предположим, что существующая модель имеет данные за шесть месяцев. Необходимо расширить эту модель данными о продажах за последние три месяца. Одновременно требуется прогноз на следующие три месяца. Чтобы получить при добавлении новых данных только новые прогнозы, задайте в качестве начальной точки временной срез 4, а в качестве конечной — срез 7. Можно также запросить общую сумму шести прогнозов, но временные срезы для первых трех будут перекрыты только что добавленными данными.

Дополнительные сведения о синтаксисе инструкций REPLACE_MODEL_CASES и EXTEND_MODEL_CASES см. в разделе PredictTimeSeries (расширения интеллектуального анализа данных).

Вернуться в начало

Прогнозирование с помощью EXTEND_MODEL_CASES

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

Такое поведение позволяет добавлять новые данные и отображать на диаграмме прогнозов реальные объемы продаж, а не данные прогнозов.

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

  • Создать PREDICTION JOIN для модели временных рядов и определить источник новых данных за три месяца.

  • Запросите прогнозирование для шести временных срезов. Для этого задайте шесть временных срезов, указав в качестве начальной точки временной срез 1, а конечной — временной срез 7. Это справедливо только для параметра EXTEND_MODEL_CASES.

  • Чтобы получить только новые прогнозы, задайте начальную точку как 4 и конечную точку как 7.

  • Необходимо использовать аргумент EXTEND_MODEL_CASES.

    Для первых трех временных срезов возвращаются графики фактических продаж, а для следующих трех временных срезов — прогнозы, основанные на расширенной модели.

Вернуться в начало

Прогнозирование с помощью REPLACE_MODEL_CASES

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

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

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

Например, модель была обучена на наборе данных, состоящем из 1000 строк. Затем добавляется 100 строк новых данных. Службы Службы Analysis Services стирают первые 100 строк из обучающего набора и добавляют 100 строк новых данных в конец набора, что в сумме дает 1000 строк. Если добавляется 1100 строк новых данных, будет использоваться только 1000 самых последних.

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

  • Создать PREDICTION JOIN для модели временных рядов и используйте аргумент REPLACE_MODEL_CASE.

  • Задать источник новых данных за три месяца. Эти данные могут быть совершенно не из того источника, откуда были взяты исходные обучающие данные.

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

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

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

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

    При работе с параметром REPLACE_MODEL_CASES, начиная с отметки времени 1 пользователь будет получать новые прогнозы, основываясь на новых данных, которые будут заменять старые обучающие данные.

Дополнительные сведения о синтаксисе инструкций REPLACE_MODEL_CASES и EXTEND_MODEL_CASES см. в разделе PredictTimeSeries (расширения интеллектуального анализа данных).

Вернуться в начало

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

Если новые данные добавляются в модель временных рядов с помощью инструкции PREDICTION JOIN, то в новом наборе данных не может быть отсутствующих значений. В любой неполной последовательности модель должна подставить вместо отсутствующих значений NULL среднее значение, конкретное числовое значение или прогнозируемое значение. Если используется EXTEND_MODEL_CASES, службы Службы Analysis Services замещают отсутствующие значения прогнозами, основанными на исходной модели. Если используется ключевое слово REPLACE_MODEL_CASES, службы Службы Analysis Services замещают отсутствующие значения значением, указанным в параметре MISSING_VALUE_SUBSTITUTION.

Список прогнозирующих функций

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

Функция Lag

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

Типичное применение этой функции — идентификация недавних обучающих вариантов с целью получения подробных данных о них.

PredictNodeId

Возвращает идентификатор узла для заданного прогнозируемого столбца.

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

PredictStdev (расширения интеллектуального анализа данных)

Возвращает стандартное отклонение прогнозов для заданного прогнозируемого столбца.

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

PredictVariance (расширения интеллектуального анализа данных)

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

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

PredictTimeSeries (расширения интеллектуального анализа данных)

Возвращает прогнозируемые будущие или исторические значения для временного ряда данных.

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

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

Вернуться в начало