Спонсор: Microsoft
Санкт-Петербургский государственный политехнический университет
Опубликован: 06.03.2012 | Доступ: свободный | Студентов: 2000 / 184 | Оценка: 4.00 / 4.00 | Длительность: 10:52:00
Специальности: Системный архитектор
Самостоятельная работа 15:

Работа с моделями интеллектуального анализа данных из SQLServerManagementStudio

Аннотация: В ходе выполнения данной лабораторной работы будут рассмотрены вопросы, связанные с использованием среды SQLServerManagementStudioпри интеллектуальном анализе данных.

SQLServer Management Studio, в первую очередь, рассматривается как средство создания и администрирования реляционных баз данных. В то же время, при хорошем знании языка DMX некоторые задачи, связанные проведением интеллектуального анализа данных можно быстро решить из этой среды.

Для начала работы, после запуска ManagementStudio, надо подключиться к аналитическим службам SQLServer ( рис. 31.1). Для этого в выпадающем списке ServerType надо выбрать AnalysisServer, а в поле ServerName ввести имя сервера ("local", если вы подключаетесь к неименованному экземпляру, SQLServer установленному на том же компьютере, где запущена ManagementStudio).

После подключения можно просмотреть имеющиеся базы аналитических служб и создавать новые, а также создавать запросы, выполнять резервное копирование, восстановление и т.д. Рассмотрим создание новой модели с помощью запроса DMX.

Подключение к аналитическим службам SQLServer

Рис. 31.1. Подключение к аналитическим службам SQLServer

В контекстном меню для выбранной базы данных найдите NewQuery->DMX ( рис. 31.2). Будет открыто новое окно, куда надо ввести тест запроса ( рис. 31.3). Обратите внимание на то, чтобы на панели инструментов в выпадающем списке с названием базы данных была указана именно та база, в которой вы хотите создать модель. Выполним следующий запрос

CREATEMININGMODEL vTM1_NB (
[Customer Key] LONGKEY,
[Age] LONGDISCRETIZED,
[Number Cars Owned] LONGDISCRETE,
[Bike Buyer] LONGDISCRETEPREDICT_ONLY)
USINGMicrosoft_Naive_Bayes
    
Создание запроса DMX

Рис. 31.2. Создание запроса DMX
Создание запроса DMX(продолжение)

увеличить изображение
Рис. 31.3. Создание запроса DMX(продолжение)

Приведенный выше фрагмент кода создает структуру и модель интеллектуального анализа для прогнозирования атрибута [BikeBuyer] на основе атрибутов [Age] и [NumberCarsOwned]. Подобную модель можно обучить на уже известных нам данных из базы AdventureWorksDW. Учитывая то, что мы не создавали структуру интеллектуального анализа, а воспользовались оператором CREATEMININGMODEL имя созданной структуры будет формироваться как <имямодели>_Structure ( рис. 31.4). Кстати. Если нам понадобится скрипт, создающий такой же объект, как уже имеется в базе данных, его можно получить как показано на рис. 31.5. Правда, получим мы не код на DMX, а описание в формате XMLA. Созданный скрипт можно изменить, выполнить для другой базы, сохранить и т.д.

Созданная структура и модель

Рис. 31.4. Созданная структура и модель
Генерация скрипта на основе существующего объекта (структуры или модели)

увеличить изображение
Рис. 31.5. Генерация скрипта на основе существующего объекта (структуры или модели)

Но вернемся к работе с моделью интеллектуального анализа данных. После создания ее надо обработать, загрузив в нее данные. Делается это с помощью оператора INSERT INTO. Среда ManagementStudio облегчает написание запроса, т.к. название объектов и атрибутов можно просто перетаскивать мышью из окна ObjectExplorer.

INSERTINTOMININGMODEL [vTM1_NB] ([Customer Key], [Age], [Number Cars Owned], [Bike Buyer])
OPENQUERY([Adventure Works DW],'Select CustomerKey, Age, [NumberCarsOwned], [BikeBuyer] FROM [vTargetMail]')
    

Обратите внимание, что в предложении OPENQUERY мы используем созданный в ходе "Начало работы в BIDevStudio" источник данных [AdventureWorks DW].

После обработки, щелкнув правой клавишей мыши на модели в окне ObjectExplorer, можно из контекстного меню выбрать опцию Browse и просмотреть модель, аналогично тому, как это делалось в BIDevStudio( рис. 31.6).

Просмотр модели из ManagementStudio

увеличить изображение
Рис. 31.6. Просмотр модели из ManagementStudio

Теперь, когда модель обработана, можно написать прогнозирующий запрос. Сначала узнаем, станет ли покупателем велосипеда клиент в возрасте 36 лет, имеющий 1 автомобиль. Нас интересует прогноз, т.е. значение атрибута BikeBuyer и оценка вероятности для этого прогноза. Код запроса выглядит следующим образом

SELECTPredict([Bike Buyer]) as Result, PredictProbability([Bike Buyer]) as ResultProbability
FROM [vTM1_NB]
NATURALPREDICTIONJOIN
(SELECT 36 as [Age], 1 as [Number Cars Owned]) as t
    

Его выполнение приведет к выводу результата для BikeBuyer и оценки вероятности (обратите внимание, чтобы запрос бы выполнен в отношении нужной базы).

Ну и в заключении рассмотрим как выполнить прогнозирующий запрос для множества строк одновременно. Пусть нам нужны прогнозы для первых 10 клиентов из таблицы DimCustomer базы AdventureWorksDW. При этом, нас интересуют только те клиенты, которые есть в представлении vDMPrep. Нужный нам для предсказания параметр "возраст клиента" мы также берем из этого представления. Запрос на SQL будет выглядеть следующим образом:

SELECTDISTINCTTOP 10 dbo.DimCustomer.CustomerKey, dbo.DimCustomer.FirstName, dbo.DimCustomer.LastName, 
dbo.vDMPrep.Age, dbo.DimCustomer.[NumberCarsOwned]
FROM dbo.DimCustomer INNER JOIN dbo.vDMPrep ON dbo.DimCustomer.CustomerKey=dbo.vDMPrep.CustomerKey
ORDER BY dbo.DimCustomer.CustomerKey
    

Прогнозирующий запрос на DMX приведен ниже, а результат его выполнения представлен на рис. 31.7.

SELECT t.CustomerKey, t.FirstName, t.LastName, Predict([Bike Buyer]) as Result, 
 PredictProbability([Bike Buyer]) as ResultProbability
FROM [vTM1_NB]
PREDICTIONJOIN
OPENQUERY([Adventure Works DW], 
'SELECT DISTINCT TOP 10 dbo.DimCustomer.CustomerKey, dbo.DimCustomer.FirstName, 
 dbo.DimCustomer.LastName, dbo.vDMPrep.Age, dbo.DimCustomer.[NumberCarsOwned]
FROM dbo.DimCustomer INNER JOIN dbo.vDMPrep ON dbo.DimCustomer.CustomerKey=
  dbo.vDMPrep.CustomerKey
ORDER BY dbo.DimCustomer.CustomerKey') as t
ON [vTM1_NB].[Age]=t.[Age] AND [vTM1_NB].[Number Cars Owned]=t.[NumberCarsOwned]
    
Результат выполнения запроса

увеличить изображение
Рис. 31.7. Результат выполнения запроса
Задание 1. Выполните описанные в лабораторной работе действия.
Задание 2. Самостоятельно создайте прогнозирующую модель, основанную на алгоритме деревьев решений. Входные атрибуты - возраст, пол, семейное положение, число машин, уровень дохода. Прогнозируемый атрибут - "BikeBuyer". Для тестирования должно быть зарезервировано 30 % данных. Выполните обработку модели. Напишите прогнозирующие запросы, аналогичные рассмотренным в лабораторной.