Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

SQLServer08_DM_Nesterov

.pdf
Скачиваний:
167
Добавлен:
07.02.2016
Размер:
16.46 Mб
Скачать

Query, что можно перевести как «одноэлементный запрос» (рис.5.150). После чего зададим набор параметров, характеризующих нового клиента. При этом значение атрибута Bike Buyer не указываем

(рис.5.151).

Рис.5.150. Выбор типа запроса Singleton Query

Таким образом, вариант мы определили. Теперь надо указать цель запроса: мы хотим узнать значение атрибута Bike Buyer. Для этого, находясь в режиме конструктора (Design), в нижней части окна в списке Source выбираем модель vTargetMail_DT: автоматически будет подставлен выходной атрибут Bike Buyer (рис.5.152). Чтобы узнать оценку вероятности для выполняемого прогноза, понадобится функция PredictProbability() с указанием столбца [vTargetMail_DT].[Bike Buyer] в качестве аргумента (рис.5.153).

241

Рис.5.151. Задание значений атрибутов

Рис.5.152 Определение цели прогнозирующего запроса

Рис.5.153 Определение цели прогнозирующего запроса (продолжение)

242

Если нажать кнопку переключения в режим просмотра результатов прогнозирующего запроса (Switch to query result view в верхней левой части окна) мы увидим предсказываемое значение и оценку вероятности (рис.5.154).

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

Переключившись в режим Query, увидим сгенерированный код запроса на языке DMX:

SELECT [vTargetMail_DT].[Bike Buyer], PredictProbability([vTargetMail_DT].[Bike Buyer])

From [vTargetMail_DT] NATURAL PREDICTION JOIN (SELECT 36 AS [Age],

'5-10 Miles' AS [Commute Distance],

'Bachelors' AS [English Education], 2 AS [Number Cars Owned],

0 AS [Number Children At Home], 'Pacific' AS [Region],

1 AS [Total Children],

NULL AS [Yearly Income]) AS t

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

Обратите внимание на то, что результаты запроса можно сохранить в базу данных в качестве новой таблицы, при этом можно добавить данную таблицу в существующее представление источника данных.

243

5.15. РАБОТА 15. РАБОТА С МОДЕЛЯМИ ИНТЕЛЛЕКТУАЛЬНОГО АНАЛИЗА ДАННЫХ ИЗ SQL

SERVER MANAGEMENT STUDIO

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

Для начала работы, после запуска Management Studio, надо подключиться к аналитическим службам SQL Server (рис.5.155). Для этого в выпадающем списке Server Type надо выбрать Analysis Server, а в поле Server Name ввести имя сервера («local», если вы подключаетесь к неименованному экземпляру SQL Server, установленному на том же компьютере, где запущена Management Studio). После подключения можно просматривать имеющиеся базы аналитических служб и создавать новые, а также создавать запросы, выполнять резервное копирование, восстановление и т.д.

Рис.5.155. Подключение к аналитическим службам SQL Server

244

Рассмотрим создание новой модели с помощью запроса DMX. В контекстном меню для нужной базы данных выберите New Query -> DMX (рис.5.156). Будет открыто новое окно, куда надо ввести текст запроса (рис.5.157). Обратите внимание на то, чтобы на панели инструментов в выпадающем списке с названием базы данных была указана именно та база, в которой вы хотите создать модель.

Рис.5.156. Создание запроса DMX

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

245

Выполним следующий запрос:

CREATE MINING MODEL vTM1_NB ( [Customer Key] LONG KEY, [Age] LONG DISCRETIZED,

[Number Cars Owned] LONG DISCRETE,

[Bike Buyer] LONG DISCRETE PREDICT_ONLY) USING Microsoft_Naive_Bayes

Приведенный фрагмент кода создает структуру и модель интеллектуального анализа для прогнозирования атрибута [Bike Buyer] на основе атрибутов [Age] и [Number Cars Owned]. Подобную модель можно обучить на уже известных нам данных из базы AdventureWorksDW. Учитывая то, что мы воспользовались оператором CREATE MINING MODEL, имя созданной структуры будет формироваться как <имя модели>_Structure (рис.5.158). Кстати, если нам понадобится скрипт, создающий объект, аналогичный уже имеющемуся в базе данных, его можно получить, как показано на рисунке 5.159. Правда, получим мы не код на DMX, а описание в формате XMLA.

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

Рис.5.159. Генерация скрипта на основе существующего объекта

246

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

INSERT INTO MINING MODEL [vTM1_NB] ([Customer Key], [Age],

[Number Cars Owned], [Bike Buyer]) OPENQUERY([Adventure Works DW], 'Select CustomerKey, Age,

[NumberCarsOwned],[BikeBuyer] FROM [vTargetMail]')

Обратите внимание, что в предложении OPENQUERY мы используем созданный в ходе лабораторной № 10 источник данных

[Adventure Works DW].

После обработки, щелкнув правой клавишей мыши на модели в окне Object Explorer, можно из контекстного меню выбрать опцию Browse и просмотреть модель, аналогично тому, как это делалось в BI Dev Studio (рис.5.160).

Рис.5.160. Просмотр модели из Management Studio

247

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

SELECT Predict([Bike Buyer]) as Result, PredictProbability([Bike Buyer]) as ResultProbability FROM [vTM1_NB]

NATURAL PREDICTION JOIN

(SELECT 36 as [Age], 1 as [Number Cars Owned]) as t

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

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

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

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

SELECT t.CustomerKey, t.FirstName, t.LastName, Predict([Bike Buyer]) as Result, PredictProbability([Bike Buyer]) as ResultProbability FROM [vTM1_NB]

PREDICTION JOIN

248

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]

Рис.5.161. Результат выполнения запроса

Задание 1. Выполните описанные в лабораторной работе действия.

Задание 2. Самостоятельно создайте прогнозирующую модель, основанную на алгоритме деревьев решений. Входные атрибуты – возраст, пол, семейное положение, число машин, уровень дохода. Прогнозируемый атрибут – “Bike Buyer”. Для тестирования должно быть зарезервировано 30 % данных. Выполните обработку модели. Напишите прогнозирующие запросы, аналогичные рассмотренным в лабораторной.

249

5.16. РАБОТА 16. ИСПОЛЬЗОВАНИЕ АЛГОРИТМА

MICROSOFT TIME SERIES ДЛЯ ПРОГНОЗИРОВАНИЯ ЗНАЧЕНИЙ ВРЕМЕННЫХ РЯДОВ

Данная лабораторная работа посвящена вопросам использования аналитических служб SQL Server 2008 для прогнозирования временных рядов.

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

При работе с временными рядами часто возникает желание выявить зависимости между текущим значением и предшествующими ему, и использовать их для прогнозирования будущих значений. Подобную задачу можно решить с использованием алгоритма Microsoft Time Series, входящего в набор стандартных алгоритмов аналитиче-

ских служб SQL Server 2008.

Для анализа будем использовать данные из учебной базы AdventureWorksDW. Представление (view) dbo.vTimeSeries формирует вре-

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

Другой вариант представления – столбчатый формат – иллюстрируется таблицей 5.1.

Но вернемся к нашей задаче. Источник данных, указывающий на базу AdventureWorksDW, у нас уже создан. Следующий шаг – создать в среде BI Dev Studio представление источника данных (DSV),

включающее vTimeSeries.

250

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]