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


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

В SQL Server 2014 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 в тихоокеанском регионе, но для сравнения представлен этот ряд.

Продукт и регион: M200 Europe

Существующая модель (PredictTimeSeries) Модель с обновленными данными продаж (PredictTimeSeries с EXTEND_MODEL_CASES)
M200 Europe 7/25/2008 12:00:00 AM 77 10
M200 Europe 8/25/2008 12:00:00 AM 64 15
M200 Europe 9/25/2008 12:00:00 AM 59 72
M200 Europe 10/25/2008 12:00:00 AM 56 69
M200 Europe 11/25/2008 12:00:00 AM 56 68
M200 Europe 12/25/2008 12:00:00 AM 74 89

Продукт и регион: M200 Pacific

Существующая модель (PredictTimeSeries) Модель с обновленными данными продаж (PredictTimeSeries с EXTEND_MODEL_CASES)
M200 Pacific 7/25/2008 12:00:00 AM 41 41
M200 Pacific 8/25/2008 12:00:00 AM 44 44
M200 Pacific 9/25/2008 12:00:00 AM 38 38
M200 Pacific 10/25/2008 12:00:00 AM 41 41
M200 Pacific 11/25/2008 12:00:00 AM 36 36
M200 Pacific 12/25/2008 12:00:00 AM 39 39

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

  • Первые два прогноза для ряда 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, который идет после предоставленных новых данных за два месяца.

Продукт и регион: M200 Europe

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

M200 Europe 9/25/2008 12:00:00 AM 72
M200 Europe 10/25/2008 12:00:00 AM 69
M200 Europe 11/25/2008 12:00:00 AM 68
M200 Europe 12/25/2008 12:00:00 AM 89

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

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

См. также:

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