Рис. 11. Результат выполнения прогнозирующего запроса

advertisement
Просмотр моделей интеллектуального анализа (деревья решений,
упрощенный алгоритма Байеса, нейронные сети). Написание
"одноэлементных" прогнозирующих запросов
В среде VisualStudio откроем созданную в ходе выполнения предыдущих лабораторных работ базу данных
аналитических служб. В ней - откроем в редакторе структуру vTargetMail_Structure2, которую создавали
для Лабораторной работы № 2 (классификация). Перейдем на вкладку MiningModelViewer и в выпадающем
спискеMimingModel выберем модель vTargetMail_NB, основанную на использовании упрощенного
алгоритма Байеса ( рис. 1)
Рис. 1. Диаграмма модели, основанной на упрощенном алгоритме Байеса
После проведения обработки, модель интеллектуального анализа данных хранит метаданные о себе,
собранную статистику, а также закономерности, выявленные алгоритмом интеллектуального анализа данных.
Способ описания закономерностей зависит от используемого алгоритма.
Среда VisualStudio предоставляет инструменты, позволяющие ознакомиться с содержимым модели. В
частности, это представленные на рис. 1 диаграммы (вид диаграммы зависит от используемого алгоритма). В
случае упрощенного алгоритма Байеса можно использовать диаграмму типа
"сеть зависимостей"(DependencyNetwork) для того, чтобы увидеть, насколько значения одних атрибутов
влияют на значения других.
Если на диаграмме ( рис. 1) щелчком мыши выделить целевой атрибут (BikeBuyer) и передвинуть вниз
"бегунок" AllLinks в левой части экрана, то можно увидеть, что в наибольшей степени на решение о
приобретении велосипеда влияет число машин в собственности у клиента ( рис. 2).
Рис. 2. Работа с диаграммой типа "сеть зависимостей"
Вкладка AttributeDiscrimination позволяет увидеть, какие значения входных атрибутов в наибольшей
степени соответствующие тому или иному значению выходного ( рис. 3). Из представленных на рисунке
данных можно сделать вывод, что отсутствие машины у клиента с большой вероятностью приведет его к
покупке велосипеда.
Рис. 3. Сравнение наборов значений входных атрибутов, соответствующих выбранным значениям выходного
атрибута
Рис. 4. Просмотр модели в Microsoft Generic Content Tree Viewer
Еще более подробно ознакомиться с содержимым модели позволяет средство
просмотра MicrosoftGenericContentTreeViewer. Если открыть в нем нашу модель vTargetMail_NB можно
увидеть содержимое модели в виде иерархии узлов. На рис. 4 представлено содержимое узла,
соответствующее ситуации, когда у клиента нет машин ( атрибут NumberCars= 0). Из 2977 вариантов, в
которых это значение встречается, 1889 клиентов купили велосипед (это примерно 63%) и 1088 (37%) не
купили.
Для модели vTargetMail_DT, использующей на алгоритм деревьев принятия решений,первой показывается
одноименная диаграмма DecisionTree ( рис. 5).На ней отображаются узлы построенного дерева, а выбор
любого конечного узла позволяет понять, как алгоритм будет строить прогноз для соответствующей
комбинации значений входных параметров. Например, на рисунке показано, что для клиента имеющего две
машины, проживающего в регионе Pacific(Тихоокеанский), возрастом менее 43 лет будет сделан
положительный прогноз относительно покупки им велосипеда, т.к. из 103 подобных клиентов в обучающей
выборке 84 сделали покупку.
Также для моделей на основе алгоритма деревьев принятия решения можно получить рассмотренные выше
диаграммы типа "сеть зависимостей".
Рис. 5. Диаграмма DecisionTree
Для основанной на алгоритме нейронных сетей модели vTargetMail_DT будет
отображаться диаграмма попарного сравнения вариантов, аналогичная представленной на рис. 3.
Задание 1. Проведите анализ содержимого всех моделей, построенных в ходе предыдущей лабораторной.
Опишите полученные результаты.
Построение прогнозов
Вернемся к модели vTargetMail_DT, которая как мы выяснили в "Задача классификации. Создание структуры
и моделей интеллектуального анализа. Сравнение точности моделей" , дает наиболее точный прогноз.
Попробуем сейчас построить прогноз для отдельного варианта. Можно это представить как попытку узнать
купит ли человек, заполнивший анкету велосипед или нет.
Перейдем на вкладку построителя запросов MiningModelPrediction. В окне MiningModel нажмите
кнопку SelectModel и выберите в структуре vTargetMail_Structure2 модель vTargetMail_DT ( рис. 6).
Рис. 6. Выбор модели, используемой для построения прогноза
В связи с тем, что прогноз мы хотим построить для одного варианта, значения атрибутов которого будем
вводить вручную, в контекстном меню выберем соответствующий тип запроса -SingletonQuery, что можно
перевести как "одноэлементный запрос" ( рис. 7). После чего зададим набор параметров, характеризующих
нового клиента. При этом значение атрибута BikeBuyer не указываем ( рис. 8).
Рис. 7. Выбор типа запроса SingletonQuery ("одноэлементный запрос")
Рис. 8. Задание значений атрибутов
Таким образом, вариант мы определили теперь надо указать цель запроса. Во -первых, мы хотим
узнать значение атрибута BikeBuyer. Для этого, находясь в режиме конструктора (Design) в нижней части
окна в списке Source выбираем модель vTargetMail_DT и автоматически будет подставлен
выходной атрибут BikeBuyer ( рис. 9). Кроме того, мы хотим узнать оценку вероятности, для выполняемого
прогноза. Для этого нам понадобиться функция PridictProbability с указанием
столбца [vTargetMail_DT].[BikeBuyer] в качестве аргумента ( рис. 10).
Рис. 9. Определение цели прогнозирующего запроса
Рис. 10. Определение цели прогнозирующего запроса
Если нажать кнопку переключения в режим просмотра результатов прогнозирующего запроса
(Switchtoqueryresultview в верхней левой части окна) мы увидим предсказываемое значение и оценку
вероятности ( рис. 11)
Рис. 11. Результат выполнения прогнозирующего запроса
Использование алгоритма MicrosoftTimeSeries для
прогнозирования значений временных рядов
На практике мы часто сталкиваемся с временными рядами: биржевые котировки ценных бумаг, объемы
выпуска товаров по месяцам, среднесуточные значения температуры воздуха - все это примеры подобных
последовательностей. В общем случае, временной ряд - это набор числовых значений, собранных в
последовательные моменты времени (в большинстве случаев - через равные промежутки времени). При
работе с временными рядами часто возникает желание выявить зависимости между текущим значением и
предшествующими ему, и использовать их для прогнозирования будущих значений. Подобную задачу можно
решить с использованием алгоритма MicrosoftTimeSeries, входящего в набор стандартных алгоритмов
аналитических служб SQLServer 2008.
Для анализа будем использовать данные из учебной
базы AdventureWorksDW. Представление (view) dbo.vTimeSeries формирует временной ряд, содержащий
результаты продаж различных моделей велосипедов по месяцам ( рис. 12).
Рис. 12. Данные из представления vTimeSeriesбазы AdventureWorks DW
Рассматриваемый набор данных представляет собой пример чередующегося ряда: в нем есть несколько
записей соответствующих одной дате, содержащих данные для разных моделей велосипеда. Другой вариант
представления - столбчатый формат - иллюстрируется таблицей 13.
Таблица 13. Представление временных рядов в "столбчатом" формате
Дата
200101
M200
100
R200
50
…
200102
120
20
…
….
….
Но вернемся к нашей задаче. Источник данных, указывающий на базу AdventureWorks DW, у нас уже
создан. Следующий шаг - создать в среде VisualStudio представление источника данных,
включающее vTimeSeries. Назовем созданноепредставление источника данных TimeSeries_dsv.
Далее потребуется создатьв среде VisualStudio модель для прогнозирования рядов. Начало создания модели:
использовать будем данные из реляционной БД, алгоритм - MicrosoftTimeSeries(Алгоритмвременных рядов
Microsoft), представление источника данных - TimeSeries_dsv, таблица с данными - vTimeSeries. Теперь
определимся, какие атрибуты потребуются для прогноза. Мы имеем дело с чередующимся временным рядом,
и чтобы идентифицировать один его элемент, надо указать отметку времени и название модели. Значит и
ключевых атрибутов будет два - DateSeries(отметка времени) и ModelRegion. Прогнозировать будем
значения объема продаж в денежном эквиваленте (Amount>) и количество проданных велосипедов
(Quantity). Эти атрибуты также будут рассматриваться и в качестве входных(13).
Следующий шаг - определение типов данных и содержимого для выбранных атрибутов. Здесь можно
согласиться с автоматически подобранными значениями ( рис. 14).Стоит обратить внимание на тип
содержимого KeyTime выбранный для столбца [DateSeries]. Столбец с таким типом обязательно должен
присутствовать, если будет использоваться алгоритм интеллектуального анализаMicrosoftTimeSeries.
Назовем создаваемую структуру vTimeSeries_TS_Structure, а модель - vTimeSeries_TS ( рис. 15).
Рис. 13. Выбор прогнозируемых атрибутов
Рис. 14. Выбор типа содержимого и типа данных
Рис. 15. Называем модель и структуру
Рис. 16. Указание периодичности - 12 (число месяцев в году)
После создания структуры и модели интеллектуального анализа можно более точно настроить параметры. В
частности, в свойствах модели можно явно указать, что во временном ряде ожидается периодичность 12
(число месяцев в году, т.к. у нас данные с продажами по месяцам). Подобное изменение настроек показано
на рис. 16. После этого надо провести полную обработку модели, и на вкладке MiningModelViewer появится
возможность просмотреть результаты ( рис. 17). Непрерывной линией изображены фактические данные,
пунктиром - прогнозируемые результаты.ПолеPredictionsteps позволяет указать, на сколько шагов вперед
предсказывается значение ряда, а выпадающий список под ним - выбрать значения, для которых строятся
графики.
Рис. 17. Просмотр графиков. Пунктирная линия - прогнозируемые значения
Задание 1. По аналогии с рассмотренным примером создайте структуру и модель интеллектуального анализа
данных для прогнозирования продаж AdventureWorks. Не указывайте значение для периодичности.
Проведите обработку модели, постройте графики продаж велосипедов модели M200 в разных регионах с
прогнозом на год (12 значений). Проанализируйте результаты.
Задание 2. Укажите в параметрах алгоритма периодичность 12 ( рис. 18). Проведите повторную обработку
модели и снова проанализируйте графики прогноза на год. Есть ли изменения? Чем можно объяснить
полученный результат?
Прогнозирующие запросы
В написании прогнозирующих запросов к моделям, использующим алгоритм временных рядов, есть некоторые
особенности. Из-за того, что исходные данные - это сам временной ряд, который уже использовался при
обучении модели, в простых случаях необходимость в конструкции PredictionJoin отпадает. В запросах
используется функция PredictTimeSeries, которая получает на вход имя атрибута и количество
предсказываемых значений, а возвращает таблицу спрогнозированных результатов.
Рассмотрим создание запроса. На вкладке MiningModelPrediction переключимся в режим написания текста
запроса (Query, рис. 18). И введем нижеследующий код:
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).
Рис. 18. Написание прогнозирующего запроса
Рис. 19. Результат выполнения запроса
На рис. 19 результаты прогнозирования представлены в "иерархическом" формате. Чтобы получить результат
в виде таблицы, несколько изменим инструкцию, дополнив SELECT ключевым словомFLATTENED:
SELECT FLATTENED
[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.
SELECT FLATTENED
[Model Region],
PredictTimeSeries([vTimeSeries_TS].[Quantity],6)
From
[vTimeSeries_TS]
Теперь укажем, что нужно заместить значения по продажам 'R250 Europe' за два последних месяца
значениями 10 и 12. Соответствующий код приведен ниже. При замене из нового набора берется вариант с
самым большим значением метки времени, и им заменяется значение с самой большойметкой времени из
исходного набора, и т.д. Фрагмент результата выполнения представлен на рис. 32.9-2. Из него видно, что
прогноз для 'R250 Europe' изменился.
SELECT FLATTENED
[Model Region],
PredictTimeSeries([vTimeSeries_TS].[Quantity],6, REPLACE_MODEL_CASES)
From
[vTimeSeries_TS]
NATURAL PREDICTION JOIN (
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
Рис. 20.
Рис.20. Результат выполнения запроса: 1 - для исходных данных, 2 -для
модифицированных исходных данных
Задание 4. Проверьте работу приведенных выше запросов. Можно ли говорить о наличии корреляции между
продажами модели R250 в Европе и M200 в Тихоокеанском регионе?
Задание 5. Самостоятельно разберитесь по справке с использованием параметра EXTEND_MODEL_CASES в
функции PredictTimeSeries. Напишите прогнозирующий запрос с использованием данного параметра.
Download