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

DMX. Создание структуры и модели

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

В предыдущем разделе рассматривались атрибуты, их типы, типы содержимого, порядок обработки данных в структуре интеллектуального анализа. Также отмечалось, что при создании структуры можно провести разделение (секционирование) данных на обучающий и проверочный наборы. Теперь рассмотрим конструкции языка 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
    

Приведённые в описании атрибуты имеют следующие значения:

  • Structure - уникальное имя структуры;
  • column definition list - cписок определений столбцов с разделителями-запятыми;
  • holdout-maxpercent - целое число от 1 до 100, которое показывает процентную долю данных, выделяемых для проверки;
  • holdout-maxcases - целое число, показывающее максимальное число вариантов, используемых для проверки. Если указанное значение больше числа входных вариантов, для проверки будут использованы все варианты и отобразится соответствующее предупреждение. В случае, если указаны как процентная доля, так и число вариантов, применяется меньшее из ограничений;
  • holdoutseed - целое число, которое используется как начальное значение при начале секционирования данных. Если оно равно 0, в качестве начального значения используется хэш идентификатора структуры интеллектуального анализа данных.Если надо гарантировать возможность повторного создания такого же разбиения (при условии, что исходные данные остались прежними), необходимо в скобках указать ненулевое целое значение.

Необязательное ключевое слово 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 можно использовать для указания дополнительных сведений о соответствующем атрибуте. Алгоритм может их использовать для создания более точной модели интеллектуального анализа данных. Некоторые флаги могут быть определены на уровне структуры, другие на уровне столбца модели интеллектуального анализа. К флагам относятся:

NOT NULL указывает, что значения столбца атрибутов не должны включать значение NULL. Если службы СлужбыAnalysisServices найдут значение NULL в данном столбце атрибутов в процессе обучения модели, будет выдана ошибка. Задается на уровне структуры;
MODEL_EXISTENCE_ONLY указывает, что столбец должен рассматриваться как имеющий два состояния: Missing и Existing. Если значение составляет NULL, оно рассматривается как недостающее(Missing), в противном случае -Existing. Задается на уровне модели;
REGRESSOR значения столбца атрибутов являются менее важными, чем присутствие атрибута (более подробно этот вопрос будет рассмотрен в дальнейшем). Данный флаг задается для столбца модели интеллектуального анализа данных.

К любому определению столбца можно добавить предложение, описывающее связь между двумя столбцами (column relationship). Делается это с помощью ключевого слова RELATED TO, что показывает иерархию значений. Назначением столбца RELATED TO может быть ключевой столбец вложенной таблицы, столбец с дискретными значениями из строки вариантов или какой-либо другой столбец с предложением RELATED TO, указывающим на более глубокий уровень иерархии.

Создание модели интеллектуального анализа данных

Создание модели интеллектуального анализа данных можно осуществить одним из следующих способов:

  1. после создания структуры интеллектуального анализа данных можно добавлять в нее модели с помощью инструкции ALTER MINING STRUCTURE;
  2. можно использовать инструкцию CREATE MINING MODEL, в результате выполнения которой создается модель и автоматически формируется лежащая в ее основе структура интеллектуального анализа данных.Имя структуры интеллектуального анализа данных формируется путем добавления строки "_structure" к имени модели.

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

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>)]
    

где

structure имя структуры интеллектуального анализа данных, к которой будет добавлена модель;
model уникальное имя модели интеллектуального анализа данных;
column definition list список определений столбцов с разделителями-запятыми;
nestedcolumn definition list cписок с разделителями-запятыми столбцов вложенной таблицы, если применимо;
nested filter criteria определение фильтра, применяющегося к столбцам вложенной таблицы;
algorithm название используемого моделью алгоритма интеллектуального анализа данных;
parameter list cписок параметров алгоритма (через запятую);
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>]
    
structure column name имя столбца в соответствии с определение структуры;
model column name псевдоним (необязательный параметр, позволяющий в модели использовать );
modeling flags флаги моделирования, о которых говорилось выше: значение REGRESSOR указывает, что алгоритм регрессии может использовать заданный столбец в формуле регрессии; значение MODEL_EXISTENCE_ONLY указывает, что само присутствие атрибута важнее, чем значения столбца атрибута;
prediction флаг прогнозирования (или флаг использования), указывающий, что данный столбец содержит прогнозируемую величину. Может принимать значение PREDICT (столбец является как входом, так и выходом) или PREDICT_ONLY (столбец является только выходом). Столбец без флага считается входом.

Если в определении модели стоит 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]. Это указывает на то, что модель прогнозирует множество строк, составляющих вложенную таблицу для варианта.

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