Интеллектуальный анализ данных средствами MS SQL Server 2008

Использование алгоритма MicrosoftTimeSeries для прогнозирования значений временных рядов

Показывать лекцию целиком

На практике мы часто сталкиваемся с временными рядами: биржевые котировки ценных бумаг, объемы выпуска товаров по месяцам, среднесуточные значения температуры воздуха - все это примеры подобных последовательностей. В общем случае, временной ряд - это набор числовых значений, собранных в последовательные моменты времени (в большинстве случаев - через равные промежутки времени). При работе с временными рядами часто возникает желание выявить зависимости между текущим значением и предшествующими ему, и использовать их для прогнозирования будущих значений. Подобную задачу можно решить с использованием алгоритма MicrosoftTimeSeries, входящего в набор стандартных алгоритмов аналитических служб SQLServer 2008.

Для анализа будем использовать данные из учебной базы ).

(рис 32.1) Данные из представления vTimeSeriesбазы AdventureWorks DW

Рассматриваемый набор данных представляет собой пример чередующегося ряда: в нем есть несколько записей соответствующих одной дате, содержащих данные для разных моделей велосипеда. Другой вариант представления - столбчатый формат - иллюстрируется таблицей 32.1.

Представление временных рядов в "столбчатом" формате
Дата M200 R200
200101 100 50
200102 120 20
…. ….

Но вернемся к нашей задаче. Источник данных, указывающий на базу AdventureWorks DW, у нас уже создан. Следующий шаг - создать в среде BIDevStudio представление источника данных, включающее vTimeSeries. Процесс создания подробно разбирался в лабораторной №11.Назовем созданное представление источника данных TimeSeries_dsv.

Далее потребуется создатьв среде BIDevStudio модель для прогнозирования рядов. Начало создания модели: использовать будем данные из реляционной БД, алгоритм - ).

Следующий шаг - определение типов данных и содержимого для выбранных атрибутов. Здесь можно согласиться с автоматически подобранными значениями (рис 32.3).Стоит обратить внимание на тип содержимого KeyTime выбранный для столбца [DateSeries]. Столбец с таким типом обязательно должен присутствовать, если будет использоваться алгоритм интеллектуального анализа MicrosoftTimeSeries.

Назовем создаваемую структуру ).

(рис 32.2) Выбор прогнозируемых атрибутов (рис 32.3) Выбор типа содержимого и типа данных (рис 32.4) Называем модель и структуру (рис 32.5) Указание периодичности - 12 (число месяцев в году)

После создания структуры и модели интеллектуального анализа можно более точно настроить параметры. В частности, в свойствах модели можно явно указать, что во временном ряде ожидается периодичность 12 (число месяцев в году, т.к. у нас данные с продажами по месяцам). Подобное изменение настроек показано на рис 32.5. После этого надо провести полную обработку модели, и на вкладке ). Непрерывной линией изображены фактические данные, пунктиром - прогнозируемые результаты.Поле Predictionsteps позволяет указать, на сколько шагов вперед предсказывается значение ряда, а выпадающий список под ним - выбрать значения, для которых строятся графики.

(рис 32.6) Просмотр графиков. Пунктирная линия - прогнозируемые значения Задание 1. По аналогии с рассмотренным примером создайте структуру и модель интеллектуального анализа данных для прогнозирования продаж AdventureWorks. Не указывайте значение для периодичности. Проведите обработку модели, постройте графики продаж велосипедов модели M200 в разных регионах с прогнозом на год (12 значений). Проанализируйте результаты. ). Проведите повторную обработку модели и снова проанализируйте графики прогноза на год. Есть ли изменения? Чем можно объяснить полученный результат?

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

В написании прогнозирующих запросов к моделям, использующим алгоритм временных рядов, есть некоторые особенности. Из-за того, что исходные данные - это сам временной ряд, который уже использовался при обучении модели, в простых случаях необходимость в конструкции PredictionJoin отпадает. В запросах используется функция PredictTimeSeries, которая получает на вход имя атрибута и количество предсказываемых значений, а возвращает таблицу спрогнозированных результатов.

Рассмотрим создание запроса. На вкладке ). И введем нижеследующий код:

SELECT
  [vTimeSeries_TS].[ModelRegion],
PredictTimeSeries([vTimeSeries_TS].[Quantity],6) as QTY
From
  [vTimeSeries_TS]
WHERE [vTimeSeries_TS].[Model Region] = 'R250 Europe'OR [vTimeSeries_TS].[Model Region] = 'R750 Europe'
    

Мы хотим получить оценки для объемов продаж моделей R250 и R750 в Европе на 6 месяцев вперед. После этого переключаемся к представлению результатов выполнения запроса ().

(рис 32.7) Написание прогнозирующего запроса (рис 32.8) Результат выполнения запроса

На рис 32.8 результаты прогнозирования представлены в "иерархическом" формате. Чтобы получить результат в виде таблицы, несколько изменим инструкцию, дополнив SELECT ключевым словом FLATTENED:

SELECTFLATTENED
  [vTimeSeries_TS].[Model Region],
PredictTimeSeries([vTimeSeries_TS].[Quantity],6) as QTY
From
  [vTimeSeries_TS]
WHERE [vTimeSeries_TS].[Model Region] = 'R250 Europe'OR [vTimeSeries_TS].[Model Region] = 'R750 Europe'
    
Задание 3. Проверьте работу приведенного выше запроса. Напишите запрос, выводящий ожидаемые результаты продаж модели T1000 в разных регионах на год вперед.

Теперь рассмотрим следующую задачу. Нужно построить прогноз при условии, что некоторые из исходных данных были бы другими. Например, если бы продажи велосипеда марки R250 в Европе за два предыдущих месяца были бы 10 и 12 штук (исходные значения были 16 и 13 соответственно). Это можно сделать, используя параметр REPLACE_MODEL_CASES в функции PredictTimeSeries.

Чтобы увидеть, как работает параметр, для начала выполним запрос без него. Код приведен ниже, а интересующий нас фрагмент таблицы с результатами выполнения показан на рис 32.9-1.

SELECTFLATTENED
    [Model Region],
PredictTimeSeries([vTimeSeries_TS].[Quantity],6) 
From
  [vTimeSeries_TS]
    

Теперь укажем, что нужно заместить значения по продажам 'R250 Europe' за два последних месяца значениями 10 и 12. Соответствующий код приведен ниже. При замене из нового набора берется вариант с самым большим значением метки времени, и им заменяется значение с самой большойметкой времени из исходного набора, и т.д. Фрагмент результата выполнения представлен на рис 32.9-2. Из него видно, что прогноз для 'R250 Europe' изменился.

SELECTFLATTENED
[Model Region],
PredictTimeSeries([vTimeSeries_TS].[Quantity],6, REPLACE_MODEL_CASES) 
From
  [vTimeSeries_TS]

NATURALPREDICTIONJOIN ( 
SELECT 1 as  [Date Series], 'R250 Europe'as [Model Region], 10 as [Quantity]
UNION
SELECT 2 as  [Date Series], 'R250 Europe'as [Model Region], 12 as [Quantity]) as t
    
1 2
(рис 32.9)
Рис.32.9. Результат выполнения запроса: 1 - для исходных данных, 2 -для модифицированных исходных данных
Задание 4. Проверьте работу приведенных выше запросов. Можно ли говорить о наличии корреляции между продажами модели R250 в Европе и M200 в Тихоокеанском регионе? Задание 5. Самостоятельно разберитесь по справке с использованием параметра EXTEND_MODEL_CASES в функции PredictTimeSeries. Напишите прогнозирующий запрос с использованием данного параметра.
Вернуться к учебному плану