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


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

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

Синтаксис

PredictTimeSeries(<table column reference>)
PredictTimeSeries(<table column reference>, n)
PredictTimeSeries(<table column reference>, n-start, n-end)
PredictTimeSeries(<scalar column reference>)
PredictTimeSeries(<scalar column reference>, n)
PredictTimeSeries(<scalar column reference>, n-start, n-end)
PredictTimeSeries(<table column reference>, n, REPLACE_MODEL_CASES | EXTEND_MODEL_CASES) PREDICTION JOIN <source query>
PredictTimeSeries(<table column reference>, n-start, n-end, REPLACE_MODEL_CASES | EXTEND_MODEL_CASES) PREDICTION JOIN <source query>
PredictTimeSeries(<scalar column reference>, n, REPLACE_MODEL_CASES | EXTEND_MODEL_CASES) PREDICTION JOIN <source query>
PredictTimeSeries(<scalar column reference>, n-start, n-end, REPLACE_MODEL_CASES | EXTEND_MODEL_CASES) PREDICTION JOIN <source query>

Аргументы

  • <table column reference>, <scalar column referenc>
    Указывает имя прогнозируемого столбца. Столбец может содержать скалярные или табличные данные.

  • n
    Указывает число следующих прогнозируемых шагов. Если значение аргумента n не указано, значение по умолчанию равно 1.

    Аргумент n не может иметь значение 0. Чтобы функция не возвращала ошибку, необходимо сделать хотя бы один прогноз.

  • n-start, n-end
    Указывает диапазон шагов временного ряда.

    Аргумент n-start должен быть целым числом и не может быть равен 0.

    Значение n-end должно быть целым числом, больше n-start.

  • <source query>
    Определяет внешние данные, используемые при формировании прогнозов.

  • REPLACE_MODEL_CASES | EXTEND_MODEL_CASES
    Указывает метод обработки новых данных.

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

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

    Эти аргументы можно использовать, только если новые данные добавляются с помощью инструкции PREDICTION JOIN. Если в запросе PREDICTION JOIN аргумент не указан, значение по умолчанию — EXTEND_MODEL_CASES.

Тип возвращаемых данных

<table expression>.

Замечания

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

В инструкции PREDICTION JOIN процесс прогнозирования всегда начинается на временном шаге сразу после окончания первоначальной обучающей последовательности. Так происходит даже при добавлении новых данных. Таким образом, значения параметров n и n-start должны быть целыми числами больше 0.

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

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

Примеры

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

  • В первом примере показано, как сделать указанное число прогнозов на основе текущей модели.

  • Во втором примере показано использование параметра REPLACE_MODEL_CASES для применения шаблонов в заданной модели к новому набору данных.

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

Дополнительные сведения о работе с моделями временных рядов см. в учебнике по интеллектуальному анализу данных Занятие 2. Построение сценария прогнозирования (учебник по интеллектуальному анализу данных — средний уровень) и Учебник по расширениям интеллектуального анализа данных для прогнозирования временных рядов.

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

Модель может давать разные результаты; результаты приведенных ниже примеров призваны лишь продемонстрировать формат результатов.

Пример 1. Прогнозирование числа срезов времени

В следующем примере функция PredictTimeSeries возвращает прогноз для следующих трех временных шагов, при этом результаты ограничиваются рядами M200 в областях Europe и Pacific. В этой конкретной модели прогнозируемым атрибутом является атрибут «Quantity», поэтому в качестве первого аргумента функции PredictTimeSeries следует использовать аргумент [Quantity].

SELECT FLATTENED
    [Forecasting].[Model Region],
    PredictTimeSeries([Forecasting].[Quantity],3)AS t 
FROM
    [Forecasting]
WHERE [Model Region] = 'M200 Europe'
OR [Model Region] = 'M200 Pacific'

Ожидаемые результаты:

Model Region

t.$TIME

t.Quantity

M200 Europe

25.07.2004 00:00:00

121

M200 Europe

25.08.2004 00:00:00

142

M200 Europe

25.09.2004 00:00:00

152

M200 Pacific

25.07.2004 00:00:00

46

M200 Pacific

25.08.2004 00:00:00

44

M200 Pacific

25.09.2004 00:00:00

42

В этом примере для облегчения чтения результатов было использовано ключевое слово FLATTENED. Если ключевое слово FLATTENED не используется и возвращается иерархический набор строк, запрос возвращает два столбца. Первый столбец содержит значение для [ModelRegion], а второй столбец содержит вложенную таблицу с двумя столбцами. Это столбец $TIME, показывающий прогнозируемые срезы времени, и столбец Quantity, содержащий прогнозируемые значения.

Пример 2. Добавление новых данных и использование параметра REPLACE_MODEL_CASES

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

В таких случаях можно использовать параметр REPLACE_MODEL_CASES и задать новый набор данных для использования в качестве исторических данных. При этом прогнозы будут основываться на шаблонах в заданной модели, но плавно продолжаться с конца новых точек данных. Полное пошаговое руководство с описанием этого сценария см. в разделе Добавление статической модели прогнозирования (учебник по интеллектуальному анализу данных — средний уровень).

Запрос PREDICTION JOIN демонстрирует синтаксис замены данных и выполнения новых прогнозов. Для заменяемых данных в примере извлекается значение столбцов «Amount» и «Quantity», каждое из которых умножается на два.

SELECT [Forecasting].[Model Region],
    PredictTimeSeries([Forecasting].[Quantity], 3, REPLACE_MODEL_CASES) 
FROM
    [Forecasting]
PREDICTION JOIN
  OPENQUERY([Adventure Works DW2008],
    'SELECT [ModelRegion], 
    ([Quantity] * 2) as Quantity,
    ([Amount] * 2) as Amount,
      [ReportingDate]
    FROM [dbo].vTimeSeries
    WHERE ModelRegion = N''M200 Pacific''
    ') AS t
ON
  [Forecasting].[Model Region] = t.[ Model Region] AND
[Forecasting].[Reporting Date] = t.[ReportingDate] AND
[Forecasting].[Quantity] = t.[Quantity] AND
[Forecasting].[Amount] = t.[Amount]

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

Исходные прогнозы

Обновленные прогнозы

M200 Pacific25.07.2004 00:00:0046
M200 Pacific25.08.2004 00:00:0044
M200 Pacific25.09.2004 00:00:0042
M200 Pacific25.07.2004 00:00:0091
M200 Pacific25.08.2004 00:00:0089
M200 Pacific25.09.2004 00:00:0084

Пример 3. Добавление новых данных и использование параметра EXTEND_MODEL_CASES

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

В следующем примере новые данные предоставляются в инструкции SELECT после NATURAL PREDICTION JOIN. С помощью этого синтаксиса можно указать несколько строк нового ввода, но каждая новая строка ввода имеет уникальную метку времени.

SELECT [Model Region],
    PredictTimeSeries([Forecasting].[Quantity], 5, EXTEND_MODEL_CASES) 
FROM
    [Forecasting]
NATURAL PREDICTION JOIN
    (SELECT
        1 as [Reporting Date],
        10 as [Quantity],
        'M200 Europe' AS [Model Region]
    UNION SELECT 
        2 as [Reporting Date],
        15 as [Quantity],
        'M200 Europe' AS [Model Region]
) AS T
WHERE ([Model Region] = 'M200 Europe'
 OR [Model Region] = 'M200 Pacific')

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

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

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

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

В следующей таблице приведены результаты выполнения запроса из примера 2. Обратите внимание, что первые два значения, возвращенные для столбца M200 Europe, в точности соответствуют новым указанным значениям. Это поведение не является ошибкой; чтобы начать прогнозы с конца новых данных, необходимо указать шаг времени начала и завершения. Пример этого см. в разделе Занятие 5. Расширение модели временных рядов.

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

Quantity

EXTEND_MODEL_CASES

M200 Europe

$TIMEQuantity
7/25/2004 0:0010
8/25/2004 0:0015
9/25/2004 0:0072
10/25/2004 0:0069
11/25/2004 0:0068

M200 Pacific

$TIMEQuantity
7/25/2004 0:0046
8/25/2004 0:0044
9/25/2004 0:0042
10/25/2004 0:0042
11/25/2004 0:0038

Пример 4. Возврат статистики в прогнозе временных рядов

Функция PredictTimeSeries не поддерживает параметр INCLUDE_STATISTICS. Однако вернуть статистику прогнозов для запроса по временным рядам можно с помощью приведенного ниже запроса. Кроме того, этот подход можно использовать при работе с моделями, в которых есть столбцы вложенных таблиц.

В этой конкретной модели прогнозируемым атрибутом является атрибут «Quantity», поэтому в качестве первого аргумента функции PredictTimeSeries следует использовать аргумент [Quantity]. Если в модели используется другой прогнозируемый атрибут, можно подставить другое имя столбца.

SELECT FLATTENED [Model Region],
(SELECT 
     $Time,
     [Quantity] as [PREDICTION], 
     PredictVariance([Quantity]) AS [VARIANCE],
     PredictStdev([Quantity]) AS [STDEV]
FROM
      PredictTimeSeries([Quantity], 3) AS t
) AS t
FROM Forecasting
WHERE [Model Region] = 'M200 Europe'
OR [Model Region] = 'M200 North America'

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

Model Region

t.$TIME

t.PREDICTION

t.VARIANCE

t.STDEV

M200 Europe

25.07.2004 00:00:00

121

11.6050581415597

3.40661975300439

M200 Europe

25.08.2004 00:00:00

142

10.678201866621

3.26775180615374

M200 Europe

25.09.2004 00:00:00

152

9.86897842568614

3.14149302493037

M200 North America

25.07.2004 00:00:00

163

1.20434529288162

1.20434529288162

M200 North America

25.08.2004 00:00:00

178

1.65031343900634

1.65031343900634

M200 North America

25.09.2004 00:00:00

156

1.68969399185442

1.68969399185442

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

Ключевое слово FLATTENED использовалось в этом примере, чтобы представить результаты в виде таблицы; но, если поставщик поддерживает иерархические наборы строк, ключевое слово FLATTENED можно опустить. Если опустить ключевое слово FLATTENED, запрос вернет два столбца. Первый столбец будет содержать значение, идентифицирующее ряды данных [Model Region], а второй столбец — вложенную таблицу со статистикой.