Занятие 5. Расширение модели временных рядов

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

  • Использовать PREDICTION JOIN для соединения данных из внешнего источника с обучающими данными.

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

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

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

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

SELECT [<model columns>,] PredictTimeSeries(<table column reference>, n, EXTEND_MODEL_CASES) 
FROM <mining model>
PREDICTION JOIN <source query>
[WHERE <criteria>]

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

SELECT [<model columns>,] PredictTimeSeries(<table column reference>, n-start, n-end, EXTEND_MODEL_CASES) 
FROM <mining model>
PREDICTION JOIN <source query>
[WHERE <criteria>}

В этом учебнике будут созданы оба типа запросов.

Создание одноэлементного прогнозирующего запроса на модели временных рядов

  1. В окне Обозреватель объектов щелкните правой кнопкой мыши экземпляр службы Службы Analysis Services, укажите Создать запрос, а затем выберите пункт Расширения интеллектуального анализа данных.

    Откроется редактор запросов, содержащий новый пустой запрос.

  2. Скопируйте общий пример одноэлементной инструкции в пустой запрос.

  3. Замените:

    SELECT [<model columns>,] PredictTimeSeries(<table column reference>, n, EXTEND_MODEL_CASES) 
    

    на:

    SELECT [Model Region],
    PredictTimeSeries([Quantity],6, EXTEND_MODEL_CASES) AS PredictQty
    

    В первой строке извлекается значение из модели, которая идентифицирует ряд.

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

  4. Замените:

    FROM <mining model>
    

    на:

    FROM [Forecasting_MIXED]
    
  5. Замените:

    PREDICTION JOIN <source query>
    

    на:

    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
    
  6. Замените:

    [WHERE <criteria>]
    

    на:

    WHERE [ModelRegion] = 'M200 Europe' OR
    [ModelRegion] = 'M200 Pacific'
    

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

    SELECT [Model Region],
    PredictTimeSeries([Quantity],6, EXTEND_MODEL_CASES) AS PredictQty
    FROM
       [Forecasting_MIXED]
    NATURAL PREDICTION JOIN 
    (
       SELECT 1 AS [ReportingDate],
      '10' AS [Quantity],
      'M200 Europe' AS [ModelRegion]
    UNION SELECT
      2 AS [ReportingDate],
      15 AS [Quantity]),
      'M200 Europe' AS [ModelRegion]
    ) AS t
    WHERE [ModelRegion] = 'M200 Europe' OR
    [ModelRegion] = 'M200 Pacific'
    
  7. В меню Файл выберите Сохранить DMXQuery1.dmx как.

  8. В диалоговом окне Сохранить как перейдите к соответствующей папке и присвойте файлу имя Singleton_TimeSeries_Query.dmx.

  9. На панели инструментов нажмите кнопку Выполнить.

    Запрос возвращает прогнозы объема продаж велосипедов M200 в европейском и тихоокеанском регионах.

Основные сведения о запуске прогноза при помощи параметра EXTEND_MODEL_CASES

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

  • Предоставлены новые данные только для европейского региона.

  • Предоставлены новые данные только за два месяца.

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

Продукт и регион

Существующая модель (PredictTimeSeries)

Модель с обновленными данными продаж (PredictTimeSeries с EXTEND_MODEL_CASES)

M200 Europe

M200 Europe7/25/2008 12:00:00 AM77
M200 Europe8/25/2008 12:00:00 AM64
M200 Europe9/25/2008 12:00:00 AM59
M200 Europe10/25/2008 12:00:00 AM56
M200 Europe11/25/2008 12:00:00 AM56
M200 Europe12/25/2008 12:00:00 AM74
M200 Europe7/25/2008 12:00:00 AM10
M200 Europe8/25/2008 12:00:00 AM15
M200 Europe9/25/2008 12:00:00 AM72
M200 Europe10/25/2008 12:00:00 AM69
M200 Europe11/25/2008 12:00:00 AM68
M200 Europe12/25/2008 12:00:00 AM89

M200 Pacific

M200 Pacific7/25/2008 12:00:00 AM41
M200 Pacific8/25/2008 12:00:00 AM44
M200 Pacific9/25/2008 12:00:00 AM38
M200 Pacific10/25/2008 12:00:00 AM41
M200 Pacific11/25/2008 12:00:00 AM36
M200 Pacific12/25/2008 12:00:00 AM39
M200 Pacific7/25/2008 12:00:00 AM41
M200 Pacific8/25/2008 12:00:00 AM44
M200 Pacific9/25/2008 12:00:00 AM38
M200 Pacific10/25/2008 12:00:00 AM41
M200 Pacific11/25/2008 12:00:00 AM36
M200 Pacific12/25/2008 12:00:00 AM39

Эти результаты позволяют сделать два вывода.

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

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

Использование начального и конечного временных шагов для управления прогнозированием

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

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

  • Запросить прогнозы для четырех временных срезов, где начальной точкой будет временной срез 3, а конечной — временной срез 6.

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

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

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

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

SELECT [Model Region],
PredictTimeSeries([Quantity],3,6, EXTEND_MODEL_CASES) AS PredictQty
FROM
   [Forecasting_MIXED]
NATURAL PREDICTION JOIN 
(
   SELECT 1 AS [ReportingDate],
  '10' AS [Quantity],
  'M200 Europe' AS [ModelRegion]
UNION SELECT
  2 AS [ReportingDate],
  15 AS [Quantity]),
  'M200 Europe' AS [ModelRegion]
) AS t
WHERE [ModelRegion] = 'M200 Europe'

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

Продукт и регион

Модель с обновленными данными (PredictTimeSeries с EXTEND_MODEL_CASES)

M200 Europe

M200 Europe9/25/2008 12:00:00 AM72
M200 Europe10/25/2008 12:00:00 AM69
M200 Europe11/25/2008 12:00:00 AM68
M200 Europe12/25/2008 12:00:00 AM89

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

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