Сейчас мы подошли к одному из самых интересных этапов интеллектуального анализа - построению прогнозов. Как уже отмечалось в предыдущих разделах, задача прогнозирования в языке SELECT. При этом чаще всего используется конструкция прогнозирующего соединения - PREDICTION JOIN. С ее помощью шаблонам модели сопоставляется набор данных из внешнего источника, что позволяет определить значение для прогнозируемого столбца.
Упрощенно это можно представить следующим образом. Модель содержит некоторое множество шаблонов, описывающих зависимость выходных параметров от входных. Например:
Для обработки модель получает входные данные из внешнего источника, определяет наиболее соответствующий шаблон и выдает результат. Например, входной вариант имеет атрибут "Вход1=x", применяя первое правило получаем "Выход = "да"".
Рассмотрим теперь синтаксис SELECT, использующийся для прогнозирующего соединения.
SELECT [FLATTENED] [TOP <n>] <select expression list>
FROM <model> | <sub select> [NATURAL] PREDICTION JOIN
<source data query> [ON <join mapping list>]
[WHERE <condition expression>]
[ORDER BY <expression> [DESC|ASC]]
где
n |
целое число, указывающее количество возвращаемых строк; |
selectexpressionlist |
разделенный запятыми список столбцов и/или выражений; |
model |
название модели; |
subselect |
внедренная (вложенная) инструкция SELECT; |
sourcedataquery |
"исходный" запрос, описывающий набор данных, для которого производится прогнозирующее соединение. Исходный запрос для прогнозируемого соединения может представлять собой таблицу или одноэлементный запрос; |
joinmappinglist |
логическое выражение включающее сравнения столбцов модели со столбцами, возвращаемыми запросом sourcedataquery; определяет условия соединения; |
conditionexpression |
логическое выражение, ограничивающее множество возвращаемых значений, только теми, что соответствуют условию; условие WHERE можно применять только к прогнозируемым столбцам или к связанным столбцам; |
expression |
выражение, определяющее упорядочение возвращаемого результата. ORDER BY может принять в качестве аргумента только один столбец, т. е. нельзя сортировать по нескольким столбцам. |
Предложение ON позволяет сопоставить столбцы исходного запроса со столбцами модели интеллектуального анализа данных (чтобы определить, какие значения рассматривать в качестве входных при прогнозировании). Столбцы в списке <joinmappinglist> соотносятся с помощью знака равенства (=), как показано в следующем примере:
[MiningModel].ColumnA = [source data query].Column1 AND
[MiningModel].ColumnB = [source data query].Column2 AND
...
Инструкция NATURALPREDICTION JOIN автоматически сопоставляет имена столбцов исходного запроса, совпадающих с именами столбцов модели. В случае использования инструкции NATURALPREDICTION предложение ON можно пропустить.
В списке <selectexpressionlist> и выражении <conditionexpression> можно указывать прогнозирующие функции, не возвращающие
Рассмотрим теперь несколько примеров построения прогнозов.
Одноэлементным будем называть запрос, в котором исходные данные для прогнозирования не выбираются из источника, а явно указаны в тексте запроса. Такой запрос может формироваться "налету", например, на основе введенных пользователем данных и тут же выдавать результаты прогноза.
Ниже приведен пример подобного прогнозирующего запроса к модели [TMDecisionTree] для оценки того, станет ли покупателем велосипеда человек в возрасте 35 лет, проживающий в 2-5 милях от места работы, владеющий одним домом, двумя автомобилями,с двумя детьми в семье (значения перечислены в том порядке, как идут в листинге). Запрос возвращает прогнозируемое логическое значение столбца [BikeBuyer] и набор табличных значений, возвращенных функцией PredictHistogram, описывающих, как был сделан прогноз.
SELECT
[TM Decision Tree].[Bike Buyer],
PredictHistogram([Bike Buyer])
FROM
[TM 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
Здесь нужно отметить, что за счет использования конструкции NATURALPREDICTION JOIN определять соответствия между столбцами модели и набора входных данных не потребовалось.
В том случае, когда требуется сделать прогноз для множества вариантов, которые берутся из таблицы базы данных, можно использовать функцию OPENQUERY, аналогично тому, как это делалось при заполнении структуры. При этом предварительно требуется создать представление источника данных (например, с помощью BI DevStudio).
В приведенном ниже примере имена столбцов таблицы отличаются от имен столбцов, содержащихся в модели интеллектуального анализа данных, поэтому нужно использовать предложение ON. Запрос возвращает список имен ([FirstName])и фамилий ([LastName]) каждого человека в таблице [ProspectiveBuyer] наряду с логическим столбцом, указывающим на вероятность покупки им велосипеда, где 0 означает "вероятно, не будет покупать велосипед", а 1 означает "вероятно, купит велосипед". Последний столбец содержит значение вероятности прогнозируемого результата, возвращаемое функцией PredictProbability.
SELECT
t.[LastName],
t.[FirstName],
[TM Decision Tree].[Bike Buyer],
PredictProbability([Bike Buyer])
From
[TM Decision Tree]
PREDICTION JOIN
OPENQUERY([Adventure Works DW2008R2],
'SELECT
[LastName],
[FirstName],
[MaritalStatus],
[Gender],
[YearlyIncome],
[TotalChildren],
[NumberChildrenAtHome],
[Education],
[Occupation],
[HouseOwnerFlag],
[NumberCarsOwned]
FROM
[dbo].[ProspectiveBuyer]
') AS t
ON
[TM Decision Tree].[Marital Status] = t.[MaritalStatus] AND
[TM Decision Tree].[Gender] = t.[Gender] AND
[TM Decision Tree].[Yearly Income] = t.[YearlyIncome] AND
[TM Decision Tree].[Total Children] = t.[TotalChildren] AND
[TM Decision Tree].[Number Children At Home] = t.[NumberChildrenAtHome] AND
[TM Decision Tree].[Education] = t.[Education] AND
[TM Decision Tree].[Occupation] = t.[Occupation] AND
[TM Decision Tree].[House Owner Flag] = t.[HouseOwnerFlag] AND
[TM Decision Tree].[Number Cars Owned] = t.[NumberCarsOwned]
Функция Predict возвращает спрогнозированное значение или набор значений для заданного столбца. Она является полиморфной и ее поведение зависит от того, подставляется ли скалярное значение (уровня вариантов) или ссылка на столбец страницы (т.е. вложенную таблицу). Синтаксис будет следующим:
Predict(<scalar column reference>, [option1], [option2], [option n], [INCLUDE_NODE_ID], n)
ИЛИ
Predict(<table column reference>, [option1], [option2], [option n], [INCLUDE_NODE_ID], n)
В то же время просто выбор прогнозируемого столбца в заголовке SELECT аналогичен вызову функции PREDICT с параметрами по умолчанию. Например, если при создании модели указано что столбец [Gender] (пол) - прогнозируемый, то SELECT [Gender] будет аналогично Predict([Gender], EXCLUDE_NULL). Где опция EXCLUDE_NULL указывает на то, что пустые значения исключаются.
Более подробно с возможностями функции PREDICT можно ознакомиться в справочнике по функциям расширений интеллектуального анализа данных [13].
Если использовать следующий синтаксис оператора SELECT
SELECT <expression list> [TOP <n>] FROM <model>
[WHERE <condition list>]
[ORDER BY <expression> [DESC|ASC]]
и в списке <expressionlist> указать только прогнозируемые столбцы, то оператор выполнит пустое прогнозируемое соединение и возвратит наиболее вероятные значения для указанных столбцов. Для создания прогноза используется только содержимое модели интеллектуального анализа данных.
Например:
SELECT ([Bike Buyer]) FROM [TM_Naive_Bayes]
выдаст наиболее часто встречающееся значение столбца [BikeBuyer].
В заключение обзора возможностей оператора SELECT рассмотрим создание копии существующей модели интеллектуального анализа данных. Для этого используется синтаксис:
SELECT INTO <new model>
USING <algorithm> [(<parameter list>)] [WITH DRILLTHROUGH[,] [FILTER(<expression>)]]
FROM <existingmodel>
где
newmodel |
имя для новой создаваемой модели; |
algorithm |
название используемого новой моделью алгоритма интеллектуального анализа данных; |
parameterlist |
cписок через запятую параметров алгоритма; |
expression |
выражение, определяющее фильтр для значений, попадающих в новую модель; |
existingmodel |
имя существующей модели для копирования. |
Если существующая модель является обученной, новая модель автоматически обрабатывается при выполнении этой инструкции. В противном случае новая модель оставляется необработанной.
Например, приведенный ниже фрагмент кода создает новую модель [New_Clustering] на базе существующей модели интеллектуального анализа данных [TMClustering]. В обоих случаях используется алгоритм кластеризации. Но в новой модели параметр CLUSTER_COUNT изменяется так, чтобы существовало максимум пять кластеров, тогда как значение по умолчанию равно 10.
SELECT * INTO [New_Clustering]
USING [Microsoft_Clustering] (CLUSTER_COUNT = 5)
FROM [TM Clustering]
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.