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


Занятие 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 Europe25.07.04 00:00:0077
M200 Europe25.08.04 00:00:0064
M200 Europe25.09.04 00:00:0059
M200 Europe25.10.04 00:00:0056
M200 Europe25.11.04 00:00:0056
M200 Europe25.12.04 00:00:0074
M200 Europe25.07.04 00:00:0010
M200 Europe25.08.04 00:00:0015
M200 Europe25.09.04 00:00:0072
M200 Europe25.10.04 00:00:0069
M200 Europe25.11.04 00:00:0068
M200 Europe25.12.04 00:00:0089

M200 Pacific

M200 Pacific25.07.04 00:00:0041
M200 Pacific25.08.04 00:00:0044
M200 Pacific25.09.04 00:00:0038
M200 Pacific25.10.04 00:00:0041
M200 Pacific25.11.04 00:00:0036
M200 Pacific25.12.04 00:00:0039
M200 Pacific25.07.04 00:00:0041
M200 Pacific25.08.04 00:00:0044
M200 Pacific25.09.04 00:00:0038
M200 Pacific25.10.04 00:00:0041
M200 Pacific25.11.04 00:00:0036
M200 Pacific25.12.04 00:00:0039

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

  • Первые два прогноза для ряда 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 Europe25.09.04 00:00:0072
M200 Europe25.10.04 00:00:0069
M200 Europe25.11.04 00:00:0068
M200 Europe25.12.04 00:00:0089

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

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