Занятие 5: Выполнение прогнозирующих запросов
Добавления: 5 декабря 2005 г.
На этом занятии форма инструкции SELECT SELECT FROM <model> PREDICTION JOIN (DMX) будет использована для создания двух разных типов прогнозов, основанных на модели дерева решений, которое было создано на занятии 2. Добавление модели интеллектуального анализа данных к структуре интеллектуального анализа взаимосвязей. Эти типы прогнозов определены ниже.
- Одноэлементный запрос
Одноэлементный запрос используется для выяснения, приобретет ли единичный клиент велосипед. Например, если идентифицировать потенциального клиента, живущего рядом с работой, имеющего двоих детей и имеющего конкретный междугородный телефонный код, то с помощью одноэлементного запроса можно определить вероятность покупки этим человеком велосипеда.
- Пакетный запрос
Пакетный запрос используется для определения, кто из потенциальных клиентов, представленных в таблице, приобретет велосипед. Например, если отдел маркетинга предоставит список клиентов и их атрибутов, то пакетный прогноз используется для предсказания, кто из клиентов, представленных в списке, с наибольшей вероятностью приобретет велосипед.
Форма SELECT FROM <model> PREDICTION JOIN (DMX) инструкции SELECT содержит три части:
- Список столбцов модели интеллектуального анализа данных и функций прогнозирования, которые возвращаются в результирующем наборе Здесь же могут содержаться входные столбцы источника данных.
- Запрос-источник, определяющий данные, которые используются при создании прогноза. Например, в пакетном запросе это может быть список клиентов.
- Сопоставления столбцов модели интеллектуального анализа данных исходным данным. При совпадении этих имен можно использовать синтаксис «NATURAL» и пропустить процесс сопоставления столбцов.
Запрос можно расширить функциями прогнозирования. Функции прогнозирования предоставляют дополнительные сведения, например вероятность реализации прогноза, и обеспечивают поддержку прогноза в учебном наборе данных. Дополнительные сведения о функциях прогнозирования см. в разделе Функции (расширения интеллектуального анализа данных).
Прогноз в этом учебнике основан на таблице ProspectiveBuyer в образце базы данных AdventureWorksDW. Таблица ProspectiveBuyer содержит список потенциальных клиентов и их характеристики. Клиенты, представленные в этой таблице, не зависят от клиентов, использовавшихся для создания дерева модели интеллектуального анализа данных.
Прогнозы можно также создавать, используя построитель прогнозирующих запросов в среде Business Intelligence Development Studio. Дополнительные сведения см. в разделе Использование построителя прогнозирующих запросов для создания прогнозирующих запросов расширений интеллектуального анализа данных.
Задачи занятия
На этом занятии будут выполняться следующие задачи.
- Создание одноэлементного запроса для определения вероятности покупки велосипеда конкретным клиентом.
- Создание пакетного запроса для выяснения, кто из набора потенциальных клиентов с наибольшей вероятностью приобретет велосипед.
Одноэлементный запрос
На первом этапе в одноэлементной инструкции прогнозирования используется SELECT FROM <модель> PREDICTION JOIN (расширения интеллектуального анализа данных). В следующем фрагменте показан общий пример одноэлементной инструкции:
SELECT <select list> FROM [<mining model name>]
NATURAL PREDICTION JOIN
(SELECT '<value>' AS [<column>], ...)
AS [<input aliast>]
В первой строке кода определяются столбцы модели интеллектуального анализа, которые возвращает запрос, а также модель интеллектуального анализа данных, которая использовалась для создания прогноза:
SELECT <select list> FROM [<mining model name>]
В следующей строке определяются характеристики клиента, использованного в прогнозе:
NATURAL PREDICTION JOIN
(SELECT '<value>' AS [<column>], ...)
AS [<input alias>]
ORDER BY <expression>
Если задана инструкция NATURAL PREDICTION JOIN, сервер сопоставляет каждый столбец из модели интеллектуального анализа входному столбцу по имени. Если имена столбцов не совпадают, они пропускаются.
Создание одноэлементного прогнозирующего запроса
В окне Обозреватель объектов щелкните правой кнопкой мыши экземпляр служб Analysis Services, укажите пункт Создать запрос и щелкните Расширения интеллектуального анализа данных.
Откроется редактор запросов, содержащий новый пустой запрос.
Скопируйте общий пример одноэлементной инструкции в пустой запрос.
Вместо:
<select list>
вставьте:
[Bike Buyer] AS Buyer, PredictHistogram([Bike Buyer]) AS Statistics
Инструкция AS используется для создания псевдонимов столбцов, которые возвращает запрос. Функция PredictHistogram возвращает статистические данные прогноза, включая вероятность и поддержку. Дополнительные сведения о функциях, которые могут использоваться в инструкции прогноза, см. в разделе Функции (расширения интеллектуального анализа данных).
Вместо:
[<mining model>]
вставьте:
[Decision Tree]
Вместо:
(SELECT '<value>' AS [<column name>], ...) AS t
вставьте:
SELECT 35 AS [Age], '5-10 Miles' AS [Commute Distance], '1' AS [House Owner Flag], 2 AS [Number Cars Owned], 2 AS [Total Children]) AS t
Полная инструкция теперь должна выглядеть следующим образом:
SELECT [Decision Tree].[Bike Buyer] AS Buyer, PredictHistogram([Bike Buyer]) AS Statistics FROM [Decision Tree] NATURAL PREDICTION JOIN (SELECT 35 AS [Age], '5-10 Miles' AS [Commute Distance], '1' AS [House Owner Flag], 2 AS [Number Cars Owned], 2 AS [Total Children]) AS t
В меню Файл выберите Сохранить DMXQuery1.dmx как.
В диалоговом окне Сохранить как перейдите к соответствующей папке и присвойте файлу имя Singleton_Query.dmx.
На панели инструментов нажмите кнопку Выполнить.
Запрос возвращает прогноз, купит ли клиент с заданными характеристиками велосипед, а также статистические данные прогноза.
Пакетный запрос
Следующий шаг — использовать SELECT FROM <модель> PREDICTION JOIN (расширения интеллектуального анализа данных) в пакетном прогнозирующем запросе. Ниже представлен общий пример пакетной инструкции:
SELECT TOP <number> <select list>
FROM [<mining model name>]
PREDICTION JOIN
OPENQUERY([<datasource>],'<SELECT statement>')
AS [<input alias>]
ON <on clause>
WHERE <expression>
ORDER BY <expression>
Как и в одноэлементном запросе, первые две строки кода определяют столбцы из модели интеллектуального анализа, которые возвращает запрос, а также имя модели интеллектуального анализа данных, которая используется для создания прогноза. Инструкция TOP <число> указывает, чтобы запрос возвратил только количество результатов, заданное параметром <число>.
Следующие строки кода определяют источник данных, на котором основан прогноз:
OPENQUERY([<datasource>],'<SELECT statement>') AS [<input alias>]
Имеется несколько вариантов метода получения исходных данных, но в этом учебнике используется инструкция OPENQUERY. Дополнительные сведения о доступных параметрах см. в разделе <source data query>.
В следующей строке определяется соответствие исходных столбцов в модели интеллектуального анализа данных столбцам исходных данных:
ON <on clause>
Предложение WHERE фильтрует результаты, возвращенные прогнозирующим запросом:
WHERE <expression>
Последняя строка кода задает столбец, по которому упорядочиваются результаты:
ORDER BY <expression> [DESC|ASC]
Предложение ORDER BY используется в сочетании с инструкцией TOP <число> для фильтрации возвращенных результатов. Например, в этом прогнозе возвращаются первые десять покупателей велосипедов, упорядоченных по степени вероятности реализации прогноза. Для управления порядком вывода результатов можно использовать синтаксис [DESC|ASC].
Создание пакетного прогнозирующего запроса
В окне Обозреватель объектов щелкните правой кнопкой мыши экземпляр служб Analysis Services, укажите пункт Создать запрос и щелкните Расширения интеллектуального анализа данных.
Откроется редактор запросов, содержащий новый, пустой запрос.
Скопируйте общий пример пакетной инструкции в пустой запрос.
Замените следующий код:
<select list>
на
SELECT TOP 10 t.[LastName], t.[FirstName], [Decision Tree].[Bike Buyer], PredictProbability([Bike Buyer])
Предложение TOP 10 указывает, что запрос должен возвратить только десять первых результатов. Инструкция ORDER BY в этом запросе упорядочивает результаты по степени вероятности прогноза, поэтому возвращаются только десять самых вероятных результатов.
Замените следующий код:
[<mining model>]
на
[Decision Tree]
Замените следующий код:
OPENQUERY([<datasource>],'<SELECT statement>')
на
OPENQUERY([Adventure Works DW], 'SELECT [LastName], [FirstName], [MaritalStatus], [Gender], [YearlyIncome], [TotalChildren], [NumberChildrenAtHome], [Education], [Occupation], [HouseOwnerFlag], [NumberCarsOwned] FROM [dbo].[ProspectiveBuyer] ') AS t
Замените следующий код:
<on clause> WHERE <expression> ORDER BY <expression>
на
[Decision Tree].[Marital Status] = t.[MaritalStatus] AND [Decision Tree].[Gender] = t.[Gender] AND [Decision Tree].[Yearly Income] = t.[YearlyIncome] AND [Decision Tree].[Total Children] = t.[TotalChildren] AND [Decision Tree].[Number Children At Home] = t.[NumberChildrenAtHome] AND [Decision Tree].[Education] = t.[Education] AND [Decision Tree].[Occupation] = t.[Occupation] AND [Decision Tree].[House Owner Flag] = t.[HouseOwnerFlag] AND [Decision Tree].[Number Cars Owned] = t.[NumberCarsOwned] WHERE [Decision Tree].[Bike Buyer] =1 ORDER BY PredictProbability([Bike Buyer]) DESC
Чтобы первыми вывести наиболее вероятные результаты, задайте DESC.
Полная инструкция теперь должна выглядеть следующим образом:
SELECT TOP 10 t.[LastName], t.[FirstName], [Decision Tree].[Bike Buyer], PredictProbability([Bike Buyer]) From [Decision Tree] PREDICTION JOIN OPENQUERY([Adventure Works DW], 'SELECT [LastName], [FirstName], [MaritalStatus], [Gender], [YearlyIncome], [TotalChildren], [NumberChildrenAtHome], [Education], [Occupation], [HouseOwnerFlag], [NumberCarsOwned] FROM [dbo].[ProspectiveBuyer] ') AS t ON [Decision Tree].[Marital Status] = t.[MaritalStatus] AND [Decision Tree].[Gender] = t.[Gender] AND [Decision Tree].[Yearly Income] = t.[YearlyIncome] AND [Decision Tree].[Total Children] = t.[TotalChildren] AND [Decision Tree].[Number Children At Home] = t.[NumberChildrenAtHome] AND [Decision Tree].[Education] = t.[Education] AND [Decision Tree].[Occupation] = t.[Occupation] AND [Decision Tree].[House Owner Flag] = t.[HouseOwnerFlag] AND [Decision Tree].[Number Cars Owned] = t.[NumberCarsOwned] WHERE [Decision Tree].[Bike Buyer] =1 ORDER BY PredictProbability([Bike Buyer]) DESC
В меню Файл щелкните Сохранить DMXQuery1.dmx как.
В диалоговом окне Сохранить как перейдите в соответствующую папку и присвойте файлу имя Batch_Prediction.dmx.
На панели инструментов нажмите кнопку Выполнить.
Запрос возвращает таблицу с именами клиентов, прогноз о том, приобретет ли каждый клиент велосипед, и степень вероятности реализации прогноза.
Это последний шаг занятия «Покупатель велосипеда». Теперь у вас есть набор моделей интеллектуального анализа данных, которые можно использовать для изучения сходства клиентов и предсказания, будут ли потенциальные клиенты покупать велосипеды.
Чтобы узнать, как использовать расширения интеллектуального анализа данных в сценарии потребительской корзины, см. раздел Учебник по расширениям интеллектуального анализа данных потребительской корзины.