Использование алгоритма MicrosoftTimeSeries для прогнозирования значений временных рядов
Прогнозирующие запросы
В написании прогнозирующих запросов к моделям, использующим алгоритм временных рядов, есть некоторые особенности. Из-за того, что исходные данные - это сам временной ряд, который уже использовался при обучении модели, в простых случаях необходимость в конструкции PredictionJoin отпадает. В запросах используется функция PredictTimeSeries, которая получает на вход имя атрибута и количество предсказываемых значений, а возвращает таблицу спрогнозированных результатов.
Рассмотрим создание запроса. На вкладке MiningModelPrediction переключимся в режим написания текста запроса (Query, рис. 32.5). И введем нижеследующий код:
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 месяцев вперед. После этого переключаемся к представлению результатов выполнения запроса (Result, рис. 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'
Теперь рассмотрим следующую задачу. Нужно построить прогноз при условии, что некоторые из исходных данных были бы другими. Например, если бы продажи велосипеда марки 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. Результат выполнения запроса: 1 - для исходных данных, 2 -для модифицированных исходных данных |