В предыдущем разделе рассматривались атрибуты, их типы, типы содержимого, порядок обработки данных в структуре интеллектуального анализа. Также отмечалось, что при создании структуры можно провести разделение (секционирование) данных на обучающий и проверочный наборы. Теперь рассмотрим конструкции языка DMX, позволяющие создавать структуры.Для этого используется оператор CREATE MININGSTRUCTURE. В обобщенном виде его формат представлен ниже:
CREATE [SESSION] MINING STRUCTURE <structure> ( [(<column definition list>)] ) [WITH HOLDOUT (<holdout-specifier> [OR <holdout-specifier>])] [REPEATABLE(<holdout seed>)]
где
<holdout-specifier>::=<holdout-maxpercent> PERCENT | <holdout-maxcases> CASES
Приведённые в описании атрибуты имеют следующие значения:
Необязательное ключевое слово SESSION показывает, что структура является временной и ее можно использовать только в течение текущего сеанса работы с SQLServer. После завершения сеанса структура и любые модели на ее основе удаляются. Чтобы создать временные структуры и модели интеллектуального анализа данных, необходимо сначала задать свойство базы данных Allow Session Mining Models. Надо отметить, что при использовании для анализа инструментов TableAnalysisTools из надстроек интеллектуального анализа данных для MicrosoftExcel создаются именно такие структуры. Более подробно этот вопрос рассматривается в лабораторных работах.
Для определения столбца используется следующий формат:
<column name><data type> [<Distribution>] [<Modeling Flags>] <Content Type> [<column relationship>]
где обязательно указываются <columnname> - имя столбца, <datatype> - тип данных, <ContentType> - тип содержимого. Необязательные параметры, к которым относится <Distribution> - распределение, <Modeling Flags> - список флагов моделирования, <column relationship> - связь со столбцом атрибутов (обязательна, только если применима; определяется предложением RELATED TO), будут рассмотрены ниже.
Для определения столбца с вложенной таблицей используется следующий синтаксис:
<columnname>TABLE ( <column definition list> )
В качестве примера рассмотрим создание структуры интеллектуального анализа данных с именем NewMailing, включающей четыре столбца: идентификатор клиента CustomerKey, пол клиента Gender, число машин NumberCarsOwned, признак покупки велосипеда(или мотоцикла) BikeBuyer. Если названия столбцов не включают пробелов, их можно писать без квадратных скобок (хотя для единообразия, скобки можно и оставить). В структуре будет создаваться проверочный набор, состоящий из 25 % общего числа входных вариантов. В качестве начального значения при создании секции используется число 5 000. После указания начального значения эти же варианты будут выбираться для тестового набора каждый раз при обработке структуры интеллектуального анализа данных (при условии, что базовые данные не изменятся).
CREATE MINING STRUCTURE [New Mailing] ( CustomerKey LONG KEY, Gender TEXT DISCRETE, [Number Cars Owned] LONG DISCRETE, [BikeBuyer] LONG DISCRETE ) WITH HOLDOUT(25 PERCENT) REPEATABLE(5000)
Если нужно использовать данные из вложенной таблицы Goods, содержащей перечень купленных клиентом товаров, где будут столбцы Product (название товара) и Quantity (количество), то команда создания структуры может выглядеть следующим образом.
CREATE MINING STRUCTURE [New Mailing1] ( CustomerKey LONG KEY, Gender TEXT DISCRETE, [Number Cars Owned] LONG DISCRETE, [Bike Buyer] LONG DISCRETE, [Goods] TABLE ( [Product] TEXT KEY, [Quantity] LONG CONTINUOUS ) ) WITH HOLDOUT(25 PERCENT)
Теперь вспомним о дополнительных флагах. Флаг Distribution позволяет указать на распределение для столбца с числовым значением (этот вопрос разбирался в предыдущем разделе). Допустимые значения - NORMAL, LogNormal, UNIFORM.
Флаги моделирования Modeling Flags можно использовать для указания дополнительных сведений о соответствующем атрибуте. Алгоритм может их использовать для создания более точной модели интеллектуального анализа данных. Некоторые флаги могут быть определены на уровне структуры, другие на уровне столбца модели интеллектуального анализа. К флагам относятся:
К любому определению столбца можно добавить предложение, описывающее связь между двумя столбцами (column relationship). Делается это с помощью ключевого слова RELATED TO, что показывает иерархию значений. Назначением столбца RELATED TO может быть ключевой столбец вложенной таблицы, столбец с дискретными значениями из строки вариантов или какой-либо другой столбец с предложением RELATED TO, указывающим на более глубокий уровень иерархии.
Создание модели интеллектуального анализа данных можно осуществить одним из следующих способов:
Первый способ является более предпочтительным, особенно когда планируется создать на основе одной структуры несколько моделей (использующих разные наборы столбцов, алгоритмы и т.д.). Формат оператора представлен ниже.
ALTER MINING STRUCTURE <structure> ADD MINING MODEL <model> ( <column definition list> [(<nested column definition list>) [WITH FILTER (<nested filter criteria>)]] ) USING <algorithm> [(<parameter list>)] [WITH DRILLTHROUGH] [,FILTER(<filter criteria>)]
где
Если структура интеллектуального анализа данных содержит составные ключи, то модель интеллектуального анализа данных должна включать в себя все ключевые столбцы, определенные в структуре.
Если модели не требуется прогнозируемый столбец (например,при кластеризации), то в инструкцию не нужно включать определение столбца. Все атрибуты в создаваемой модели будут рассматриваться как входы, например, следующее определение модели MyCluster1 для решения задачи кластеризации:
ALTER MINING STRUCTURE [New Mailing] ADD MINING MODEL [MyCluster1] USING Microsoft_Clustering
В общем случае определение столбца выполняется в соответствии со следующим форматом:
<structure column name> [AS <model column name>] [<modeling flags>] [<prediction>]
Если в определении модели стоит WITH DRILLTHROUGH, то пользователям разрешается проводить детализацию (т.е. просматривать не только параметры модели, но и данные вариантов в этой модели).
Определение фильтров позволяет использовать при обработке модели только варианты, соответствующие условиям фильтрации.
Ниже приводится пример создания модели интеллектуального анализа данных "NaiveBayesWomen" в структуре интеллектуального анализа данных "NewMailing". Модель использует упрощенный алгоритма Байеса и ограничивается только теми вариантами из структуры, в которых клиентами являются женщины старше 50 лет (значение столбца Gender, содержащего информацию относительно пола клиента, равно F, от англ. Female - женщина). Предсказываться будет значение атрибута "BikeBuyer", т.е. купит ли эта клиентка велосипед или нет.
ALTER MINING STRUCTURE [New Mailing] ADD MINING MODEL [Naive Bayes Women] ( CustomerKey, Gender, [Number Cars Owned], [Bike Buyer] PREDICT ) USING Microsoft_Naive_Bayes WITH FILTER([Gender] = 'F' AND [Age] >50)
Как уже отмечалось, модель можно создать и с помощью инструкции CREATE MINING MODEL. Ее формат следующий:
CREATE [SESSION] MINING MODEL <model> ( [(<column definition list>)] ) USING <algorithm> [(<parameter list>)] [WITH DRILLTHROUGH]
Все параметры уже разбирались выше и сложностей в понимании синтаксиса здесь быть не должно.
Кроме того, этот оператор можно использовать для создания модели, описанной с помощью основанного на XML языка разметки моделей прогнозов (Predictive Model Markup Language, PMML). Тогда его формат будет следующим:
CREATE MINING MODEL <model> FROM PMML <xml string>
где XML string - описание модели, закодированное на языке XML (PMML). Строка должна быть заключена в одиночные кавычки (').Этот вариант описания рекомендуется только для опытных пользователей.
Пример использования первого варианта записи оператора CREATE MINING MODEL для создания модели MyAssociationModel приведен ниже. Модель основана на использовании алгоритм взаимосвязей (Association Rules), и использует вложенную таблицу Products. Значения MINIMUM_PROBABILITY (минимальная вероятность) и MINIMUM_SUPPORT (минимальная поддержка) являются параметрами алгоритма Association Rules.
CREATE MINING MODEL MyAssociationModel ( OrderNumber TEXT KEY, [Products] TABLE PREDICT ( [Model] TEXT KEY ) ) USING Microsoft_Association_Rules (Minimum_Probability = 0.1, MINIMUM_SUPPORT = 0.01)
Здесь хотелось бы обратить внимание на одну особенность, проявляющуюся при создании модели, использующей только ключевой столбец из вложенной таблицы. В приведенном примере флаг PREDICT установлен для вложенной таблицы [Products], а не ее ключа [Model]. Это указывает на то, что модель прогнозирует множество строк, составляющих вложенную таблицу для варианта.
В других случаях, флаг может ставиться и для заданного столбца вложенной таблицы (который не является вложенным ключом).