Вы находитесь на странице: 1из 272

Министерство образования и науки Российской Федерации

САНКТ–ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ
ПОЛИТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ

Приоритетный национальный проект «Образование»


Национальный исследовательский университет

С. А. НЕСТЕРОВ

БАЗЫ ДАННЫХ
ИНТЕЛЛЕКТУАЛЬНЫЙ АНАЛИЗ
ДАННЫХ

Рекомендовано Учебно-методическим объединением


по университетскому политехническому образованию в качестве
учебного пособия для студентов высших учебных заведений,
обучающихся по направлению подготовки магистров
«Системный анализ и управление»

Санкт-Петербург
Издательство Политехнического университета
2011
УДК ___________
ББК ____________

Рецензенты:
Доктор технических наук,
начальник кафедры математического обеспечения ЭВМ
Военно-космической академии им. А. Ф. Можайского
С. А. Петренко

Кандидат физико-математических наук, профессор


Санкт-Петербургского государственного политехнического
университета А. Н. Фирсов

Нестеров С. А. Базы данных. Интеллектуальный анализ данных: учеб.пособие /


С. А. Нестеров – СПб.: Изд-во Политехн. ун-та, 2011. – 272 с.

Системно излагаются основы интеллектуального анализа данных средствами


современных систем управления базами данных (СУБД). В качестве примера выбрана
СУБД Microsoft SQL Server 2008.
Рассматриваются основные задачи интеллектуального анализа данных,
распространенные алгоритмы, язык запросов DMX (Data Mining eXtensions to SQL),
особенности проведения анализа в среде СУБД Microsoft SQL Server 2008. Наряду с
теоретическими материалами, пособие включает описания 16 лабораторных работ,
позволяющих выработать практические навыки решения задач интеллектуального анализа
данных.
Учебное пособие предназначено для студентов вузов, обучающихся по
магистерским программам «Теория и математические методы системного анализа и
управления в технических и экономических системах» и «Системный анализ и управление
информационными ресурсами» направления подготовки магистров «Системный анализ и
управление». Оно может быть также использовано при обучении студентов направления
подготовки «Системный анализ и управление» в системах повышения квалификации и
учреждениях дополнительного профессионального образования.

Работа выполнена в рамках реализации программы развития национального


исследовательского университета «Модернизация и развитие политехнического
университета как университета нового типа, интегрирующего мультидисциплинарные
научные исследования и надотраслевые технологии мирового уровня с целью повышения
конкурентоспособности национальной экономики»

Печатается по решению редакционно-издательского совета


Санкт-Петербургского государственного политехнического университета.

© Нестеров С. А., 2011


© Санкт- Петербургский государственный
ISBN _________________ политехнический университет, 2011
ОГЛАВЛЕНИЕ

СПИСОК СОКРАЩЕНИЙ ...................................................................................................... 5


ВВЕДЕНИЕ ............................................................................................................................... 6
1. ОСНОВЫ ИНТЕЛЛЕКТУАЛЬНОГО АНАЛИЗА ДАННЫХ ........................................ 7
1.1. Базовые понятия и основные задачи .......................................................................... 7
1.2. Интеллектуальный анализ данных в СУБД на примере Microsoft SQL Server ... 12
1.3. Этапы проведения интеллектуального анализа данных ........................................ 17
2. КРАТКИЙ ОБЗОР АЛГОРИТМОВ ИНТЕЛЛЕКТУАЛЬНОГО
АНАЛИЗА ДАННЫХ ............................................................................................................ 22
2.1. Упрощенный алгоритм Байеса .................................................................................. 22
2.2. Деревья решений ........................................................................................................ 25
2.3. Линейная регрессия .................................................................................................... 28
2.4. Анализ временных рядов ........................................................................................... 29
2.5. Кластеризация ............................................................................................................. 34
2.6. Алгоритм взаимосвязей ............................................................................................. 36
2.7. Кластеризация последовательностей ....................................................................... 39
2.8. Нейронные сети .......................................................................................................... 41
2.9. Логистическая регрессия ........................................................................................... 44
3. ОСНОВНЫЕ КОНСТРУКЦИИ ЯЗЫКА DMX ............................................................... 46
3.1. Базовые понятия языка DMX, типы данных и содержимого ................................. 46
3.2. Создание структуры интеллектуального анализа .................................................. 55
3.3. Создание модели интеллектуального анализа данных .......................................... 59
3.4. Обработка, очистка, удаление и восстановление структур и моделей ................ 63
3.5. Язык DMX: запросы ................................................................................................... 72
3.6. Язык DMX: прогнозирующие запросы .................................................................... 79
4. ОСОБЕННОСТИ ИСПОЛЬЗОВАНИЯ ВСТРОЕННЫХ АЛГОРИТМОВ
ИНТЕЛЛЕКТУАЛЬНОГО АНАЛИЗА СУБД MS SQL SERVER 2008 ........................... 86
4.1 Упрощенный алгоритм Байеса ................................................................................... 86
4.2 Деревья решений и линейная регрессия ................................................................... 89
4.3. Алгоритм временных рядов....................................................................................... 92
4.4. Алгоритм кластеризации ........................................................................................... 98
4.5. Алгоритм взаимосвязей ........................................................................................... 101
4.6. Алгоритм кластеризации последовательностей ................................................... 104
4.7. Алгоритмы нейронных сетей и логистической регрессии ................................... 106
5. ЛАБОРАТОРНЫЕ РАБОТЫ .......................................................................................... 111
5.1. Работа 1. Надстройки интеллектуального анализа данных
для Microsoft Office ......................................................................................................... 112
5.2. Работа 2. Использование инструментов «Analyze Key Influencers» и «Detect
Categories» ........................................................................................................................ 121

3
5.3. Работа 3. Использование инструментов «Fill From Example» и «Forecast». ..... 130
5.4. Работа 4. Использование инструментов «Highlight Exceptions» и «Scenario
Analysis». .......................................................................................................................... 139
5.5. Работа 5. Использование инструментов «Prediction Calculator» и «Shopping
basket Analysis» ................................................................................................................ 150
5.6. Работа 6. Использование инструментов Data Mining Client для Excel 2007 для
подготовки данных .......................................................................................................... 160
5.7. Работа 7. Использование инструментов Data Mining Client для Excel 2007 для
создания модели интеллектуального анализа данных ................................................ 170
5.8. Работа 8. Анализ точности прогноза и использование модели
интеллектуального анализа ............................................................................................ 177
5.9. Работа 9. Построение модели кластеризации, трассировка и перекрестная
проверка............................................................................................................................ 188
5.10. Работа 10. Начало работы в BI Dev Studio ........................................................... 199
5.11. Работа 11. Создание представления источника данных .................................... 207
5.12. Работа 12. Создание структуры и модели интеллектуального анализа. Задача
кластеризации .................................................................................................................. 217
5.13. Работа 13. Задача классификации. Создание структуры и моделей
интеллектуального анализа. Сравнение точности моделей ....................................... 234
5.14. Работа 14. Просмотр моделей интеллектуального анализа (деревья решений,
упрощенный алгоритма Байеса, нейронные сети). Написание «одноэлементных»
прогнозирующих запросов ............................................................................................. 244
5.15. Работа 15. Работа с моделями интеллектуального анализа данных из SQL
Server Management Studio ............................................................................................... 253
5.16. Работа 16. Использование алгоритма Microsoft Time Series для
прогнозирования значений временных рядов ............................................................. 260
БИБЛИОГРАФИЧЕСКИЙ СПИСОК................................................................................. 270

4
СПИСОК СОКРАЩЕНИЙ
БД – база данных;
СУБД – система управления базами данных;
BI Dev Studio (от англ. Business Intelligence Development Studio)
– инструментальная среда разработки аналитических решений, по-
ставляемая вместе с Microsoft SQL Server 2008;
DM (от англ. Data Mining) – интеллектуальный анализ данных;
DMX (от англ. Data Mining Extensions to SQL) – язык расшире-
ний интеллектуального анализа данных;
EM (англ. Expectation-maximization) – максимизация ожиданий,
алгоритм кластеризации;
PMML (англ. Predictive Model Markup Language) – язык размет-
ки прогнозирующих моделей;
SQL (от англ. Structured Query Language) – язык структуриро-
ванных запросов, используемый при работе с реляционными СУБД.

5
ВВЕДЕНИЕ
Широкое распространение технологий автоматизированной об-
работки информации и накопление в компьютерных системах боль-
ших объемов данных, сделали очень актуальной задачу поиска неяв-
ных взаимосвязей, имеющихся в наборах данных. Для ее решения ис-
пользуются методы математической статистики, теории баз данных,
теории искусственного интеллекта и ряда других областей, вместе
формирующие технологию интеллектуального анализа данных (англ.
Data Mining).
В пособии системно излагаются основы интеллектуального ана-
лиза данных средствами современных систем управления базами дан-
ных (СУБД). В качестве примера выбрана СУБД Microsoft SQL Server
2008.
Пособие состоит из пяти разделов, в которых рассматриваются
основные задачи интеллектуального анализа данных, распространен-
ные алгоритмы, язык запросов DMX (Data Mining eXtensions to SQL),
особенности проведения анализа в среде СУБД Microsoft SQL Server
2008. Наряду с теоретическими материалами, пособие включает опи-
сания 16 лабораторных работ, позволяющих выработать практические
навыки решения задач интеллектуального анализа данных.

Пособие рекомендуется для студентов, обучающихся по направ-


лению «Системный анализ и управление», и также может быть полез-
но широкому кругу специалистов в области информационных техно-
логий.

6
1. ОСНОВЫ ИНТЕЛЛЕКТУАЛЬНОГО
АНАЛИЗА ДАННЫХ

1.1. БАЗОВЫЕ ПОНЯТИЯ И ОСНОВНЫЕ ЗАДАЧИ


Целью интеллектуального анализа данных (англ. Data mining,
другие варианты перевода – «добыча данных», «раскопка данных»)
является обнаружение неявных закономерностей в наборах данных.
Как научное направление он стал активно развиваться в 90-х годах
XX века, что было вызвано широким распространением технологий
автоматизированной обработки информации и накоплением в компь-
ютерных системах больших объемов данных [1,2]. И хотя существу-
ющие технологии позволяли, например, быстро найти в базе данных
нужную информацию, этого во многих случаях было уже недостаточ-
но. Возникла потребность поиска взаимосвязей между отдельными
событиями среди больших объемов, данных, для чего понадобились
методы математической статистики, теории баз данных, теории ис-
кусственного интеллекта и ряда других областей.
Классическим считается определение, данное одним из основа-
телей направления Григорием Пятецким-Шапиро [2]: Data Mining –
исследование и обнаружение «машиной» (алгоритмами, средствами
искусственного интеллекта) в сырых данных скрытых знаний, кото-
рые ранее не были известны, нетривиальны, практически полезны,
доступны для интерпретации.
Учитывая разнообразие форм представления данных, использу-
емых алгоритмов и сфер применения, интеллектуальный анализ дан-
ных может проводиться с помощью программных продуктов следу-
ющих классов:
– специализированных «коробочных» программных продуктов
для интеллектуального анализа;
– математических пакетов;
– электронных таблиц (и различного рода надстроек над ними);

7
– средств интегрированных в системы управления базами дан-
ных (СУБД);
– других программных продуктов.
В рамках данного курса нас в первую очередь будут интересо-
вать средства, интегрированные с СУБД. В качестве примера можно
привести СУБД Microsoft SQL Server (MS SQL Server) и входящие в
ее состав службы Analysis Services, обеспечивающие пользователей
средствами аналитической обработки данных в режиме on-line
(OLAP) и интеллектуального анализа данных, которые впервые по-
явились в MS SQL Server 2000.
Не только Microsoft, но и другие ведущие разработчики СУБД
имеют в своем арсенале средства интеллектуального анализа данных.

Задачи интеллектуального анализа данных


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

8
Задача регрессии во многом схожа с задачей классификации, но
в ходе ее решения производится поиск шаблонов для определения не-
прерывного числового значения.
Отдельно выделяется задача прогнозирования новых значений на
основании имеющихся значений числовой последовательности (или
нескольких последовательностей, между значениями в которых
наблюдается корреляция). При этом могут учитываться имеющиеся
тенденции (тренды), сезонность, другие факторы. Классическим при-
мером является прогнозирование цен акций на бирже.
Тут требуется сделать небольшое отступление. По способу ре-
шения задачи интеллектуального анализа можно разделить на два
класса: обучение с учителем (от англ. supervised learning) и обучение
без учителя (от англ. unsupervised learning). В первом случае, требует-
ся обучающий набор данных, на котором создается и обучается мо-
дель интеллектуального анализа. Готовая модель тестируется и впо-
следствии используется для предсказания значений в новых наборах
данных. Иногда в этом же случае говорят об управляемых алгоритмах
интеллектуального анализа. Задачи классификации и регрессии отно-
сятся как раз к этому типу.
Во втором случае, целью является выявление закономерностей,
имеющихся в существующем наборе данных. При этом обучающая
выборка не требуется. В качестве примера можно привести задачу
анализа потребительской корзины, когда в ходе исследования выяв-
ляются товары, чаще всего покупаемые вместе. К этому же классу от-
носится задача кластеризации.
Также можно говорить о классификации задач интеллектуально-
го анализа данных по назначению[2], в соответствии с которой, они
делятся на описательные (от англ. descriptive) и предсказательные (от
англ. predictive). Цель решения описательных задач – лучше понять
исследуемые данные, выявить имеющиеся в них закономерности, да-
же если в других наборах данных они встречаться не будут. Для пред-
сказательных задач характерно то, что в ходе их решения на основа-

9
нии набора данных с известными результатами строится модель для
предсказания новых значений.
Вернемся к обзору задач интеллектуального анализа данных.
Задача кластеризации заключается в делении множества объек-
тов на группы (кластеры), схожие по параметрам. При этом, в отличие
от классификации, число кластеров и их характеристики может быть
заранее неизвестно, и они будут определяться в ходе построения кла-
стеров исходя из степени близости объединяемых объектов по сово-
купности параметров.
Другое название этой задачи – сегментация. Например, интер-
нет-магазин может быть заинтересован в проведении подобного ана-
лиза базы своих клиентов, для того, чтобы потом сформировать спе-
циальные предложения для выделенных групп, учитывая их особен-
ности. Кластеризация относится к задачам обучения без учителя (или
«неуправляемым» задачам).
Задача определения взаимосвязей, также называемая задачей по-
иска ассоциативных правил, заключается в определении часто встре-
чающихся наборов объектов среди множества подобных наборов.
Классическим примером является анализ потребительской корзины,
который позволяет определить наборы товаров, чаще всего встреча-
ющиеся в одном заказе (или в одном чеке). Эта информация может
потом использоваться при размещении товаров в торговом зале или
при формировании специальных предложений для группы связанных
товаров. Данная задача также относится к классу «обучение без учи-
теля».
Анализ последовательностей или сиквенциальный анализ одни-
ми авторами рассматривается как вариант предыдущей задачи, дру-
гими – выделяется отдельно. Целью, в данном случае, является обна-
ружение закономерностей в последовательностях событий. Подобная
информация позволяет, например, предупредить сбой в работе ин-
формационной системы, получив сигнал о наступлении события, ча-
сто предшествующего сбою подобного типа. Другой пример приме-

10
нения – анализ последовательности переходов по страницам пользо-
вателей web-сайтов.
Анализ отклонений позволяет отыскать среди множества собы-
тий те, которые существенно отличаются от нормы. Отклонение мо-
жет сигнализировать о каком-то необычном событии (неожиданный
результат эксперимента, мошенническая операция по банковской кар-
те …) или, например, об ошибке ввода данных оператором.
В табл. 1.1 приведены примеры задач интеллектуального анали-
за данных из различных областей.
Таблица 1.1
Примеры применения интеллектуального анализа данных
Информаци-
Финансовая
Задача онные Торговля
сфера
технологии
Классификация Оценка кредито-
способности
Регрессия Оценка допусти-
мого кредитного
лимита
Прогнозирова- Прогнозирование Прогнозирование
ние продаж цен акция
Кластеризация Сегментация Сегментация
клиентов клиентов
Определения Анализ
взаимосвязей потребительской
корзины
Анализ Анализ перехо-
последователь- дов по страни-
ностей цам web-сайта
Анализ Обнаружение Выявление
отклонений вторжений в мошенничества с
информацион- банковскими
ные системы картами

11
Более подробно некоторые из перечисленных задач будут рас-
смотрены в следующих разделах пособия. Кроме того, можно реко-
мендовать обратиться к дополнительным источникам [1-4].

1.2. ИНТЕЛЛЕКТУАЛЬНЫЙ АНАЛИЗ ДАННЫХ


В СУБД НА ПРИМЕРЕ MICROSOFT SQL SERVER
Рассмотрим реализацию средств интеллектуального анализа
данных в СУБД Microsoft SQL Server. Как было отмечено в предыду-
щем разделе, решаются эти задачи службами Analysis Services. На
рис. 1.1 схематично представлены компоненты СУБД MS SQL Server
2008 и выделена подсистема интеллектуального анализа данных [5].

Рис. 1.1 Службы и компоненты СУБД Microsoft SQL Server 2008

Службы Analysis Services предоставляют следующие средства


для создания решений по интеллектуальному анализу данных:
1) набор стандартных алгоритмов интеллектуального анализа
данных;
2) конструктор интеллектуального анализа данных, предназна-
ченный для создания и просмотра моделей интеллектуального анали-
за данных, управления ими и построения прогнозов;

12
3) язык расширений интеллектуального анализа данных (Data
Mining eXtensions to SQL, DMX).
Для работы с предоставляемыми средствами интеллектуального
анализа используется инструментальная среда Business Intelligence
Development Studio, (сокращенно BI Dev Studio).
Также MS SQL Server 2008 (и следующая за ней версия 2008 R2)
поддерживают создание, управление и использование моделей интел-
лектуального анализа данных из Microsoft Excel с помощью надстро-
ек интеллектуального анализа данных SQL Server 2008 для Office
2007. Выполнению интеллектуального анализа данных с помощью
надстроек посвящен ряд лабораторных работ, описание которых при-
ведено в заключительном разделе данного пособия.
Введем еще несколько понятий [5].
Структура интеллектуального анализа данных может быть
представлена как совокупность исходных данных и описания спосо-
бов их обработки. Структура содержит модели, которые используют-
ся для анализа ее данных. В частности, одна структура может под-
держивать несколько моделей. В структуре интеллектуального анали-
за данных можно выделить обучающий и проверочный набор данных,
задав процентное отношение или объем данных.
Модель интеллектуального анализа данных представляет собой
сочетание самих данных, алгоритма интеллектуального анализа дан-
ных и коллекции значений параметров и фильтров, управляющих ис-
пользованием и обработкой данных. Для MS SQL Server 2008 модель
интеллектуального анализа данных определяется на языке расшире-
ний интеллектуального анализа данных или с помощью мастера ин-
теллектуального анализа данных в среде BI Dev Studio.
Алгоритм интеллектуального анализа данных представляет со-
бой механизм, создающий модель интеллектуального анализа данных.
Чтобы создать модель, алгоритм сначала анализирует набор данных,
осуществляя поиск определенных закономерностей и трендов. Алго-

13
ритм использует результаты этого анализа для определения парамет-
ров модели интеллектуального анализа данных. Затем эти параметры
применяются ко всему набору данных, чтобы выявить пригодные к
использованию закономерности и получить подробную статистику.
Ниже перечислены алгоритмы интеллектуального анализа дан-
ных, реализованные в Microsoft SQL Server 2008 R2 (указание на
Майкрософт говорит о том, что это реализации алгоритмов компании,
а приводимые английские названия понадобятся нам в дальнейшем):
1) упрощенный алгоритм Байеса (Майкрософт) – Microsoft Naïve
Bayes;
2) алгоритм дерева принятия решений (Майкрософт) – Microsoft
Decision Trees;
3) алгоритм временных рядов (Майкрософт) – Microsoft Time
Series;
4) алгоритм кластеризации (Майкрософт) – Microsoft Clustering;
5) алгоритм кластеризации последовательностей (Майкро-
софт) – Microsoft Sequence Clustering;
6) алгоритм взаимосвязей Майкрософт – Microsoft Association
Rules;
7) алгоритм нейронной сети (Майкрософт) – Microsoft Neural
Network;
8) алгоритм линейной регрессии (Майкрософт) – Microsoft Line-
ar Regression;
9) алгоритм логистической регрессии (Майкрософт) – Microsoft
Logistic Regression.
Подробно с перечисленными алгоритмами мы познакомимся в
последующих разделах. В табл. 1.2, приведены некоторые примеры
использования интеллектуального анализа данных и соответствую-
щие им алгоритмы [6].

14
Таблица 1.2
Примеры использования алгоритмов
интеллектуального анализа
Задача и пример Подходящие алгорит-
мы
Прогнозирование дискретного атрибута. Алгоритм дерева принятия
Например, купит ли получатель целевой решений.
рассылки определенный продукт. Упрощенный алгоритм Байеса.
Алгоритм кластеризации.
Алгоритм нейронной сети.
Прогнозирование непрерывного Алгоритм дерева принятия
атрибута. решений.
Например, прогноз продаж Алгоритм временных рядов.
на следующий год.
Прогнозирование последовательности. Алгоритм кластеризации
Например, анализ маршрута последовательностей.
перемещения по веб-узлу компании.
Нахождение групп общих элементов в Алгоритм взаимосвязей.
транзакциях. Алгоритм дерева
Например, использование анализа принятия решений.
покупательского поведения
для предложения дополнительных
продуктов заказчику.
Нахождение групп схожих элементов. Алгоритм кластеризации.
Например, разбиение демографических Алгоритм кластеризации
данных на группы для лучшего понима- последовательностей.
ния связей между атрибутами.

Необходимо сказать и о различиях в версиях СУБД MS SQL


Server 2008 и 2008 R2, в которых доступны средства интеллектуаль-
ного анализа данных. Это версии Standard, Enterprise, а также версия
для разработчиков Developer, функционально аналогичная Enterprise,
но отличающаяся от нее лицензионными условиями использования. В
табл. 1.3 приведены результаты сравнения возможностей. В частно-

15
сти, из нее видно, что результаты работы алгоритма временных рядов
(Microsoft Time Series) при обработке «перекрестных», т. е. имеющих
взаимную корреляцию, рядов могут отличаться в версиях SQL Server
Enterprise и Standard (в последнем случае корреляция учитываться не
будет). По ходу изложения материала, тема различия версий СУБД
еще будет неоднократно затрагиваться, и некоторые непонятные пока
возможности будут подробно рассмотрены.
Таблица 1.3
Различия версий СУБД Microsoft SQL Server 2008
в области интеллектуального анализа данных
Возможность Выпуск Выпуск
Enterprise/ Standard
Developer
Стандартные алгоритмы Да Да
Средства интеллектуального анализа данных: Да Да
мастера, редакторы, построители запросов
Перекрестная проверка Да –
Модели на фильтрованных подмножествах Да –
структур интеллектуального анализа данных
Временные ряды: пользовательское объеди- Да –
нение моделей ARTXP и ARIMA
Временные ряды: прогноз новых данных Да –
Неограниченные параллельные запросы ин- Да –
теллектуального анализа данных
Дополнительная настройка алгоритмов Да –
API-интерфейс для подключаемых модулей Да –
алгоритмов
Параллельная обработка модели Да –
Временные ряды: прогноз перекрестных рядов Да –
Неограниченные атрибуты для правил взаи- Да –
мосвязи
Прогнозирование последовательности Да –
Множественные цели прогнозирования для Да –
упрощенного алгоритма Байеса, нейронной
сети и логистической регрессии

16
В заключение рассмотрим схему взаимодействия аналитических
служб SQL Server с внешними приложениями (рис. 1.2) [13]. На ри-
сунке видно, что внешние приложения, используя разнообразные
средства (ADODM.Net и др.) и прокол XMLA (XML for Analysis) «по-
верх» протокола TCP или HTTP (характерно для web-решений) могут
взаимодействовать с аналитическими службами. При этом, в зависи-
мости от типа запроса, задействуется или подсистема OLAP, или под-
система интеллектуального анализа данных. Обрабатываться запросы
интеллектуального анализа могут с помощью как стандартных алго-
ритмов Майкрософт, так и алгоритмов разработки третьих фирм. Ре-
зультат посредством XMLA передается обратно приложению.

Рис. 1.2. Схема взаимодействия аналитических


служб SQL Server с внешними приложениями

1.3. ЭТАПЫ ПРОВЕДЕНИЯ ИНТЕЛЛЕКТУАЛЬНОГО


АНАЛИЗА ДАННЫХ
Рассмотрим теперь этапы проведения интеллектуального анали-
за данных. Специалисты корпорации Майкрософт предлагают следу-
ющий вариант декомпозиции данной задачи [7]:

17
1) постановка задачи;
2) подготовка данных;
3) изучение данных;
4) построение моделей;
5) исследование и проверка моделей;
6) развертывание и обновление моделей.
На рис. 1.3 схематично представлены перечисленные этапы и
указаны средства MS SQL Server, с помощью которых они выполня-
ются. Указанные этапы не обязательно будут пройдены один за дру-
гим. Например, на одном из промежуточных этапов может выяснить-
ся, что в текущей постановке для решения задачи не хватает данных,
и понадобится снова вернуться к первому этапу.

Рис. 1.3. Этапы интеллектуального анализа данных

На этапе постановки задачи нужно определить, что является це-


лью анализа. В частности, требуется ответить на ряд вопросов, глав-
ный из которых – что именно необходимо определить в результате
анализа. Ниже приведен примерный список подобных вопросов.
1. Требуется ли делать прогнозы на основании модели интел-
лектуального анализа данных, или нужно просто найти содержатель-
ные закономерности и взаимосвязи?

18
2. Если требуется прогноз, какой атрибут набора данных необ-
ходимо спрогнозировать?
3. Как связаны столбцы? Если существует несколько таблиц, как
они связаны?
4. Каким образом распределяются данные? Являются ли данные
сезонными? Дают ли данные точное представление о предметной об-
ласти?
Как правило, в процессе постановки задачи аналитик работает
совместно со специалистами в предметной области.
Этап подготовки данных включает определение источников
данных для анализа, объединение данных и их очистку. Используе-
мые данные могут находиться в различных базах и на разных серве-
рах. Более того, какие-то данные могут быть представлены в виде
текстовых файлов, электронных таблиц, находиться в других форма-
тах. В процессе объединения и преобразования данных часто исполь-
зуются возможности служб SQL Server Integration Services (рис. 1.3).
Это позволяет существенно автоматизировать процесс подготовки.
Собранные таким образом данные, как правило, нуждаются в
дополнительной обработке, называемой очисткой. В процессе очист-
ки может производиться удаление «выбросов» (нехарактерных и
ошибочных значений), обработка отсутствующих значений парамет-
ров, численное преобразование (например, нормализация) и т. д.
Следующим этапом является изучение данных, которое позволит
понять, насколько адекватно подготовленный набор представляет ис-
следуемую предметную область. Здесь может проводиться поиск ми-
нимальных и максимальных значений параметров, анализ распреде-
лений значений и других статистических характеристик, сравнение
полученных результатов с представлениями о предметной области.
Четвертый этап – построение моделей. Как уже разбиралось
выше, сначала создается структура данных, а потом для структуры
создается одна или несколько моделей. Модель включает указание на
алгоритм интеллектуального анализа данных и его параметры, а так-

19
же анализируемые данные. При определении модели могут использо-
ваться различные фильтры. Таким образом, не все имеющиеся в опи-
сании структуры данные будут использоваться каждой созданной для
нее моделью. На рис. 1.4 показан пример, в котором для одной струк-
туры создается несколько моделей, использующих различные наборы
столбцов и фильтров.

Рис. 1.4. Несколько моделей, созданных


в рамках одной структуры

Модель может проходить обучение, заключающееся в примене-


нии выбранного алгоритма к обучающему набору данных. После это-
го в ней сохраняются выявленные закономерности.
Новую модель для MS SQL Server можно определить с помо-
щью мастера интеллектуального анализа данных в среде BI Dev
Studio или с помощью языка DMX. Нередко для решения задачи со-
здается несколько моделей, основанных на разных алгоритмах, чтобы
была возможность сравнить результаты и выбрать наилучшую.
Пятый этап – проверка модели. Здесь целью является оценка ка-
чества работы созданной модели перед началом ее использования в
производственной среде. Если создавалось несколько моделей, то на

20
этом этапе делается выбор в пользу той, что даст наилучший резуль-
тат.
При решении предсказательных задач интеллектуального анали-
за качество выдаваемого моделью прогноза можно оценить на прове-
рочном наборе данных, для которого известно значение прогнозируе-
мого параметра. В MS SQL Server 2008 службы Analysis Services
предоставляют средства, упрощающие разделение данных на обуча-
ющий и проверочный наборы. Такое секционирование можно выпол-
нить автоматически во время построения модели интеллектуального
анализа данных. Точность прогнозов, создаваемых моделями, можно
проверить при помощи таких средств, как диаграмма точности про-
гнозов и матрица классификации.
Другой подход, называемый перекрестной проверкой, заключа-
ется в том, что создаются подмножества данных и сравниваются ре-
зультаты работы модели на каждом подмножестве. Такой подход мо-
жет использоваться как при решении предсказательных, так и описа-
тельных задач. Средства автоматизации перекрестной проверки до-
ступны при использовании MS SQL Server 2008 версии Enterprise или
Developer.
Наиболее эффективные модели развертываются в производ-
ственной среде. При этом, возможны сценарии интеграции средств
интеллектуального анализа данных и пользовательских приложений.
И конечный пользователь, в ответ на сформированный запрос, будет
получать результаты анализа в виде отчета. При формировании отче-
тов о результатах проведенного анализа могут использоваться воз-
можности службы SQL Server Reporting Services.
Со временем, характеристики предметной области могут ме-
няться, что потребует и изменения шаблонов интеллектуального ана-
лиза данных. Может потребоваться переобучение существующих мо-
делей или создание новых. В ряде случаев, SQL Server позволяет ав-
томатизировать процесс обновления моделей за счет использования
служб Integration Services.

21
2. КРАТКИЙ ОБЗОР АЛГОРИТМОВ
ИНТЕЛЛЕКТУАЛЬНОГО АНАЛИЗА ДАННЫХ

2.1. УПРОЩЕННЫЙ АЛГОРИТМ БАЙЕСА


Упрощенный алгоритм Байеса – это алгоритм классификации,
основанный на вычислении условной вероятности значений прогно-
зируемых атрибутов. При этом предполагается, что входные атрибуты
являются независимыми и определен хотя бы один выходной атрибут.
Алгоритм основан на использовании формулы Байеса. Пусть
A1,A2,… ― полная группа несовместных событий, а B ― некоторое
событие, вероятность которого положительна. Тогда условная веро-
ятность события Ai, если в результате эксперимента наблюдалось со-
бытие B, может быть вычислена по формуле:
( | ) ( )
( | ) . (2.1)
∑ ( | ) ( )

В [1] работа алгоритма поясняется на следующем примере. В


2002 году в Конгрессе США был 51 % представителей республикан-
ской партии и 49 % демократов. Имеется информация о том, как го-
лосовали представители той и другой партии по ряду законопроектов
(табл. 2.1). Необходимо определить партийную принадлежность не-
коего конгрессмена.
Без дополнительной информации мы можем сказать, что с веро-
ятностью 0,49 он будет демократом, с вероятностью 0,51 – республи-
канцем. Это априорная («заданная до опыта») вероятность, в формуле
(2.1) обозначенная как P(Ai), где событие Ai может заключаться в том,
что данный депутат является демократом (Дем.) или республиканцем
(Респ.).
Но мы можем увеличить точность прогноза, если знаем, как го-
лосовал данный депутат (табл. 2.2), и общие результаты голосования
членов Конгресса по тем же вопросам (табл. 2.1). Формула Байеса

22
позволяет вычислить условные (апостериорные, «полученные после
опыта») вероятности.
Таблица 2.1
Данные голосований по законопроектам с разделением по при-
надлежности к партиям (Дем.-демократ, Респ.-республиканец)
Зак-кт 1 Зак-кт 2 Зак-кт 3 Зак-кт 4 Партия
Дем. Респ. Дем. Респ. Дем. Респ. Дем. Респ. Дем. Респ.
За 41 214 87 211 184 172 178 210 211 223
Против 166 4 114 6 11 36 23 1
За 20% 98% 43% 97% 94% 83% 89% 99.5% 49% 51%
Против 80% 2% 57% 3% 6% 17% 11% 0.5%

Таблица 2.2
Результаты голосования интересующего нас представителя
Зак-кт 1 Зак-кт 2 Зак-кт 3 Зак-кт 4 Партия
За Против За За ?

Если известно, что каждый член конгресса должен принадле-


жать только одной из двух перечисленных партий, то полная группа
событий – это {Дем.,Респ.}. Обозначим результаты голосования из
таблицы 2.2 как «Рез.» и воспользуемся правилом умножения вероят-
ностей. Тогда условные вероятности можно рассчитать как:

P(Рез.|Дем.) × P(Дем.) = 0,2 × 0,57 × 0,94 × 0,89 × 0,49 ≈ 0,0467 (2.2)


P(Рез.|Респ.) × P(Респ.) = 0,98 × 0,03 × 0,83 × 0,995 × 0,51 ≈ 0,0124

( | )

( | )

В итоге можно заключить, что с вероятностью около 0,79 рас-


сматриваемый конгрессмен является представителем демократиче-
ской партии.

23
Вернемся к теме интеллектуального анализа данных. Проводя
аналогии, можно сказать, что таблица 2.1 – это результат обучения
модели на исходных данных. В таблице 2.2 представлен классифици-
руемый вариант, а результат работы алгоритма – решение задачи
классификации и оценка вероятности для предлагаемого варианта.
Если говорить о СУБД MS SQL Server 2008, то там описание
модели интеллектуального анализа хранится в виде иерархии узлов.
Для упрощенного алгоритма Байеса иерархия имеет 4 уровня. Среда
разработки BI Dev Studio позволяет просмотреть содержимое модели
(рис. 2.1). На верхнем уровне иерархии находится узел самой модели.
Самый нижний уровень содержит информацию о том, с какой частой
встречались в обучающей выборке различные значения выходного
параметра в сочетании с указанным значением выбранного входного
параметра (рис. 2.1).

Рис. 2.1. Просмотр модели на базе упрощенного


алгоритма Байеса средствами BI Dev Studio

Для корректного использования упрощенного алгоритма Байеса


необходимо учитывать, что:

24
– входные атрибуты должны быть взаимно независимыми;
– атрибуты могут быть только дискретными или дискретизован-
ными (в процессе дискретизации множество значений непрерывного
числового атрибута разбивается на интервалы и дальше идет работа с
номером интервала);
– алгоритм требует меньшего количества вычислений, чем дру-
гие алгоритмы интеллектуального анализа, представляемые Microsoft
SQL Server 2008, поэтому он часто используется для первоначального
исследования данных. По той же причине, данный алгоритм предпо-
чтителен для анализа больших наборов данных с большим числом
входных атрибутов.

2.2. ДЕРЕВЬЯ РЕШЕНИЙ


Деревья решений (или деревья принятия решений, англ. «Deci-
sion Trees») ― семейство алгоритмов, позволяющих сформировать
правила классификации в виде иерархической (древовидной структу-
ры). В ряде случаев, эти алгоритмы позволяют также решать задачи
регрессии и поиска взаимосвязей.
Решение задачи классификации заключается в определении зна-
чения категориального (дискретного) выходного атрибута на основа-
нии входных данных. Для этого, сначала производится оценка степе-
ни корреляции входных и выходных значений, после чего обнару-
женные зависимости описываются в виде узлов дерева.
Рассмотрим следующий пример [6].
Пусть в обучающей выборке имеется информация о том, купил
клиент велосипед или нет (прогнозируемое значение), а также о воз-
расте клиентов.
На рис. 2.2, a ‒ приведена гистограмма, показывающая зависи-
мость прогнозируемого атрибута «Покупатель велосипеда» от вход-
ного «Возраст» (будем считать, что возраст имеет три значения
«Младший», «Средний», «Старший»). Гистограмма на рис. 2.2, b ‒
показывает, как эти данные могут использоваться при построении де-
рева решений.

25
a) b)

Рис. 2.2. Пример построения узла дерева решений


для дискретного атрибута

Иначе алгоритм работает при построении дерева для прогнози-


рования непрерывного столбца [6]. В этом случае, каждый узел со-
держит регрессионную формулу, а разбиение осуществляется в точке
нелинейности в этой формуле. Данный подход показан на рис. 2.3.
Пусть наиболее точно имеющиеся данные можно моделировать двумя
соединенными линиями – рис. 2.3, a. Дерево решений в этом случае
строится так, как показано на рис. 2.3, b.
a) b)
все
X≤5 X X≥5 X
≤5
Y=0,8×X-0,5 ≥5
Y=-0,5×X+6

Рис. 2.3. Построение дерева решений для непрерывного


прогнозируемого атрибута

26
В случае Microsoft SQL Server, для того, чтобы можно было по-
лучить функцию линейной регрессии, в набор стандартных алгорит-
мов, начиная с версии SQL Server 2005, был включен алгоритм ли-
нейной регрессии (Microsoft Linear Regression) о котором речь пойдет
ниже.
Но вернемся к деревьям решений. При решении задачи класси-
фикации, пройдя от корневого узла до конечного («листа»), мы полу-
чаем результат. Несомненным достоинством деревьев решений явля-
ется их интуитивная понятность. В частности, описанные деревом за-
висимости можно легко перевести в правила «если-то». Например, по
представленному на рис. 2.4 фрагменту диаграммы можно составить
правила следующего вида: «Если клиент владеет двумя машинами,
проживает в регионе «Pacific» (Тихоокеанский) и моложе 43 лет, то
он с высокой вероятностью приобретет велосипед».

Рис. 2.4. Фрагмент диаграммы дерева решений

27
При работе с SQL Server 2008, диаграммы деревьев решений для
моделей, основанных на этом алгоритме, можно создавать и просмат-
ривать в среде BI Dev Studio.
При построении дерева решений важно добиться того, чтобы
модель корректно отображала особенности предметной области и в то
же время не содержала неоправданно большого числа ветвей. Слиш-
ком «ветвистое» дерево может отлично классифицировать данные из
обучающего набора, но иметь невысокую точность прогнозирования
для новых данных. Это явление называется «переобучением». Для
борьбы с ним используется остановка при достижении определенных
пороговых показателей (например, по объему данных, поддерживаю-
щих разбиение) и процедура «обрезки» дерева, в результате которой
некоторые ветви объединяются или удаляются.

2.3. ЛИНЕЙНАЯ РЕГРЕССИЯ


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

Рис. 2.5. Пример использования линейной регрессии

28
В случае одной независимой переменной (одного регрессора),
задача может быть сформулирована следующим образом. Уравнение,
описывающее прямую на плоскости: y = a + bx. Для i-й точки будет
справедливо yi = a + bxi + ei, где ei – разница между фактическим зна-
чением yi и вычисленным в соответствии уравнением линии. Иначе
говоря, каждой точке соответствует ошибка, связанная с ее расстоя-
нием от линии регрессии. Нужно с помощью подбора коэффициентов
a и b получить такое уравнение, чтобы сумма ошибок, связанных со
всеми точками, стала минимальной. Для решения этой задачи может
использоваться, в частности, метод наименьших квадратов.
В SQL Server 2008 при выборе алгоритма линейной регрессии
вызывается особый вариант алгоритма дерева решений с параметра-
ми, которые ограничивают поведение алгоритма и требуют использо-
вания определенных типов данных на входе.
Линейная регрессия является полезным и широко известным
методом моделирования, особенно для случаев, когда известен при-
водящий к изменениям базовый фактор, и есть основания ожидать
линейный характер зависимости. Существуют также и другие типы
регрессии, в том числе – нелинейные.

2.4. АНАЛИЗ ВРЕМЕННЫХ РЯДОВ


В общем случае, временной ряд – это набор числовых значений,
собранных в последовательные моменты времени (в большинстве
случаев – через равные промежутки времени). В качестве примера
можно назвать котировки иностранных валют или других биржевых
товаров, результаты серии экспериментов и т. д. Целью анализа вре-
менного ряда может быть выявление имеющихся зависимостей теку-
щих значений параметров от предшествующих, с последующим ис-
пользованием их для прогнозирования новых значений.
Ряд можно представить как упорядоченное множество элемен-
тов или событий {X1,X2,…Xn}, каждое из которых в общем случае мо-

29
жет быть описано набором атрибутов: Xi = {xi1,xi2,…xim}. На практике
чаще всего используется один атрибут. При описании варианта для
интеллектуального анализа данных, отметка времени (или номер эле-
мента во временном ряде) вводится как один из атрибутов. Как пра-
вило, предполагается, что отметка времени – дискретное числовое
значение, а предсказываемый атрибут – непрерывный.
Выделяют два основных формата представления временных ря-
дов – столбчатый и чередующийся (или смешанный, от англ. mixed)
[1]. Пусть рассматриваемая предметная область – торговля велосипе-
дами. И нужно представить данные продаж по месяцам двух моделей
велосипедов, которые называются M200 и R200. В этом случае мы
имеем два временных ряда. В табл. 2.3 они представлены в столбча-
том формате, в табл. 2.4 – используется чередующийся.
Таблица 2.3
Представление временных рядов в столбчатом формате
Год и месяц Количество M200 Количество R200
200904 100 50
200905 120 20
200906 110 60
… … …

Таблица 2.4
Представление временных рядов в чередующемся формате
Год и месяц Модель Количество
200904 M200 100
200904 R200 50
200905 M200 120
200905 R200 20
200906 M200 110
200906 R200 60
… … …

30
С данными в столбчатом формате несколько проще работать, но
этот формат менее гибкий. В приведенном примере, если с какого-то
момента появилась в продаже третья модель велосипеда, добавить
данные о ней, в случае использования чередующегося формата, будет
проще.
Фактические значения элементов ряда используются для обуче-
ния модели, после чего делается попытка прогноза для указанного
числа новых элементов. Пример подобного анализа представлен на
рис. 2.6, где пунктирной линией изображены предсказываемые значе-
ния.

Рис. 2.6. Графики с историческими и прогнозируемыми


значениями ряда
Рассмотрим теперь некоторые особенности реализации алго-
ритма в SQL Server 2008. Алгоритм временных рядов Майкрософт
(Microsoft Time Series) предоставляет собой совокупность двух алго-
ритмов регрессии, оптимизированных для прогноза рядов непрерыв-
ных числовых значений. Ими являются:

31
‒ алгоритм «дерево авторегрессии с перекрестным прогнозиро-
ванием» (ARTxp), который оптимизирован для прогнозирования сле-
дующего значения в ряду; он появился в SQL Server 2005;
‒ алгоритм «интегрированные скользящие средние авторегрес-
сии» (ARIMA), являющийся отраслевым стандартом в данной обла-
сти; добавлен в SQL Server 2008, чтобы повысить точность долго-
срочного прогнозирования.
По умолчанию службы Analysis Services для обучения модели
используют каждый алгоритм отдельно, а затем объединяют резуль-
таты, чтобы получить наиболее точный прогноз. В зависимости от
имеющихся данных и требований к прогнозам, можно выбрать для
использования только один алгоритм.

Рис. 2.7. Просмотр параметров модели

На рис. 2.7 представлены параметры для одного из узлов про-


гнозирующей модели, основанной на алгоритме временных рядов. Из
рисунка видно, что узел на самом деле содержит параметры для двух
алгоритмов. Также у рассматриваемого временного ряда ‘R250

32
Europe: Quantity’ (количество проданных в Европе велосипедов мар-
ки R250) обнаружена корреляция с другим рядом ‘R750 North
America: Amount’ (продажи в Северной Америке велосипедов мар-
ки R750).
Учет корреляций между рассматриваемыми рядами или, иначе
говоря, перекрестного влияния рядов, можно отметить в качестве
особенности реализации алгоритма временных рядов в SQL Server.
Это может быть важно, если одновременно анализируются связанные
ряды, например, описывающие цены на нефть и котировки валют
нефтедобывающих стран. Данную полезную возможность поддержи-
вает только алгоритм ARTxp. Если для прогноза используется только
алгоритм ARIMA, перекрестное влияние рядов не учитывается.
Точность прогноза для временного ряда может повысить указа-
ние известной периодичности. Например, в данных о продажах мага-
зина спорттоваров по месяцам, скорее всего, будет присутствовать
периодичность 12 (по числу месяцев в году).
Кратко рассмотрим основную идею метода авторегрессии. Ав-
торегрессия отличается от обычной регрессии тем, что текущее зна-
чение параметра xt выражается через его значения в предыдущие мо-
менты времени. Если использовать линейные зависимости, то алго-
ритм ищет решение в виде:
xt = a1xt-1 + a2xt-2 +…+ anxt-n + εt, (2.3)
где εt – погрешность, которую надо минимизировать путем подбора
коэффициентов a1-an, в чем и заключается обучение модели. Как вид-
но из рис. 2.7, наличие корреляции может учитываться путем включе-
ния в эту формулу членов из другого ряда. Периодичность учитыва-
ют, вводя в рассмотрение дополнительные члены последовательно-
сти. Например, для периодичности 12 это будет xt-12, xt-24 и т. д. А ис-
пользование аналитическими службами SQL Server дерева авторе-
грессии позволяет менять формулу путем разбиения в точках нели-
нейности.

33
2.5. КЛАСТЕРИЗАЦИЯ
В предыдущих разделах уже отмечалось, что кластеризация поз-
воляет снизить размерность задачи анализа предметной области, пу-
тем «естественной» группировки вариантов в кластеры. Таким обра-
зом, кластер будет объединять близкие по совокупности параметров
элементы, и в некоторых случаях, его можно рассматривать как еди-
ное целое. Например, описывая какой-то курортный регион, можно
сказать, что в нем 250 дней в году хорошая погода, не указывая по-
дробности относительно температуры, атмосферного давления и т. д.
Таким образом, не вдаваясь в характеристики отдельных элементов
(дней), мы представили целиком кластер «дни с хорошей погодой».
В случаях, когда для группировки используются значения одно-
го-двух параметров, задача кластеризации может быть относительно
быстро решена вручную или, например, обычными средствами рабо-
ты с реляционными базами данных. Когда параметров много, возни-
кает потребность в автоматизации процесса выявления кластеров.
Предоставляемый аналитическими службами SQL Server 2008
алгоритм кластеризации (Microsoft Clustering), использует итерацион-
ные методы для группировки вариантов со сходными характеристи-
ками в кластеры. Алгоритм сначала определяет имеющиеся связи в
наборе данных и на основе этой информации формирует кластеры.
Идею можно проиллюстрировать с помощью диаграмм на
рис. 2.8. На первом этапе (рис. 2.8, a) имеется множество вариантов,
далее (рис. 2.8, b) идет итерационный процесс формирования класте-
ров, и в итоге получен относительно небольшой набор кластеров, ко-
торым можно задать идентификаторы и продолжить анализ.

a) b) c)

Рис. 2.8. Переход от отдельных вариантов к кластерам

34
Microsoft Clustering содержит реализацию двух алгоритмов кла-
стеризации. Первый из них, алгоритм К-средних (англ. c-means), реа-
лизует, так называемую жесткую кластеризацию. Это значит, что ва-
риант может принадлежать только одному кластеру. Идея алгоритма
заключается в следующем [15].
1. Выбирается число кластеров k.
2. Из исходного множества данных случайным образом выби-
раются k записей, которые будут служить начальными центрами кла-
стеров.
3. Для каждой записи исходной выборки определяется ближай-
ший к ней центр кластера. При этом записи, «притянутые» опреде-
ленным центром, образуют начальные кластеры.
4. Вычисляются центроиды – центры тяжести кластеров. Каж-
дый центроид – это вектор, элементы которого представляют собой
средние значения признаков, вычисленные по всем записям кластера.
Центр кластера смещается в его центроид.
Шаги 3 и 4 итеративно повторяются, при этом может происхо-
дить изменение границ кластеров и смещение их центров. В результа-
те минимизируется расстояние между элементами внутри кластеров.
Остановка алгоритма производится тогда, когда границы кластеров и
расположения центроидов не перестанут изменяться от итерации к
итерации, т. е. на каждой итерации в каждом кластере будет оставать-
ся один и тот же набор записей.
Второй метод, реализованный в Microsoft Clustering, это макси-
мизация ожиданий (англ. Expectation-maximization, EM). Он относит-
ся к методам мягкой кластеризации, т. е. вариант в этом случае при-
надлежит к нескольким кластерам, а для всех возможных сочетаний
вариантов с кластерами вычисляются вероятности.
При кластеризации методом EM [16] алгоритм итеративно уточ-
няет начальную модель кластеризации, подгоняя ее к данным, и опре-
деляет вероятность принадлежности точки данных кластеру. Этот ал-
горитм заканчивает работу, когда вероятностная модель соответству-

35
ет данным. Функция, используемая для установления соответствия, –
логарифм функции правдоподобия данных, вводимых в модель.
Если в процессе формируются пустые кластеры или количество
элементов в одном или нескольких кластерах оказывается меньше за-
данного минимального значения, малочисленные кластеры заполня-
ются повторно с помощью новых точек и алгоритм EM запускается
снова. Результаты работы алгоритма максимизации ожидания явля-
ются вероятностными: каждая точка данных принадлежит всем кла-
стерам, но с разной вероятностью. Поскольку метод допускает пере-
крытие кластеров, сумма элементов всех кластеров может превышать
число элементов обучающего набора.
Реализация Майкрософт предоставляет два режима: масштаби-
руемую и немасштабируемую максимизацию ожидания. По умолча-
нию при масштабируемой максимизации ожидания просматривается
50 000 записей. В случае успеха модель использует только эти дан-
ные. Если модель не удается подогнать на основании 50 000 записей,
считываются еще 50 000 записей. При немасштабируемой максимиза-
ции ожидания считывается весь набор данных, независимо от его
размера. Этот метод создает кластеры более точно, но предъявляет
значительные требования к объему памяти.
По умолчанию используется масштабируемая максимизация
ожидания, так как это более производительный алгоритм с меньшими
требованиями к объему оперативной памяти. В большинстве случаев
выигрыш в скорости не ведет к ухудшению качества окончательной
модели.

2.6. АЛГОРИТМ ВЗАИМОСВЯЗЕЙ


Алгоритм взаимосвязей или ассоциативных правил (Association
Rules) позволяет выявить часто встречающиеся сочетания элементов
данных и использовать обнаруженные закономерности для построе-
ния прогноза. Классический пример – это анализ покупательской кор-

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

Рис. 2.9. Пример набора правил, формируемых


алгоритмом Association Rules

Когда подобный набор правил сформирован, его можно исполь-


зовать для формирования рекомендаций. Например, покупателю дер-
жателя фляги и кепки, предложат обратить внимание и на имеющиеся
фляги.
Вопрос заключается в том, как сформировать подобные правила.
Для выявления часто встречающихся наборов объектов может
использоваться алгоритм Apriori, реализация которого лежит в основе
алгоритма Microsoft Association Rules, использующегося в SQL Server
2008 [1,2]. Алгоритм Apriori последовательно выделяет часто встре-
чающиеся одно-, двух-, …, n-элементные наборы. На i-м этапе выде-
ляются i-элементные наборы. Для этого сначала выполняется форми-
рование наборов-кандидатов, после чего для них рассчитывается под-
держка.

37
Поддержка (от англ. support) используется для измерения попу-
лярности набора элементов. Например, поддержка набора элементов
{A,B} – общее количество транзакций, которые содержат как A, так и
B. Чтобы сократить запись, здесь и далее указывается просто A и B, а
не A = Existing, B = Existing, как на рис. 2.9. (existing с англ. «присут-
ствует»).
Чтобы количественно охарактеризовать правило, используется
вероятность (англ. probability). Этот же показатель иногда называет-
ся достоверностью.
Probability (A=>B) = Probability (B|A) = Support(A,B)/Support(A). (2.3)
Вероятность для набора {A,B} рассчитывается как отношение
числа транзакций, содержащих этот набор, к общему числу транзак-
ций.
Чтобы оценить взаимную зависимость элементов используется
важность (англ. importance) или показатель интереса.
Importance({A,B})=Probability({A,B})/(Probability(A)*Probability(B)).
(2.4)
Если Importance({A,B}) = 1, то A и B – независимые элементы.
Importance({A,B}) > 1 означает, что A и B имеют положительную кор-
реляцию (клиент купивший товар A вероятно купит и B). Im-
portance({A,B}) < 1 указывает на отрицательную корреляцию.
Для правил важность рассчитывается как логарифм отношения
вероятностей:
Importance(A => B) = log(Probability(B|A)/(Probability(B| not A)). (2.5)
В данном случае равная 0 важность означает, что между A и B
нет взаимосвязи. Положительная важность означает, что вероятность
B повышается, когда справедливо A; отрицательная – вероятность B
понижается, когда справедливо A.
Настройками пороговых значений можно регулировать макси-
мальное число элементов в рассматриваемых наборах, минимальную
вероятность, при которой правило будет рассматриваться, минималь-
ную поддержку для рассматриваемых наборов и т. д.

38
2.7. КЛАСТЕРИЗАЦИЯ ПОСЛЕДОВАТЕЛЬНОСТЕЙ
Как было рассмотрено выше, алгоритмами ассоциативных пра-
вил (взаимосвязей) выявляются часто встречающиеся наборы элемен-
тов. Задача кластеризации последовательностей в чем-то схожая –
выявить часто встречающиеся последовательности событий. Важное
различие заключается в том, что в данном случае учитывается, в ка-
кой очередности события происходят (или элементы добавляются в
набор). Схожие последовательности объединяются в кластеры. Кроме
анализа характеристик кластеров, возможно решение задачи прогно-
зирования наступления событий на основании уже произошедших ра-
нее.
Примеры применения подобных алгоритмов – анализ переходов
по страницам web-сайтов, анализ событий, предшествовавших сбоям
в работе информационной системы, и т. д.
Используемый аналитическими службами SQL Server 2008 ал-
горитм Microsoft Sequence Clustering – это гибридный алгоритм, соче-
тающий методы кластеризации с анализом марковских цепей. Анали-
зируемое множество вариантов формируется с использованием вло-
женных таблиц. В табл. 2.5 представлен условный пример подобного
варианта интеллектуального анализа. Важно, чтобы вложенная таб-
лица содержала собственный идентификатор, который позволил бы
определить последовательность элементов.

Таблица 2.5
Пример формирования варианта для анализа обращений к сайту
Идентификатор Распо- Идентификатор Тематика
пользователя ложение последовательности
1 Москва Главная
1
страница
2 Велосипеды
3 Запчасти
4 Велосипеды

39
С помощью марковских моделей анализируется направленный
граф, хранящий переходы между различными состояниями. Алгоритм
Microsoft Sequence Clustering использует марковские цепи n-го поряд-
ка. Число n говорит о том, сколько состояний использовалось для
определения вероятности текущего состояния. В модели первого по-
рядка вероятность текущего состояния зависит только от предыдуще-
го состояния. В марковской цепи второго порядка вероятность теку-
щего состояния зависит от двух предыдущих состояний, и так далее.
Вероятности перехода между состояниями хранятся в матрице пере-
ходов. По мере удлинения марковской цепи, размер матрицы растет
экспоненциально, соответственно растет и время обработки, что надо
учитывать при решении практических задач.
Далее алгоритм изучает различия между всеми возможными по-
следовательностями, чтобы определить, какие последовательности
лучше всего использовать в качестве входных данных для кластери-
зации. Созданный алгоритмом список вероятных последовательно-
стей используется в качестве входных данных для применяемого по
умолчанию EM-метода кластеризации (англ. Expectation
Maximization, максимизации ожидания, см. раздел 2.5).
Целями кластеризации являются как связанные, так и не связан-
ные с последовательностями атрибуты. У каждого кластера есть мар-
ковская цепь, представляющая полный набор путей, и матрица, со-
держащая переходы и вероятности последовательности состояний. На
основе начального распределения используется правило Байеса для
вычисления вероятности любого атрибута, в том числе – последова-
тельности, в конкретном кластере.

40
2.8. НЕЙРОННЫЕ СЕТИ
Некоторые задачи интеллектуального анализа данных, в частно-
сти, задача классификации, могут решаться с помощью различных ал-
горитмов. В случае наличия в данных сложных зависимостей между
атрибутами, «быстрые» алгоритмы интеллектуального анализа, такие
как упрощённый алгоритм Байеса, могут давать недостаточно точный
результат. Улучшить ситуацию может применение нейросетевых ал-
горитмов.
Нейронные сети – это класс моделей, построенных по аналогии
с работой человеческого мозга. Существуют различные типы сетей, в
частности, в SQL Server алгоритм нейронной сети использует сеть в
виде многослойного перцептрона, в состав которой может входить до
трех слоев нейронов, или перцептронов. Такими слоями являются
входной слой, необязательный скрытый слой и выходной слой
(рис. 2.10).

Рис. 2.10. Пример схемы нейронной сети.


Слева направо: входной, скрытый и выходной слой

Каждый нейрон получает одно или несколько входных значений


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

41
направлении от узлов во входном слое к узлам в скрытом слое, а от-
туда передаются на выходной слой. Нейроны в составе слоя не соеди-
нены друг с другом. Скрытый слой может отсутствовать (в частности,
это используется алгоритмом логистической регрессии).
В используемом аналитическими службами SQL Server 2008 ал-
горитме Microsoft Neural Network, имеющий более двух состояний
дискретный входной атрибут модели интеллектуального анализа при-
водит к созданию одного входного нейрона для каждого состояния и
одного входного нейрона для отсутствующего состояния (если обу-
чающие данные содержат какие-либо значения NULL). Непрерывный
входной атрибут «создает» два входных нейрона: один нейрон для от-
сутствующего состояния и один нейрон для значения самого непре-
рывного атрибута. Входные нейроны обеспечивают входы для одного
или нескольких скрытых нейронов.
Выходные нейроны представляют значения прогнозируемых ат-
рибутов для модели интеллектуального анализа данных. Дискретный
прогнозируемый атрибут, имеющий более двух состояний, «создает»
один выходной нейрон для каждого состояния и один выходной
нейрон для отсутствующего или существующего состояния. Непре-
рывные прогнозируемые столбцы «создают» два выходных нейрона:
один нейрон для отсутствующего или существующего состояния и
один нейрон для значения самого непрерывного столбца.
Нейрон получает входы от других нейронов или из других дан-
ных, в зависимости от того, в каком слое сети он находится. Входной
нейрон получает входы от исходных данных. Скрытые нейроны и вы-
ходные нейроны получают входы из выхода других нейронов
нейронной сети. Входы устанавливают связи между нейронами, и эти
связи являются путем, по которому производится анализ для кон-
кретного набора вариантов.

42
Каждому входу присвоено значение, именуемое весом, которое
описывает релевантность или важность конкретного входа для скры-
того или выходного нейрона. Чем больше вес, присвоенный входу,
тем более важным является значение этого входа. Значения веса мо-
гут быть отрицательными; это означает, что вход может подавлять, а
не активировать конкретный нейрон. Чтобы выделить важность входа
для конкретного нейрона, значение входа умножается на вес. В случае
отрицательных весов умножение значения на вес служит для умень-
шения важности входа. Схематично это представлено на рис. 2.11, где
xi – вход, wi – соответствующий ему вес.

Рис. 2.11. Формальное представление нейрона

Каждому нейрону сопоставлена простая нелинейная функция,


называемая функцией активации, которая описывает релевантность
или важность определенного нейрона для этого слоя нейронной сети.
В качестве функции активации в алгоритме Microsoft Neural Network
скрытые нейроны используют функцию гиперболического тангенса
(tanh), а выходные нейроны — сигмоидальную (логистическую)
функцию. Обе функции являются нелинейными и непрерывными,
позволяющими нейронной сети моделировать нелинейные связи
между входными и выходными нейронами.

( ) , (2.6)

( ) (2.7)

43
Обучение модели интеллектуального анализа данных произво-
дится по следующей схеме. Алгоритм сначала оценивает обучающие
данные и резервирует определенный процент из них для использова-
ния при определении точности сети.
Затем алгоритм определяет количество и сложность сетей,
включаемых в модель интеллектуального анализа данных. Определя-
ется число нейронов в каждом слое. Процесс обучения строится по
следующей схеме [1].
1. На начальной стадии случайным образом присваиваются зна-
чения всем весам всех входов в сети. Значения обычно берутся из ин-
тервала (-1,1).
2. Для каждого обучающего варианта вычисляются выходы.
3. Вычисляются ошибки выходов. В качестве функции ошибки
может использоваться квадрат остатка (квадрат разности между спро-
гнозированным и фактическим значением).
Шаги 2, 3 повторяются для всех вариантов, используемых в ка-
честве образцов. После этого, веса в сети обновляются таким образом,
чтобы минимизировать ошибки.
В процессе обучения может выполняться несколько итераций.
После прекращения роста точности модели обучение завершается.

2.9. ЛОГИСТИЧЕСКАЯ РЕГРЕССИЯ


Логистическая регрессия является известным статистическим
методом для определения влияния нескольких факторов на логиче-
скую пару результатов. Например, задача может быть следующей.
Предположим, что прогнозируемый столбец содержит только два со-
стояния, и необходимо провести регрессионный анализ, сопоставляя
входные столбцы с вероятностью того, что прогнозируемый столбец
будет содержать конкретное состояние [18]. Результаты, полученные

44
методами линейной и логистической регрессии, представлены на
рис. 2.12, a и 2.12, b соответственно. Линейная регрессия не ограни-
чивает значения функции диапазоном от 0 до 1, несмотря на то, что
они должны являться минимальным и максимальным значениями
этого столбца. Кривая, формируемая алгоритмом логистической ре-
грессии, в этом случае более точно описывает исследуемую характе-
ристику.

a) b)

Рис. 2.12. Сравнение результатов, полученных методами


линейной (a) и логистической регрессии (b)

В реализации Майкрософт, для моделирования связей между


входными и выходными атрибутами применяется видоизмененная
нейронная сеть, в которой отсутствует скрытый слой. Измеряется
вклад каждого входного атрибута, и в законченной модели различные
входы снабжаются весовыми коэффициентами. Название «логистиче-
ская регрессия» отражает тот факт, что кривая данных сжимается пу-
тем применения логистического преобразования, чтобы снизить эф-
фект экстремальных значений.

45
3. ОСНОВНЫЕ КОНСТРУКЦИИ ЯЗЫКА DMX

3.1. БАЗОВЫЕ ПОНЯТИЯ ЯЗЫКА DMX,


ТИПЫ ДАННЫХ И СОДЕРЖИМОГО
В предыдущих разделах курса мы познакомились с некоторыми
важными понятиями интеллектуального анализа данных. Теперь
пришло время собрать их воедино и рассмотреть, как их описание
может быть произведено на используемом для запросов к службе
Analysis Services языке интеллектуального анализа данных – DMX.
Наименьшей логической единицей работы с данными при ин-
теллектуальном анализе является атрибут, который содержит некото-
рую «элементарную» информацию об анализируемом примере.
Например, возраст клиента. Для алгоритмов DM существует два ос-
новных типа атрибутов [1]:
- категориальные (дискретные), принимающие значения из не-
которого фиксированного конечного набора значений;
- непрерывные числовые атрибуты.
Дополнительные типы атрибутов основаны на базовых. К ним, в
частности, относится упорядоченный тип (англ. ordered). Такой атри-
бут является категориальным, но для него задан определенный поря-
док значений (например, размеры одежды). Дискретизованные атри-
буты  это специальный вариант категориального типа, полученный
из непрерывного путем разбиения на диапазоны. Например, упро-
щенный алгоритм Байеса не может обрабатывать непрерывные атри-
буты, поэтому потребуется дискретизация. Термин «тип содержимо-
го» далее будет использоваться как синоним термина «тип атрибута».
С каждым категориальным атрибутом связан набор его значений
(или состояний). Например, атрибут «Город проживания» может
принимать значения: «Санкт-Петербург», «Москва» и т. д. На этапах
подготовки и изучения данных важно провести анализ множества со-
стояний атрибутов и, при необходимости, внести коррективы.

46
Например, если в одних случаях город записан как «Санкт-
Петербург», а в других «С-Петербург», нужно привести все к единому
формату (иначе алгоритм интеллектуального анализа будет рассмат-
ривать это как разные состояния). Кроме того, возможно для анализа
не нужна столь подобная детализация по городам, а интерес пред-
ставляет, является ли человек жителем крупного города или нет.
В случае аналитических служб Microsoft SQL Server, атрибуты
также могут иметь состояния «Missing» и «Existing». Первый указы-
вает на то, что в строке данных атрибут отсутствует (или состояние не
определено), второй – что атрибут присутствует.
Вариант определяется как отдельный пример, предоставляемый
алгоритму интеллектуального анализа данных [1]. Он состоит из
набора атрибутов с соответствующими значениями и во многих слу-
чаях описывает объект или событие. Нередко вариант можно пред-
ставить строкой в таблице, столбцы которой – атрибуты. Пусть,
например, решается задача классификации потенциального банков-
ского заемщика при принятии решения о выдаче кредита. В этот слу-
чае, вариант содержит известные данные об этом клиенте (размер за-
работка, профессия, место работы …) и вполне представим в виде
строки таблицы.
В то же время, MS SQL Server и язык DMX позволяют исполь-
зовать вложенные таблицы, что позволяет описывать более сложные
по структуре варианты. Это можно проиллюстрировать на следую-
щем примере [8]. Пусть требуется провести анализ товаров, куплен-
ных каждым из клиентов. При этом имеется возможность связать
данные о покупках и о покупателе. Исходные данные берутся из двух
реляционных таблиц, связанных внешним ключом (рис. 3.1): таблица
Customers (Заказчики) с полями CustomerKey (Ключ Заказчика), Fist-
Name (Имя), LastName (Фамилия), CommuteDistance (Расстояние до
работы) и таблица Products (Товары) с полями CustomerKey (внешний
ключ, ссылающийся на Customers) и ModelName (Название Модели).
Как видно на рисунке, сформированный вариант может содержать

47
много товаров, купленных одним клиентом, и отличается по виду от
строки реляционной таблицы.

Рис. 3.1. Формирование варианта при использовании


вложенных таблиц

Ключ варианта используется для идентификации варианта. За-


частую в этом качестве может использоваться исходный ключ табли-
цы, из которой берутся данные для анализа. На рис. 3.1 ключом мо-
жет выступать столбец Customer Key.
Вложенный ключ позволяет идентифицировать объект, описы-
ваемый во вложенной таблице. В нашем примере это будет название
товара (если бы там были еще какие-то атрибуты – цена, цвет и т. д. –
они относились бы именно к этому товару).
Атрибут может рассматриваться алгоритмом интеллектуального
анализа в качестве входа, выхода или входа и выхода одновременно.
Язык DMX позволяет это указать в процессе описания модели. На
стадии обучения алгоритму предоставляются как входные, так и вы-
ходные данные. На стадии прогнозирования – алгоритм получает
входные данные и возвращает выходные.
Теперь рассмотрим вопрос получения исходных данных для ин-
теллектуального анализа. Анализировать можно данные из реляцион-
ных таблиц и других источников, если они специальным образом

48
описаны в качестве представления источника данных в службах
Analysis Services. Сначала определяется источник данных (Data
Source), а потом его представление (Data Source View). Представле-
ние источника данных позволяет сочетать различные источники дан-
ных и работать с вложенными таблицами. Один из способов опреде-
лить источник данных – использование соответствующего мастера в
среде BI Dev Studio. Более подробно этот вопрос рассматривается в
лабораторных работах.
Службы Analysis Services считывают данные из источника в
специальный кэш. Помещенные в кэш данные можно сохранить и ис-
пользовать при создании других моделей интеллектуального анализа
или удалить, чтобы освободить место в хранилище.
Данные могут браться не только из реляционных баз данных, но
и из аналитических кубов (англ. cube).
Следующий шаг – создание структуры. Это понятие уже встре-
чалось ранее, но рассмотрим его еще раз более подробно. Структура
интеллектуального анализа данных может быть представлена как со-
вокупность исходных данных и описания способов их обработки.
Структура содержит модели, использующиеся для анализа данных.
При создании структуры (или модели одновременно со структу-
рой) в MS SQL Server Analysis Services, необходимо определить типы
данных для каждого столбца в структуре [9]. Тип данных сообщает
модулю интеллектуального анализа, являются ли данные в источнике
числовыми или текстовыми, и как их обрабатывать. Типы данных пе-
речислены в табл. 3.1: текстовый (Text), вещественный числовой
(Long), «длинный» вещественный числовой (Double), логический
(Boolean) и дата (Date). Они стандартны и в особых комментариях
не нуждаются. Единственное, хотелось бы обратить внимание на то,
что типов данных в DMX меньше, чем в SQL, и в процессе подготов-
ки данных из реляционных таблиц к анализу, часто производится
преобразование к наиболее подходящему типу. Каждый тип данных
поддерживает несколько типов содержимого. Задавая тип содержимо-

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

Таблица 3.1
Типы данных и поддерживаемые типы содержимого
Тип данных Поддерживаемые типы содержимого
Text Cyclical, Discrete, Key, Key Se-
quence, Ordered, Sequence
Long Continuous, Cyclical, Discrete,
Discretized, Key, Key Sequence, Key
Time, Ordered, Sequence, Time

Classified
Boolean Cyclical, Discrete, Ordered
Double Continuous, Cyclical, Discrete,
Discretized, Key, Key Sequence, Key
Time, Ordered, Sequence, Time

Classified
Date Continuous, Cyclical, Discrete,
Discretized, Key, Key Sequence, Key
Time, Ordered

В табл. 3.1 указано, какие типы содержимого могут соответ-


ствовать различным типам данных. Ниже приведены характеристики
типов содержимого и указаны основные особенности их использова-
ния [1,9,10].
Тип содержимого Discrete указывает на то, что атрибут кате-
гориальный (дискретный). Одна из особенностей данного типа – к
этим значениям не применимо упорядочение. Кроме того, даже если
значения, используемые для заполнения дискретного столбца, явля-
ются числовыми, не предусмотрена возможность вычисления дроб-
ных значений.

50
Тип Continuous – непрерывные числовые значения. Иначе
говоря, в столбце содержатся значения, которые представляют число-
вые данные в масштабе, допускающем применение промежуточных
значений. В качестве непрерывного значения может рассматриваться,
например, объем продаж за указанный период или значение среднесу-
точной температуры воздуха. Если известно распределение значений
непрерывного показателя, то потенциально можно увеличить точ-
ность анализа, указав его при определении структуры интеллектуаль-
ного анализа данных. Данный параметр будет применим ко всем мо-
делям, основанным на структуре.
Алгоритмы интеллектуального анализа данных Microsoft могут
работать со следующими типами распределений:
‒ normal – нормальное  на основе значений столбца, содер-
жащего непрерывные данные, может быть построена гистограмма с
нормальным Гауссовским распределением;
‒ log normal  логнормальное  на основе значений столбца,
содержащего непрерывные данные, может быть построена гисто-
грамма с нормально распределенной функцией логарифма значений;
‒ uniform – равномерное распределение значений столбца (все
значения являются равновероятными).
Тип Discretized – указывает на то, что это дискретизованное
значение. Дискретизация  это процесс распределения значений не-
прерывного набора данных по сегментам так, чтобы получилось
ограниченное число допустимых значений. Дискретизовать можно
только числовые данные. Следовательно, дискретизованный тип со-
держимого показывает, что столбец содержит значения, представля-
ющие группы или сегменты значений, полученных из непрерывного
столбца. Сегменты воспринимаются как упорядоченные дискретные
значения.
Дискретизацию данных можно провести вручную, чтобы полу-
чить необходимые сегменты, либо можно использовать методы дис-
кретизации, предоставляемые службами SQL Server Analysis Services.
В некоторых алгоритмах дискретизация выполняется автоматически.

51
Для типа содержимого Discretized можно явно указать па-
раметры дискретизации – способ разбиения на сегменты и их число.
Способы разбиения могут быть следующими:
‒ AUTOMATIC (по умолчанию) – службы Analysis Services опре-
деляют, какой метод дискретизации использовать;
‒ EQUAL_AREAS – алгоритм делит данные на группы, содержа-
щие равное число значений;
‒ CLUSTERS – алгоритм разделяет данные на группы путем со-
здания выборки обучающих данных, инициализации по ряду случай-
ных точек и дальнейшего запуска несколько итераций алгоритма кла-
стеризации.
Что касается числа сегментов, то по умолчанию система пытает-
ся создать 5 сегментов, а если данных на 5 сегментов не хватает, де-
лается попытка создать меньшее число. При явном задании парамет-
ров описание дискретизованного столбца при создании структуры
может быть примерно следующим:
[SalaryDisc] LONG DISCRETIZED (EQUAL_AREAS,4)
Тип содержимого Key (ключ) означает, что столбец уникально
определяет строку (вариант). Ключ варианта не используется для ана-
лиза, а нужен для отслеживания записей.
Вложенные таблицы также имеют ключи, но ключ вложенной
таблицы предназначен для других целей. Если столбец вложенной
таблицы представляет собой атрибут, который должен быть проана-
лизирован, то для него следует определить тип содержимого Key.
Значения в ключе вложенной таблицы должны быть уникальными для
каждого варианта, но во всем множестве вариантов могут быть по-
вторяющиеся значения. Например, если анализируются продукты,
приобретенные клиентами (рис. 3.1), то для столбца CustomerID в
таблице вариантов нужно задать тип содержимого key и задать тип
содержимого key для столбца ModelName во вложенной таблице.
Тип содержимого Key Sequence может применяться только в
моделях кластеризации последовательностей. Если задан тип содер-

52
жимого Key Sequence, это значит, столбец содержит значения,
представляющие последовательность событий. Значения упорядоче-
ны, но не должны обязательно находиться на одинаковом расстоянии
друг от друга.
Тип содержимого Key Time может применяться только в мо-
делях временных рядов. Если он задан, то это означает, что значения
упорядочены и представляют временную шкалу.
Тип содержимого Table указывает, что столбец содержит дру-
гую таблицу данных (вложенную таблицу). Применительно к любой
конкретной строке в таблице вариантов этот столбец может содер-
жать несколько значений (т. е. несколько строк вложенной таблицы),
причем все они связаны с записью родительского варианта.
Вариант может включать несколько вложенных таблиц. Напри-
мер, основная таблица вариантов содержит список клиентов. Один ее
столбец содержит вложенную таблицу с перечислением сделанных
клиентом покупок, а другой – перечень увлечений клиента. Примеры
определения подобных структур будут приведены в следующих раз-
делах.
Тип содержимого Cyclical означает, что в столбце содержат-
ся значения, представляющие циклический упорядоченный набор.
Например, циклическим упорядоченным набором являются пронуме-
рованные дни недели, поскольку день с номером 1 следует за днем с
номером 7. Циклические столбцы атрибутов считаются упорядочен-
ными и дискретными в терминах типов содержимого. Однако боль-
шинство алгоритмов обрабатывает циклические значения как дис-
кретные и не выполняет особой обработки.
Тип содержимого Ordered также означает, что столбец содер-
жит значения, определяющие последовательность или порядок. Одна-
ко в данном типе содержимого значения, используемые для упорядо-
чивания, не подразумевают наличия никаких связей (по дистанции
или по силе) между значениями в наборе. Например, если упорядо-
ченный столбец атрибутов содержит сведения об уровне квалифика-

53
ции по шкале от 1 до 5, он не несет сведений о разнице между уров-
нями квалификации; уровень 5 не обязательно в пять раз лучше уров-
ня 1. Упорядоченные столбцы атрибутов считаются дискретными и
большинство алгоритмов так их и обрабатывает.
Классифицированные столбцы (тип Classified) позволяют
работать с данными, описывающими другой столбец в модели. В
частности, можно задать классифицированный столбец, в котором
будут содержаться среднеквадратичные отклонения другого столбца
модели, например, столбца с данными о стоимости покупок, совер-
шенных клиентом за календарный год. Тип данных, используемый в
классифицированном столбце, должен быть либо Long, либо
Double. Ниже описаны допустимые типы содержимого:
‒ PROBABILITY  значение в столбце является вероятностью
связанного значения и представлено числом от 0 до 1;
‒ VARIANCE  значение в столбце является отклонением свя-
занного значения;
‒ STDEV  значение в столбце является среднеквадратичным от-
клонением связанного значения;
‒ PROBABILITY_VARIANCE  значение в столбце является от-
клонением вероятности для связанного значения;
‒ PROBABILITY_STDEV  значение в столбце является средне-
квадратичным отклонением вероятности для связанного значения;
‒ SUPPORT  значение в столбце является весом, коэффициен-
том репликации объекта, связанного значения.
В MS SQL Server 2008 (2008 R2) встроенные алгоритмы, предо-
ставляемые службами Analysis Services, не поддерживают использо-
вание классифицированных столбцов.
Типы содержимого Time и Sequence поддерживаются только
алгоритмами сторонних производителей (не Microsoft).

54
3.2. СОЗДАНИЕ СТРУКТУРЫ
ИНТЕЛЛЕКТУАЛЬНОГО АНАЛИЗА
Рассмотрим конструкции языка DMX, позволяющие создавать
структуры. Для этого используется оператор CREATE MINING
STRUCTURE. В обобщенном виде его формат представлен ниже:
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  список определений столбцов
с разделителями-запятыми;
‒ holdout-maxpercent  целое число от 1 до 100, которое
показывает процентную долю данных, выделяемых для проверки;
‒ holdout-maxcases  целое число, показывающее макси-
мальное число вариантов, используемых для проверки. Если указан-
ное значение больше числа входных вариантов, то для проверки бу-
дут использованы все варианты и отобразится соответствующее пре-
дупреждение. В случае если указаны как процентная доля, так и чис-
ло вариантов, применяется меньшее из ограничений;
‒ holdout seed  целое число, которое используется как
начальное значение в начале секционирования данных. Если оно рав-
но 0, в качестве начального значения используется хэш идентифика-
тора структуры интеллектуального анализа данных. Если надо гаран-
тировать возможность повторного создания такого же разбиения (при

55
условии, что исходные данные остались прежними), необходимо в
скобках указать ненулевое целое значение.
Необязательное ключевое слово SESSION показывает, что
структура является временной и ее можно использовать только в те-
чение текущего сеанса работы с SQL Server. После завершения сеанса
структура и любые модели на ее основе удаляются. Чтобы создать
временные структуры и модели интеллектуального анализа данных,
необходимо сначала задать свойство базы данных Allow Session
Mining Models. Надо отметить, что при использовании для анализа
инструментов Table Analysis Tools из надстроек интеллектуального
анализа данных для Microsoft Excel создаются именно такие структу-
ры. Более подробно этот вопрос рассматривается в лабораторных ра-
ботах.
Для определения столбца используется следующий формат:
<column name> <data type> [<Distribution>][<Modeling
Flags>] <Content Type> [<column relationship>],
где обязательно указываются <column name>  имя столбца;
<data type>  тип данных; <Content Type>  тип содержимо-
го. Необязательные параметры, к которым относится
<Distribution>  распределение; <Modeling Flags>  список
флагов моделирования; <column relationship>  связь со
столбцом атрибутов (обязательна, только если применима; определя-
ется предложением RELATED TO), будут рассмотрены ниже.
Для определения столбца с вложенной таблицей используется
следующий синтаксис:
<column name> TABLE (<column definition list>).
В качестве примера рассмотрим создание структуры интеллек-
туального анализа данных с именем New Mailing, включающей че-
тыре столбца: идентификатор клиента CustomerKey, пол клиента
Gender, число машин Number Cars Owned, признак покупки ве-
лосипеда Bike Buyer. Если названия столбцов не включают пробе-
лов, их можно писать без квадратных скобок (хотя для единообразия,

56
скобки можно и оставить). В структуре будет создаваться провероч-
ный набор, состоящий из 25 % от общего числа входных вариантов. В
качестве начального значения при создании секции используется чис-
ло 5000. После указания начального значения эти же варианты будут
выбираться для тестового набора каждый раз при обработке структу-
ры интеллектуального анализа данных (при условии, что базовые
данные не изменятся).
CREATE MINING STRUCTURE [New Mailing]
(
CustomerKey LONG KEY,
Gender TEXT DISCRETE,
[Number Cars Owned] LONG DISCRETE,
[Bike Buyer] 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)

57
Теперь вспомним о дополнительных флагах. Флаг Distribu-
tion позволяет указать на распределение для столбца с числовым
значением (этот вопрос разбирался в предыдущем разделе). Допусти-
мые значения – NORMAL, Log Normal, UNIFORM.
Флаги моделирования  Modeling Flags  можно использо-
вать для указания дополнительных сведений о соответствующем ат-
рибуте. Алгоритм может их использовать для создания более точной
модели интеллектуального анализа данных. Некоторые флаги могут
быть определены на уровне структуры, другие  на уровне столбца
модели интеллектуального анализа. К флагам относятся:
‒ NOT NULL  указывает, что значения столбца атрибутов не
должны включать значение NULL («не определено»). Если службы
Analysis Services найдут значение NULL в данном столбце атрибутов в
процессе обучения модели, то будет выдана ошибка. Задается на
уровне структуры;
‒ MODEL_EXISTENCE_ONLY  указывает, что столбец должен
рассматриваться как имеющий два состояния: Missing и
Existing. Если значение атрибута – NULL, оно рассматривается как
отсутствующее (Missing), в противном случае – Existing. Флаг
задается на уровне модели;
‒ REGRESSOR  указание для алгоритма регрессии относитель-
но того, что столбец нужно использовать в качестве регрессора (более
подробно – см. разделы, посвященные алгоритмам регрессии).
К любому определению столбца можно добавить предложение,
описывающее связь между двумя столбцами. Делается это с помощью
ключевого слова RELATED TO, что показывает иерархию значений.
Назначением столбца RELATED TO может быть ключевой столбец
вложенной таблицы, столбец с дискретными значениями из строки
вариантов или какой-либо другой столбец с предложением RELATED
TO, указывающим на более глубокий уровень иерархии.

58
3.3. СОЗДАНИЕ МОДЕЛИ ИНТЕЛЛЕКТУАЛЬНОГО
АНАЛИЗА ДАННЫХ
Создание модели интеллектуального анализа данных можно
осуществить одним из следующих способов:
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  список определений столбцов с
разделителями-запятыми;
59
nested column 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  псевдоним (необязательный параметр,
позволяющий в модели использовать название, отличное от исполь-
зованного в структуре);

60
modeling flags  флаги моделирования, о которых говори-
лось выше: значение REGRESSOR указывает, что алгоритм регрессии
может использовать заданный столбец в формуле регрессии; значение
MODEL_EXISTENCE_ONLY указывает, что само присутствие атрибу-
та важнее, чем конкретное его значение;
prediction  флаг прогнозирования, указывающий, что дан-
ный столбец содержит прогнозируемую величину. Может принимать
значение PREDICT (столбец является как входом, так и выходом) или
PREDICT_ONLY (столбец является только выходом). Столбец без
флага считается входом.
Если в определении модели стоит WITH DRILLTHROUGH, то
пользователям разрешается проводить детализацию (т. е. просматри-
вать не только параметры модели, но и данные вариантов в этой мо-
дели).
Определение фильтров позволяет использовать при обработке
модели только варианты, соответствующие условиям фильтрации.
Ниже приводится пример создания модели интеллектуального
анализа данных Naive Bayes Women в структуре интеллектуаль-
ного анализа данных New Mailing. Модель использует упрощен-
ный алгоритм Байеса и ограничивается только теми вариантами из
структуры, в которых клиентами являются женщины старше 50 лет
(значение столбца Gender, содержащего информацию относительно
пола клиента, равно F, от англ. Female – женщина). Предсказываться
будет значение атрибута Bike Buyer, т.е. купит ли эта клиентка ве-
лосипед или нет.
ALTER MINING STRUCTURE [New Mailing]
ADD MINING MODEL [Naive Bayes Women]
(
CustomerKey,
Gender,
[Number Cars Owned],
[Bike Buyer] PREDICT

61
)
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 – описание модели, закодированное на языке
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)

62
)
USING Microsoft_Association_Rules
(Minimum_Probability = 0.1, MINIMUM_SUPPORT =
0.01)
Здесь хотелось бы обратить внимание на одну особенность, ко-
торая появляется при создании модели, использующей только ключе-
вой столбец из вложенной таблицы. В приведенном примере флаг
PREDICT установлен для вложенной таблицы Products, а не ее
ключа Model. Это указывает на то, что модель прогнозирует множе-
ство строк, составляющих вложенную таблицу для варианта.
В других случаях, флаг может ставиться и для заданного столб-
ца вложенной таблицы, который не является вложенным ключом.

3.4. ОБРАБОТКА, ОЧИСТКА, УДАЛЕНИЕ И


ВОССТАНОВЛЕНИЕ СТРУКТУР И МОДЕЛЕЙ
Следующим шагом после определения структур и моделей, яв-
ляется их обработка, включающая заполнение структуры интеллекту-
ального анализа данными, секционирование данных (если это было
определено при создании структуры), применение в отношении полу-
ченных данных алгоритмов интеллектуального анализа (при обработ-
ке модели). Это делается с помощью инструкции INSERT INTO,
формат которой приведен ниже:
INSERT INTO [MINING MODEL]|[MINING STRUCTURE]
<model>|<structure> (<mapped model columns>) <source
data query>
или
INSERT INTO [MINING MODEL]|[MINING STRUCTURE]
<model>|<structure>.COLUMN_VALUES (<mapped model
columns>) <source data query>,
где model  название модели;
structure  название структуры;

63
mapped model columns  список через запятую с названиями
столбцов, в том числе и вложенных таблиц с их столбцами;
source data query  запрос, описывающий загружаемый
набор исходных данных.
Если в операторе указана структура интеллектуального анализа
данных, то обрабатывается эта структура и все связанные с ней моде-
ли. Если задана модель, инструкция обрабатывает только эту модель.
В случае, когда не указан аргумент MINING MODEL или MINING
STRUCTURE, службы Analysis Services производят поиск типа объек-
та на основе имени, и затем обрабатывают корректный объект. Если
сервер содержит структуру и модель интеллектуального анализа дан-
ных с одинаковыми именами, возвращается ошибка.
Форма INSERT INTO <объект>.COLUMN_VALUES, позволя-
ет производить вставку данных непосредственно в столбцы модели
без ее обучения. При использовании этого метода, данные столбцов
поставляются модели в сжатом и упорядоченном виде, что полезно
при работе с наборами данных, содержащими иерархии или упорядо-
ченные столбцы.
Элементы списка <mapped model columns> представимы в
виде:
<column identifier> | SKIP | <table identifier>
(<column identifier> | SKIP),
где column identifier  название столбца;
table identifier  название вложенной таблицы;
ключевое слово SKIP указывает на то, что соответствующий столбец
исходного запроса (исходных данных) не будет использоваться для
заполнения структуры или модели (т. е. пропускается).
Элемент <source data query> может включать следующие
типы источников данных:
1) OPENQUERY  инструкция запрашивает данные, являющиеся
внешними для экземпляра служб Analysis Services, при помощи суще-
ствующего источника данных. Эта инструкция работает аналогично

64
инструкции OPENROWSET, но имеет ряд преимуществ. В частности,
DMX-запрос легче записать с помощью OPENQUERY. Кроме того ад-
министратор имеет больший контроль над доступом к данным на сер-
вере;
2) OPENROWSET  инструкция запрашивает данные, являющие-
ся внешними для экземпляра служб Analysis Services, при помощи
существующего источника данных;
3) SHAPE  инструкция, позволяющая совместить данные из не-
скольких источников в одну иерархическую таблицу, т. е. появляется
возможность заполнить структуру с вложенными таблицами;
4) любой запрос к службам Analysis Services, возвращающий
набор строк.
В нашем курсе мы чаще всего будем использовать первый вари-
ант при отсутствии в структуре вложенных таблиц и третий – при их
наличии. Рассмотрим эти форматы более подробно, начав с первого.
OPENQUERY(<named datasource>, <query syntax>)
где named datasource  источник данных, существующий в базе
служб Analysis Services (например, определенный с помощью кон-
структора в BI Dev Studio);
query syntax  текст запроса, возвращающего набор строк
(например, запроса на SQL).
В следующем примере инструкция OPENQUERY применяется
для обучения модели упрощенного алгоритма Байеса на основе дан-
ных о целевой рассылке из базы данных AdventureWorksDW (то, что
это модель, а не структура, SQL Server определит в результате анали-
за доступных моделей и структур).
INSERT INTO NBSample (CustomerKey, Gender,
[Number Cars Owned], [Bike Buyer])
OPENQUERY([Adventure Works DW],'Select
CustomerKey, Gender, [NumberCarsOwned],
[BikeBuyer] FROM [vTargetMail]').

65
Другой пример [1] показывает вариант записи с явным указани-
ем, что обрабатывается структура People1 со столбцами CustID,
Name и т. д. Для ее заполнения используется источник данных Chap-
ter3Data, в апострофы заключен текст SQL-запроса, выполнение
которого приведет к получению требуемого набора строк.
INSERT INTO MINING STRUCTURE [People1]
([CustID], [Name], [Gender], [Age],
[CarMake],[CarModel])
OPENQUERY(Chapter3Data,
'SELECT [Key], Name, Gender, Age, CarMake,
CarModel FROM People').
Инструкция SHAPE имеет более сложный по сравнению с
OPENQUERY формат:
SHAPE {<master query>}
APPEND ({ <child table query> }
RELATE <master column> TO <child column>)
AS <column table name>
[
({ <child table query> }
RELATE <master column> TO <child column>)
AS < column table name>
...
]
где master query  запрос, возвращающий родительскую таблицу
(таблицу вариантов);
child table query  запрос, возвращающий вложенную
таблицу;
master column  столбец в родительской таблице с которым
связаны строки из результата запроса дочерней таблицы (часто это
потенциальный ключ, на который ссылается внешний ключ из вло-
женной таблицы);
child column  столбец в дочерней таблице для определения
родительской строки из результата главного запроса (как правило –
внешний ключ в таблице, используемой в качестве вложенной);
66
column table name – имя столбца вложенной таблицы в ро-
дительской таблице.
Инструкция SHAPE требует, чтобы результаты запросов были
упорядочены по столбцам, используемым для связи между родитель-
ской и вложенной таблицами. Для этого в SQL используется инструк-
ция ORDER BY.
Рассмотрим еще один пример [1]. В нем сначала создается
структура People3 c двумя вложенными таблицами Purchases и
Movie Ratings. После чего с помощью оператора INSERT INTO
MINING STRUCTURE производится заполнение и обработка
структуры и ее моделей. Обратите внимание, что внешние ключи,
используемые для связи таблиц (это столбец CustID в таблицах
Purchases и MovieRatings), в структуру не попадают. Для этого
используется ключевое слово SKIP, подставляемое вместо названия
столбца: (…[Purchases](SKIP, [Product], …),[Movie
Ratings](SKIP, [Movie], [Rating])…). Также хочется
обратить внимание на наличие в запросах SELECT инструкции
ORDER BY, упорядочивающей результат запроса, о чем говорилось
выше.

// Создание структуры с двумя вложенными таблицами


CREATE MINING STRUCTURE [People3]
( [CustID] LONG KEY,
[Name] TEXT DISCRETE,
[Gender] TEXT DISCRETE,
[Age] LONG CONTINUOUS,
[AgeDisc] LONG DISCRETIZED(EQUAL_AREAS,3),
[CarMake] TEXT DISCRETE,
[CarModel] TEXT DISCRETE,
[Purchases] TABLE
( [Product] TEXT KEY,
[Quantity] LONG CONTINUOUS,
[OnSale] BOOLEAN DISCRETE
),
[Movie Ratings] TABLE

67
( [Movie] TEXT KEY, [Rating] LONG CONTINUOUS )
)
//обработка структуры
INSERT INTO MINING STRUCTURE [People3]
([CustID], [Name], [Gender],
[Age], [AgeDisc],
[CarMake], [CarModel],
[Purchases](SKIP, [Product], [Quantity], [OnSale])
,[Movie Ratings](SKIP, [Movie], [Rating])
)
SHAPE
{ OPENQUERY( Chapter3Data,
'SELECT [Key], Name, Gender, Age, Age, CarMake,
CarModel FROM People ORDER BY [Key]')
}
APPEND
({ OPENQUERY( Chapter3Data,
'SELECT CustID, Product, Quantity, [On Sale]
FROM Purchases ORDER BY CustID')
} RELATE [Key] TO [CustID]
) AS Purchases
, ({ OPENQUERY( Chapter3Data,
'SELECT CustID, Movie, Rating
FROM MovieRatings ORDER BY CustID')
} RELATE [Key] TO [CustID]
) AS MovieRatings

Удалить данные, модель или структуру можно с помощью опе-


ратора DELETE. Его синтаксис приведен ниже.
DELETE FROM [MINING MODEL] <model>[.CONTENT]
DELETE FROM [MINING STRUCTURE]
<structure>[.CONTENT]| [.CASES],
где model – имя модели;
structure – имя структуры.
Если не указан аргумент MINING MODEL или MINING STRUC-
TURE, Analysis Services производит поиск типа объекта на основе

68
имени и затем обрабатывает корректный объект. Если сервер содер-
жит структуру и модель интеллектуального анализа данных с одина-
ковыми именами, возвращается ошибка.
В табл. 3.2 описываются различные варианты использования
данного оператора [12]. Следующий пример удаляет все содержимое
структуры People1.
DELETE FROM MINING STRUCTURE [People1].
Инструкция DROP позволяет удалить модель или структуру ин-
теллектуального анализа данных из базы данных. Синтаксис для того
и другого случая, соответственно, приведен ниже.
DROP MINING MODEL <model>
или
DROP MINING STRUCTURE <structure>
где model  имя модели;
structure  имя структуры.
В следующем примере из базы данных удаляется структура New
Mailing.
DROP MINING STRUCTURE [New Mailing].
Инструкции EXPORT и IMPORT позволяют сохранить модель
или структуру интеллектуального анализа в файл резервной копии
служб Analysis Services (*.abf) и восстановить модель или структуру
из файла. Синтаксис команд [12]:
EXPORT <object type> <object name>[, <object
name>] [<object type> <object name>[, <object
name] ] TO <filename> [WITH DEPENDENCIES]
и
IMPORT FROM <filename>,
где object type  тип экспортируемого объекта (модель или
структура интеллектуального анализа данных);
object name  имя экспортируемого объекта;
filename  имя и расположение файла для экспорта (аргумент типа
string, берется в одинарные кавычки).

69
Таблица 3.2
Инструкция DELETE
Инструкция Результат выполнения
DELETE FROM MINING Выполняет функцию ProcessClear
STRUCTURE <structure> по отношению к структуре интел-
или лектуального анализа данных.
DELETE FROM MINING Все содержимое структуры ин-
STRUCTURE теллектуального анализа данных и
<structure>.CONTENT
связанных с ней моделей интел-
лектуального анализа данных
удаляется.
DELETE FROM MINING Выполняет функцию
STRUCTURE ProcessClearStructureOnly по
<structure>.CASES отношению к структуре интеллек-
туального анализа данных. Все
содержимое структуры удаляется
(т. е. кэш вариантов очищается), а
связанные с ней модели остаются
без изменений. После выполнения
команды детализация моделей,
связанных со структурой,
становится невозможной.
DELETE FROM MINING MODEL Выполняет функцию ProcessClear
<model> по отношению к модели интел-
или лектуального анализа данных, но
DELETE FROM MINING MODEL значения состояний оставляются
<model>.CONTENT без изменений. Значения состоя-
ний представляют собой возмож-
ные состояния столбца.
Например, значениями состояний
для столбца «Пол» являются
«Мужской» и «Женский».

70
Если инструкция указывает модель интеллектуального анализа
данных, итоговый файл также содержит связанную структуру интел-
лектуального анализа данных. Если инструкция указывает WITH
DEPENDENCIES, все объекты, необходимые для обработки объекта
(например, источник данных и представление источника данных),
включаются в ABF-файл. Чтобы экспортировать или импортировать
объекты базы данных служб Analysis Services, необходимо иметь пра-
ва администратора базы данных или сервера.
В следующем примере структуры интеллектуального анализа
данных Targeted Mailing и Forecasting, а также модель ин-
теллектуального анализа данных Association экспортируются в
определенный файл. Пусть модель Association является частью
структуры интеллектуального анализа Market Basket. Тогда также
экспортируется структура Market Basket. Любые другие модели
интеллектуального анализа данных, которые могут существовать как
часть структуры Market Basket, не будут экспортироваться, пото-
му что модель Association была экспортирована при помощи ин-
струкции MINING MODEL, а не MINING STRUCTURE.
EXPORT MINING STRUCTURE [Targeted Mailing],
[Forecasting] MINING MODEL Association TO
'C:\TM_NEW.abf'.
В следующем примере модель интеллектуального анализа дан-
ных Association экспортируется в определенный файл. Вслед-
ствие того, что в инструкции указывается WITH DEPENDENCIES,
объекты источника данных и представления источника данных также
включаются в ABF-файл.
EXPORT MINING MODEL [Association] TO
'C:\Association_NEW.abf' WITH DEPENDENCIES.
В следующем примере выполняется импорт всего содержимого
файла с моделью Association, структурой и дополнительными
объектами на текущий сервер.
IMPORT FROM 'C:\Association_NEW.abf '

71
Также можно защищать экспортируемую копию паролем [1]:
EXPORT MINING STRUCTURE People2 TO
'C:\temp\People2.abf' WITH PASSWORD='People2'
Тот же пароль понадобится при импорте:
IMPORT FROM 'C:\temp\People2.abf' WITH
PASSWORD='People2'.

3.5. ЯЗЫК DMX: ЗАПРОСЫ


В предыдущем разделе был рассмотрен порядок обработки
структур и моделей интеллектуального анализа данных. Следующая
задача – это работа с данными и построение прогнозов. Для этого ис-
пользуется оператор SELECT.
SELECT в DMX напоминает аналогичный оператор в SQL, но
надо понимать, что и перечень решаемых задач, и особенности при-
менения имеют существенные отличия.
При интеллектуальном анализе данных с помощью оператора
SELECT можно решить следующие задачи:
‒ просмотр вариантов, загруженных в структуру интеллектуаль-
ного анализа данных;
‒ просмотр содержимого существующей модели;
‒ создание прогнозов по существующей модели;
‒ создание копии существующей модели.
Для решения первых двух задач используется следующий фор-
мат записи оператора:
SELECT [FLATTENED] [TOP <n>] <select list>
FROM <model/structure>[.aspect]
[WHERE <condition expression>]
[ORDER BY <expression>[DESC|ASC]]
Инструкция FLATTENED указывает на необходимость преобра-
зования возвращаемых запросом SELECT результатов в «плоский»
набор строк (т. е. преобразование к обычной таблице). Она использу-

72
ется, когда представление вариантов с вложенными таблицами в ис-
пользуемом по умолчанию иерархическом формате неприемлемо.
Инструкции ORDER BY и TOP <n> позволяют упорядочить
возвращаемый набор по указанному параметру и вернуть только пер-
вые n значений. Это может быть полезно в сценариях аналогичных
целевым рассылкам, где результаты нужно отправлять только наибо-
лее вероятным получателям (подобный пример рассматривается в ла-
бораторных работах, см. главу 5). Для этого можно упорядочить ре-
зультаты прогнозирующего запроса для целевой рассылки по вероят-
ности, а затем вернуть только верхние n результатов.
В список выбора <select list> могут входить ссылки на
скалярные столбцы, прогнозирующие функции и выражения. Доступ-
ные параметры зависят от алгоритма и следующих условий:
‒ выполняется запрос к структуре или модели интеллектуально-
го анализа;
‒ запрос выполняется к содержимому или к вариантам;
‒ источник данных является реляционной таблицей или кубом;
‒ делается ли прогнозирование.
Если вместо списка выбора стоит символ «*», то будут выбра-
ны все столбцы из модели или структуры.
В списке выбора допустимо использовать псевдонимы и про-
стые выражения. Например, ниже для всех присутствующих в модели
MyModel вариантов (на это указывает ключевое слово CASES, см.
далее) выводится идентификатор клиента и его фамилия и имя в виде
одного столбца FullName:
SELECT [CustomerID], [Last Name] + ', ' +
[FirstName] AS FullName
FROM MyModel.CASES
Инструкция WHERE позволяет ограничить перечень возвращае-
мых результатов только теми, что соответствуют указанному логиче-
скому условию. Синтаксис будет следующий:
WHERE <condition expression>

73
Например:
SELECT [CustomerID], [Last Name] + ', ' +
[FirstName] AS FullName
FROM MyModel.CASES
WHERE [CustomerID]>100.

Детализация структуры
Рассмотрим теперь инструкцию FROM. Если в ней стоит
<structure>.CASES, где <structure> – имя структуры интел-
лектуального анализа, то будут возвращаться варианты, использован-
ные для создания структуры. Если детализация для структуры не
включена, выполнение данной инструкции завершится сбоем. Но по
умолчанию детализация включена. Явно указать, что мы хотим рабо-
тать со структурой, можно с помощью ключевых слов MINING
STRUCTURE. Например, выбрать все варианты из структуры MyStr1
с преобразованием результата в плоский набор строк можно выпол-
нив команду:
SELECT FLATTENED * FROM MINING STRUCTURE MyStr1.CASES
Теперь вспомним о том, что при определении структуры могло
быть задано секционирование вариантов на обучающий и провероч-
ный набор. Чтобы узнать, к какому набору относится вариант, ис-
пользуются функции IsTestCase() и IsTrainingCase(), воз-
вращающие истину для «проверочного» и «обучающего» варианта
соответственно.
Ниже приведен пример получения списка столбцов Customer
Key («ключ клиента»), Gender («пол»), Age («возраст») для вариан-
тов, зарезервированных в проверочном наборе структуры Targeted
Mailing («целевая рассылка»):
SELECT [Customer Key], Gender, Age
FROM [Targeted Mailing].Cases
WHERE IsTestCase()

74
Детализация модели
Аналогичным образом могут быть получены варианты из моде-
ли (проведена детализация модели). Формат оператора выглядит сле-
дующим образом:
SELECT [FLATTENED] [TOP <n>] <expression list>
FROM <model>.CASES
[WHERE <condition expression>]
[ORDER BY <expression> [DESC|ASC]]
Если детализация для модели интеллектуального анализа дан-
ных не включена, выполнение данной инструкции завершится ошиб-
кой. Для расширений интеллектуального анализа данных активиро-
вать детализацию можно только при создании модели (с помощью
инструкции WITH DRILLTHROUGH). В среде BI Dev Studio можно
добавить детализацию и в существующую модель, но прежде чем
можно будет просматривать варианты, необходимо выполнить по-
вторную обработку модели.
Если детализация включена как для модели, так и для структуры
интеллектуального анализа данных, пользователи, являющиеся чле-
нами роли, обладающей разрешением на детализацию модели и
структуры, могут обращаться к столбцам в структуре интеллектуаль-
ного анализа данных, которые не включены в модель.
При использовании функции IsInNode в предложении WHERE
выдаются только варианты, связанные с указанным узлом (номер узла
задается в столбце NODE_UNIQUE_NAME, о нем см. далее).
Ниже приведен пример, возвращающий все столбцы для всех
вариантов, зарезервированных в проверочном наборе модели «Целе-
вая рассылка» (TM Decision Tree).
SELECT * FROM [TM Decision Tree].Cases
WHERE IsTestCase()
В следующем примере возвращаются только те варианты из
обучающего набора, которые использовались в кластере 2 модели

75
TM_Clustering. Узел кластера 2 имеет значение «002» в столбце
NODE_UNIQUE_NAME, и оно указывается в качестве аргумента функ-
ции IsInNode. Кроме всех столбцов модели, возвращается и столбец
структуры Customer Key, который не входил в модель интеллекту-
ального анализа данных. Этому столбцу присваивается псевдоним
CustomerID. Делается это с помощью функции
StructureColumn. Имя столбца структуры передается как строко-
вое значение, поэтому его следует заключать в кавычки.
SELECT StructureColumn('Customer Key') AS
CustomerID, *
FROM [TM_Clustering].Cases
WHERE IsTrainingCase()AND IsInNode('002')

Запрос значений столбца


Ниже приведен синтаксис оператора, позволяющего получить
значения указанных столбцов модели.
SELECT [FLATTENED] DISTINCT [TOP <n>]
<expression list>
FROM <model>
[WHERE <condition list>][ORDER BY <expression>]
При этом, для дискретного столбца будут выведены все воз-
можные значения, для непрерывного – среднее значение, для дискре-
тизованного – среднее значение для каждого из определённых в про-
цессе дискретизации интервалов.
Рассмотрим два примера. В первом будут выведены все значе-
ния дискретного столбца Gender (Пол) модели TM Decision
Tree (результат выполнения запроса представлен в табл. 3.3).
SELECT DISTINCT [Gender]
FROM [TM Decision Tree]

76
Таблица 3.3
Результат выполнения запроса значений
дискретного столбца
Gender
Жен
Муж

Во втором примере для столбца Age (возраст), определенного


как непрерывный, будет выведено среднее значение, а также с помо-
щью функций RangeMin и RangeMax, соответственно, минималь-
ный и максимальный возраст (табл. 3.4).
SELECT DISTINCT [Age] AS [Midpoint Age],
RangeMin([Age]) AS [Minimum Age],
RangeMax([Age]) AS [Maximum Age]
FROM [TM Decision Tree]

Таблица 3.4
Результат выполнения запроса
для непрерывного столбца
Midpoint Age Minimum Age Maximum Age
62 26 97

Запрос содержимого модели


Оператор SELECT может не только возвратить используемые
моделью варианты, но и вывести ее содержимое. Для этого использу-
ется синтаксис:
SELECT [FLATTENED] [TOP <n>] <expression list>
FROM <model>.CONTENT
[WHERE <condition expression>]
[ORDER BY <expression> [DESC|ASC]]
Аргументы команды были уже рассмотрены выше, сейчас важно
понять, что же возвратит запрос. Столбцы, составляющие содержимое

77
модели интеллектуального анализа, перечислены в табл. 3.5 [12]. А
интерпретация их значений может несколько меняться в зависимости
от используемого моделью алгоритма.
Следующий пример позволяет просмотреть перечень узлов мо-
дели TM Decision Tree, где число поддерживающих узел вариан-
тов больше 2. Считаем, что модель основана на алгоритме дерева
принятия решений.
SELECT NODE_UNIQUE_NAME
FROM [TM Decision Tree].CONTENT
WHERE NODE_SUPPORT > 2

Таблица 3.5
Столбцы содержимого модели
Столбец набора строк Описание
CONTENT
MODEL_CATALOG Имя каталога. Имеет значение NULL, если
поставщик не поддерживает каталоги.
MODEL_SCHEMA Имя схемы. Имеет значение NULL, если
поставщик не поддерживает схемы.
MODEL_NAME Имя модели. Этот столбец не может со-
держать значение NULL.
ATTRIBUTE_NAME Имя атрибута, соответствующего этому
узлу.
NODE_NAME Имя узла.
NODE_UNIQUE_NAME Уникальное имя узла внутри модели.
NODE_TYPE Целое число, представляющее тип узла.
NODE_GUID Идентификатор GUID узла. Имеет значе-
ние NULL, если идентификатор GUID от-
сутствует.
NODE_CAPTION Метка или заголовок, связанный с узлом.
В основном используется в целях отобра-
жения. Если заголовка не существует, воз-
вращается значение NODE_NAME.

78
Окончание табл. 3.5
CHILDREN_CARDINALITY Количество имеющихся у узла потомков.
PARENT_UNIQUE_NAME Уникальное имя родителя узла.
NODE_DESCRIPTION Описание узла.
NODE_RULE XML-фрагмент, представляющий внед-
ренное в узел правило. Формат XML-
строки основывается на стандарте PMML.
MARGINAL_RULE XML-фрагмент, описывающий маршрут
от родителя к узлу.
NODE_PROBABILITY Вероятность маршрута,
который завершается в узле.
MARGINAL_PROBABILIT Вероятность доступа к узлу
Y от родительского узла.
NODE_DISTRIBUTION Таблица, которая содержит статистиче-
ские данные, описывающие распределение
значений в узле.
NODE_SUPPORT Количество вариантов, поддерживающих
этот узел.

3.6. ЯЗЫК DMX: ПРОГНОЗИРУЮЩИЕ ЗАПРОСЫ


Сейчас мы подошли к одному из самых интересных этапов ин-
теллектуального анализа – построению прогнозов. Как уже отмеча-
лось в предыдущих разделах, задача прогнозирования в языке DMX
также решается с помощью оператора SELECT. При этом чаще всего
используется конструкция прогнозирующего соединения – PREDIC-
TION JOIN. С ее помощью шаблонам модели сопоставляется набор
данных из внешнего источника, что позволяет определить значение
для прогнозируемого столбца.
Упрощенно это можно представить следующим образом. Мо-
дель содержит некоторое множество шаблонов, описывающих зави-
симость выходных параметров от входных. Подобный пример приве-
ден ниже.

79
1. Если Вход1=x, то Выход = «да».
2. Если Вход1=y и Вход2=z, то Выход= «нет».
3. …
При прогнозировании модель получает входные данные из
внешнего источника, определяет наиболее соответствующий шаблон
и выдает результат. Например, входной вариант имеет атрибут
«Вход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  целое число, указывающее количество возвращаемых строк;
select expression list  разделенный запятыми список
столбцов и/или выражений;
model  название модели;
sub select  внедренная (вложенная) инструкция SELECT;
source data query  «исходный» запрос, описывающий
набор данных, для которого производится прогнозирующее соедине-
ние. Он может представлять собой таблицу или одноэлементный за-
прос;
join mapping list  логическое выражение, включающее
сравнения столбцов модели со столбцами, возвращаемыми запросом
source data query; определяет условия соединения;
condition expression – логическое выражение, ограничи-
вающее множество возвращаемых значений, только теми, что соот-
ветствуют условию; условие WHERE можно применять только к про-
гнозируемым столбцам или к связанным столбцам;

80
expression – выражение, определяющее упорядочение воз-
вращаемого результата. ORDER BY может принять в качестве аргу-
мента только один столбец, сортировать по нескольким столбцам –
нельзя.
Предложение ON позволяет сопоставить столбцы исходного за-
проса со столбцами модели интеллектуального анализа данных (что-
бы определить, какие значения рассматривать в качестве входных при
прогнозировании). Столбцы в списке join mapping list соотно-
сятся с помощью знака равенства, как показано в следующем приме-
ре:
[MiningModel].ColumnA = [source data query].Column1
AND
[MiningModel].ColumnB = [source data query].Column2
AND ...
Инструкция NATURAL PREDICTION JOIN автоматически со-
поставляет имена столбцов исходного запроса, совпадающих с име-
нами столбцов модели. В случае использования инструкции NATURAL
PREDICTION предложение ON можно пропустить.
В списке select expression list и выражении condi-
tion expression можно указывать прогнозирующие функции, не
возвращающие табличного выражения.
Рассмотрим теперь несколько примеров построения прогнозов.

Одноэлементный запрос (прогноз в реальном времени)


Одноэлементным будем называть запрос, в котором исходные
данные для прогнозирования не выбираются из источника, а явно
указаны в тексте запроса. Такой запрос может формироваться «нале-
ту», например, на основе введенных пользователем данных, и тут же
выдавать результаты прогноза.
Ниже приведен пример подобного прогнозирующего запроса к
модели TM Decision Tree для оценки того, станет ли покупате-

81
лем велосипеда человек в возрасте 35 лет, проживающий в 5–10 ми-
лях от места работы, владеющий одним домом, двумя автомобилями,
с двумя детьми в семье (значения перечислены в том порядке, как
идут в листинге). Запрос возвращает прогнозируемое логическое зна-
чение столбца Bike Buyer и набор табличных значений, возвра-
щенных функцией 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
Здесь нужно отметить, что за счет использования конструкции
NATURAL PREDICTION JOIN определять соответствия между
столбцами модели и набора входных данных не потребовалось.

Запрос с использованием функции OPENQUERY


В том случае, когда требуется сделать прогноз для множества
вариантов, которые берутся из таблицы базы данных, можно исполь-
зовать функцию OPENQUERY, аналогично тому, как это делалось при
заполнении структуры. При этом предварительно требуется создать
представление источника данных (например, с помощью BI Dev
Studio).
В приведенном ниже примере имена столбцов таблицы отлича-
ются от имен столбцов, содержащихся в модели интеллектуального

82
анализа данных, поэтому нужно использовать предложение 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

83
[TM Decision Tree].[House Owner Flag] =
t.[HouseOwnerFlag] AND
[TM Decision Tree].[Number Cars Owned]=
t.[NumberCarsOwned]

Использование функции Predict


Функция 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]]
и в списке expression list указать только прогнозируемые
столбцы, то оператор выполнит пустое прогнозирующее соединение и

84
возвратит наиболее вероятные значения для указанных столбцов. Для
создания прогноза используется только содержимое модели интел-
лектуального анализа данных. Например:
SELECT ([Bike Buyer]) FROM [TM_Naive_Bayes]
выдаст наиболее часто встречающееся значение столбца Bike Buyer.

Создание копии модели – оператор SELECT INTO


В заключение обзора возможностей оператора SELECT, рас-
смотрим создание копии существующей модели интеллектуального
анализа данных. Для этого используется синтаксис:
SELECT INTO <new model>
USING <algorithm> [(<parameter list>)]
[WITH DRILLTHROUGH[,] [FILTER(<expression>)]]
FROM <existing model>
где new model – имя для новой создаваемой модели;
algorithm – название используемого новой моделью алгоритма
интеллектуального анализа данных;
parameter list – cписок через запятую параметров алгорит-
ма;
expression – выражение, определяющее фильтр для значений,
попадающих в новую модель;
existing model – имя существующей модели для копирова-
ния.
Если существующая модель является обученной, новая модель
автоматически обрабатывается при выполнении этой инструкции. В
противном случае, новая модель остается необработанной.
Например, приведенный ниже фрагмент кода создает новую мо-
дель New_Clustering на базе существующей модели интеллекту-
ального анализа данных TM Clustering. В обоих случаях исполь-
зуется алгоритм кластеризации. Но в новой модели параметр CLUS-
TER_COUNT изменяется так, чтобы существовало максимум пять кла-
стеров, тогда как значение по умолчанию равно 10.
SELECT * INTO [New_Clustering]
USING [Microsoft_Clustering] (CLUSTER_COUNT = 5)
FROM [TM Clustering]

85
4. ОСОБЕННОСТИ ИСПОЛЬЗОВАНИЯ
ВСТРОЕННЫХ АЛГОРИТМОВ
ИНТЕЛЛЕКТУАЛЬНОГО
АНАЛИЗА СУБД MS SQL SERVER 2008

4.1 УПРОЩЕННЫЙ АЛГОРИТМ БАЙЕСА


В предыдущих разделах был рассмотрен формат команд DMX
для создания структур и моделей интеллектуального анализа данных.
В частности, создать структуру, включающую одну модель можно с
помощью следующей команды:
CREATE [SESSION] MINING MODEL <model>
(
[(<column definition list>)]
)
USING <algorithm> [(<parameter list>)]
[WITH DRILLTHROUGH]
Если создается модель, использующая упрощенный алгоритм
Байеса, то в качестве названия алгоритма надо указать
Microsoft_Naive_Bayes. Кроме того надо учитывать следующее:
‒ тип содержимого для входного атрибута может быть
Cyclical, Discrete, Discretized, Key, Table и Ordered;
для прогнозируемого – Cyclical, Discrete, Discretized,
Table и Ordered;
‒ обработка атрибутов типа Continuous (непрерывные) не до-
пускается;
‒ должен быть определен хотя бы один выходной атрибут;
‒ алгоритм не поддерживает детализацию, соответственно оп-
ция WITH DRILLTHROUGH неприменима.
Рассмотрим пример создания модели, прогнозирующей значе-
ние атрибута Bike Buyer (покупатель велосипеда) на основе значе-

86
ний атрибутов Age (возраст), Number Cars Owned (число машин в
собственности), ключевой атрибут – Customer Key.
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
После выполнения данной инструкции будет создана структура
vTM1_NB_Structure и модель vTM1_NB со значениями парамет-
ров, принятыми по умолчанию. Эти параметры приведены на рис. 4.1
(окно просмотра параметров алгоритма из среды BI Dev Studio).

Рис. 4.1. Параметры по умолчанию для упрощенного


алгоритма Байеса.

87
Если значения по умолчанию не устраивают, можно явно ука-
зать значения при создании модели или изменить их впоследствии.
Ниже приведены описания параметров алгоритма.
MAXIMUM_INPUT_ATTRIBUTES – указывает максимальное ко-
личество входных атрибутов, которые алгоритм может обработать
перед вызовом процедуры выбора характеристик. Если входов боль-
ше, чем это число, алгоритм по выявленным характеристикам отберет
самые важные и проигнорирует остальные. Установка этого значения
равным 0, отключает выбор характеристик для входных атрибутов,
т. е. рассматриваться будут все входные атрибуты. Значение по умол-
чанию – 255.
MAXIMUM_OUTPUT_ATTRIBUTES – аналогично задает макси-
мальное количество выходных атрибутов, которые алгоритм может
обработать перед вызовом выбора характеристик. Установка этого
значения равным 0 отключает выбор характеристик для выходных ат-
рибутов. Значение по умолчанию равно 255.
MINIMUM_DEPENDENCY_PROBABILITY – задает минималь-
ную или «пороговую» вероятность того, что входной атрибут влияет
на значение выходного. Значение используется для ограничения раз-
мера содержимого, формируемого алгоритмом. Это свойство может
быть установлено равным от 0 до 1. Большие значение уменьшают
количество атрибутов в содержимом модели. Значение по умолчанию
равно 0,5.
MAXIMUM_STATES – указывает максимальное количество со-
стояний атрибутов, поддерживаемое алгоритмом. Если количество
состояний атрибутов превышает максимально возможное, то алго-
ритм использует наиболее частые состояния атрибутов, а остальные –
считает отсутствующими. Значение по умолчанию – 100.

88
4.2 ДЕРЕВЬЯ РЕШЕНИЙ И ЛИНЕЙНАЯ РЕГРЕССИЯ
При использовании языка DMX, создание модели для прогнози-
рования дискретного атрибута с помощью алгоритма Microsoft Deci-
sion Trees может выглядеть примерно следующим образом:
CREATE MINING MODEL vTM1_DT (
[Customer Key] LONG KEY,
[Age] LONG CONTINUOUS,
[Number Cars Owned] LONG DISCRETE,
[Bike Buyer] LONG DISCRETE PREDICT_ONLY)
USING Microsoft_Decision_Trees
Обратите внимание, что в отличие от рассмотренного ранее
примера создания модели на базе упрощенного алгоритма Байеса, в
данном случае допустим тип содержимого Continuous, и необязатель-
но проводить дискретизацию непрерывных числовых параметров при
создании структуры и модели. В то же время надо учитывать, что ес-
ли прогнозируемый атрибут дискретен, а входные данные непрерыв-
ны, вход непрерывных столбцов автоматически дискретизуется [6].
Несколько иначе будет выглядеть создание модели для прогно-
зирования значений непрерывного атрибута. Здесь алгоритму пона-
добится использовать независимую переменную-регрессор. Можно
это явно указать при создании модели. В приведенном ниже примере
мы хотим прогнозировать годовой доход в зависимости от возраста и
числа машин. При этом возраст можно явно указать в качестве потен-
циального регрессора.
CREATE MINING MODEL vTM2_DT
(
[Customer Key] LONG KEY,
[Age] LONG REGRESSOR CONTINUOUS,
[Number Cars Owned] LONG DISCRETE,
[Yearly Income] LONG CONTINUOUS PREDICT_ONLY
)
USING Microsoft_Decision_Trees

89
В то же время, как отмечается в MSDN [6], если столбец указан
как регрессор, это не значит, что он будет использован в этом каче-
стве в окончательной модели. И наоборот, алгоритм дерева принятия
решений секционирует набор данных на области со значимыми шаб-
лонами, даже если для столбца не задан флаг REGRESSOR.
Можно применить параметр модели FORCE_REGRESSOR для
обеспечения того, чтобы использовался конкретный регрессор. Этот
параметр может применяться с алгоритмом дерева принятия решений
и алгоритмом линейной регрессии.
И раз уж речь зашла об алгоритме линейной регрессии рассмот-
рим, как создать соответствующую модель.
CREATE MINING MODEL X_LR
(
[ID] LONG KEY,
[X] LONG REGRESSOR CONTINUOUS,
[Y] LONG CONTINUOUS PREDICT
)
USING Microsoft_Linear_Regression
Как уже разбиралось в разделе 2.3, указание алгоритма линей-
ной регрессии приводит к использованию особого варианта алгорит-
ма дерева решений с параметрами, которые ограничивают поведение
алгоритма и требуют использования определенных типов данных на
входе. Основные требования перечислены ниже.
1) Каждая модель должна содержать один числовой или тексто-
вый столбец, который однозначно идентифицирует каждую запись
(тип key). Составные ключи не допускаются.
2) Необходимо наличие как минимум одного прогнозируемого
столбца. В модель можно включить несколько прогнозируемых атри-
бутов, однако они должны иметь непрерывные числовые типы дан-
ных. Тип данных datetime нельзя использовать в качестве прогно-
зируемого атрибута даже в случае, если собственный формат хране-
ния данных является числовым.
3) Во входных столбцах должны содержаться непрерывные чис-
ловые данные, кроме того, они должны иметь подходящий тип.

90
Теперь перейдем к рассмотрению возможных параметров моде-
лей деревьев решений и линейной регрессии, которые можно исполь-
зовать для «тонкой настройки» алгоритма.
COMPLEXITY_PENALTY – управляет ростом дерева решений.
Это число в диапазоне от 0 до 1 устанавливающее, какой штраф алго-
ритм применяет к сложным деревьям. Низкое значение увеличивает
количество разбиений, а высокое количество – уменьшает. Если чис-
ло входных атрибутов от 1 до 9, то значением по умолчанию является
0,5; если от 10 до 99 – 0,9; для 100 и более атрибутов значением по
умолчанию является 0,99.
FORCE_REGRESSOR – «вынуждает» алгоритм использовать
указанные столбцы в качестве регрессоров, не обращая внимания на
важность столбцов, вычисленную алгоритмом. Этот параметр исполь-
зуется для линейной регрессии и деревьев решений, прогнозирующих
непрерывный атрибут.
MAXIMUM_INPUT_ATTRIBUTES – определяет количество
входных атрибутов, которые алгоритм может обработать перед вызо-
вом процедуры выбора компонентов (для отбора наиболее важных
атрибутов). Параметр применим как для линейной регрессии, так и
для деревьев решений. Значение по умолчанию равно 255. 0 отключа-
ет выбор характеристик.
MAXIMUM_OUTPUT_ATTRIBUTES – определяет количество вы-
ходных атрибутов, которые алгоритм может обработать перед вызо-
вом выбора характеристик. Параметр применим как для линейной ре-
грессии, так и для деревьев решений. Значение по умолчанию равно
255. 0 отключает выбор характеристик.
MINIMUM_SUPPORT – для алгоритма деревьев решений опреде-
ляет минимальное количество вариантов в узле, при котором возмож-
но формирование разбиения в дереве. Значение по умолчанию равно
10. Для очень больших наборов данных это значение часто увеличи-
вают, чтобы избежать переобучения.

91
SCORE_METHOD – для алгоритма деревьев решений определяет
метод, используемый для вычисления коэффициента разбиения при
росте дерева. Возможные значения:
1 – энтропия;
2 – алгоритм Байеса с априорной оценкой K2;
3 – эквивалент Дирихле метода Байеса (BDE) с априорной оцен-
кой (используется по умолчанию).
SPLIT_METHOD – для алгоритма деревьев решений определяет
метод, используемый для разбиения узла:
1 – Binary: указывает, что независимо от реального числа значе-
ний атрибута дерево следует разбить на две ветви;
2 – Complete: указывает, что в дереве можно создавать столько
разбиений, сколько существует значений атрибута;
3 – Both: указывает, что службы Analysis Services могут опреде-
лять, какое разбиение лучше использовать – бинарное или полное
(используется по умолчанию).

4.3. АЛГОРИТМ ВРЕМЕННЫХ РЯДОВ


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

Таблица 4.1
Исходные данные
DateSeries Model Region Quantity
200904 M200 Europe 30
200905 M200 Europe 40
… … …
200904 M200 Pacific 20
… … …

92
Пример кода, создающего структуру интеллектуального анали-
за, приведен ниже.
CREATE MINING STRUCTURE TimeSeries1_structure
([DateSeries] DATE KEY TIME,
[Model Region] TEXT KEY,
[Quantity] LONG CONTINUOUS)
При создании структуры надо обратить внимание на то, чтобы в
ключ входил атрибут, содержащий отметку времени (в примере это
DateSeries). Кроме того, для нормальной работы алгоритма необ-
ходимо, чтобы анализируемый ряд был без пропусков. Поэтому ре-
зервирование в структуре данных для тестового набора (выполняемое
с помощью инструкции WITH HOLDOUT) делать не следует. Теперь
рассмотрим пример кода, создающего модель:
ALTER MINING STRUCTURE TimeSeries1_structure
ADD MINING MODEL TimeSeries1_TS
([DateSeries],
[Model Region],
[Quantity] PREDICT )
USING Microsoft_Time_Series (PERIODICITY_HINT =
'{12}', MISSING_VALUE_SUBSTITUTION = 0)
Надо обратить внимание на два использованных параметра.
PERIODICITY_HINT – указывает на наличие периодичности 12 (по
числу месяцев в году). Параметр MISSING_VALUE_SUBSTITUTION
указывает, что пропущенные значения элементов ряда надо заменять
на 0. В нашем случае, это означает, что если информации о продаже в
данном месяце данной модели велосипедов нет, то считаем, что про-
даж не было. После создания модели, параметры алгоритма можно
просматривать и изменять, например, через графический интерфейс
BI Dev Studio (рис. 4.2).

93
Рис. 4.2. Просмотр параметров алгоритма
Microsoft Time Series

Как уже отмечалось в разделе 2.4, алгоритм временных рядов


Майкрософт (Microsoft Time Series) представляет собой совокупность
двух алгоритмов:
1) «дерево авторегрессии с перекрестным прогнозированием»
(ARTxp), который оптимизирован для прогнозирования следующего
значения в ряду; он появился в SQL Server 2005;
2) «интегрированные скользящие средние авторегрессии»
(ARIMA), являющийся отраслевым стандартом в данной области; до-
бавлен в SQL Server 2008, чтобы повысить точность долгосрочного
прогнозирования.
Считается, что алгоритм ARTxp, давая более точный прогноз
для ближайших значений ряда, существенно менее точен в долго-
срочных прогнозах по сравнению с ARIMA. При настройках по умол-
чанию будут использоваться результаты работы обоих алгоритмов.
При этом, с помощью параметров модели можно указать, в какой сте-

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

a) b)

Рис. 4.3. Коэффициенты, с которыми учитываются


результаты прогнозирования алгоритмов ARIMA и ARTxp
a) PREDICTION_SMOOTHING = 0,5;
b) PREDICTION_SMOOTHING = 0,2

На рис. 4.3, a показано, как модель объединяет результаты алго-


ритмов, если параметр PREDICTION_SMOOTHING имеет значение по
умолчанию – 0,5. Вначале алгоритмы ARIMA и ARTxp получают
равные весовые коэффициенты, но по мере увеличения числа шагов
прогнозирования вес алгоритма ARIMA растет. На рис. 4.3, b показа-
но, как результаты будут объединяться при значении
PREDICTION_SMOOTHING равном 0,2.
Общее число параметров алгоритма достаточно велико, поэтому
ниже перечислены только наиболее значимые из них. Более полную
информацию можно получить из литературы [1] и справочной систе-
мы SQL Server.
MISSING_VALUE_SUBSTITUTION – указывает порядок запол-
нения пропусков в данных. По умолчанию пропуски в данных не до-

95
пускаются. Ниже перечислены возможные значения для этого пара-
метра:
Previous – повторяет значение из предыдущего временного
среза;
Mean – использует значение скользящего среднего среди вре-
менных рядов, использованных в обучении;
числовая константа – использует конкретное число для за-
мены всех отсутствующих значений;
None – замещает отсутствующие значения значениями, распо-
ложенными «на кривой» обученной модели. Это значение по умолча-
нию.
AUTO_DETECT_PERIODICITY – числовое значение от 0 до 1,
используемое для автоматического обнаружения периодичности. Зна-
чение по умолчанию – 0,6. Если значение ближе к 0, то периодич-
ность учитывается только для строго периодических данных. Исполь-
зование значения близкого к 1, повышает вероятность обнаружения
многих закономерностей, близких к периодическим, и автоматическо-
го создания подсказок периодичности.
PERIODICITY_HINT – предоставляет подсказку для алгорит-
ма, касающуюся периодичности данных. Например, если продажи ва-
рьируются в зависимости от года, а во временном ряду в качестве ша-
га изменения отметки времени используется один месяц, то перио-
дичность равна 12. Этот параметр имеет формат {n1 [, n2]}, где ni
– целое положительное число. Например, задать несколько подсказок
периодичности для данных, пополняемых ежемесячно, можно введя
{12, 3, 1}, чтобы обнаруживать закономерности, проявляющиеся
ежегодно, ежеквартально и ежемесячно. Однако подсказки периодич-
ности сильно влияют на качество работы модели. Если заданная под-
сказка отличается от реальной периодичности, это может отрицатель-
но сказаться на результатах. Значение по умолчанию равно {1}. Фи-
гурные скобки указывать обязательно. Кроме того, этот параметр
имеет строковый тип данных. Поэтому, если нужно ввести этот пара-

96
метр в составе инструкции расширений интеллектуального анализа
данных, необходимо поместить в кавычки числовое значение в фи-
гурных скобках (как был сделано в примере в начале этого раздела).
FORECAST_METHOD – указывает, какой алгоритм используется
для анализа и прогнозирования. Возможные значения – ARTXP, ARI-
MA и MIXED. Значение по умолчанию – MIXED.
PREDICTION_SMOOTHING – указывает, как модель должна ис-
пользовать сочетание двух алгоритмов для оптимизации прогнозов
(имеет смысл, если FORECAST_METHOD установлен в MIXED). Мо-
жет принимать значения от 0 до 1. 0 – при прогнозировании исполь-
зуется только алгоритм ARTxp. Процесс прогнозирования оптимизи-
руется для небольшого числа прогнозов. 1 – при прогнозировании ис-
пользуется только алгоритм ARIMA. Процесс прогнозирования опти-
мизируется для большого числа прогнозов. 0,5 (по умолчанию) –
указывает, что при прогнозировании используются оба алгоритма, а
их результаты объединяются. Этот параметр доступен только в ре-
дакции SQL Server 2008 Enterprise (или функционально аналогичной
редакции Developer).
HISTORIC_MODEL_COUNT – указывает количество моделей с
предысторией, которые будут построены. Эти дополнительные моде-
ли обучаются по «обрезанному» временному ряду и могут использо-
ваться для анализа точности прогнозирования (более подробно этот
процесс описан в литературе [1] и справочной системе SQL Server).
Значение по умолчанию – 1. Этот параметр доступен только в редак-
циях SQL Server 2008 Enterprise/Developer.
HISTORICAL_MODEL_GAP – указывает интервал времени меж-
ду двумя последовательными моделями с предысторией. Значение по
умолчанию  10. Это значение выражено в единицах времени, кото-
рые определяются моделью. Этот параметр доступен только в редак-
циях SQL Server 2008 Enterprise/Developer.
MAXIMUM_SERIES_VALUE и MINIMUM_SERIES_VALUE –
максимальное и минимальное значения, используемые для прогнозов.

97
Например, можно указать, что прогнозируемый объем продаж нико-
гда не должен быть отрицательным числом. Эти параметры доступны
только в редакциях SQL Server 2008 Enterprise/Developer.

4.4. АЛГОРИТМ КЛАСТЕРИЗАЦИИ


Рассмотрим пример кода, создающего модель интеллектуально-
го анализа данных, основанную на алгоритме Microsoft Clustering.
Пусть надо выполнить сегментацию (кластеризацию) клиентов фир-
мы, про которых мы знаем возраст, число детей, семейное положение.
Сначала создадим структуру:
CREATE MINING STRUCTURE Customer_structure
([CustomerKey] LONG KEY,
[MaritalStatus] TEXT DISCRETE,
[TotalChildren] LONG DISCRETE,
[Age] LONG CONTINUOUS)
К созданной структуре добавим модель, основанную на алго-
ритме кластеризации. Атрибуты MaritalStatus,
TotalChildren, Age будут рассматриваться как входные. И явно
укажем число кластеров, которое хотим получить:
ALTER MINING STRUCTURE Customer_structure
ADD MINING MODEL Customer_CL
([CustomerKey],
[MaritalStatus],
[TotalChildren],
[Age])
USING Microsoft_Clustering (CLUSTER_COUNT=6)
WITH DRILLTHROUGH
Требования к данным для модели кластеризации будут следую-
щими [15]:

98
– каждая модель должна содержать один ключевой числовой
или текстовый столбец, применение составных ключей не допускает-
ся;
– каждая модель должна содержать, по меньшей мере, один
входной столбец, включающий значения, которые используются для
формирования кластеров;
– может присутствовать необязательный прогнозируемый стол-
бец: этому алгоритму не требуется прогнозируемый столбец для фор-
мирования модели, но предусмотрена возможность добавления про-
гнозируемого столбца с данными почти любого типа. Например, если
требуется предсказать доход заказчика путем кластеризации по таким
демографическим показателям, как регион и возраст, то можно задать
доход как PredictOnly, и использовать остальные столбцы с ин-
формацией о регионе и возрасте в качестве входных данных.
Ниже приведен код, позволяющий обработать модель и выпол-
нить прогнозирующий запрос, в котором номер кластера выводится с
помощью функции Cluster(), а оценка вероятности того, что дан-
ный вариант принадлежит указанному кластеру, выводится функцией
ClusterProbability().
//заполнение структуры и ее обработка
INSERT INTO MINING STRUCTURE [Customer_structure]
([CustomerKey], [Age], [MaritalStatus],
[TotalChildren])
OPENQUERY ([Adventure Works DW],
'SELECT [CustomerKey], [Age], [MaritalStatus],
[TotalChildren] FROM dbo.vTargetMail')
// конец обработки структуры
GO
// запрос, возвращающий номер кластера и
вероятность
SELECT t.*, Cluster(), ClusterProbability()
FROM Customer_CL
NATURAL PREDICTION JOIN

99
OPENQUERY ([Adventure Works DW],
'SELECT [CustomerKey], [Age], [MaritalStatus],
[TotalChildren]
FROM dbo.vTargetMail') as t
Теперь перечислим основные параметры алгоритма, которые
можно указать для модели.
CLUSTERING_METHOD – число, указывающее метод кластери-
зации, используемый алгоритмом:
1 – масштабируемая максимизация ожидания (значение по
умолчанию);
2 – немасштабируемая максимизация ожидания;
3 – масштабируемые К-средние;
4 – немасштабируемые К-средние.
CLUSTER_COUNT – примерное количество создаваемых класте-
ров. Если указанное количество кластеров не может быть построено,
то алгоритм строит столько кластеров, сколько возможно. 0 означает,
что алгоритм будет использовать эвристический подход для опреде-
ления числа строящихся кластеров. Значение по умолчанию равно 10.
CLUSTER_SEED – значение, используемое при случайном фор-
мировании кластеров на начальной стадии построения модели. Со-
здав несколько моделей, отличающихся только этим параметром,
можно оценить степень зависимости результата от выбора начальных
значений. Если получившиеся кластеры отличаются незначительно,
модель можно считать относительно устойчивой. Значение по умол-
чанию – 0.
MINIMUM_SUPPORT – минимальный размер кластера. Если
число вариантов в кластере меньше этого значения, кластер считается
пустым и отбрасывается. Значение по умолчанию равно 1.
MODELLING_CARDINALITY – число образцов моделей, созда-
ваемых в процессе кластеризации. Снижение числа моделей-
кандидатов может ускорить работу алгоритма, но при этом существу-

100
ет риск потери хорошо подходящих моделей. Значение по умолчанию
равно 10.
STOPPING_TOLERANCE – значение, используемое для опреде-
ления момента завершения построения модели. Это оценка макси-
мального числа вариантов, которые могут изменить свое членство в
кластерах (после этого модель будет считаться сошедшейся). Значе-
ние по умолчанию равно 10. Для маленьких наборов данных или
очень явных кластеров можно установить значение в 1.
SAMPLE_SIZE – количество объектов, которые алгоритм ис-
пользует при каждом проходе, если для параметра CLUSTER-
ING_METHOD задан один из методов масштабируемой кластеризации.
Значение 0 параметра SAMPLE_SIZE приводит к тому, что весь
набор данных разбивается на кластеры за один проход. Значение по
умолчанию равно 50000.
MAXIMUM_INPUT_ATTRIBUTES – максимальное количество
входных атрибутов, которые алгоритм может обработать перед вызо-
вом выбора характеристик (для определения наиболее значимых и
игнорирования прочих). Значение 0 указывает, что количество атри-
бутов не ограничено. Значение по умолчанию равно 255.
MAXIMUM_STATES – максимальное количество состояний атри-
бутов, поддерживаемое алгоритмом. Если количество состояний ат-
рибута превышает максимально допустимое, алгоритм использует
наиболее часто встречающиеся состояния, не учитывая все осталь-
ные. Значение по умолчанию равно 100.

4.5. АЛГОРИТМ ВЗАИМОСВЯЗЕЙ


Рассмотрим код DMX, создающий структуру интеллектуального
анализа и модель, использующую алгоритм Microsoft Association
Rules [1]. Обратите внимание, что здесь будут использованы вложен-
ные таблицы, содержащие перечень товаров в заказе (как и в преды-
дущих примерах, речь идет о данных из базы Adventure Works DW).

101
CREATE MINING STRUCTURE SalesData
( [Order Number] TEXT KEY,
Products TABLE
( Product TEXT KEY,
Category TEXT DISCRETE
)
)
//структура создана
GO
ALTER MINING STRUCTURE SalesData
ADD MINING MODEL Recommendations
( [Order Number],
Products PREDICT ( Product )
)USING
Microsoft_Association_Rules(MINIMUM_SUPPORT=10,
MINIMUM_PROBABILITY=0.4)
В данном случае необходимо обратить внимание на следующее.
Вариант содержит только один ключевой столбец и один прогнозиру-
емый столбец. Как правило, прогнозируется ключевой столбец вло-
женной таблицы, в нашем примере – перечень приобретенных про-
дуктов. Эти значения должны быть дискретными или дискретизован-
ными. Входные столбцы также должны быть дискретными или дис-
кретизованными.
Параметры алгоритма Microsoft Association Rules следующие.
MAXIMUM_ITEMSET_COUNT – максимальное количество созда-
ваемых наборов элементов. Значение по умолчанию равно 200000.
MAXIMUM_ITEMSET_SIZE – максимальное количество элемен-
тов в наборе. Обработка модели прекращается, когда достигнуто пре-
дельное значение. 0 указывает, что размер набора элементов не огра-
ничен. Значение по умолчанию равно 3.
MAXIMUM_SUPPORT – максимальное количество вариантов, в
которых может поддерживаться набор элементов (формулу расчета
поддержки для набора см. в разделе 2.6). Этот параметр используется

102
для исключения элементов, которые появляются слишком часто и по-
этому, скорее всего, не имеют значения. Если это значение меньше 1,
то оно представляет процент от общего количества вариантов. Значе-
ния больше 1 представляют абсолютное количество вариантов, в ко-
торых может содержаться набор элементов.
MINIMUM_IMPORTANCE – пороговое значение важности для
правил взаимосвязей (формулу расчета значения важности см. в раз-
деле 2.6). Правила, имеющие важность меньше этого значения, от-
фильтровываются. Доступно только в редакциях SQL Server 2008 En-
terprise и Developer.
MINIMUM_ITEMSET_SIZE – минимальное количество элемен-
тов, допустимых в наборе. Это полезно, например, если нужно ис-
ключить одноэлементные наборы. Значение по умолчанию равно 1.
MINIMUM_PROBABILITY – указывает минимальную вероят-
ность того, что правило верно. Например, задание этого значения
равным 0,5 указывает, что правила с вероятностью меньше 50 % не
формируются. Значение по умолчанию – 0,4.
MINIMUM_SUPPORT – минимальная поддержка, которую набор
должен иметь, чтобы классифицироваться как «частый» набор эле-
ментов. Значение меньше 1 указывает, что значение указано в про-
центах от общего количества вариантов. Значение по умолчанию рав-
но 0,03, т. е. набор, встречающийся менее чем в 3 % вариантов, не бу-
дет включен в модель.
OPTIMIZED_PREDICTION_COUNT – число элементов, которые
будут кэшироваться для оптимизации прогноза. Значение по умолча-
нию  0. В этом случае алгоритм создает столько прогнозов, сколько
требуется в запросе. Если, например, установлено значение 3, то ал-
горитм помещает в кэш только 3 элемента для прогноза. Дополни-
тельные прогнозы, вероятность которых может быть такой же, что и у
3-х возвращенных элементов, не будут отображаться.

103
4.6. АЛГОРИТМ КЛАСТЕРИЗАЦИИ
ПОСЛЕДОВАТЕЛЬНОСТЕЙ
Рассмотрим фрагмент кода на языке DMX, создающего модель
интеллектуального анализа, основанную на алгоритме Microsoft Se-
quence Clustering [1]. В данном случае задача – анализ последователь-
ностей перехода клиентов по разделам web-сайта. Вариант формиру-
ют поля идентификатор клиента (CustomerGuid), информация о его
местоположении (GeoLocation), вложенная таблица c идентифика-
тором ссылки в последовательности переходов клиента
(SequenceID) и указанием категории ссылки (URLCategory).
CREATE MINING MODEL WebSequence
(
CustomerGuid TEXT KEY,
GeoLocation TEXT DISCRETE,
ClickPath TABLE PREDICT
( SequenceID LONG KEY SEQUENCE,
URLCategory TEXT DISCRETE PREDICT
)
)
USING Microsoft_Sequence_Clustering
После того, как модель создана и обработана, она может исполь-
зоваться для построения прогнозов. Например, может быть предло-
жено наиболее вероятное продолжение последовательности, начало
которой известно.
Для формирования прогноза используется функция Pre-
dictSequence(), формат которой предполагает использование
разных комбинаций параметров. PredictSequence(<table
column reference>), где параметр в скобках – название вложен-
ной таблицы, даст наиболее вероятную последовательность значений.
PredictSequence(<table column reference>, n): пред-
сказание n следующих значений из вложенной таблицы. Pre-
dictSequence(<table column reference>, n, m): пред-
сказание значений с n-го по m-е.

104
Вернувшись к рассмотренному примеру с web-сайтом [1], мож-
но использовать следующий запрос для того, чтобы узнать два наибо-
лее вероятных перехода клиента, который смотрел страницы по темам
страхование (англ. insurance), кредиты (англ. loan):
SELECT PredictSequence(ClickPath, 2) AS Sequences
FROM WebSequence NATURAL PREDICTION JOIN
(SELECT (SELECT 1 AS SequenceID, 'Insurance' AS
URLCategory UNION
SELECT 2 AS SequenceID, 'Loan' AS URLCategory)
AS ClickPath) AS T
Теперь рассмотрим параметры алгоритма, которые можно ука-
зать при создании модели.
CLUSTER_COUNT – примерное количество кластеров, создавае-
мых алгоритмом. Если это число кластеров не может быть построено
из имеющихся данных, то алгоритм строит столько кластеров, сколь-
ко возможно. Значение 0 приводит к тому, что алгоритм начинает ис-
пользовать эвристический подход для определения оптимального
числа строящихся кластеров. Значение по умолчанию равно 10.
MINIMUM_SUPPORT – минимальное число вариантов, необхо-
димых для построения кластера. Значение по умолчанию равно 10.
MAXIMUM_SEQUENCE_STATES – максимальное количество со-
стояний, которые может иметь последовательность. Значение по
умолчанию равно 64.
MAXIMUM_STATES – максимальное количество состояний для
атрибута не из последовательности, поддерживаемого алгоритмом.
Если количество состояний атрибута не из последовательности пре-
вышает максимально возможное количество состояний, то алгоритм
использует наиболее популярные состояния атрибута и рассматривает
остальные состояния как Missing. Значение по умолчанию равно
100.

105
4.7. АЛГОРИТМЫ НЕЙРОННЫХ СЕТЕЙ И ЛОГИСТИЧЕ-
СКОЙ РЕГРЕССИИ
Как было разобрано в разделе 2.9, алгоритм Microsoft Logistic
Regression представляет собой вариант алгоритма Microsoft Neural
Network, в котором не используется скрытый слой нейронной сети.
Иначе говоря, параметр HIDDEN_NODE_RATIO установлен равным 0
(подробнее о параметре – см. далее).
Поэтому параметры алгоритмов и особенности их использова-
ния во многом схожи. Модель, основанная на нейронной сети, должна
содержать, по крайней мере, один входной и один выходной (прогно-
зируемый) столбец. Вложенная таблица в качестве прогнозируемого
столбца использоваться не может, но допустимо использовать вло-
женную таблицу в как входной атрибут.
Пример кода DMX, создающего в существующей структуре
vTargetMail_structure2 модель на основе нейронных сетей,
приведен ниже (подробнее процесс рассматривается в лабораторной
работе, описанной в разделе 5.13).
ALTER MINING STRUCTURE [vTargetMail_structure2]
ADD MINING MODEL [vTargetMail2_NN]
( [Customer Key],
[Commute Distance], [Age],
[Number Cars Owned],
[Yearly Income],
[Bike Buyer] PREDICT )
USING Microsoft_Neural_Network
Если создается модель на основе алгоритма логистической ре-
грессии, это указывается ключевыми словами USING
Microsoft_Logistic_Regression.
Ниже перечислены параметры алгоритмов.
HIDDEN_NODE_RATIO – указывает соотношение числа скры-
тых, входных и выходных нейронов. Следующая формула определяет
начальное количество нейронов в скрытом слое:

106
√( )
Значение по умолчанию – 4,0. Для алгоритма Microsoft Logistic Re-
gression этот параметр неприменим.
HOLDOUT_PERCENTAGE – процент вариантов в составе обуча-
ющих данных, используемых для вычисления ошибки контрольных
данных. Значение по умолчанию – 30.
HOLDOUT_SEED – значение, используемое генератором псевдо-
случайных чисел в качестве начального, когда алгоритм случайным
образом отбирает контрольные данные. При установке данного пара-
метра равным 0 (значение по умолчанию), алгоритм формирует
начальное значение на основе имени модели интеллектуального ана-
лиза данных, что гарантирует неизменность содержимого модели при
повторной обработке.
MAXIMUM_INPUT_ATTRIBUTES – максимальное количество
входных атрибутов, которое может быть задано для алгоритма до ис-
пользования процедуры выбора характеристик (для исключения
наименее значимых атрибутов). Установка этого значения равным 0
отключает выбор характеристик для входных атрибутов. Значение по
умолчанию – 255.
MAXIMUM_OUTPUT_ATTRIBUTES – максимальное количество
выходных атрибутов, которое может быть задано для алгоритма до
использования выбора характеристик. Установка этого значения рав-
ным 0 отключает выбор характеристик для выходных атрибутов. Зна-
чение по умолчанию – 255.
MAXIMUM_STATES – максимальное число дискретных состоя-
ний на один атрибут, поддерживаемое алгоритмом. Если число состо-
яний конкретного атрибута превышает число, указанное для данного
параметра, то алгоритм использует наиболее популярные состояния
такого атрибута и считает остальные состояния пропущенными. Зна-
чение по умолчанию – 100.
SAMPLE_SIZE – верхний предел числа вариантов, которые бу-
дут использоваться для обучения модели. Алгоритм использует

107
меньшее из двух значений – либо это число, либо заданный парамет-
ром HOLDOUT_PERCENTAGE процент от общего количества вариан-
тов, не включенных в состав контрольных данных. Значение по умол-
чанию – 10000.

Содержимое модели
Содержимое модели, основанной на алгоритме нейронных се-
тей, нельзя назвать «интуитивно понятным», поэтому остановимся на
его рассмотрении более подробно [19].

Рис. 4.4. Структура содержимого модели


основанной на алгоритме нейронных сетей

Каждая нейронная сеть имеет один родительский узел, пред-


ставляющий модель и ее метаданные, а также узел граничной стати-
стики (NODE_TYPE = 24), который содержит описательную стати-
стику относительно входных атрибутов. Под этими двумя узлами
расположено не менее двух других узлов.
Первый узел (NODE_TYPE = 18) всегда представляет верхний
узел входного слоя. Под этим верхним узлом находятся входные узлы
(NODE_TYPE = 21), которые содержат фактические входные атрибу-
ты и их значения. Пример содержимого узла данного типа представ-
лен на рис. 4.5.

108
Рис. 4.5. Содержимое «входного» узла модели

В каждом из последующих узлов содержится отдельная подсеть


(NODE_TYPE = 17). Каждая подсеть содержит собственный скрытый
слой (NODE_TYPE = 19) и выходной слой (NODE_TYPE = 20).
Каждая подсеть (NODE_TYPE = 17) представляет анализ влия-
ния входного слоя на отдельный прогнозируемый атрибут. Если про-
гнозируемых выходов несколько, будет создано и несколько подсе-
тей. Скрытый слой каждой подсети содержит несколько скрытых уз-
лов (NODE_TYPE = 22), где содержатся данные о весовых коэффици-
ентах для каждого перехода, завершающегося в данном скрытом узле.
Выходной слой (NODE_TYPE = 20) содержит выходные узлы
(NODE_TYPE = 23), где находятся уникальные значения прогнозиру-
емого атрибута. Если прогнозируемый атрибут имеет непрерывный
числовой тип данных, то для него будет только один выходной узел.
Описание узлов можно просмотреть с помощью запроса к моде-
ли. Ниже приведен код запроса для входных узлов (тип 21), а резуль-
тат его выполнения представлен на рис. 4.6.
SELECT NODE_DESCRIPTION
FROM [vTargetMail2_NN].CONTENT
WHERE NODE_TYPE = 21

109
Рис. 4.6. Перечень входных узлов

На рис. 4.7 представлены текст и результат выполнения запроса


к узлу граничной статистики (тип 24), который позволяет узнать ста-
тистику по входным атрибутам.

Рис. 4.7. Результат запроса к узлу граничной статистики

110
5. ЛАБОРАТОРНЫЕ РАБОТЫ
Глава содержит описания шестнадцати лабораторных работ, по-
священных различным аспектам проведения интеллектуального ана-
лиза средствами Microsoft SQL Server 2008 и надстроек интеллекту-
ального анализа данных для Excel. Для проведения работ понадобится
компьютер (или компьютерный класс) с установленной СУБД SQL
Server 2008 или 2008 R2 в редакции Standard, Developer или Enterprise,
а также Microsoft Office 2007 или 2010 в редакции Professional и вы-
ше.
В работе 1 рассматривается установка надстроек интеллекту-
ального анализа данных для Microsoft Office, а также конфигурирова-
ние подключения к MS SQL Server 2008.
Работы 2–5 посвящены проведению анализа данных с использо-
ванием группы инструментов «Средства анализа таблиц», входящих в
состав надстроек для Excel. Рассматриваются инструменты «Анализ
ключевых факторов влияния», «Обнаружение категорий», «Заполне-
ние по примеру», «Прогноз», «Выделение исключений», «Анализ
сценариев», «Расчет прогноза» и «Анализ покупательской корзины».
В работах 6–9 рассматривается группа инструментов «Клиент
интеллектуального анализа данных Excel», и их использование для
подготовки данных, создания модели интеллектуального анализа
данных, оценки точности прогноза и трассировки.
Лабораторные работы 10–16 посвящены проведению интеллек-
туального анализа данных с помощью профессиональных средств
разработки и администрирования, поставляемых в составе СУБД Mi-
crosoft SQL Server 2008. Это Business Intelligence Development Studio
и SQL Server Management Studio. С помощью указанных инструмен-
тов проводится создание источника данных и представления источ-
ника данных, структур и моделей интеллектуального анализа, выпол-
няется сравнение точности прогнозирования, разрабатываются и вы-
полняются прогнозирующие запросы.

111
Выполнение данного лабораторного практикума позволит выра-
ботать практические навыки в области решения задач интеллектуаль-
ного анализа.

5.1. РАБОТА 1. НАДСТРОЙКИ ИНТЕЛЛЕКТУАЛЬНОГО


АНАЛИЗА ДАННЫХ ДЛЯ MICROSOFT OFFICE
Один из возможный вариантов проведения интеллектуального
анализа данных средствами Microsoft SQL Server 2008 – использова-
ние надстроек для пакета Microsoft Office 2007. В этом случае, источ-
ником данных для анализа может служить электронная таблица Excel.
Данные передаются на SQL Server 2008, там обрабатываются, а ре-
зультаты возвращаются Excel для отображения.
Для использования подобной «связки», вам должен быть досту-
пен MS SQL Server 2008 в одной из версий, поддерживающих ин-
струменты Data Mining (Enterprise, Developer или c некоторыми огра-
ничениями – Standard), MS Office 2007 в версии Professional или более
старшей. На момент написания этого материала, надстроек для MS
Office 2010 еще не было. Но 32-х разрядная версия Excel 2010 может
работать с текущей версией надстроек. В дальнейшем скриншоты бу-
дут приводиться именно для сочетания MS Office 2010 и надстроек
интеллектуального анализа для Office 2007.
Сами надстройки интеллектуального анализа данных для MS
Office 2007 свободно доступны на сайте Microsoft.
Особых сложностей процесс установки надстроек не вызывает.
Единственное, что хочется отметить, по умолчанию предлагается
устанавливать не все компоненты. Но для выполнения дальнейших
лабораторных, лучше сделать полную установку (рис. 5.1).
Следующий шаг – конфигурирование MS SQL Server для рабо-
ты с надстройками. Для этого используется мастер «Приступая к ра-
боте» (Getting Started), запускаемый из главного меню (рис. 5.2).
Для того, чтобы выполнить конфигурацию MS SQL Server 2008
надо иметь права администратора.

112
Рис. 5.1 Выбор устанавливаемых компонент

Рис. 5.2. Запуск мастера «Приступая к работе»

На первом шаге мастер предлагает выбрать, скачать ли пробную


версию MS SQL Server, конфигурировать существующий экземпляр
сервера, где у пользователя администраторские права, или использо-
вать сервер, на котором пользователь не является администратором
(рис. 5.3). Рассмотрим вариант 2, при выборе которого мастер пока-
жет окно со ссылкой на инструмент «Средство настройки сервера».
Его также можно запустить из меню Пуск->Надстройки интеллекту-
ального анализа данных-> Средство настройки сервера (рис. 5.4).

113
Рис. 5.3. Выбор сервера баз данных

Рис. 5.4. Средство настройки сервера

114
Следующее окно предлагает выбрать конфигурируемый сервер
(рис. 5.5). По умолчанию стоит “localhost”, что соответствует неиме-
нованному экземпляру MS SQL Server, установленному на тот же
компьютер, на котором запущено «средство настройки». Если это не
так, надо указать имя сервера или для именованного экземпляра <имя
сервера>\<имя экземпляра>.

Рис. 5.5. Выбор используемого экземпляра MS SQL Server

В окне, представленном на рис. 5.6, дается разрешение на созда-


ние временных моделей интеллектуального анализа (Allow creating
temporary mining models). Временная модель отличается от постоян-
ной тем, что создается только на время сеанса пользователя. Когда
пользователь, проводящий анализ с помощью надстроек, завершит
сессию (закроет Excel), модель будет удалена, но результаты анализа
сохранятся в электронной таблице. Постоянная модель автоматически
не удаляется, хранится на сервере, и к работе с ней можно вернуться.
После этого предлагается создать новую базу данных аналити-
ческих служб (рис. 5.7) или выбрать для работы существующую.

115
Рис. 5.6.Установка разрешения для создания временных
моделей интеллектуального анализа

Рис. 5.7 Создание или выбор базы данных аналитических служб

116
В окне, представленном на рис. 5.8, можно добавить пользова-
телей в список администраторов созданной базы данных. Это нужно
для создания на сервере постоянных моделей. Если использовать
только временные модели, права администратора пользователю не-
обязательны.

Рис. 5.8. Добавление пользователей в список


администраторов выбранной базы

По окончании настройки, можно открыть Excel (а при использо-


вании мастера «Приступая к работе», он будет запущен автоматиче-
ски с документом «Образцы данных…») и протестировать подключе-
ние к серверу. Для этого надо перейти на вкладку DataMining и в раз-
деле Connection (подчеркнут на рис. 5.9) нажать кнопку
DMAddinsDB. Появится окно, отображающее настроенные соедине-
ния. Кнопка Test Connection позволяет проверить подключение.
Если настроенного соединения нет, и кнопка DMAddinsDB вы-
глядит как на рис. 5.11, то нужно создать новое соединение, выбрав в
окне Analysis Services Connection (рис. 5.10) кнопку New.

117
Рис. 5.9. Вкладка DataMining

Рис. 5.10.Настроенные соединения

Рис. 5.11. Настроенных соединений нет

118
При создании нового подключения (рис. 5.12) надо указать сер-
вер, к которому планируете подключаться, и в разделе Catalog name
рекомендуется явным образом указать базу данных, с которой будет
работать надстройки. Когда соединение создано и проверено, можно
начинать работу.

Рис. 5.12.Создание нового подключения

В следующих нескольких лабораторных работах будет исполь-


зоваться уже подготовленный набор данных для анализа. Если вы
планируете работать с собственными данными, необходимо учиты-
вать, что инструменты интеллектуального анализа таблиц работают с
данными, отформатированными в виде таблицы. Поэтому ваши дан-
ные в Excel нужно выделить и выбрать «Форматировать как таблицу»
(рис. 5.13). После этого надо выбрать стиль таблицы и указать заголо-
вок. Вкладка Analyze с инструментами Table Analysis Tools появится
при щелчке в области таблицы (рис. 5.14).

119
Рис. 5.13. Форматирование подготовленных данных

Рис. 5.14. Вкладка с инструментами интеллектуального


анализа таблиц

Задание 1. Установите надстройки интеллектуального анализа


данных для Microsoft Office 2007. Выполните необходимую конфигу-
рацию MS SQL Server 2008 (2008 R2) для работы с надстройками.
Создайте и протестируйте подключение.
Задание 2. Подготовленный набор данных (для примера, можно
взять приведенный на рис. 5.14) отформатируйте как таблицу. Убе-
дитесь, что вы можете получить доступ к вкладке с инструмента-
ми интеллектуального анализа таблиц.

120
5.2. РАБОТА 2. ИСПОЛЬЗОВАНИЕ
ИНСТРУМЕНТОВ «ANALYZE KEY INFLUENCERS»
И «DETECT CATEGORIES»
Начнем непосредственное изучение инструментов интеллекту-
ального анализа данных (Data Mining, сокр.DM). В состав пакета
надстроек для MS Office 2007 входит электронная таблица с образца-
ми данных. Она может быть открыта из меню Пуск-> Надстройки ин-
теллектуального анализа данных Microsoft SQL Server 2008. Но пере-
ведено содержимое файла только частично – первая страница с оглав-
лением и некоторые заголовки. Поэтому в работе будет использовать-
ся локализованный набор данных для анализа, доступный для скачи-
вания по адресу: http://russiandmaddins.codeplex.com/
Скачайте файл, откройте его и отформатируйте данные на листе
«клиенты» как таблицу (см. лабораторную 1). Перейдите на вкладку
Analyze (рис. 5.15). Анализируемая таблица содержит данные фирмы,
продающей велосипеды. В ней собрана информация о клиентах
(идентификатор, семейное положение, пол и т. д.) и указано, приоб-
рел клиент велосипед или нет.

Рис. 5.15. Подготовленный набор данных

121
Анализ ключевых факторов влияния
Инструмент Analyze Key Influencers позволяет узнать, как зави-
сит интересующий нас параметр от других. При этом важно правиль-
но определить, что и от чего может зависеть. Собственно в этом отча-
сти и заключается мастерство аналитика, основанное на его знании
предметной области и используемых методов DM.
В связи с тем, что будет оцениваться степень взаимного влияния
параметров друг на друга, стоит сразу убрать из рассмотрения полно-
стью независимые и наоборот, полностью зависимые атрибуты.
Пусть, например, мы хотим оценить влияние различных факторов на
уровень заработной платы человека. Если у нас есть поле, содержа-
щее уникальный идентификатор (например, порядковый номер запи-
си в таблице или номер паспорта), его стоит убрать из рассмотрения,
как не влияющий на значение исследуемого параметра. Другой при-
мер, пусть у нас есть значения заработной платы за месяц и за год
(рассчитываемое как заработная плата за месяц, умноженная на 12).
Мы знаем, что эти значения всегда связаны, искать зависимость одно-
го от другого средствами DM не имеет смысла, а имеющаяся сильная
зависимость скроет влияние других факторов, которое мы как раз и
хотим выявить.
Теперь определим, от чего зависит решение клиента о покупке
велосипеда. Нажимаем на кнопку Analyze Key Influencers и указываем
в качестве целевого столбца столбец «Приобрел велосипед»
(рис. 5.16). Перейдем по ссылке «Choose columns to be used for
analysis», чтобы указать параметры, влияние которых мы хотим оце-
нить (рис. 5.17). Здесь сбросим отметку напротив «ID» и «Приобрел
велосипед» (хотя последнее можно и не делать).
После запуска процедуры анализа (по кнопке Run, рис. 5.16) бу-
дет сформирован отчет о факторах влияния и предложено формиро-
вание дополнительного сравнительного отчета.

122
Рис. 5.16. Выбор зависимого параметра для анализа

Рис. 5.17. Выбор параметров, от которых


зависит анализируемый

В основном отчете указывается столбец (Column), его значение


(Value), значение целевого столбца, с которым оно связывается (Fa-
vors) и уровень влияния (Relative Impact), оцениваемый по шкале от 0
до 100 балов. Из представленного на рис. 5.18 отчета видно, что на
решение не покупать велосипед в наибольшей степени влияет нали-
чие 2-х автомобилей. В то же время не следует воспринимать оценку
100 баллов, как признак того, что в 100 % случаев владельцы 2-х ма-
шин велосипед не покупали (посмотрите набор данных, там есть и
сочетания «2 машины – велосипед куплен», но их меньшинство).

123
Второй по уровню влияния на отказ от покупки фактор – «Семейное
положение» =«женатый, замужняя». Наибольшее влияние на положи-
тельное решение о приобретении велосипеда оказывать отсутствие у
клиента машины.

Рис. 5.18. Основной отчет

Если добавить сравнительный отчет для двух выбранных значе-


ний (рис. 5.18, Add Report), то можно увидеть, чем отличается выбор
в пользу одного значения целевого столбца от выбора в пользу друго-
го (рис. 5.19).
В нашем примере просто произойдет перегруппировка исходно-
го отчета, так как возможных значений всего 2. В других случаях, до-
полнительный отчет позволяет провести детальное сравнение двух
выбранных вариантов.
Как отмечается в литературе [1], если целевой или другой стол-
бец, обрабатываемый инструментом Analyze Key Influencers, содер-
жит много различных числовых значений, то проводится дискретиза-
ция. Весь интервал значений делится на несколько диапазонов, каж-
дый из которых рассматривается как одно из возможных значений
(например, вместо точного значения 2,5 мы получим «диапазон от 2
до 3»).

124
Рис. 5.19. Сравнительный отчет

Задание 1. Проведите анализ в соответствии с рассмотренным


примером.
Задание 2. На том же наборе данных проанализируйте зависи-
мость уровня дохода от образования, семейного положения, типа
работы, пола, возраста и региона проживания клиента. Опишите
результаты. Дополните отчет сравнительным анализом для самого
низкого и следующего за ним диапазона дохода. А затем – для самого
низкого и самого высокого диапазона. Опишите результаты прове-
денного анализа и предложите их интерпретацию.
Задание 3. Предложите свой вариант анализа данных, и пример
использования полученных результатов.

125
Сформированный отчет будет доступен и в случае, если вы от-
кроете этот файл в Excel на другом компьютере (без подключения к
аналитическим службам SQL Server).
Чтобы вернуть данные в исходное состояние нужно удалить ли-
сты со сгенерированными инструментом отчетами.

Обнаружение категорий
Инструмент Detect Categories позволяет решить задачу класте-
ризации, т. е. разделения всего множества вариантов на естественные
группы, члены которых наиболее близки по ряду признаков. Подоб-
ная задача также называется задачей сегментации.
В нашем наборе данных для Excel есть описание множества
клиентов. Нужно разделить их на небольшое количество групп, чтобы
отдельным группам сформировать наиболее подходящее им специ-
альное предложение. В связи с тем, что в процессе работы инстру-
мент добавляет данные в исходную таблицу, рекомендуется перед
началом работы сделать ее копию (рис. 5.20).

Рис. 5.20. Создание копии листа Excel

После этого нажимаем кнопку Detect Categories и настраиваем


параметры (рис. 5.21). Здесь хочется обратить внимание на атрибут

126
ID, который не имеет смысла учитывать в ходе анализа: он автомати-
чески исключен инструментом. В нашем случае, остальные атрибуты
можно оставить. Еще раз хотелось бы повторить, что этот выбор каж-
дый раз делается исходя из особенностей предметной области.
Кроме выбора параметров, можно явно задать число категорий
(или оставить настройку по умолчанию – автоматическое определе-
ние). Также по умолчанию поставлен флажок «Append a Category col-
umn to the original Excel table», указывающий, что к записям в исход-
ной таблице будет добавлен столбец с названием категории.

Рис. 5.21. Выбор анализируемых параметров

Сформированный отчет содержит 3 раздела. В первом – указаны


определенные инструментом категории и число строк, попадающих в
каждую из них (рис. 5.22). Поле с названием категории допускает ре-
дактирование и можно сопоставить категории более осмысленное
имя. Например, как будет показано ниже, для клиентов первой кате-
гории характерен низкий доход, и ее можно так и назвать. Когда вве-
дено новое название, везде, кроме диаграммы Category Profiles Chat,
оно автоматически заменит «Category 1». Чтобы название поменять и
на диаграмме, надо нажать <Alt>+<Ctrl>+<F5>.

127
Рис. 5.22. Выделенные категории

Следующий раздел отчета описывает характеристики выделен-


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

Рис. 5.23. Описание категории

128
Третий раздел отчета – это диаграмма профилей категорий. Она
показывает количество строк данных в каждой категории с каждым
значением выбранных параметров. По умолчанию отображается
только один параметр. Для рассматриваемого примера это возраст. Но
в нижней части диаграммы есть фильтр Column, с помощью которого
можно изменить число параметров. Например, на рис. 5.24 для каж-
дой категории отображается распределение по возрасту и доходу. Из
него видно, что клиенты переименованной нами категории «Низкий
доход» на самом деле имеют очень низкий доход. А клиенты в «кате-
гории 3» в подавляющем большинстве очень молоды.

Рис. 5.24. Диаграмма профилей категорий

Рис. 5.25 показывает, что всем записям исходной таблицы те-


перь сопоставлена категория, к которой они относятся. А с помощью
фильтров можно просмотреть записи, относящиеся к выбранной кате-
гории.

129
Задание 4. Переименуйте категорию Category 3.
Задание 5. Проведите анализ параметров, характеризующих
оставшиеся категории, и дайте им осмысленные названия.

Рис. 5.25. Сопоставление категорий


записям в исходной таблице

5.3. РАБОТА 3. ИСПОЛЬЗОВАНИЕ


ИНСТРУМЕНТОВ «FILL FROM EXAMPLE»
И «FORECAST».
Оба рассматриваемых инструмента используются для решения
задач прогнозирования неизвестных значений параметров. Поэтому в
обоих случаях требуется обучающий набор данных, на базе которого
строится модель, применяемая для предсказания.

Заполнение по примеру
В качестве исследуемого набора данных, будет использоваться
тот же локализованный пример для Excel, что и в прошлой лабора-
торной. Нужные данные находятся на листе «Заполнение из примера»
(рис. 5.26).

130
Рис. 5.26. Набор данных для инструмента Fill From Example

Набор данных описывает ряд клиентов магазина. Для некоторых


из них отмечено, является ли данный клиент «высокодоходным» или
нет. Эти строки будут использоваться как обучающая выборка. Зада-
чей анализа будет являться оценка остальных клиентов по этому па-
раметру.
Для решения этой задачи используется алгоритм Microsoft Lo-
gistic Regression. Для создания модели в обучающей выборке должны
быть представлены варианты со всеми возможными значениями це-
левого столбца. Как правило, чем больше характерных примеров в
обучающей выборке, тем более качественно будет обучена модель.
Данный инструмент непригоден для задачи предсказания значе-
ний параметра, который может принимать непрерывные числовые
значения.
Еще одна особенность – анализ проводится по столбцам (т. е.
предсказывается значение столбца). Если ряд, который необходимо
заполнить, хранится в виде строки, перед началом анализа надо вы-
полнить транспонирование (скопировать в буфер, выбрать в кон-
текстном меню «Специальная вставка» и отметить флажок «Транспо-
нировать»).
Запустим инструмент Fill From Example. В первом окне будет
предложено выбрать столбец, содержащий образцы данных. В нашем
случае он автоматически определен верно – «Высокодоходный кли-

131
ент». Как и в предыдущих случаях, по ссылке «Choose columns to be
used for analysis», можно выбрать столбцы, учитываемые при анализе.
Эвристический механизм определил, что поле ID учитывать не надо.
На практике, рекомендуемые настройки стоит менять только в случае,
если точно известно о взаимной независимости параметров.
После запуска, инструмент формирует отчет об обнаруженных
шаблонах (рис. 5.27), и добавляет столбец с предсказанными значени-
ями к исходной таблице.
В отчете описываются выявленные зависимости между значени-
ем целевого столбца и значениями других столбцов.

Рис. 5.27. Отчет об обнаруженных шаблонах

На рис. 5.27 видно, что значение параметра «Расстояние до ра-


боты» равное «2‒5 км» имеет самый большой удельный вес при вы-
боре варианта «Да». Это можно интерпретировать, как «расстояние
2‒5 км до работы во многом определяет выбор в пользу покупки ве-
лосипеда».

132
Для каждой строки рассчитывается итоговая оценка для каждого
варианта (в примере  для «Да» и «Нет») и делается выбор в пользу
значения с наибольшим суммарным удельным весом. Оно заносится в
столбец с суффиксом «_Extended» (на рис. 5.28 «Высоко_доходный
клиент_Extended»). Для записей, на которых модель обучалась, зна-
чение этого столбца совпадает с образцом.
Предположим, мы получили дополнительные данные о каких-то
клиентах. Можно изменить образец (рис. 5.28, последняя строка) и
снова запустить инструмент. Новые значения будут получены с уче-
том уточнений в наборе обучающих данных. Подобные итерации поз-
воляют последовательно уточнять производимую оценку значений.

Рис.5.28. Полученные оценки заносятся в исходную таблицу

Задание 1. Проведите анализ, аналогичный описанному выше, и


прокомментируйте полученные результаты. Измените обучающий
набор данных следующим образом. Найдите строку со значением
«расстояние до работы 2-5 км», (например, строку с идентифика-
тором 19562, 97-я строка в таблице) и для параметра «Высоко-
доходный клиент» поставьте значение «Нет». Повторите анализ.
Как изменился отчет о шаблонах? Объясните эти изменения.
Для того чтобы полностью удалить результаты работы инстру-
мента, достаточно удалить лист с отчетом и добавленный столбец в
таблице с исходными данными.

133
Прогноз
Инструмент Forecast позволяет построить прогноз значений
числового ряда. Ряд должен быть представлен столбцом в таблице
(если исследуемые значения организованы в виде строки, требуется,
как и в случае инструмента «Fill From Example», выполнить транспо-
нирование).
В используемом нами файле Excel на листе «Прогнозирование»
есть набор данных по суммам продаж велосипедов марки М200 по
месяцам в трех разных регионах. Таким образом, для исследования
мы имеем три числовые последовательности, возможно связанные
между собой (рис. 5.29).

Рис. 5.29. Образец данных для прогнозирования – продажи


по месяцам велосипедов модели M200 в разных регионах

134
В процессе работы инструмент строит модель с использованием
алгоритма временных рядов (Microsoft Time Series). Для его работы
необходимо, чтобы в исследуемых столбцах были только числа, про-
пуски допустимы. Предсказывать можно непрерывные числовые или
«денежные» (тип currency) значения. Инструмент не рассчитан на
предсказание дат.
Как отмечается в литературе [1], инструмент ищет в анализиру-
емой последовательности шаблоны следующих типов:
1) тренд  тенденция изменения значений. Тренд может быть
восходящим (возрастание значений ряда) или нисходящим (уменьше-
ние значений);
2) периодичность (сезонность)  событие повторяется через
определённые интервалы;
3) взаимная корреляция  зависимость значений одного ряда от
других (например, стоимость акций нефтяных компаний от цен на
нефть). Алгоритмы, обнаруживающие взаимную корреляцию, входят
в поставку MS SQL Server 2008 версии Enterprise или Developer, а в
версии Standard недоступны.
Настройка параметров заключается в выборе анализируемых
столбцов, количества предсказываемых значений ряда, указания вре-
менной отметки и типа периодичности (рис. 5.30).
В нашем случае, в качестве отметки времени логично выбрать
поле «Год/месяц» (инструмент изменил его название на «Год_месяц»
для совместимости с требованиями SQL Server) и согласиться с ис-
ключением его из списка предсказываемых. Надо отметить, что зна-
чения в столбце, используемом в качестве временной метки, должны
быть уникальны.
Что касается периодичности, то предлагаемые для выбора вари-
анты определяются следующим образом [1]:
‒ Hourly (почасовая) – ищется периодичность 12;

135
‒ Daily (дневная) – ищется периодичность 5 и 7 (рабочие дни и
неделя полностью);
‒ Weekly (недельная) – 4 и 13 (число недель в месяце и кварта-
ле);
‒ Monthly (месячная) – 12 (число месяцев в году);
‒ Yearly – инструмент будет автоматически обнаруживать пери-
одичности.

Рис. 5.30. Настройка параметров инструмента Forecast

Если периодичность неизвестна, то рекомендуется оставить «de-


tect automatically», чтобы инструмент проверил данные на наличие
периодичности разных типов.
По результатам анализа создается отчет с графиком (рис. 5.31),
на котором непрерывной линей обозначен «исторический тренд», по-
строенный по имеющимся значениям. Пунктирной линией показано

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

Рис. 5.31. Отчет инструмента «Прогноз»

На рис. 5.32 добавленные значения выделены цветом фона. Что-


бы продолжить ряд временных меток, можно выделить несколько по-
следних значений столбца «Год/месяц» и незаполненную область в
строках с прогнозом, выбрать на панели управления в ленте «Глав-
ная» кнопку «Заполнить» (на рис. 5.32 подчёркнута), из выпадающего
списка выбрать вариант «Прогрессия» и указать автоматическое
определение шага.

137
Недостающие значения будут добавлены. Теперь и на графике
будут автоматически проставлены недостающие временные метки.
Чтобы убрать результаты работы инструмента, надо удалить
лист отчета и строки исходной таблицы с новыми значениями.

Рис. 5.32. Предсказанные значения и заполнение


столбца с метками

Задание 2. С помощью инструмента Forecast постройте про-


гноз продаж на год (12 значений). Проанализируйте график. На ваш
взгляд, какой тип периодичности обнаружил инструмент в исходных
данных и использует для предсказания?

138
5.4. РАБОТА 4. ИСПОЛЬЗОВАНИЕ
ИНСТРУМЕНТОВ «HIGHLIGHT EXCEPTIONS»
И «SCENARIO ANALYSIS».
Выделение исключений
Как следует из названия, инструмент позволяет выявить данные,
выделяющиеся среди имеющегося набора. Это может быть полезно в
ряде случаев. Во-первых, это могут быть ошибочные данные (напри-
мер, результаты ошибки оператора при вводе каких-то значений). Во-
вторых, исключения могут представлять отдельный интерес (как,
например, в случае обнаружения мошеннических действий с банков-
скими картами и т. д.). Кроме того, анализ исключений может рас-
сматриваться как предварительная часть интеллектуального анализа
данных с помощью других методов. В частности, это позволяет
убрать нетипичные примеры из обучающей выборки.
В ходе работы инструмент Highlight Exceptions создает времен-
ную модель интеллектуального анализа с использованием алгоритма
Microsoft Clustering. Для каждой анализируемой строки оценивается
степень принадлежности выявленным кластерам. Значения, находя-
щиеся далеко от всех кластеров, помечаются как исключения.
При запуске инструмента можно отметить столбцы, не учитыва-
емые при анализе. В рекомендациях по использованию [1,3] указыва-
ется, что желательно исключить из анализа столбцы с уникальными
значениями (имена, идентификаторы), а также содержащие много пу-
стых значений или произвольный текст. На рис. 5.33 видно, что при
анализе набора данных «Клиенты» инструмент предлагает исключить
из рассмотрения поле ID.
По итогам работы формируется отчет (рис. 5.34), а в исходном
наборе данных исключения выделяются цветом (рис. 5.35).

139
Рис. 5.33. Запуск инструмента Highlight Exceptions

Рис. 5.34. Отчет по проведенному анализу данных

140
Рис. 5.35. Исключения выделяются цветом,
что позволяет произвести сортировку

На рис. 5.34 видно, что инструмент позволяет указать порог от-


клонения от нормы (Exception threshold), измеряемый в процентах
(оценка вероятности того, что выделенное значение относится к ис-
ключениям). Уменьшение порога приведет к тому, что больше запи-
сей будет рассматриваться как исключения, увеличение – наоборот.
При значении по умолчанию равном 75 %, в нашем наборе данных
обнаружено 34 исключения. Отчет показывает, в каких столбцах
сколько исключений было обнаружено.
Перейдем на лист Excel с данными. Рассматриваемые как вы-
бросы значения выделяются в таблице цветом: вся строка – коричне-
вым, конкретное значение – желтым. Чтобы сгруппировать нужные
строки можно воспользоваться функциями Excel, позволяющими
провести сортировку по цвету.
Также можно воспользоваться инструментами вкладки «Вид»,
чтобы создать новое окно и расположить рядом с окном с отчетом и
данными (рис. 5.36). Пусть в отобранном наборе записей мы обнару-

141
жили ошибку. Скажем расстояние до работы у некоего клиента из
США, обладающего двумя машинами, не «0‒1 км», а «5‒10 км»
(именно поэтому ему нужно в семье 2 машины). Если мы изменим
значение, будет произведен автоматический пересчет. В случае, пред-
ставленном на рис. 5.36, новое значение уже не рассматривается как
выброс.

Рис. 5.36. Исправление ошибочного значения

Обратите внимание, что не только изменилась раскраска строки


таблицы, но и произошли изменения в отчете, показывающем теперь
наличие 33 исключений. Автоматический пересчет работает только в
том случае, если сессия работы с аналитическими службами SQL
Server остается открытой. Если таблица Excel была закрыта и снова
открыта, то автоматического пересчета не будет (нужно снова прове-
сти анализ).
Также в описаниях отмечается, что инструмент реагирует толь-
ко на изменение данных в диапазоне ячеек, использовавшемся при

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

Рис. 5.37. Увеличение порога отклонения


уменьшает число исключений

Повторный запуск инструмента удалит результаты предыдуще-


го анализа. Учитывая, что проводимые инструментом изменения до-
статочно сложны (раскраска строк таблицы и т. д.), если нужно уда-
лить результаты работы, рекомендуется запустить повторный анализ,
согласиться с удалением результатов и потом в окне, аналогичном
представленному на рис. 5.33, нажать кнопку Close (отказаться от
анализа данных).

143
Задание 1. Проведите анализ исключений для набора данных
«Клиенты» и значения порога в 90 %. Предложите интерпретацию
полученных результатов.
Задание 2. Проведите анализ исключений для набора данных
«Прогнозирование» (продажи по месяцам в разных регионах). Пред-
ложите интерпретацию полученных результатов.

Анализ сценариев
Инструмент Scenario Analysis позволяет моделировать влияние,
оказываемое изменением одного из параметров (значений одного
столбца) на другой, связанный с первым. В основе работы инструмен-
та лежит использование алгоритма Microsoft Logistic Regression. Для
формирования временной модели требуется обучающая выборка, со-
держащая не менее 50 записей [3].
Инструмент Scenario Analysis включает две составные части –
«Анализ сценария поиска решений» (Goal Seek) и «Анализ возмож-
ных вариантов» («What-If»).
«Анализ сценария поиска решений» (Goal Seek)
Использование инструмента Goal Seek позволяет оценить, смо-
жем ли мы достичь желаемого значения в целевом столбце, меняя
значения выбранного параметра. С его помощью можно провести
анализ как для одной записи, так и для всей таблицы. Используя этот
инструмент надо быть готовым, что не для всех вариантов запроса
может быть получен ответ. Это может быть связано с тем, что в ис-
ходных данных нет интересующих нас сочетаний. Также могут быть
проблемы из-за типов данных.
Кроме того, нельзя забывать, что запрос нужно формировать с
учетом знаний о предметной области. Например, можно запросить
систему, если человек хочет увеличить годовой доход на 20 процен-
тов, надо ли ему приобретать велосипед. И даже получить какой-то
ответ. Но понятно, что в такой постановке сам вопрос является бес-
смысленным.

144
Пусть мы хотим узнать, как будет влиять образование на уро-
вень достатка человека. Сначала проведем анализ для одной записи.
Например, нас интересует клиент с идентификатором 12496 (первая
запись в наборе данных). Откроем набор данных «Клиенты» и на
вкладке Analysis выберем Scenario Analysis->Goal Seek (рис. 5.38).

Рис. 5.38. Выбор инструмента Goal Seek

В окне параметров (рис. 5.39) укажем целевой столбец – «До-


ход», а также желаемое значение – 125 % от текущего. В этом случае,
инструмент считает успешным результат, который не меньше задан-
ного (в нашем примере 40000 × 1,25 = 50000 и более). Если задавае-
мое значение меньше 100 %, то успешным считается результат, кото-
рый не больше заданного.

Рис. 5.39. Настройка параметров для Goal Seek

145
Также можно указать точное значение и диапазон (выбрав “In
range”). Для значений, не являющихся числовыми, варианты “Percent-
age” и “In range” будут неактивны. Для достижения искомого значе-
ния будем менять столбец «Образование».
Перейдя по ссылке “Choose columns to be used for analysis”, от-
метим, что при анализе в рассмотрение не берем столбцы «ID», «Де-
ти», «Расстояние до работы», «Приобрел велосипед». После закрытия
окна “Advanced Columns Selection” стоит еще раз проверить настрой-
ки в секции “Goal to seek” – иногда при переходе между окнами пере-
ключатель между “Exactly”, “Percentage” и “In range” сбрасывается в
значение по умолчанию (“Exactly”).

Рис. 5.40. Результат анализа для одной


строки – решение найдено

Результат анализа, выполненного по нажатию кнопки Run,


представлен на рис. 5.40. Для выбранной строки найден шаблон, ре-
комендующий для параметра «Образование» значение «Неокончен-

146
ное высшее». При этом уровень достоверности – Confidence (иногда
верхняя часть надписи затирается, как на рисунке), оценивается как
очень низкий (“Very low”).
Если переместиться на следующую строку и снова нажать Run,
получим результат для новых данных (рис. 5.41). В этом случае, под-
ходящего решения не было найдено, и был предложен наиболее близ-
кий вариант.

Рис. 5.41. Результат анализа для одной строки – решение не найдено

Рис. 5.42. Анализ для всей таблицы

147
Если в секции “Specify Row or Table” установить переключатель
в “Entire table”, то сценарии будут посчитаны для всех строк
(рис. 5.42). Результаты будут указаны в двух столбцах, добавленных в
исходную таблицу. Для тех строк, которые отмечены крестиком в
красном круге, соответствующего желаемому сценарию шаблона
найдено не было.
Задание 3. Проведите анализ для отдельной строки и таблицы,
аналогичный описанному выше. Прокомментируйте результаты.
Примечание. Запуск процедуры анализа для ряда других комби-
наций столбцов (например – целевой столбец «покупка велосипеда» =
«да», независимая переменная – «расстояние до работы») приводит
к ошибке «Query (1, 50) Синтаксический анализатор: Неверный син-
таксис "value".», видимо связанной с некорректной обработкой не-
которых типов данных.

«Анализ возможных вариантов» («What-If»)


Инструмент What-If позволяет решить обратную по отношению
к Goal Seek задачу: оценить значение целевой переменной при опре-
деленном изменении заданного параметра.
Например, можно оценить, как изменился бы уровень дохода
человека, если бы повысился его уровень образования. Перейдем на
запись с идентификатором 12697 и запустим инструмент: Scenario
Analysis->What-If. Укажем параметры сценария: образование меняет-
ся на «Высшее» и целевой столбец «Доход». Полученный для строки
результат показывает, что при изменении уровня образования доход
может несколько вырасти (исходное значение 90000, среднее значе-
ние для нового шаблона 104448). Но степень уверенности в прогнозе
не слишком высокая (рис. 5.43).
Аналогично предыдущему инструменту, подобный анализ сце-
нария можно сделать и для всей таблицы целиком. В этом случае к
исходной таблице добавляются два столбца – один показывает новое
значение целевого параметра, второй – оценку достоверности
(рис. 5.44). Достоверность оценивается числом от 0 до 100: 100 – мак-

148
симальная достоверность (абсолютная уверенность в прогнозе), 0 –
минимальная.

Рис. 5.43. Работа инструмента What-If для отдельной строки

Рис. 5.44. Прогноз What-If для всей таблицы

Для того чтобы удалить результаты работы с таблицей инстру-


ментов What-If и Scenario Analysis, достаточно удалить добавленные
столбцы. При работе с отдельными строками, никаких дополнитель-
ных действий не требуется.
Задание 4. Проведите анализ данных, аналогичный описанному
выше.

149
5.5. РАБОТА 5. ИСПОЛЬЗОВАНИЕ
ИНСТРУМЕНТОВ «PREDICTION CALCULATOR»
И «SHOPPING BASKET ANALYSIS»
Расчет прогноза
Инструмент Prediction Calculator помогает сгенерировать и
настроить «калькулятор», который позволяет оценить шансы на по-
лучение ожидаемого значения целевого параметра без подключения к
аналитическим службам SQL Server. В частности, такая возможность
может быть очень полезна для удаленных пользователей.
В качестве учебного набора данных в этой части лабораторной
будем использовать локализованный пример для Excel, взятый с
http://russiandmaddins.codeplex.com/.
Перейдем на набор данных «Клиенты» и на вкладке Analyze вы-
берем Prediction Calculator. В окне настроек надо указать целевой
столбец и искомое значение (рис. 5.45).

Рис. 5.45. Настройки инструмента Prediction Calculator

150
Если значения целевого столбца рассматриваются как числовые
из непрерывного диапазона, то можно указать, как точное значение,
так и желаемый интервал. Иначе – только точное значение.
Пусть цель анализа – определить, купит ли клиент велосипед. В
качестве целевого столбца указываем «Приобрел велосипед» и значе-
ние «Да». Далее можно указать столбцы для анализа. Как и в преды-
дущих работах, рекомендуется исключать из рассмотрения столбцы с
уникальными значениями и столбцы, один из которых дублирует дру-
гой (например, точное значение заработной платы и диапазон зара-
ботной платы).
Инструмент всегда формирует отчет Prediction Calculator Report,
кроме того, по умолчанию формируются два необязательных отчета –
Prediction Calculator («калькулятор» прогноза в виде таблицы Excel) и
Printable Calculator (таблица калькулятора для печати и ручной обра-
ботки).
Чтобы лучше разобраться с результатами работы инструмента,
перейдем сначала на лист с отчетом Prediction Calculator. В верхней
части отчета расположен сам калькулятор (рис. 5.46), в нижней – таб-
лица баллов, соответствующих различным значениям параметров
(рис. 5.47).

Рис. 5.46. «Калькулятор»

151
Работая с калькулятором, можно описать анализируемый при-
мер, указывая значения для каждого параметра. Значения в столбец
Value можно вводить или выбирать из выпадающих списков (что
лучше, так как меньше шансов ввести некорректное значение или
диапазон). Для описываемого примера рассчитывается сумма баллов,
которая сравнивается с рекомендуемым пороговым значением. Если
значение выше «порога», то прогноз получает значение «истина» (на
рисунке сумма баллов 572, пороговое значение 565). Вторая часть от-
чета поясняет полученный результат, показывая, сколько баллов за
какое значение ставится.

Рис. 5.47. Таблица баллов для параметров

152
Представленный на рис. 5.48 отчет «Printable Calculator» позво-
ляет вывести на печать готовую форму для ручного подсчета баллов и
получения оценки без использования компьютера. Это может быть
удобно, например, для торговых представителей или других сотруд-
ников, работающих вне офиса и не имеющих доступа к компьютеру.
Все что нужно для расчета прогноза – отметить варианты, просумми-
ровать баллы и сравнить с пороговым значением.
Теперь перейдем к более интересному вопросу – как же было
определено пороговое значение. Отчет Prediction Calculator Report
позволяет с этим разобраться.

Рис. 5.48. Отчет Printable Calculator

153
По итогам анализа формируется прогноз, который может быть
отнесен к одной из четырех категорий [1]:
1) истинный позитивный прогноз (англ. True Positive) – верный
прогноз. Например, клиент, для которого прогноз показал истину, на
самом деле заинтересован в покупке велосипеда. Магазин получил
прибыль;
2) истинный негативный прогноз (англ. True Negative) – верный
негативный прогноз. Клиент, для которого прогноз показал незаинте-
ресованность в покупке, на самом деле не собирается покупать вело-
сипед. Магазин не получил прибыли, но и не понес затрат (на рассыл-
ку рекламных предложений и проч.);
3) ложный позитивный прогноз (англ. False Positive; ошибка 1
рода) – неверный прогноз, показывающий, что клиент хочет сделать
покупку, хотя на самом деле это не так. Может привести магазин к за-
тратам на сопровождение клиента;
4) ложный негативный прогноз (англ. False Negative; ошибка 2
рода) – неверный прогноз, показывающий, что клиент не хочет сде-
лать покупку, хотя на самом деле он в ней заинтересован. Может при-
вести к упущенной прибыли.
Отчет Prediction Calculator Report позволяет указать прибыль от
истинных прогнозов и убыток от ложных. На основе этих данных
определяется пороговое значение, обеспечивающее максимум прибы-
ли. По умолчанию, для истинного позитивного прогноза указывается
прибыль 10 (долларов или других единиц), для ложного позитивного
– такой же убыток (рис. 5.49, таблица в левой верхней части экрана).
В этом случае максимум прибыли (график на рис. 5.49 справа вверху)
как раз и будет соответствовать пороговому значению для прогноза в
565 баллов.

154
Рис. 5.49. Отчет Prediction Calculator Report

В нижней части отчета Prediction Calculator слева располагается


таблица с относительными весами значений рассматриваемых пара-
метров (ее мы уже встречали в таблице Prediction Calculator) и графи-
ком потерь от ложных прогнозов
Пусть продажа велосипеда приносит магазину не 10, а 50 долла-
ров. В этом случае, прибыль от одной продажи будет перекрывать за-
траты на сопровождение до 5 отказавшихся от покупки клиентов. Со-
ответственно изменится и соотношение прибыли/затраты. На
рис. 5.50 показано, что в этом случае, для максимизации прибыли ре-
комендуется установить пороговое значение для прогноза в 443 бал-
ла. Новое значение будет автоматически подставлено и в таблицу
Prediction Calculator.

155
Рис. 5.50.Отчет Prediction Calculator Report:
при вводе новой оценки прибыли от правильного
прогноза меняется рекомендуемое пороговое значение

Задание 1. Проведите анализ для двух различных наборов значе-


ний прибыли от истинных прогнозов и убытков от ложных. Про-
комментируйте результаты.

Анализ покупательской корзины


В наборе Table Analysis Tools нам осталось рассмотреть инстру-
мент Shopping Basket Analysis. Он позволяет, например, на основе
данных о покупках выделить товары, чаще всего встречающиеся в
одном заказе, и сформировать рекомендации относительно совмест-
ных продаж. В процессе анализа используется алгоритм Microsoft As-
sociation Rules.
Для изучения этого инструмента, вместо использованного ранее
локализованного набора данных, обратимся к примеру из поставки
надстроек интеллектуального анализа (в предыдущем файле нужного

156
набора данных просто нет). Через меню «Пуск» найдите «Надстройки
интеллектуального анализа данных»->«Образцы данных Excel». В
этой книге Excel c первого листа (рис. 5.51) перейдите по ссылке
«Поиск взаимосвязей и покупательское поведение».

Рис. 5.51. Образцы данных

Рис. 5.52. Запуск инструмента Shopping Basket Analysis

157
Соответствующий набор данных (рис. 5.52) содержит информа-
цию о заказах (номер заказа – Order Number), включенных в них това-
рах (их категории – Category и собственно товаре – Product) и ценах.
Проанализируем, какие категории чаще всего попадают в один
заказ. Запустим инструмент Shopping Basket Analysis. В его настрой-
ках надо указать идентификатор транзакции (Transaction ID), в нашем
случае, это Order Number и предмет анализа (мы будем проводить
анализ для категорий – Category). Необязательным параметром, коли-
чественно характеризующим предмет анализа (Item Value), в нашем
случае будет цена. Если Item Value не указан, то анализироваться бу-
дет только частота выявленных сочетаний.
Результаты работы Shopping Basket Analysis отображаются в
двух отчетах – Bundled Items и Recommendations. Первый из отчетов
содержит информацию о наиболее часто встречающихся в «одном че-
ке» сочетаниях категорий товаров. Так, например, в первой строке от-
чета на рис. 5.53 мы видим, что чаще всего встречается сочетание ка-
тегорий «дорожные велосипеды» и «шлемы» (Road Bikes, Helmets). В
рассматриваемом наборе оно выявлено в 805 заказах. Дальше указы-
вается средняя цена набора и суммарная стоимость всех подобных
наборов. Можно сказать, что этот отчет описывает покупательские
шаблоны (или предпочтения) клиентов.

Рис. 5.53 Отчет Shopping Basket Bundled Items

158
Рис. 5.54. Отчет Shopping Basket Recommendations

Второй отчет  Shopping Basket Recommendations  содержит


рекомендации о товарах, которые могут быть предложены вместе.
Например, третья строчка отчета (рис. 5.54) указывает, что людям ку-
пившим шлем, стоит также предложить приобрести шины. Это за-
ключение базируется на том, что среди 3794 включающих шлемы по-
купок, 1617 включали и шины. Доля таких связанных продаж равна
42,62 %. Далее приводится средний доход от связанных продаж (об-
щая стоимость, деленная на число транзакций, которые содержат «ре-
комендующий» продукт, в нашем случае – шлем) и общая сумма свя-
занных продаж. Основываясь на подобном отчете, владелец магазина
может решить, как разместить товары, какие связанные предложения
можно сформировать и т. д.
Для удаления результатов работы инструмента достаточно уда-
лить сформированные отчеты.
Задание 2. Проведите анализ, аналогичный описанному выше.
Задание 3. Проанализируйте, какие товары (а не категории то-
варов, как было раньше), приобретаются вместе. Опишите получен-
ные результаты.

159
5.6. РАБОТА 6. ИСПОЛЬЗОВАНИЕ ИНСТРУМЕНТОВ
DATA MINING CLIENT ДЛЯ EXCEL 2007
ДЛЯ ПОДГОТОВКИ ДАННЫХ
Рассмотренные в предыдущих лабораторных работах «Средства
анализа таблиц для Excel» (англ. Table Analysis Tools) позволяют
быстро провести стандартный анализ имеющихся данных. В то же
время, этот набор инструментов не предоставляет особых возможно-
стей по подготовке данных к анализу, оценке результатов и т. д. Из
Excel это можно сделать, используя клиент интеллектуального анали-
за данных (англ. Data Mining Client), который также входит в набор
надстроек интеллектуального анализа. В описании лабораторной ра-
боты №1, отмечалось, что желательно сделать полную установку
надстроек, в которую входит и Data Mining Client.
Откроем уже использовавшийся нами набор данных, входящий
в поставку надстроек (меню «Пуск», «Надстройки интеллектуального
анализа данных»-> «Образцы данных Excel»). Чтобы можно было
спокойно вносить изменения, лучше сохранить его под новым име-
нем. Перейдите на лист «Исходные данные» (англ. Source Data) и
щелкните на закладке Data Mining. Лента с предлагаемыми инстру-
ментами представлена на рис. 5.55.
Первая группа инструментов (англ. Data Preparation – подготов-
ка данных), позволяет провести первое знакомство с набором данных
и подготовить его для дальнейшего анализа.

Рис. 5.55. Инструменты Data Mining Client

160
Например, в предыдущих работах мы неоднократно сталкива-
лись с тем, что ряд алгоритмов (Microsoft Naïve Bayes и др.) требуют
предварительной дискретизации непрерывных значений числовых
параметров. Но в ряде случаев пользователю желательно посмотреть
возможные диапазоны, уточнить их число и т. д. Отдельный интерес
может представлять и распределение строк по значению выбранного
параметра.

Инструмент Explore Data


Инструмент Explore Data позволяет проанализировать значения
столбца (или диапазона ячеек) и отобразить их на диаграмме. Рас-
смотрим его работу на примере значения годового дохода клиента
(англ. Income). Дополнительный интерес представляет то, что это
значение может рассматриваться и как непрерывное, и как дискрет-
ное. Итак, запускаем инструмент (рис. 5.56).
В процессе работы потребуется указать, для какой таблицы (или
диапазона ячеек) и столбца будет проводиться анализ (рис. 5.56, a, b).
После чего указанные значения будут проанализированы и результат
представлен в виде гистограммы.
Как уже отмечалось выше, значение годового дохода можно
рассматривать и как непрерывное, и как дискретное (за счет того, что
в нашем наборе данных присутствуют только значения, кратные 10
тысячам). Для непрерывного значения будет предложен вариант раз-
биения на диапазоны (рис. 5.56, c). Число диапазонов можно поме-
нять и диаграмма с распределением значений будут построена заново.
Нажав кнопку «Add New Column» можно добавить в исходную таб-
лицу новый столбец с интервалами годового дохода. Например, если
для строки значение Yearly Income = 30000, то значение нового пара-
метра Yearly Income2 при использовании представленного на рисунке
разбиения будет «'30000‒50000» (именно так, с апострофом в начале,
чтобы рассматривалось как строковое). В ходе интеллектуального

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

a b

c d

Рис. 5.56. Инструмент Explore Data

Кнопками с изображениями графика и гистограммы (на


рис. 5.56, c и d они подчеркнуты), можно указать тип анализируемого
значения – непрерывное или дискретное. Если значение годового до-
хода рассматриваем как дискретное, то для него будет построена диа-
грамма, показывающая распределение числа строк по значению годо-

162
вого дохода (рис. 5.56, d). При этом сортировка производится по убы-
ванию числа строк с данным значением, из-за чего первый столбец
гистограммы соответствует значению «60000», второй – «40000»
и т. д. Сформированную гистограмму можно скопировать в буфер
(кнопка правее кнопки «Add New Column», рис. 5.56, c, d) и использо-
вать для дальнейшей работы.

Инструмент Clean Data


Инструмент Clean Data (рис. 5.57) позволяет подготовить дан-
ные для анализа, отбросив нетипичные или ошибочные данные (вы-
бросы), а также проведя замену отдельных значений.

Рис. 5.57. Инструмент Clean Data

Как отмечается в документации, под выбросом подразумевается


значение данных, являющееся проблематичным по одной из следую-
щих причин:
‒ значение находится за пределами ожидаемого диапазона;
‒ данные были введены неправильно;
‒ значение отсутствует;
‒ данные представляют собой пробел или пустую строку;
‒ значение может значительно отклониться от распределения,
которому подчиняются данные в модели.
Использование инструмента проиллюстрируем на примере все
той же таблицы с данными о клиентах (лист Source Data). Обратимся

163
к столбцу с возрастом. Пусть нам нужно очистить обучающий набор
от информации о нехарактерных по возрасту покупателях. Запускаем
инструмент Clean Data -> Outliers, в окне, аналогичном представлен-
ному на рис. 5.56, a, выбираем таблицу для анализа, затем в окне Se-
lect Column (рис. 5.56, b) – столбец Age.
В рассматриваемом наборе данных есть строки со значениями
столбца Age от 25 до 96 лет. Если этот параметр считаем непрерыв-
ным, то он будет представлен графиком, где по оси X указывается
возраст, по оси Y – число клиентов с таким возрастом. В таблице доля
клиентов преклонного возраста очень мала. На рис. 5.58, a показано,
что установив пороговое значение в 75 лет, мы отбрасываем заштри-
хованный «хвост», включающий нехарактерные значения (покупате-
ли велосипедов в возрасте от 76 до 96 лет, которых подавляющее
меньшинство).
Во многом аналогично выглядит работа с параметром, прини-
мающим дискретные значения. Для него строится гистограмма, а для
определения порога нужно указать минимальное число примеров,
«поддерживающих» значение. Например, на рис. 5.58, b, установлено
пороговое значение 15. К сожалению, при большом числе столбцов
гистограммы, значения параметра на ней иногда не отображаются.
Поэтому по рис. 5.58, b не понять, что именно попадает в «хвост»
распределения.
Итак, мы выделили нехарактерные данные. Теперь нужно опре-
делить, что с ними делать. Предлагаемые мастером решения несколь-
ко отличаются для случаев непрерывного и дискретного параметра.
Соответствующую строку можно удалить (англ. Delete rows containing
outliners) или заменить значение параметра на пустое (англ. Change
value to null). Кроме того, для непрерывных данных (рис. 5.58, c)
можно заменить нехарактерное значение средним или граничным
(сверху или снизу, в зависимости от того, какой диапазон отбрасыва-
ется). Для дискретного параметра (рис. 5.58, d) можно указать значе-
ние, из числа уже имеющихся в наборе, на которое будут заменяться
«выбросы».

164
a b

c d

Рис. 5.58. Использование инструмента Clean Data


для исключения выбросов

Последнее окно мастера, которое на рисунке не представлено,


предлагает выбрать, куда заносить изменения – в исходные данные
(англ. Change data in place), в их копию на новом листе Excel (англ.
Copy sheet data with changes to a new worksheet) или в новый столбец в
исходной таблице (англ. Add as a new column to the current worksheet).
Последняя опция для случая удаления строк недоступна.

165
Инструменты Clean Data и Re-label
В некоторых случаях в исходных данных могут быть значения,
которые затрудняют автоматизированный анализ. Например, есть па-
раметр «город» и среди его значений – Санкт-Петербург, С-
Петербург, СПб. Чтобы в процессе интеллектуального анализа эти
значения учитывались корректно, надо их заменить на одно. Для это-
го можно использовать инструмент Re-label. Его же можно приме-
нить, если требуется снизить уровень детализации значений парамет-
ра. Надо отметить, что инструмент работает только с дискретными
значениями.
Для примера, в таблице с информацией о клиентах нам надо
уменьшить число значений параметра Commute Distance (расстояние
ежедневных поездок). Исходные значения «0-1 Miles», «1-2 Miles»,
«2-5 Miles», «5-10 Miles», «10+ Miles». Пусть все, что меньше 2 миль,
будет «близко», остальное – «далеко». Запустим инструмент: Clean
Data ->Re-label. Первые два экрана, как и ранее, позволяют указать
таблицу и столбец. Далее указываем порядок замены (рис. 5.59, a) и
выбираем создание нового столбца (рис. 5.59, b), чтобы не потерять
исходные данные.
В окне Re-label Data (рис. 5.59, а) значение, на которое заменя-
ем, или выбирается из выпадающего списка (если такое значение уже
встречалось в обрабатываемом столбце), или вводится с клавиатуры в
это же поле.
a b

Рис. 5.59. Замена обозначений

166
Инструмент Sample Data
Последний инструмент в группе Data Preparation называется
Sample Data (Образцы данных). Он позволяет решить задачу форми-
рования обучающего и тестового множеств данных, а также выпол-
нять «балансировку» данных.
В тех случаях, когда используемый метод интеллектуального
анализа требует предварительного обучения модели (например, для
решения задачи классификации) необходимо сформировать несколь-
ко наборов данных – для обучения модели, проверки ее работы, соб-
ственно анализа. Инструмент Sample Data позволяет подготовить
нужные наборы.
Пусть необходимо случайным образом разделить имеющийся
набор данных на обучающую и тестовую выборку. Для этого надо за-
пустить инструмент Sample Data, указать, откуда берем данные для
обработки (рис. 5.60, a), и тип формируемой выборки. Сначала сдела-
ем случайную выборку, т. е. тип – Random Sampling (рис. 5.60, b). Да-
лее указывается процент записей из исходного набора (или точное
число записей), помещаемых в выборку (рис. 5.60, c), и место для со-
хранения полученных результатов. На рис. 5.60, d видно, что можно
отдельно сохранить сформированную выборку и данные, в нее не по-
павшие. В итоге можем получить обучающий и тестовый наборы. Хо-
телось бы обратить внимание на возможность использования внешне-
го источника данных при формировании выборки (рис. 5.60, a). Это
позволяет использовать данные, хранящиеся на MS SQL Server, для
формирования наборов значений. Но как отмечается в описании ин-
струмента, при использовании внешнего источника данных в окне,
представленном на рис. 5.60, b, будет доступен только параметр слу-
чайной выборки.
При использовании средств интеллектуального анализа для об-
наружения редких событий, в обучающем наборе рекомендуется уве-
личить частоту появления нужного события по сравнению с исход-
ными данными. Формирование подобной выборки часто называют
балансировкой данных, и инструмент Sample Data позволяет ее вы-
полнить.

167
a b

c d

Рис. 5.60. Инструмент Sample Data

С помощью инструмента Explore Data проанализируем распре-


деление клиентов по регионам. На рис. 5.61, a видно, что примерно
пятая часть клиентов у нас из региона Pacific (будем считать это Ази-
атско-Тихоокеанским регионом). Сформируем набор данных, где та-
ких клиентов будет 50 %.
Запустим инструмент Sample Data, укажем в качестве источника
данных используемую таблицу Excel и выберем вариант формирова-
ния избыточной выборки с балансировкой данных (англ. Oversample
to balance data distributions, рис. 5.61, b). Далее укажем столбец, для

168
которого выполняется балансировка, частоту появления нужного зна-
чения и размер выборки (рис. 5.61, c). Будет создана новая таблица с
указанным пользователем названием. Снова применим Explore Data и
убедимся в том, что выборка сформирована в соответствии с указан-
ными выше требованиями (рис. 5.61, d) .

a b

c d

Рис. 5.61. Формирование выборки с заданным


распределением клиентов по регионам

Задание. Проведите описанную в лабораторной обработку вы-


бранного набора данных.

169
5.7. РАБОТА 7. ИСПОЛЬЗОВАНИЕ ИНСТРУМЕНТОВ
DATA MINING CLIENT ДЛЯ EXCEL 2007
ДЛЯ СОЗДАНИЯ МОДЕЛИ ИНТЕЛЛЕКТУАЛЬНОГО
АНАЛИЗА ДАННЫХ
Рассмотренные в лабораторных работах 1–5 «Средства анализа
таблиц для Excel» (англ. Table Analysis Tools) для конечного пользо-
вателя во многом представляются «черным ящиком», выполняющим
анализ, но не дающим информации о том, как получен результат. Ес-
ли такое решение не устраивает, можно перейти с вкладки Analyze на
вкладку Data Mining и воспользоваться инструментами Data Mining
Client для Excel (рис. 5.62).

Рис. 5.62. Группа инструментов Data Modeling

В работе № 6 мы рассмотрели инструменты, позволяющие под-


готовить данные для анализа. Следующая группа  показанные на
рис. 5.62 инструменты Data Modeling, позволяющие создать модели
интеллектуального анализа данных.
Классификация (англ. Classify) – создает модель классификации
на основе существующих данных таблицы Excel, диапазона Excel или
внешнего источника данных (англ. Analysis Services Data Source). На
основе обрабатываемых данных формируются шаблоны, которые при
использовании позволяют отнести рассматриваемый пример к одному
из возможных классов. По умолчанию используется алгоритм Deci-
sion Trees, но также доступны алгоритмы Logistic Regression, Naïve
Bayes, Neural Networks.

170
Оценка (англ. Estimate) – позволяет создать модель оценки зна-
чения целевого параметра (он должен быть числовым) на основе дан-
ных из таблицы или диапазона ячеек Excel либо внешнего источника
данных. По умолчанию используется алгоритм Decision Trees, также
доступны – Linear Regression, Logistic Regression, Neural Networks.
Кластер (англ. Cluster) – запускает мастер, позволяющий по-
строить модель кластеризации на основе данных из таблицы или диа-
пазона Excel, либо внешнего источника данных. Модель определяет
группы строк со сходными характеристиками, для чего используется
алгоритм Microsoft Clustering. Данная задача аналогична решаемой
средством Detect Categories из набора Table Analysis Tools.
Поиск взаимосвязей (англ. Associate) – помогает создать модель,
описывающую взаимосвязь объектов (покупаемых товаров и т. д.), за-
трагиваемых одной транзакцией, для чего используется алгоритм As-
sociation Rules. С подобной задачей мы сталкивались, используя ин-
струмент Shopping Basket Analysis из Table Analysis Tools. Для по-
строения модели анализа необходимо, чтобы исходные данные со-
держали столбец с идентификатором транзакций и были по нему от-
сортированы. В качестве источника данных может использоваться
только таблица или диапазон ячеек Excel.
Прогноз (англ. Forecast). Данный мастер позволяет построить
модель для прогнозирования новых значений в числовой последова-
тельности, аналогично инструменту Forecast в Table Analysis Tools.
Используется алгоритм Time Series, для работы которого требуется,
чтобы столбец (или столбцы), в отношении которого будет выпол-
няться прогноз, имели непрерывные числовые значения. Также может
присутствовать столбец с отметкой времени (в этом случае, строки в
таблице должны быть по нему отсортированы).
Дополнительно (англ. Advanced) – позволяет создать структуру
интеллектуального анализа данных или добавить в существующую

171
структуру новую модель (например, для сравнения результатов, вы-
даваемых разными алгоритмами анализа).
Используем инструмент Classify. В поставляющемся с
надстройками наборе данных (меню «Пуск», «Надстройки интеллек-
туального анализа данных»-> «Образцы данных Excel») выберем таб-
лицу Training Data, содержащую случайную выборку 70 % данных из
таблицы Source Data. Запустим, мастер Classify, в первом окне кото-
рого будет комментарий по применению инструмента, а второе окно
позволит указать источник данных для анализа (таблица Training
Data). Дальше потребуется описать цель анализа.
Пусть нас интересует, сделает ли данный клиент покупку. В це-
левом столбце указываем параметр Bike Buyer (рис. 5.63, окно слева),
сбрасываем в перечне входных столбцов отметку напротив ID (по-
рядковый номер клиента в базе никак не влияет на его решение о по-
купке). Если ID оставить среди анализируемых параметров, то итого-
вая модель может его учесть. В частности, на рис. 5.64 показано дере-
во решений, учитывающее значение поля ID в процессе классифика-
ции, что явно неправильно.

Рис. 5.63.Указание параметров для анализа

172
Рис. 5.64. Неудачный вариант дерева решений

Если требуется более точная настройка, можно открыть окно Pa-


rameters и явно указать используемый алгоритм и его параметры
(рис. 5.63, окно справа). Далее мастер предложит разделить имеющи-
еся данные на набор для обучения модели и для ее тестирования
(рис. 5.65, a). По умолчанию на набор для тестирования выделяется
30 % строк исходного набора.

a b

Рис. 5.65. Разбиение данных и указание


названий модели и структуры

173
Последний этап работы мастера – указание имени создаваемой
структуры и модели (рис. 5.65, b). В нашем примере структура будет
назваться Training Data Structure, а модель Classify BikeBuyer_1. Эти
названия нам понадобятся впоследствии для работы с моделью.
Если выполняющий анализ пользователь не имеет прав админи-
стратора в базе Аналитических Служб (эту настройку мы делали в ла-
бораторной работе № 1), то создать постоянною модель интеллекту-
ального анализа на сервере он не сможет. В этом случае можно ис-
пользовать временную модель, для чего отметить пункт Use temporary
model. Временная модель будет автоматически удалена с сервера по
завершению сеанса работы пользователя. Отмеченная по умолчанию
настройка Browse model указывает на то, что после создания модели
будет открыто окно просмотра. Для модели, созданной с использова-
нием алгоритма Decision Trees, отображается построенное дерево ре-
шений и диаграмма зависимостей. Представленное на рис. 5.66 дерево
решений позволяет оценить построенную модель. Расположенные в
верней части экрана «ползунок» и выпадающий список позволяют
установить число отображаемых уровней дерева (на рисунке показа-
ны все пять).

Рис. 5.66. Построенное дерево решений

174
Если навести указатель мыши на точку ветвления дерева, можно
увидеть всплывающую подсказку с указанием того, сколько и каких
случаев в обучающем наборе ей соответствует. Для выделенного узла
в правой части экрана отображается его описание и гистограмма с
распределением значений. Кнопкой Copy to Excel можно перенести
результат из окна просмотра на новый лист Excel (для дерева реше-
ний в Excel будет перенесено его растровое изображение).
Щелкнув по узлу дерева правой клавишей мыши и выбрав в
контекстном меню Drill Through Model Columns (можно примерно пе-
ревести как «детализация использовавшихся моделью данных») мы
получим новую таблицу Excel, содержащую набор строк из обучаю-
щей выборки, которые соответствуют данному узлу (рис. 5.67).
На рис. 5.68 представлена диаграмма зависимостей, показыва-
ющая выявленные взаимосвязи между параметрами. Ее также можно
скопировать в Excel.

Рис. 5.67. Результат выполнения детализации

Выделяя на диаграмме узел, можно увидеть все влияющие на


него (рис. 5.68). Это часто помогает понять имеющиеся в данных за-
висимости.
Закроем окно просмотра модели. Если нужно будет снова про-
смотреть ее параметры, воспользуйтесь инструментом Browse, кото-
рый находится в группе Model Usage.

175
Рис.5.68. Диаграмма зависимостей

Чтобы управлять имеющимися на сервере структурами и моде-


лями, можно воспользоваться мастером, запускаемым по нажатию
кнопки Manage Models на вкладке Data Mining (рис. 5.69). Он позво-
ляет просмотреть имеющиеся структуры и модели, переименовать их,
удалить, обработать, выполнить импорт и экспорт.

Рис. 5.69. Окно управления моделями

176
Задание 1. Создайте модель интеллектуального анализа, анало-
гичную описанной в лабораторной работе.
Задание 2. Воспользуйтесь набором данных в таблице Associate
и одноименным мастером для создания модели, описывающей взаи-
мосвязи между категориями товаров в одном заказе. При необходи-
мости, воспользуйтесь справочной системой по инструменту. Про-
анализируйте выявленные правила и диаграмму зависимостей. Срав-
ните с результатами, полученными в лабораторной работе № 5
(раздел «Анализ покупательского поведения»).

5.8. РАБОТА 8. АНАЛИЗ ТОЧНОСТИ ПРОГНОЗА


И ИСПОЛЬЗОВАНИЕ МОДЕЛИ
ИНТЕЛЛЕКТУАЛЬНОГО АНАЛИЗА
В предыдущей лабораторной работе мы создали модель для
классификации клиентов магазина с целью определить, сделает ли
данный клиент покупку или нет. Следующая задача – оценить точ-
ность построенной модели интеллектуального анализа. Для этого
можно использовать инструменты из группы Accuracy and Validation
(в русском варианте – Точность и Правильность).

Рис. 5.70. Инструменты Data Mining Client

Диаграмма точности (англ. Accuracy Chart) позволяет, применив


модель на тестовой выборке данных, оценить результаты ее работы. В
ходе выполнения лабораторной № 7 была создана структура Training
Data Structure и модель классификации Classify BikeBuyer_1. При со-
здании модели мы резервировали 30 % данных для целей тестирова-
ния (рис. 5.65, a).

177
Запустим инструмент Accuracy Chart. Первое окно мастера со-
держит краткое описание инструмента, в следующем – надо указать
структуру или модель (рис. 5.71, a). Если для одной структуры опре-
делены несколько моделей, по диаграмме можно будет провести их
сравнительный анализ. Следующее окно (рис. 5.71, b) служит для вы-
бора предсказываемого параметра и его значения. В нашем случае па-
раметр – BikeBuyer, а оценивать будем точность предсказания значе-
ния «Yes».

a b

c d

Рис. 5.71. Мастер построения диаграммы точности

178
Дальше требуется указать источник данных для тестирования.
Это могут быть зарезервированные при создании модели данные,
данные из таблицы или диапазона ячеек Excel, или из внешнего ис-
точника (рис. 5.71, c). Сейчас выберем данные из модели. В случае
указания таблицы Excel (что будем делать далее в упражнениях), надо
описать соответствие столбцов в модели и используемой для тестиро-
вания таблице (рис. 5.71, d). После этого будут сформированы и по-
мещены на новый лист Excel диаграмма точности (рис. 5.72) и табли-
ца со значениями, представленными на диаграмме (рис. 5.73).
На диаграмме верхняя линия соответствует идеальной модели,
средняя – нашей модели, нижняя – линия случайного выбора, всегда
идет под углом 45 градусов.

Рис. 5.72. Диаграмма точности (Accuracy Chart)

Данные на диаграмме и в таблице можно интерпретировать сле-


дующим образом. Пусть нам необходимо выбрать всех клиентов, ко-
торые сделают покупки. Формируемая идеальной моделью выборка
объемом в 11 % от числа исходных записей будет включать все 100 %

179
нужных записей (в тестовом множестве их чуть меньше 11 %). Слу-
чайная выборка объемом в 11 % содержит 11 % нужных записей, а
выборка такого же объема, формируемая нашей моделью – 26,58 %. В
выборку в 25 % от общего объема данных, наша модель поместит
52,7 % «правильных» клиентов и т.д. Качество прогноза падает (гори-
зонтальный участок графика Classify BikeByer_1) после обнаружения
76 % интересующих случаев. При визуальном анализе – чем ближе
график оцениваемой модели к идеальному, тем более точный прогноз
она выдает.

Рис. 5.73. Фрагмент таблицы с оценками точности прогноза

180
Задание 1. Постройте диаграмму точности аналогичную той,
что представлена выше (используемый файл – «Образцы данных Ex-
cel»). Дополнительно постройте диаграмму для BikeBuyer = «No».
Объясните различия во внешнем виде графиков.
Задание 2. В предыдущем задании для целей тестирования ис-
пользовались данные из модели. Модель формировалась на данных из
таблицы Training Data. В таблице Testing Data находятся 30 % дан-
ных из исходного набора Source Data. Проверьте точность модели на
наборе Testing Data.
Анализируя график на рис. 5.72 можно предположить, что с мо-
делью все хорошо, и прогноз делается достаточно точно. Но обратим-
ся к еще одному инструменту анализа точности – Classification Matrix
(Матрица классификации). С его помощью мы получаем таблицу с
результатами точных и ошибочных предсказаний (рис. 5.74).

Рис. 5.74. Матрица классификации

181
Анализ матрицы показывает, что созданная нами модель при те-
стировании на зарезервированных данных сделала 89,43 % правиль-
ных прогнозов, что можно расценить как успех (потому и диаграмма
точности на рис. 5.72 выглядит хорошо). Но при этом в 100 % случаев
она правильно предсказывала значение «No» и ошибочно «Yes». Ина-
че говоря, всегда ставится «No». И использовать такую модель для
предсказания бессмысленно.
Задание 3. Постройте матрицу классификации, проанализи-
руйте полученный результат.
Проблема, с которой мы столкнулись, могла быть выявлена и
раньше, если внимательно посмотреть на построенное дерево реше-
ний (рис. 5.75). Но тогда не удалось бы продемонстрировать возмож-
ности инструментария Data Mining по оценке точности модели.

Рис. 5.75. Дерево решений

Из рис. 5.75 видно, что все конечные узлы дерева дают решение
BikeBuyer = «No» (ему соответствует синяя полоска на диаграмме,
характеризующей распределение ответов в обучающей выборке). От-
вету «Yes» соответствует более короткая красная полоска, что гово-
рит о том, что поддерживающих такой результат примеров было
меньше. По всей видимости, это связано с тем, что таких примеров
меньшинство в рассматриваемом наборе данных (около 10 %).
Попробуем использовать обучающий набор большего объема и
с более часто встречающимся значением BikeBuyer = «Yes». Откроем
таблицу Source Data, где данных больше. Но процент интересующих

182
нас записей остается таким же (это можно определить с помощью ин-
струмента Explore Data). Поэтому воспользуемся инструментом Sam-
ple Data (см. лабораторную № 6), чтобы сформировать «избыточную»
выборку из 2000 строк, где в 30 % случаев BikeBuyer = «Yes». У по-
лученного набора оставим автоматически назначенное название Sam-
pled Data. С помощью инструмента Classify построим модель анало-
гично тому, как это было сделано в работе № 7 (алгоритм – Decision
Trees, целевой параметр BikeBuyer, столбец ID при анализе не учиты-
ваем, остальные настройки – по умолчанию). Полученное дерево ре-
шений представлено на рис. 5.76. Оно проще предыдущего, но в зави-
симости от значений параметров может давать как прогноз «Yes», так
и «No». «Yes» будет в том случае, если у клиента 0 машин и он из ре-
гиона «Pacific».

Рис. 5.76. Новое дерево решений

На основе нового набора данных создадим также модель для


классификации, основанную на алгоритме Neural Networks (нейрон-
ных сетей). Если построить для моделей матрицы классификации
(рис. 5.77) будет видно, что модель на основе нейронных сетей дает
более точный прогноз.
Рассмотренный пример показывает, что в некоторых случаях
точность прогноза можно повысить за счет специальной подготовки
обучающей выборки и выбора наиболее походящего алгоритма. Хотя,
учитывая относительно высокий процент ошибок, ни та, ни другая
модель, наверное, не может быть признана очень удачной.
Задание 4. Проведите описанные в работе действия. Проком-
ментируйте результаты.

183
a b

Рис. 5.77. Матрицы классификации для дерева решений (a)


и нейронных сетей (b)

Запросы к модели
Теперь перейдем к самому интересному – построению запроса к
модели интеллектуального анализа. Итак, на сервере есть модель,
признанная пригодной для прогнозирования. В используемом нами
файле Excel с данными для интеллектуального анализа есть таблица
New Customers с информацией о новых клиентах (рис. 5.78).

Рис. 5.78. Таблица New Customers

184
В таблице New Customers есть все столбцы, которые были в
наборе Source Data, кроме столбца BikeBuyer (это новые клиенты, и
мы не знаем, сделают ли они покупку), кроме того, есть ряд несуще-
ственных для анализа новых параметров – имя, адрес электронной
почты, телефон и т.д. Наша задача заключается в том, чтобы предска-
зать, кто из этих людей готов сделать покупку. Запускаем инструмент
Query (группа Model Usage, рис. 5.70) и выбираем используемую мо-
дель интеллектуального анализа (рис. 5.79, a). После этого указываем
источник данных, для которого надо провести анализ. В нашем слу-
чае это таблица «New Customers» (рис. 5.79, b). Следующее окно поз-
воляет указать соответствие параметров модели и столбцов таблицы.
В нашем случае ничего исправлять не потребуется (рис. 5.79, c). Да-
лее определяем выходное значение, т. е. столбец, который будет со-
держать прогноз. В окне «Choose Output» (аналогичном рис. 5.79, e,
только без выходного значения), нажимаем кнопку «Add Output» и
получаем возможность определить выходной столбец (рис. 5.79, d).
Назовем его «Будет покупать». В зависимости от того, куда будет вы-
водиться результат работы (в исходную таблицу, на новый лист Excel
и т. д.), может понадобиться включить в выходной набор дополни-
тельные столбцы (идентификатор клиента и т. д.). После добавления
выходных параметров (рис. 5.79, e) надо указать, куда будет выво-
диться результат. По умолчанию (рис. 5.79, f) результат будет поме-
щен в таблицу с исходными данными, но можно потребовать вывод
на новый или уже существующий лист Excel.
В ходе работы в окнах рис. 5.79, a–5.79, e можно нажать кнопку
Advanced и попасть в окно конструктора выражения на языке DMX
(рис. 5.80). Здесь можно просмотреть или поправить генерируемый
код запроса на DMX, который будет передан Аналитическим Служ-
бам MS SQL Server 2008.
В результате выполнения сформированного мастером запроса в
исходную таблицу будет добавлен столбец, содержащий результаты
выполненной классификации (рис. 5.81).

185
a b

c d

e f

Рис. 5.79. Построение запроса

186
Рис. 5.80. Конструктор запросов

Рис. 5.81. В исходную таблицу добавлен столбец


с результатами работы

Задание 5. Выполните запрос к модели интеллектуального ана-


лиза. Оцените полученные результаты.

187
5.9. РАБОТА 9. ПОСТРОЕНИЕ МОДЕЛИ
КЛАСТЕРИЗАЦИИ, ТРАССИРОВКА
И ПЕРЕКРЕСТНАЯ ПРОВЕРКА
Рассмотрим еще ряд возможностей, предоставляемых надстрой-
ками интеллектуального анализа данных. Пусть необходимо провести
сегментацию клиентов Интернет-магазина, список которых находится
в файле Excel. Если использовать Table Analysis Tools, для решения
этой задачи надо применить инструмент Detect Categories (см. лабора-
торную № 2). Также можно воспользоваться средствами DataMining
Client for Excel, где выбрать инструмент Cluster (рис. 5.82).

Рис. 5.82. Инструмент Cluster


Итак, откроем файл с образцами данных, идущий в поставке с
надстройками интеллектуального анализа, перейдем на лист Table
Analysis Tools Sample (или можно с первого листа с оглавлением пе-
рейти по ссылке «Образцы данных для средств анализа таблиц») и за-
пустим инструмент Cluster (рис. 5.83).
a b

Рис. 5.83. Диалоговые окна мастера кластеризации

188
Первое окно кратко описывает суть задачи кластеризации и ука-
зывает на то, что для работы мастера необходимо подключение к MS
SQL Server (которое у нас было настроено ранее). Следующее окно
(рис. 5.83, а) позволяет указать источник данных – в нашем случае это
электронная таблица Excel, после чего можно выбрать число класте-
ров (рис. 5.83, b) или указать автоматическое определение, а также
используемые столбцы входных данных. Здесь сбросим флажки ря-
дом со столбцами ID и Purchased Bike.
Описанный выше выбор входных параметров обусловлен тем,
что столбец с уникальным идентификатором покупателя может толь-
ко помешать алгоритму кластеризации, а купил ли клиент велосипед
или нет, нас сейчас не интересует. Кроме того, нажав в этом окне
кнопку Parameters… можно получить доступ к настройке параметров
алгоритма кластеризации (рис. 5.84) и, например, поменять использу-
емый по умолчанию метод кластеризации. Более подробно настройки
алгоритма кластеризации обсуждаются в теоретической части курса.

Рис.5.84. Параметры модели кластеризации

189
Следующее окно мастера позволяет указать процент данных, ре-
зервируемых для задач тестирования. В последнем окне мастера
(рис. 5.85) можно задать имя структуры и модели, указать, открывать
ли просмотр модели, разрешить ли детализацию, использовать ли
временные модели (по умолчанию – нет).

Рис. 5.85. Определение имен структуры и модели

После нажатия кнопки Finish будут созданы структура и модель,


после чего модель будет обработана и открыта для просмотра в окне
Browser (рис. 5.86).

190
a

Рис. 5.86 Окна Model Browser

191
c

Рис. 5.86 Окна Model Browser (продолжение)

192
Диаграмма кластеров (рис. 5.86, a) отображает все кластеры в
модели. Заливка линии, соединяющей кластеры, показывает степень
их сходства. Светлая или отсутствующая заливка означает, что кла-
стеры не очень схожи. Можно выбрать анализ по отдельному атрибу-
ту или по всей совокупности (Population). Нажав кнопку Copy to
Excel, можно получить изображение на отдельный лист таблицы Ex-
cel. Окно Cluster Profile позволяет просмотреть распределение значе-
ний атрибутов в каждом кластере. Например, на рис. 5.86, b видно,
что большая часть клиентов, отнесенных к кластеру 1, проживают в
регионе Europe.
Дискретные атрибуты представлены в виде цветных линий, не-
прерывные атрибуты  в виде диаграммы ромбов, представляющей
среднее значение и стандартное отклонение в каждом кластере. Па-
раметр Histogram bars («Столбцы гистограммы») управляет количе-
ством столбцов, видимых на гистограмме. Если доступно больше
столбцов, чем выбрано для отображения, то наиболее важные столб-
цы сохраняются, а оставшиеся группируются в сегмент серого цвета.
В заголовке под названием каждого кластера указывается число
вариантов, которые к нему отнесены. Щелкнув правой клавишей мы-
ши на заголовке столбца, можно вызвать контекстное меню, позволя-
ющее, в частности, переименовать соответствующий кластер. Кроме
того, из контекстного меню, выбрав опцию DrillThrough Model Col-
umn, можно получить детализацию модели (результаты выводятся на
отдельный лист Excel). Например, на рис. 5.87 показаны все вариан-
ты, отнесенные к кластеру 1.
Но вернемся к окнам Model browser. Окно Cluster Characteristics
позволяет просмотреть наиболее вероятные значения атрибутов для
всего множества вариантов (Population) и для каждого кластера (если
выбрать кластер в выпадающем списке). В последнем случае, столб-

193
цы сортируются по степени важности данного атрибута для кластера.
Например, в рассмотренном выше кластере 1, на первом месте будет
находиться атрибут Region со значением Europe. При этом, вероят-
ность того что клиент, отнесенный алгоритмом к этой категории,
проживает именно в Европе, оценивается как очень высокая.
Окно Cluster Discrimination позволяет провести попарное срав-
нение двух кластеров (рис. 5.86, d) или выбранного кластера и всех
остальных вариантов.

Рис. 5.87. Результаты детализации модели

Теперь перейдем к анализу того, что же происходит на сервере.


В этом поможет инструмент Trace, расположенный в ленте Data Min-
ing в разделе Connection. Если нажать данную кнопку, откроется окно,
в котором отображается содержимое отправляемых на сервер запро-
сов (рис. 5.88).

194
Рис. 5.88. Окно трассировки

Если проанализировать текст запросов, видно, что первая


часть – это описание в формате XML создаваемой структуры и моде-
ли. Вторая часть, которая приводится ниже – это DMX запрос на за-
полнение и обработку структуры и всех ее моделей.
INSERT INTO MINING STRUCTURE [Table2 Structure]
(__RowIndex,
[Marital Status],
[Gender],
[Income],
[Children],
[Education],
[Occupation],
[Home Owner],
[Cars],
[Commute Distance],

195
[Region],
[Age]) @ParamTable
ParamTable =
Microsoft.SqlServer.DataMining.Office.Excel.Excel
DataReader
Использование трассировки позволяет глубже разобраться в
особенностях работы надстроек интеллектуального анализа, а при
возникновении ошибок выявить их причины.
Задание 1. По аналогии с рассмотренным примером создайте
модель кластеризации. Изучите и проанализируйте полученные ре-
зультаты. Отройте окно трассировки, проанализируйте отправля-
емые на сервер запросы.
Теперь рассмотрим инструмент перекрестной проверки Cross-
Validation (надо отметить, что перекрестная проверка доступна при
использовании SQL Server версии Enterprise или Developer). Суть ее
заключается в том, что множество вариантов, которое использует мо-
дель, разбивается на непересекающиеся подмножества (разделы). Для
каждого из разделов производится обработка модели и полученные
результаты сравниваются с теми, что были на исходном множестве
вариантов. Если результаты близки, можно говорить об удачной мо-
дели интеллектуального анализа: исходных данных хватило, резуль-
тат прогноза или анализа достаточно стабилен.
В разделе Accuracy and Validation выберем инструмент Cross-
Validation. Первое окно мастера сообщает о сути выполняемой про-
верки. Во втором окне (рис. 5.89) производится выбор модели для пе-
рекрестной проверки. Укажем нашу модель кластеризации – Table2-
Clustering.
После выбора модели нужно указать параметры проводимой пе-
рекрестной проверки. В частности, указывается число разделов с дан-
ными для перекрестной проверки (Fold Count, по умолчанию 10),
максимальное число вариантов, используемых при проверке (значе-

196
ние Maximum Rows = 0 указывает на то, что будут использоваться
все; если исходных данных много, при использовании всех данных
перекрестная проверка может занять продолжительное время), целе-
вой атрибут (Target Attribute).
На рис. 5.90 в качестве целевого атрибута (англ. Target Attribute)
выбран #Cluster, это номер кластера, к которому принадлежит вари-
ант. Суть проверки будет заключаться в том, что выполняется класте-
ризация в рамках отдельного раздела и полученный номер кластера, к
которому отнесен вариант, будет сравниваться с номером кластера,
полученным при обработке модели с использованием всего множе-
ства вариантов. Совпадение говорит о том, что модель хорошая (пра-
вильно определены имеющиеся шаблоны).

Рис. 5.89. Выбор модели для перекрестной проверки

197
Рис. 5.90. Указание параметров перекрестной проверки

По результатам выполнения перекрестной проверки формирует-


ся отчет (рис. 5.91). В нем показывается, сколько вариантов использо-
валось для проверки (на рисунке – 700), какие разделы были сформи-
рованы (в нашем примере 10 разделов по 70 строк данных), результа-
ты проведенного анализа. На рисунке видно, что в среднем, результа-
ты, полученные при анализе по разделам, более чем в 82 % случаев
совпадают с результатами исходной модели. Небольшой разброс зна-
чений для разных разделов, указывает на стабильность получаемого
результата, т. е. построенная модель интеллектуального анализа мо-
жет быть признана удачной.

198
Рис. 5.91. Отчет по результатам проверки

Задание 2. Выполните перекрестную проверку для созданной


модели интеллектуального анализа. Опишите и проанализируйте по-
лученные результаты.

5.10. РАБОТА 10. НАЧАЛО РАБОТЫ В BI DEV STUDIO


Работа со средствами интеллектуального анализа данных в сре-
де BI Dev Studio может выполняться в одном из двух режимов [1]:
immediate или offline.
Режим immediate предполагает работу при постоянном подклю-
чении к серверу аналитических служб. При этом объекты открывают-
199
ся непосредственно с сервера и при внесении изменений, после того
как объект сохранен, он сразу же изменится на сервере. Необходимо
учитывать: если в этом режиме модифицируется рабочая модель ин-
теллектуального анализа, после сохранения она станет необработан-
ной, что приведет к сбою запросов к этой модели. Также могут воз-
никнуть сложности, если одновременно с вами какой-то объект БД
изменял другой пользователь. Тогда при сохранении будет выдано
предупреждение, что сохранение объекта «перезапишет» сделанные в
нем изменения. Чтобы увидеть сделанные другими изменения в объ-
екте, надо его закрыть и снова открыть. Чтобы увидеть новые объек-
ты, надо закрыть и заново открыть весь проект.
Для того чтобы начать работу в режиме immediate нужно:
1) запустить BI Dev Studio;
2) в меню File выбрать Open ->Analysis Services Database
(рис. 5.92);
3) в открывшемся окне Connect to Database надо указать сервер и
выбрать существующую базу или создать новую, а также указать путь
для размещения файлов проекта (рис. 5.93).

Рис. 5.92. Начало работы в режиме immediate

200
Рис. 5.93. Окно для выбора существующей базы
и создания новой

При работе с существующей базой интеллектуального анализа в


режиме immediate, для создания и модификации в ней объектов надо
обладать правами администратора этой базы данных.
Особенность работы в режиме offline заключается в том, что со-
здаваемые в ходе работы над проектом объекты хранятся на вашем
компьютере в виде XML-файлов. И на сервере объекты будут созда-
ны только после того, как вы «развернете» проект на сервер.
Единицей развертывания является весь проект, представляющий
собой базу данных аналитических служб. По мере работы над проек-
том возможно инкрементальное развертывание изменений (на сервере
создаются или изменяются только новые и модифицированные объ-
екты БД). При этом для развертывания проекта, надо обладать права-
ми администратора аналитических служб экземпляра SQL Server, на
который производится развертывание. Если на сервере уже имеется
база данных с тем же именем, что и в настройках вашего проекта, в
процессе развертывания существующая база будет удалена.
Этот режим может быть более удобен, если требуется создать
проект интеллектуального анализа данных, опробовать работу созда-

201
ваемых объектов на тестовом сервере, а потом развернуть решение в
производственной среде.
Для того, чтобы начать работу в режиме offline нужно:
1) запустить BI Dev Studio;
2) в меню File выбрать New->Project;
3) в открывшемся окне (рис. 5.94) выбрать тип проекта (Project
types: Business Intelligence Projects) и шаблон (Templates: Analysis Ser-
vices Project), указать имя проекта и месторасположение его файлов и
нажать кнопку OK.

Рис. 5.94. Создание нового проекта

Для того, чтобы развернуть проект на SQL Server, надо в меню


Build выбрать пункт Deploy (рис. 5.95). По умолчанию будет исполь-
зоваться неименованный экземпляр SQL Server, установленный на
том же компьютере (имя сервера будет localhost).
Настройки используемого сервера можно изменить через меню
Project-> <имя проекта> Properties… (рис. 5.96). В разделе Configura-
tion Properties -> Deployment можно указать целевой сервер для вы-

202
бранной конфигурации (узел Target настройка Server). Воспользовав-
шись кнопкой Configuration Manager (рис. 5.96), можно создать до-
полнительные конфигурации, для которых указать свои настройки
сервера назначения и базы данных.

Рис. 5.95. Развертывание проекта на сервер

Рис. 5.96. Настройка параметров развертывания проекта

203
Если проект был создан в режиме Offline и развернут на сервер,
а далее с ним решено работать в режиме Immediate, надо, открыв BI
Dev Studio, в меню File выбрать Open ->Analysis Services Database и
указать созданную базу данных.
Если наоборот, надо сменить режим Immediate на Offline, то в BI
Dev Studio в меню File нужно выбрать New->Project и в окне, анало-
гичном представленному на рис. 5.94, выбрать Import Analysis Ser-
vices Database.
Задание 1. Создайте проект интеллектуального анализа дан-
ных (в режиме offline). Разверните его на сервер. Закройте BI Dev
Studio. Снова отройте среду. Начните работу с БД интеллектуаль-
ного анализа в режиме immediate.
Задание 2. Для дальнейшего выполнения лабораторной работы
нам понадобятся данные из учебной базы AdventureWorksDW для SQL
Server 2008 (или SQL Server 2008 R2 – в зависимости от установлен-
ной версии). Если эта база данных у вас не установлена, нужно сде-
лать следующее. Зайдите на сайт codeplex.com по ссылке
http://msftdbprodsamples.codeplex.com/, там выберите нужную версию
SQL Server и загрузите программу-инсталлятор, после запуска, ко-
торой произойдет установка нужных баз данных.

Создание источника данных


Из BI Dev Studio в режиме immediate подключитесь к созданной
в ходе выполнения задания 1 базе данных интеллектуального анализа.
При необходимости, откройте окно Solution Explorer (меню View->
Solution Explorer или Ctrl+Alt+L). Выделите узел Data Sources и в кон-
текстном меню выберите New Data Source (рис. 5.97). Мы собираемся
создать новый источник данных (Data Source). По сути, это описание
местонахождения данных, с которыми мы собираемся работать.
Выполненные действия приводят к запуску мастера Data Source
Wizard. После окна приветствия, будет предложено определить ис-
пользуемое подключение (рис. 5.98). Если нужного подключения нет,
его надо создать, нажав кнопку New.

204
Рис. 5.97. Создание нового источника данных

Рис. 5.98. Выбор подключения

205
При создании подключения надо указать провайдер данных (по
умолчанию выбран провайдер для MS SQL Server, что нам подходит),
сервер, тип аутентификации и базу данных, которые будем использо-
вать (рис. 5.99). Нам понадобится база AdventureWorksDW.

Рис. 5.99. Создание нового подключения

Рис. 5.100. Указание учетной записи для доступа к данным

206
Когда подключение создано и протестировано (кнопка Test), оно
появится в списке доступных. Далее потребуется указать учетную за-
пись, от имени которой аналитические службы будут обращаться к
указанной базе данных (рис. 5.100). Можно указать отдельную учет-
ную запись или, например, выбрать использование учетной записи
текущего пользователя (если он имеет права на доступ к базе Adven-
tureWorksDW). К этому вопросу мы еще вернемся в работе № 12.
В последнем окне будет отображена сформированная мастером
строка, описывающая источник данных.
Задание 3. Создайте источник данных, указывающий на реляци-
онную базу AdventureWorksDW.

5.11. РАБОТА 11. СОЗДАНИЕ


ПРЕДСТАВЛЕНИЯ ИСТОЧНИКА ДАННЫХ
В ходе выполнения этой работы мы познакомимся с созданием
представления источника данных (Data Source View, DSV), а также
именованных вычислений и запросов.
В среде BI Dev Studio режиме immediate откройте созданную ба-
зу аналитических служб (в меню File выбрать Open ->Analysis
Services Database, далее указать используемый сервер и выбрать со-
зданную в ходе выполнения предыдущей лабораторной работы базу).
В окне Solution Explorer убедитесь, что в базе есть источник данных,
ссылающийся на реляционную базу данных AdventureWorksDW
(рис. 5.101, узел Data Sources).
Представление источника данных (Data Source View, DSV)
определяется [1] как абстрактное представление, которое позволяет
модифицировать способ рассмотрения источника данных (Data
Source), либо описать схему и в дальнейшем менять фактический ис-
точник данных. Последнее может понадобиться, если в процессе раз-
работки и тестирования используются данные из одной реляционной
БД, а в последующем будут использоваться другие базы аналогичной
структуры.

207
Для создания DSV надо выбрать соответствующий узел в окне
Solution Explorer, щелчком правой клавиши вызвать контекстное ме-
ню и выбрать пункт “New Data Source View” (рис. 5.101).

Рис. 5.101. Создание представления источника данных

В реляционной базе данных AdventureWorksDW есть представ-


ление dbo.vTargetMail, позволяющее получит информацию о клиенте
(идентификаторы, имя, фамилию, регион и т. д.) и о том, купил кли-
ент велосипед или нет. Эти данные нам понадобятся для дальнейшего
анализа. Запустив мастер создания DSV, в первом окне укажем ис-
пользуемый источник данных – AdventureWorks DW (рис. 5.102).

Рис. 5.102. Выбор источника данных

208
Рис. 5.103. Создание представления источника данных:
выбор объектов, включаемых в представление

В связи с тем, что выбранный источник данных указывает на


реляционную БД, следующее окно будет содержать перечень таблиц
и представлений, которые можно включить в представление источни-
ка данных, здесь надо выбрать представление vTargetMail и таблицу
DimGeography (рис. 5.103).
Если в исходной БД открыть в конструкторе представление
vTargetMail, мы увидим следующий код на языке SQL:
SELECT c.CustomerKey, c.GeographyKey,
c.CustomerAlternateKey, c.Title, c.FirstName,
c.MiddleName, c.LastName, c.NameStyle, c.BirthDate,
c.MaritalStatus, c.Suffix, c.Gender, c.EmailAddress,
c.YearlyIncome, c.TotalChildren,
c.NumberChildrenAtHome, c.EnglishEducation,
c.SpanishEducation, c.FrenchEducation,
c.EnglishOccupation, c.SpanishOccupation,
c.FrenchOccupation, c.HouseOwnerFlag,
c.NumberCarsOwned, c.AddressLine1, c.AddressLine2,
c.Phone, c.DateFirstPurchase, c.CommuteDistance,

209
x.Region, x.Age, CASE x.[Bikes] WHEN 0 THEN 0 ELSE 1
END AS BikeBuyer
FROM dbo.DimCustomer AS c INNER JOIN
(SELECT CustomerKey, Region, Age, SUM(CASE
[EnglishProductCategoryName] WHEN 'Bikes' THEN 1 ELSE
0 END) AS Bikes
FROM dbo.vDMPrep
GROUP BY CustomerKey, Region, Age) AS x ON
c.CustomerKey = x.CustomerKey
Отсюда видно, что часть информации о клиенте берется из таб-
лицы dbo.DimCustomer, в частности это код региона проживания кли-
ента (GeographyKey). На рис. 5.104 приведен фрагмент диаграммы,
показывающий связь таблицы DimCustomer и таблицы-справочника
DimGeography.

Рис. 5.104. Диаграмма, показывающая связь таблиц dbo.


DimCustomer и dbo.DimGeography

210
Рис. 5.105 демонстрирует выборку данных из представления
vTargetMail и таблицы DimGeography. Таким образом, если мы хотим
знать названия стран и городов пребывания клиентов, нам понадобит-
ся таблица DimGeography.

Рис. 5.105. Данные из vTargetMail (а) и DimGeography (b)

Но вернемся к создаваемому DSV. Последнее окно мастера поз-


воляет ввести имя DSV. Назовем его TargetMail_dsv (рис. 5.106).
После того, как представление источника данных создано, от-
крывается визуальный редактор, позволяющий, в частности, указать
связь между таблицами. Изначально связь не была определена
(рис. 5.107, а), так как в исходной БД vTagetMail является не табли-
цей, а представлением. Но связь можно определить, «протянув» ее
мышью на диаграмме от столбца внешнего ключа к соответствующе-
му первичному ключу (рис. 5.107, b). Особенно важно это сделать,
если для анализа используются варианты с вложенными таблицами.

211
Задание 1. В соответствии с приведенным описанием создайте
представление источника данных.

Рис. 5.106. Назначение имени представления


источника данных

a b

Рис. 5.107. Указание связи между таблицами

212
Исследование данных
Среда BI Dev Studio предоставляет инструменты, позволяющие
быстро познакомиться с имеющимися данными. Для этого надо
щелчком правой клавиши в области таблицы вызвать контекстное
меню, где выбрать пункт Explore Data (рис. 5.108, a).
Открывшееся окно позволяет представить данные в виде таблиц
и диаграмм. На рис. 5.108, b представлена вкладка с диаграммой
(Chart) отображающей распределение клиентов из vTargetMail по ре-
гионам. Выпадающий список в верхней части окна позволяет выбрать
атрибуты, распределение значений которых представляется диаграм-
мами. В одном окне можно разместить несколько диаграмм.
Задание 2. Используя все средства представления данных
(Table, PivotTable, …) ознакомьтесь с данными из vTargetMail.

a b

Рис. 5.108. Средства просмотра и предварительного


анализа данных

Создание именованных вычислений и запросов


В некоторых случаях, исходные данные требуют дополнитель-
ной обработки. Например, у нас есть абсолютные значения объема
продаж в каждом регионе за год, а для анализа хотелось бы предста-

213
вить эти значения как процент от общих продаж всей компании. По-
добные задачи можно решить путем создания именованных вычисле-
ний и запросов.
Создание именованного вычисления (Named Calculation) приво-
дит к появлению в таблице нового столбца, содержащего результаты
расчета. Пусть для проведения анализа нам надо уменьшить число
рассматриваемых стран до следующего списка: «Canada» (Канада),
«France» (Франция), «Other» (все остальные). Щелкнем правой кла-
вишей по заголовку таблицы DimGeography и в контекстном меню
выберем пункт New Named Calculation (рис. 5.109).

Рис. 5.109. Создание именованного вычисления

В открывшемся окне (рис. 5.110) надо ввести имя нового столб-


ца (в примере – NewContryName), описание и выражение, которое бу-
дет рассчитываться. В примере, чтобы сформировать нужно значение
(“Canada” или “France” для этих стран и “Other” для остальных) ис-
пользуется оператор CASE.
CASE
WHEN [EnglishCountryRegionName] = 'Canada' OR
[EnglishCountryRegionName] ='FRANCE' THEN
[EnglishCountryRegionName]
ELSE 'Other'
END

214
Рис. 5.110. Создание именованного вычисления

Кроме CASE в именованных выражениях могут использоваться


допустимые в SQL математические операторы и функции (например,
1.5*[Price], если нужно рассчитать значение в полтора раза большее,
чем в столбце [Price]), а также операции со строками.
После того, как именованное вычисление создано, оно отобра-
зиться на диаграмме, а воспользовавшись средствами просмотра дан-
ных, можно увидеть рассчитываемые значения (рис. 5.111).

Рис. 5.111. Просмотр значений именованного вычисления

215
Задание 3. По аналогии с рассмотренным примером создайте
свое именованное вычисление.
Именованный запрос работает аналогично представлению (view)
в реляционной базе данных. Для его создания щёлкните правой кла-
вишей в свободной области диаграммы и в контекстном меню выбе-
рите New Named Query (рис. 5.112). Пусть нам нужна следующая ин-
формация о клиенте: идентификатор, имя, фамилия, город, страна. В
окне зададим название именованного запроса (пусть это будет NewQ),
согласимся с выбором источника данных и введем запрос на SQL.
SELECT dbo.vTargetMail.CustomerKey,
dbo.vTargetMail.FirstName,
dbo.vTargetMail.LastName, dbo.DimGeography.City,
dbo.DimGeography.EnglishCountryRegionName
FROM dbo.vTargetMail INNER JOIN dbo.DimGeography
ON vTargetMail.GeographyKey =
DimGeography.GeographyKey

Рис. 5.112. Создание именованного запроса

216
Рис. 5.113. Создание именованного запроса (продолжение)

Если запрос корректен, нажатие кнопки Run (зеленая стрелка


вправо), приведет к его выполнению (рис. 5.113).
Задание 4. По аналогии с рассмотренным примером создайте
именованный запрос.

5.12. РАБОТА 12. СОЗДАНИЕ СТРУКТУРЫ


И МОДЕЛИ ИНТЕЛЛЕКТУАЛЬНОГО
АНАЛИЗА. ЗАДАЧА КЛАСТЕРИЗАЦИИ
В предыдущем разделе мы выяснили, что в представлении vTar-
getMail БД AdventureWorksDW есть информация о клиентах (имя, да-
та рождения, семейное положение, число машин и т. д.) и о том, при-
обрел конкретный клиент велосипед или нет (столбец BikeBuyer = 1,
если велосипед покупался, иначе = 0).

217
Путь необходимо разделить всех клиентов на несколько групп,
сходных по значениям параметров. Подобная задача называется зада-
чей кластеризации. Средствами надстроек интеллектуального анализа
для MS Office 2007 мы решали подобную задачу в ходе выполнения
лабораторной работы № 2. Теперь разберем, как ее решить в среде BI
Dev Studio.
Сначала понадобится создать структуру и модель интеллекту-
ального анализа. Откроем созданную ранее базу аналитических служб
в среде BI Dev Studio, в окне Solution Explorer щелкнем правой кла-
вишей мыши на узле Mining Structures и в контекстном меню выберем
New Mining Structure (рис. 5.114).
После вывода окна приветствия мастер Data Mining Wizard за-
просит, будет ли создаваемая структура основана на реляционном ис-
точнике данных или на кубе OLAP (рис. 5.115). Нам нужен первый
вариант, использующий реляционную БД.
Следующий шаг – выбор между одновременным созданием
структуры и модели интеллектуального анализа и только созданием
структуры.

Рис. 5.114. Создание новой структуры интеллектуального


анализа данных

218
Рис. 5.115. Создание новой структуры интеллектуального
анализа данных (продолжение)

Для решения поставленной задачи нам понадобится модель, ис-


пользующая алгоритм кластеризации (рис. 5.116). После чего будет
предложено выбрать используемое представление источника данных.
Пока в нашей базе DSV один, так что проблема выбора не стоит
(рис. 5.117). Следующий шаг – выбор таблицы вариантов и вложен-
ных таблиц (если есть). В нашем случае, таблица вариантов – vTar-
getMail, вложенных таблиц нет (рис. 5.118).

219
Рис. 5.116. Создание новой структуры и модели
интеллектуального анализа: выбор алгоритма

Рис.5.117. Создание новой структуры и модели


интеллектуального анализа:
выбор представления источника данных

220
Рис. 5.118. Выбор таблицы вариантов

Далее потребуется указать ключевой столбец, входные столбцы


и столбец, значение которого будет предсказываться. Ключевой стол-
бец BI Dev Studio определила автоматически, это первичный ключ
таблицы CustomerKey (рис. 5.119). В случае использования вложен-
ных таблиц, указанию ключей надо уделить особое внимание.
Для задачи кластеризации указание предсказываемого (Predicta-
ble) атрибута не требуется. А в качестве входных атрибутов будем
использовать:
‒ Age (возраст клиента);
‒ BikeBuyer (признак того, что клиент приобрел велосипед);
‒ CommuteDistance (расстояние до работы или других «регуляр-
ных» поездок);
‒ EnglishEducation (образование);

221
‒ EnglishOccupation (должность или род занятий);
‒ Gender (пол);
‒ NumberCarsOwned (число машин в собственности);
‒ NumberChildrenAtHome (число детей дома);
‒ Region (регион проживания);
‒ TotalChildren (общее число детей);
‒ YearlyIncome (годовой доход).

Рис. 5.119 Выбор входных и предсказываемых атрибутов

Следующий шаг – уточнение типов данных. На рис. 5.120 пред-


ставлены исходные значения. Не все они могут быть признаны удач-
ными. Например, тип содержимого (Content Type) атрибута TotalChil-
dren установлен как «непрерывный» (Continious), тогда как более
корректно был бы выбрать тип «дискретный», так как количество де-
тей будет принадлежать ограниченному множеству значений

222
{0,1,2,..}. Можно изменить тип данных и тип содержимого вручную, а
можно воспользоваться кнопкой Detect для автоматического опреде-
ления. Но в нашем случае, тип содержимого для атрибутов
TotalChildren и NumberChildrenAtHome придется менять все равно
вручную.

Рис. 5.120. Уточнение типов данных

После уточнения типов данных будет предложено зарезервиро-


вать часть данных для целей тестирования. В принципе, для решения
задачи кластеризации тестовое множество создавать не требуется.
Поэтому лучше здесь тестовый набор не создавать и в поле Percentage
of data for testing (выделено на рис. 5.121) указать значение 0 %. В
следующих лабораторных, когда мы будем решать задачу классифи-
кации, резервирование данных для тестирования будет необходимо.

223
Рис. 5.121. Резервирование данных для целей тестирования

Последнее окно мастера позволяет указать названия для струк-


туры и модели интеллектуального анализа. Предлагаемые по умолча-
нию названия лучше отредактировать, так чтобы они явно указывали,
что это за объект. Например, созданную структуру назовем
vTargetMail_structure, а основанную на алгоритме кластеризации мо-
дель ‒ vTargetMail_Cl. Установим также флажок «Allow drill through»,
что позволит проводить детализацию, например, просматривать от-
дельные записи, относимые к тому или иному кластеру (рис. 5.122).
После чего, так как мы работает в режиме immediate, на сервере ин-
теллектуального анализа будут созданы структура и модель. А в среде
BI Dev Studio будет открыто окно редактора, позволяющее проводить
дальнейшую работу с созданными объектами. В частности, из кон-
текстного меню на вкладке Mining Structure можно запустить обра-
ботку структуры и всех моделей (рис. 5.123). В процессе обработки
данные будут загружены в структуру, и пройдет обучение моделей.

224
Рис. 5.122. Указание имени структуры и модели
интеллектуального анализа

Рис. 5.123. Окно редактора, запуск обработки структуры

225
Рис. 5.124. Настройки при обработке структуры

Можно выбрать тип обработки объекта (рис. 5.124):


- Process Full (полная обработка) – объект полностью обрабаты-
вается, для случая структуры происходит обработка структуры и всех
ее моделей;
- Process Default (обработка по умолчанию) – сервер выполняет
действия, необходимые для приведения данного объекта в обработан-
ное состояние. Например, если Process Default выполняется для от-
дельной модели, будет обработана именно эта модель (обработка дру-
гих моделей, относящихся к структуре, проводиться не будет);

226
- Process Structure (обработка структуры) – может проводиться
только для структуры, при этом читаются и кэшируются данные, об-
работка моделей не производится;
- Process Clear Structure (очистка структуры) – использование
этой операции в отношении структуры приведет к тому, что кэш
структуры будет очищен от исходных данных, но содержащиеся в ней
модели сохранятся в обработанном состоянии;
- Unprocess (отмена обработки) – переводит объект в необрабо-
танное состояние; в случае структуры, из кэшей будут удалены дан-
ные и содержащиеся в структуре модели будут переведены в необра-
ботанное состояние.
Запускаем полную обработку для созданной структуры с
настройками по умолчанию. И получаем сообщение об ошибке: в ис-
точнике данных указано значение ImpersonationMode, которое не
поддерживается для операций обработки (рис. 5.125).

Рис. 5.125. Сообщение об ошибке при попытке


обработать структуру

227
В лабораторной работе № 10, отмечалось, что к настройке Im-
personationMode мы еще вернемся. Сделаем это сейчас. Закроем окна
с сообщениями об ошибке и окна мастера обработки. В окне Solution
Explorer найдем используемый источник данных и откроем его в ре-
дакторе (рис. 5.126). На вкладке Impersonation Information (рис. 5.127)
вместо установленного ранее “Use the credentials of the current user”
выбираем вариант “Inherit” (наследовать). В этом варианте будут ис-
пользоваться различные учетные записи (пользователя, службы) в за-
висимости от выполняемой операции.

Рис. 5.126. Открываем источник данных в редакторе

Рис. 5.127. Меняем настройку Impersonation Information

228
Рис. 5.128. Результат успешной обработки структуры

После изменения настройки, повторно запускаем полную обра-


ботку структуры, которая сейчас должна завершиться успешно
(рис. 5.128).
Задание 1. По аналогии с рассмотренным примером создайте
структуру и модель интеллектуального анализа.
После обработки можно открыть в редакторе структуру и на
вкладке Mining Model Viewer ознакомиться с построенной моделью
(рис. 5.129). Инструмент Cluster Profiles (рис. 5.130) позволяет уви-
деть характеристики выявленных кластеров. Например, кластер 4
объединяет клиентов старшего возраста (средний возраст около
63 лет), работающих в сфере управления (EnglishOccupa-
tion=’Management’).
Здесь же можно переименовать кластеры, провести детализацию
(опция Drill Through в контекстном меню), чтобы увидеть записи, от-
носимые к каждому кластеру.

229
Рис. 5.129. Просмотр модели – диаграмма кластеров

Рис. 5.130. Просмотр характеристик выявленных кластеров

230
Задание 2. Ознакомьтесь с результатами кластеризации. Оха-
рактеризуйте полученные кластеры. Посмотрите, все ли добавлен-
ные в модель столбцы учитывались в процессе кластеризации или не-
которые были проигнорированы (для этого посмотрите данные на
вкладке Mining Models).

Получение номера кластера


Теперь рассмотрим, как можно получить список клиентов с
идентификаторами присвоенных им кластеров. Для этого можно ис-
пользовать конструкцию прогнозирующего соединения (PREDIC-
TION JOIN) и функцию Cluster().
В среде BI Dev Studio в окне просмотра модели перейдем на
вкладку Mining Model Prediction. В окне Select Input Tables нажмем
кнопку Select Case Table и укажем, откуда брать варианты: представ-
ление источника данных TargetMail_dsv и в нем vTargetMail. После
этого надо выбрать список отображаемых в результатах запроса атри-
бутов. Пусть это будет ключ клиента (Customer Key), его имя, отче-
ство или второе имя и фамилия (FirstName, Middle Name, LastName) и
регион проживания (Region). Также нам нужно получить значение
функции Cluster (рис. 5.131). Когда запрос сформирован в конструк-
торе, можно переключиться к представлению результатов (кнопка с
изображением таблицы на панели инструментов окна Mining Model
Prediction). Результат выполнения прогнозирующего запроса приве-
ден на рис. 5.132, а его код представлен ниже.
Задание 3. По аналогии с рассмотренным примером, выведите
список клиентов с идентификаторами кластеров, к которым их от-
носит модель.
Воспользуйтесь функцией ClusterProbability, чтобы получить
оценку вероятности того, что данный вариант находится в указан-
ном кластере.

231
Рис. 5.131. Конструктор прогнозирующих запросов

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

232
SELECT t.[CustomerKey],t.[FirstName],
t.[MiddleName], t.[LastName],
t.[Region], Cluster()
From [vTargetMail_Cl]
PREDICTION JOIN
OPENQUERY([Adventure Works DW],
'SELECT [CustomerKey], [FirstName],
[MiddleName], [LastName], [Region],
[Gender], [YearlyIncome],
[TotalChildren], [NumberChildrenAtHome],
[EnglishEducation], [EnglishOccupation],
[NumberCarsOwned],[CommuteDistance],
[Age], [BikeBuyer]
FROM [dbo].[vTargetMail]') AS t
ON
[vTargetMail_Cl].[Gender] = t.[Gender] AND
[vTargetMail_Cl].[Yearly
Income]=t.[YearlyIncome] AND
[vTargetMail_Cl].[Total Children] =
t.[TotalChildren] AND
[vTargetMail_Cl].[Number Children At Home] =
t.[NumberChildrenAtHome] AND
[vTargetMail_Cl].[English Education] =
t.[EnglishEducation] AND
[vTargetMail_Cl].[English Occupation] =
t.[EnglishOccupation] AND
[vTargetMail_Cl].[Number Cars Owned] =
t.[NumberCarsOwned] AND
[vTargetMail_Cl].[Commute Distance] =
t.[CommuteDistance] AND
[vTargetMail_Cl].[Region] = t.[Region] AND
[vTargetMail_Cl].[Age] = t.[Age] AND
[vTargetMail_Cl].[Bike Buyer] = t.[BikeBuyer]

233
5.13. РАБОТА 13. ЗАДАЧА КЛАССИФИКАЦИИ.
СОЗДАНИЕ СТРУКТУРЫ И МОДЕЛЕЙ
ИНТЕЛЛЕКТУАЛЬНОГО АНАЛИЗА.
СРАВНЕНИЕ ТОЧНОСТИ МОДЕЛЕЙ
Данная лабораторная работа посвящена решению задачи клас-
сификации и оценке точности прогнозов, получаемых с использова-
нием разных алгоритмов.
Пусть, используя имеющиеся данные компании Adventure
Works, необходимо определить, купит ли новый клиент велосипед
или нет. Это пример задачи классификации, которую можно решить с
помощью разных алгоритмов: упрощенного алгоритма Байеса,
нейронных сетей, деревьев решений. Рассмотрим, как для одной
структуры можно создать несколько моделей и оценить качество
формируемого ими прогноза.
По аналогии с заданиями предыдущей лабораторной создадим
структуру интеллектуального анализа и модель, использующую
упрощенный алгоритм Байеса. Назовем структуру –
vTargetMail_structure2, модель на основе алгоритма Naïve Bayes
(упрощенный алгоритм Байеса) – vTargetMail_NB. Данные будем
брать, как и раньше, из представления vTargetMail, используя создан-
ные в предыдущих лабораторных источник данных (Data Source) и
представление источника данных (Data Source View).
При определении структуры и модели в перечне столбцов отме-
тим ключевой атрибут – CustomerKey и предсказываемое (англ. Pre-
dictable) значение – BikeBuyer (1 – признак того, что клиент купил ве-
лосипед; 0 – не купил). Чтобы определить, какие атрибуты оказывают
на него влияние, воспользуемся кнопкой Suggest и отметим предлага-
емые столбцы, в наибольшей степени влияющие на целевой
(рис. 5.133). Наши знания о предметной области подсказывают, что

234
адрес и имя стоит исключить, а включив в список EnglishEducation,
можно исключить FrenchEducation и SpanishEducation, так как это то
же самое, только на другом языке. Таким образом, в качестве вход-
ных (Input) атрибутов будем использовать:
‒ Age (возраст клиента);
‒ NumberCarsOwned (число машин в собственности);
‒ TotalChildren (общее число детей);
‒ EnglishEducation (образование);
‒ CommuteDistance (расстояние до работы);
‒ NumberChildrenAtHome (число детей дома);
‒ YearlyIncome (годовой доход);
‒ Region (регион проживания).

Рис. 5.133. Выбор столбцов в соответствии с рекомендациями


Data Mining Wizard

На рис. 5.134 представлены типы данных, автоматически уста-


новленные для столбцов. Обратите внимание, что для некоторых
столбцов установлен тип содержимого Discretized. Связано это с тем,

235
что выбранный для модели упрощенный алгоритм Байеса не работает
с числовыми атрибутами с типом содержимого Continuous и для этих
столбцов будет проведена дискретизация значений. Такой тип содер-
жимого корректен в случае атрибутов Age и YearlyIncome. Но для ат-
рибутов BikeBuyer, NumberCarsOwned, NumberChildrenAtHome, To-
talChildren надо сменить тип на Discrete – мы знаем, что множество
возможных значений этих атрибутов невелико.

Рис. 5.134. Уточнение типов содержимого

В следующем окне для целей тестирования, в соответствии с


установкой по умолчанию, резервируем 30 % записей.

236
Таким образом, мы создали структуру интеллектуального ана-
лиза данных. Если открыть структуру в редакторе и перейти на
вкладку Mining Models можно удостовериться, что создана и модель
(рис. 5.135). Обратите внимание, что атрибут BikeBuyer отмечен как
предсказываемый (PredictOnly). Раскрывающийся список напротив
названия столбца позволяет сменить данную настройку.
Если какой-то атрибут надо исключить из рассмотрения при
обучении модели, смените значения Input на Ignore (игнорировать).

Рис. 5.135. Созданная структура, включающая одну модель

Воспользовавшись контекстным меню (рис.5.13, 6) можно полу-


чить доступ к параметрам используемого моделью алгоритма
(рис. 5.137). Также можно настроить фильтр (пункт Set Model Filter…
на рис. 5.13, 6), тогда для анализа будут использоваться только вари-
анты, соответствующие условиям фильтрации. Например, это позво-
ляет исключить из рассмотрения клиентов из какого-то региона, ко-
торый, как мы считаем, существенно отличается от остальных.

237
Рис. 5.136. Контекстное меню позволяет просмотреть и
изменить параметры алгоритма

Рис. 5.137. Параметры упрощенного алгоритма Байеса


для созданной модели

238
Воспользовавшись пунктом контекстного меню New Mining
Model… (рис. 5.136) можно создавать модели, основанные на других
алгоритмах интеллектуального анализа, но аналогичные исходной по
набору атрибутов.
Задание 1. Создайте структуру и модель интеллектуального
анализа, как это было описано выше.
Задание 2. В той же структуре создайте две дополнительные
модели, одна из которых (назовем ее vTargetMail_DT) будет исполь-
зовать алгоритм Microsoft Decision Trees, другая (vTargetMail_NN) -
Microsoft Neural Network. В итоге, должен получиться результат,
представленный на рис. 5.138. Ознакомьтесь с параметрами создан-
ных моделей.
Задание 3. Выполните обработку структуры и всех ее моделей
(полную обработку структуры).

Рис. 5.138. Три модели в одной структуре

После того, как структура и модели созданы и обработаны, ре-


комендуется выяснить, какая из моделей дает более точный прогноз.
Для этого можно использовать диаграммы точности (англ. Mining Ac-
curacy Chart), а также зарезервированное при создания структуры те-
стовое множество вариантов, которое не задействовалось при обуче-
нии модели.

239
Перейдем на вкладку Mining Accuracy Chart (рис. 5.139). Там
можно отметить, для каких моделей будут строиться диаграммы, и
какие данные будут использоваться в процессе тестирования. Можно
использовать набор данных, зарезервированный в модели или в
структуре, а также внешний набор данных. Первые два варианта бу-
дут отличаться, если при создании модели задавался фильтр вариан-
тов. Проверочный набор в модели будет включать только варианты,
соответствующие фильтру, а проверочный набор в структуре фильтр
не учитывает. В нашем случае фильтрация не использовалась, так что
эти варианты равнозначны.

Рис. 5.139. Предварительные настройки


для оценки точности модели

Кроме того, для дискретного целевого атрибута можно выбрать


предсказываемое значение (Predict Value, рис. 5.139). В рассматрива-
емом примере нам более интересно значение «1», т. е. клиент, кото-
рый сделает покупку.

240
Выбираем тестовый набор для структуры, Predict Value = 1, и
переходим на вкладку Lift Chart. Стандартная диаграмма точности,
называемая диаграммой роста (англ. Lift Chart), будет выглядеть, как
представлено на рис. 5.140. Верхняя линия соответствует идеальной
модели; линия, идущая под наклоном 45 % – случайному выбор. У
нас в тестовом наборе примерно 50 % вариантов имеют значение
BikeBuyer равное 1. И можно представить, что каждая модель соглас-
но своему прогнозу формирует упорядоченный по степени близости к
искомому значению список вариантов. У идеальной модели все иско-
мые варианты будут в первых 50 процентах списка. У случайной мо-
дели – в первой половине списка будет только 50 % клиентов, сде-
лавших покупку. Чем ближе результат к идеальной модели, тем точ-
нее прогноз. В нашем примере наилучший результат дает модель, ис-
пользующая алгоритм деревьев принятия решений (Decision Trees).

Рис. 5.140. Диаграмма роста

241
Рис. 5.141. Диаграмма роста, когда целевое значение
не выбрано

Если не указывать целевое значение (т. е. на рис. 5.139 не ста-


вить Predict Value = 1), то диаграмма точности будет выглядеть, как
представлено на рис. 5.141. На ней тоже видно, что модель vTarget-
Mail_DT дает более точный прогноз.
Чтобы получить стоимостную оценку качества модели, можно
использовать диаграмму роста прибыли (на рис. 5.140 в выпадающем
списке Chart Type выбрать Profit Chart). BI Dev Studio запросит дан-
ные об общем числе вариантов – Population (например, это число кли-
ентов, которым собираемся провести рассылку), ограничении на сум-
марную стоимость – Fixed Cost (например, бюджет рекламной рас-
сылки), затратах на единицу – Individual Cost (например, стоимость
отправки одного письма с рекламным предложением), выручке от од-
ного покупателя – Revenue per Individual (рис. 5.142).

242
Рис. 5.142. Настройки для построения диаграммы
роста прибыли

Полученная диаграмма позволяет понять, какое число предло-


жений надо разослать для получения максимальной прибыли. Будем
считать, что на основе прогнозов каждой модели сформирован список
клиентов, упорядоченный по убыванию прогнозируемой вероятности
покупки клиентом велосипеда. Из диаграммы роста прибыли
(рис. 5.143) видно, что при использовании модели vTargetMail_DT,
максимум прибыли достигается, когда предложения отправлены при-
мерно 64 % клиентов, начиная с верхней части списка.
Задание 4. По аналогии с описанием, проведите анализ точно-
сти полученных моделей. Прокомментируйте результаты.

243
Рис. 5.143. Диаграмма роста прибыли

5.14. РАБОТА 14. ПРОСМОТР МОДЕЛЕЙ


ИНТЕЛЛЕКТУАЛЬНОГО АНАЛИЗА
(ДЕРЕВЬЯ РЕШЕНИЙ, УПРОЩЕННЫЙ АЛГОРИТМА
БАЙЕСА, НЕЙРОННЫЕ СЕТИ).
НАПИСАНИЕ «ОДНОЭЛЕМЕНТНЫХ»
ПРОГНОЗИРУЮЩИХ ЗАПРОСОВ
Данная лабораторная работа посвящена более подробному зна-
комству с содержимым модели и написанию прогнозирующих запро-
сов. В среде BI Dev Studio откроем созданную в ходе выполнения
предыдущих лабораторных работ базу данных аналитических служб.
В ней откроем в редакторе структуру vTargetMail_Structure 2, кото-
рую создавали в работе № 13. Перейдем на вкладку Mining Model
Viewer и в выпадающем списке Mining Model выберем модель vTar-
getMai l_NB, основанную на использовании упрощенного алгоритма
Байеса (рис. 5.144).

244
Рис. 5.144. Диаграмма модели, основанной
на упрощенном алгоритме Байеса

После проведения обработки, модель интеллектуального анали-


за данных хранит метаданные о себе, собранную статистику, а также
закономерности, выявленные алгоритмом интеллектуального анализа.
Способ описания закономерностей зависит от используемого алго-
ритма.
Среда BI Dev Studio предоставляет инструменты, позволяющие
ознакомиться с содержимым модели. В частности, это представлен-
ные на рис. 5.144 диаграммы (вид диаграммы зависит от используе-
мого алгоритма). В случае упрощенного алгоритма Байеса можно ис-
пользовать диаграмму типа «сеть зависимостей» (Dependency
Network) для того, чтобы увидеть, насколько значения одних атрибу-
тов влияют на значения других.
Если на диаграмме (рис. 5.144) щелчком мыши выделить целе-
вой атрибут (Bike Buyer) и передвинуть вниз «бегунок» All Links в
левой части экрана, то можно увидеть, что в наибольшей степени на
решение о приобретении велосипеда влияет число машин в собствен-
ности у клиента (рис. 5.145).

245
Рис. 5.145. Работа с диаграммой типа «сеть зависимостей»

Вкладка Attribute Discrimination позволяет увидеть, какие значе-


ния входных атрибутов в наибольшей степени соответствуют тому
или иному значению выходного (рис. 5.146). Из представленных на
рисунке данных можно сделать вывод, что отсутствие машины у кли-
ента с большой вероятностью приведет к покупке велосипеда. Похо-
жие диаграммы мы видели в Excel, в ходе выполнения лабораторной
№ 2, посвященной использованию инструмента «Анализ ключевых
факторов влияния».
Еще более подробно ознакомиться с содержимым модели поз-
воляет средство просмотра Microsoft Generic Content Tree Viewer. Ес-
ли открыть в нем модель vTargetMail_NB можно увидеть содержимое
модели в виде иерархии узлов. На рис. 5.147 представлено содержи-
мое узла, соответствующее ситуации, когда у клиента нет машин (ат-
рибут Number Cars = 0). Из 2977 вариантов, в которых это значение
встречается, 1889 клиентов купили велосипед (это примерно 63 %) и
1088 – не купили.

246
Рис. 5.146. Сравнение наборов значений входных атрибутов,
соответствующих выбранным значениям выходного атрибута

Рис. 5.147. Просмотр модели в Microsoft Generic Content Tree Viewer

247
Для модели vTargetMail_DT, использующей алгоритм деревьев
принятия решений, первой показывается одноименная диаграмма De-
cision Tree (рис. 5.148). На ней отображаются узлы построенного де-
рева, а выбор любого конечного узла позволяет понять, как алгоритм
будет строить прогноз для соответствующей комбинации значений
входных параметров. Например, на рисунке показано, что для клиента
имеющего две машины, проживающего в регионе Pacific (Тихоокеан-
ский), возрастом менее 43 лет, будет сделан положительный прогноз
относительно покупки им велосипеда, так как из 103 подобных кли-
ентов в обучающей выборке 84 – сделали покупку.
Также для моделей на основе алгоритма деревьев принятия ре-
шения можно получить рассмотренные выше диаграммы типа «сеть
зависимостей».
Для основанной на алгоритме нейронных сетей модели
vTargetMail_DT будет отображаться диаграмма попарного сравнения
вариантов, аналогичная представленной на рис. 5.146.

Рис. 5.148. Диаграмма Decision Tree


Задание 1. Проведите анализ содержимого всех моделей, по-
строенных в ходе предыдущей лабораторной. Опишите полученные
результаты.

248
Построение прогнозов
Вернемся к модели vTargetMail_DT, которая как мы выяснили в
работе № 13, дает наиболее точный прогноз. Попробуем сейчас по-
строить прогноз для отдельного варианта. Это можно представить,
как попытку узнать, купит ли человек, заполнивший анкету, велоси-
пед или нет.
Перейдем на вкладку построителя запросов Mining Model Pre-
diction. В окне Mining Model нажмите кнопку Select Model и выберите
в структуре vTargetMail_Structure2 модель vTargetMail_DT
(рис. 5.149).

Рис. 5.149. Выбор модели, используемой


для построения прогноза

В связи с тем, что прогноз мы хотим построить для одного вари-


анта, значения атрибутов которого будем вводить вручную, в кон-
текстном меню выберем соответствующий тип запроса – Singleton

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

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


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

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

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


запроса

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

Если нажать кнопку переключения в режим просмотра резуль-


татов прогнозирующего запроса (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

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

5.15. РАБОТА 15. РАБОТА С МОДЕЛЯМИ


ИНТЕЛЛЕКТУАЛЬНОГО АНАЛИЗА ДАННЫХ
ИЗ SQL SERVER MANAGEMENT STUDIO
В ходе выполнения данной лабораторной работы будут рас-
смотрены вопросы, связанные с использованием среды SQL Server
Management Studio при интеллектуальном анализе данных. SQL Serv-
er Management Studio, в первую очередь, рассматривается как сред-
ство создания и администрирования реляционных баз данных. В то
же время, при хорошем знании языка DMX, некоторые задачи, свя-
занные проведением интеллектуального анализа данных, можно
быстро решить из этой среды.
Для начала работы, после запуска Management Studio, надо под-
ключиться к аналитическим службам SQL Server (рис. 5.155). Для
этого в выпадающем списке Server Type надо выбрать Analysis Server,
а в поле Server Name ввести имя сервера («local», если вы подключае-
тесь к неименованному экземпляру SQL Server, установленному на
том же компьютере, где запущена Management Studio). После под-
ключения можно просматривать имеющиеся базы аналитических
служб и создавать новые, а также создавать запросы, выполнять ре-
зервное копирование, восстановление и т. д.

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

Рассмотрим создание новой модели с помощью запроса DMX. В


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

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

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

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


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]. Подобную модель
можно обучить на уже известных нам данных из базы Adventure-
WorksDW. Учитывая то, что мы воспользовались оператором CRE-
ATE MINING MODEL, имя созданной структуры будет формировать-
ся как <имя модели>_Structure (рис. 5.158). Кстати, если нам понадо-
бится скрипт, создающий объект, аналогичный уже имеющемуся в

255
базе данных, его можно получить, как показано на рис. 5.159. Правда,
получим мы не код на DMX, а описание в формате XMLA.

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

Рис. 5.159. Генерация скрипта на основе


существующего объекта

Но вернемся к работе с моделью интеллектуального анализа


данных. После создания, ее надо обработать, загрузив в нее данные.
Делается это с помощью оператора 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]')

256
Обратите внимание, что в предложении OPENQUERY мы ис-
пользуем созданный в ходе лабораторной № 10 источник данных
[Adventure Works DW].
После обработки, щелкнув правой клавишей мыши на модели в
окне Object Explorer, можно из контекстного меню выбрать опцию
Browse и просмотреть модель, аналогично тому, как это делалось в BI
Dev Studio (рис. 5.160).

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

Теперь, когда модель обработана, можно написать прогнозиру-


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

257
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 базы Adventure-
Works 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
OPENQUERY([Adventure Works DW],
'SELECT DISTINCT TOP 10 dbo.DimCustomer.CustomerKey,
dbo.DimCustomer.FirstName, dbo.DimCustomer.LastName,
dbo.vDMPrep.Age, dbo.DimCustomer.[NumberCarsOwned]

258
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 % данных. Выполните обработку модели.
Напишите прогнозирующие запросы, аналогичные рассмотренным в
лабораторной.

259
5.16. РАБОТА 16. ИСПОЛЬЗОВАНИЕ АЛГОРИТМА
MICROSOFT TIME SERIES ДЛЯ
ПРОГНОЗИРОВАНИЯ ЗНАЧЕНИЙ
ВРЕМЕННЫХ РЯДОВ
Данная лабораторная работа посвящена вопросам использова-
ния аналитических служб SQL Server 2008 для прогнозирования вре-
менных рядов.
На практике мы часто сталкиваемся с временными рядами: бир-
жевые котировки ценных бумаг, объемы выпуска товаров по месяцам,
среднесуточные значения температуры воздуха – все это примеры по-
добных последовательностей. В общем случае, временной ряд – это
набор числовых значений, собранных в последовательные моменты
времени (в большинстве случаев – через равные промежутки време-
ни).
При работе с временными рядами часто возникает желание вы-
явить зависимости между текущим значением и предшествующими
ему, и использовать их для прогнозирования будущих значений. По-
добную задачу можно решить с использованием алгоритма Microsoft
Time Series, входящего в набор стандартных алгоритмов аналитиче-
ских служб SQL Server 2008.
Для анализа будем использовать данные из учебной базы Adven-
tureWorksDW. Представление (view) dbo.vTimeSeries формирует вре-
менной ряд, содержащий результаты продаж различных моделей ве-
лосипедов по месяцам (рис. 5.162). Рассматриваемый набор данных
представляет собой пример чередующегося ряда: в нем есть несколь-
ко записей соответствующих одной дате, содержащих данные для
разных моделей велосипедов.
Другой вариант представления – столбчатый формат – иллю-
стрируется табл. 5.1.

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

Рис. 5.162. Данные из представления


vTimeSeries базы AdventureWorksDW

Таблица 5.1
Представление временных рядов в «столбчатом» формате
Дата M200 R200 …
200101 100 50
200102 120 20
… …. ….

Процесс создания DSV подробно разбирался в лабораторной ра-


боте № 11 и новое представление надо создать аналогичным образом.
Назовем созданное представление источника данных TimeSeries_dsv.
Далее потребуется создать в среде BI Dev Studio модель для
прогнозирования рядов. Начало создания модели: будем использовать

261
данные из реляционной БД, алгоритм – Microsoft Time Series (Алго-
ритм временных рядов Microsoft), представление источника данных –
TimeSeries_dsv, таблица с данными – vTimeSeries.
Определим, какие атрибуты потребуются для прогноза. Мы
имеем дело с чередующимся временным рядом, и чтобы идентифици-
ровать один его элемент, надо указать отметку времени и название
модели велосипеда. Значит и ключевых атрибутов будет два – DateS-
eries (отметка времени) и ModelRegion. Прогнозировать будем значе-
ния объема продаж в денежном эквиваленте (Amount) и количество
проданных велосипедов (Quantity). Эти атрибуты также будут рас-
сматриваться и в качестве входных (рис. 5.163).

Рис. 5.163. Выбор прогнозируемых атрибутов

262
Следующий шаг – определение типов данных и содержимого
для выбранных атрибутов. Здесь можно согласиться с автоматически
подобранными значениями (рис. 5.164). Стоит обратить внимание на
тип содержимого Key Time, выбранный для столбца [DateSeries].
Столбец с таким типом обязательно должен присутствовать, если бу-
дет использоваться алгоритм интеллектуального анализа Microsoft
Time Series.
Назовем создаваемую структуру vTimeSeries_TS_Structure, а
модель – vTimeSeries_TS (рис. 5.165). После создания структуры и
модели интеллектуального анализа можно более точно настроить па-
раметры. В свойствах модели можно явно указать, что во временном
ряде ожидается периодичность 12 (число месяцев в году, так как у нас
данные с продажами по месяцам, рис. 5.166).

Рис. 5.164. Выбор типа содержимого и типа данных

263
Рис. 5.165. Указание имен модели и структуры

Рис. 5.166. Указание периодичности – 12


(число месяцев в году)

264
После выполнения описанных действий, надо провести полную
обработку модели, и на вкладке Mining Model Viewer появится воз-
можность просмотреть результаты (рис. 5.167). Непрерывной линией
изображены фактические данные, пунктиром – прогнозируемые ре-
зультаты. Поле Prediction steps позволяет указать, на сколько шагов
вперед предсказывается значение ряда, а выпадающий список под
ним – выбрать значения, для которых строятся графики.
Задание 1. По аналогии с рассмотренным примером создайте
структуру и модель интеллектуального анализа данных для прогно-
зирования продаж AdventureWorks. Не указывайте значение для пери-
одичности. Проведите обработку модели, постройте графики про-
даж велосипедов модели M200 в разных регионах с прогнозом на год
(12 значений). Проанализируйте результаты.
Задание 2. Укажите в параметрах алгоритма периодичность
12 (рис. 5.166). Проведите повторную обработку модели и снова про-
анализируйте графики прогноза на год. Есть ли изменения? Чем
можно объяснить полученный результат?

Рис. 5.167. Просмотр графиков.


Пунктирная линия – прогнозируемые значения

265
Прогнозирующие запросы
В написании прогнозирующих запросов к моделям, использую-
щим алгоритм временных рядов, есть некоторые особенности. Из-за
того, что исходные данные – это сам временной ряд, который уже ис-
пользовался при обучении модели, в простых случаях необходимость
в конструкции Prediction Join отпадает. В запросах используется
функция PredictTimeSeries, которая получает на вход имя атрибута и
количество предсказываемых значений, а возвращает таблицу спро-
гнозированных результатов.
Рассмотрим создание запроса. На вкладке Mining Model Predic-
tion переключимся в режим написания текста запроса (Query,
рис. 5.168). И введем следующий код:
SELECT [vTimeSeries_TS].[Model Region],
PredictTimeSeries([vTimeSeries_TS].[Quantity],6) as
QTY
From [vTimeSeries_TS]
WHERE [vTimeSeries_TS].[Model Region] = 'R250 Europe'
OR [vTimeSeries_TS].[Model Region] = 'R750 Europe'

Рис. 5.168. Написание прогнозирующего запроса

266
В запросе мы хотим получить оценки для объемов продаж мо-
делей R250 и R750 в Европе на 6 месяцев вперед. После этого пере-
ключаемся к представлению результатов выполнения запроса (пункт
выпадающего меню Result, рис. 5.168). На рис. 5.169 результаты про-
гнозирования представлены в «иерархическом» формате. Чтобы по-
лучить результат в виде таблицы, несколько изменим инструкцию,
дополнив SELECT ключевым словом FLATTENED:
SELECT FLATTENED [vTimeSeries_TS].[Model Region],
PredictTimeSeries([vTimeSeries_TS].[Quantity],6) as
QTY
From [vTimeSeries_TS]
WHERE [vTimeSeries_TS].[Model Region] = 'R250 Europe'
OR [vTimeSeries_TS].[Model Region] = 'R750 Europe'

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

267
Задание 3. Проверьте работу приведенного выше запроса.
Напишите запрос, выводящий ожидаемые результаты продаж мо-
дели T1000 в разных регионах на год вперед.

Теперь рассмотрим следующую задачу. Нужно построить про-


гноз при условии, что некоторые из исходных данных были бы дру-
гими. Например, если бы продажи велосипеда марки R250 в Европе за
два предыдущих месяца были бы 10 и 12 штук (исходные значения
были 16 и 13 соответственно). Это можно сделать, используя пара-
метр REPLACE_MODEL_CASES в функции PredictTimeSeries.
Чтобы увидеть, как работает параметр, для начала выполним за-
прос без него. Код приведен ниже, а интересующий нас фрагмент
таблицы с результатами выполнения показан на рис. 5.170, a.
SELECT FLATTENED [Model Region],
PredictTimeSeries([vTimeSeries_TS].[Quantity],6)
From [vTimeSeries_TS]
Теперь укажем, что нужно заместить значения по продажам
‘R250 Europe’ за два последних месяца значениями 10 и 12. Соответ-
ствующий код приведен ниже. При замене из нового набора берется
вариант с самым большим значением метки времени, и им заменяется
значение с самой большой меткой времени из исходного набора, и т.д.
Фрагмент результата выполнения представлен на рис. 5.170, b. Из не-
го видно, что прогноз для ‘R250 Europe’ изменился.
SELECT FLATTENED [Model Region],
PredictTimeSeries([vTimeSeries_TS].[Quantity], 6,
REPLACE_MODEL_CASES) From [vTimeSeries_TS]
NATURAL PREDICTION JOIN ( SELECT 1 as [Date Series],
'R250 Europe' as [Model Region], 10 as [Quantity]
UNION
SELECT 2 as [Date Series], 'R250 Europe'as [Model
Region], 12 as [Quantity]) as t

268
a b

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


a) - для исходных данных;
b) – для модифицированных исходных данных

Задание 4. Проверьте работу приведенных выше запросов.


Можно ли говорить о наличии корреляции между продажами модели
R250 в Европе и M200 в Тихоокеанском регионе?
Задание 5. Самостоятельно разберитесь по справке с использо-
ванием параметра EXTEND_MODEL_CASES в функции
PredictTimeSeries. Напишите прогнозирующий запрос с использовани-
ем данного параметра.

269
БИБЛИОГРАФИЧЕСКИЙ СПИСОК
1. Макленнен, Джеми. Microsoft SQL Server 2008: Data mining – ин-
теллектуальный анализ данных: [пер. с англ.] / Джеми Макленнен,
Чжаохуэй Танг, Богдан Криват. – СПб.: БХВ-Петербург, 2009. – 720с.
2. Барсегян А. А. Анализ данных и процессов: учеб. пособие / А. А.
Барсегян, М. С. Куприянов, И. И. Холод, М. Д. Тесс, С. И. Елизаров. – 3-е
изд., перераб. и доп. – СПб.: БХВ-Петербург, 2009. – 512 с.
3. Службы Analysis Services — видеоролики по интеллектуальному
анализу данных (SQL Server 2008). URL: http://msdn.microsoft.com/ru-
ru/library/dd776389(v = SQL.100).aspx
4. Чубукова И. А. Data Mining. – М.: Интернет-университет инфор-
мационных технологий, Бином. Лаборатория знаний, 2008 – 382 с.
5. Службы SQL Server Analysis Services – интеллектуальный анализ
данных. URL:
http://msdn.microsoft.com/ru-ru/library/bb510517.aspx
6. Алгоритмы интеллектуального анализа данных (службы Analysis
Services – интеллектуальный анализ данных). URL:
http://msdn.microsoft.com/ru-ru/library/ms175595.aspx
7. Основные понятия интеллектуального анализа данных (службы
Analysis Services – интеллектуальный анализ данных). URL:
http://msdn.microsoft.com/ru-ru/library/ms174949.aspx
8. Вложенные таблицы (службы Analysis Services – интеллектуаль-
ный анализ данных). URL:
http://msdn.microsoft.com/ru-ru/library/ms175659.aspx
9. Типы данных (интеллектуальный анализ данных). URL:
http://msdn.microsoft.com/ru-ru/library/ms174796.aspx
10. Типы содержимого (интеллектуальный анализ данных). URL:
http://msdn.microsoft.com/ru-ru/library/ms174572.aspx
11. CREATE MINING STRUCTURE (расширения интеллектуального
анализа данных) URL:
http://msdn.microsoft.com/ru-ru/library/ms131977.aspx
12. Инструкции управления данными расширений интеллектуально-
го анализа данных. URL:
http://msdn.microsoft.com/ru-ru/library/ms131982.aspx

270
13. Введение в Data Mining на базе SQL Server 2008. URL:
http://www.techdays.ru/videos/1376.html
14. Учебник по расширениям интеллектуального анализа данных для
прогнозирования временных рядов. URL: http://msdn.microsoft.com/ru-
ru/library/cc879270.aspx
15. Глоссарий. Метод k-средних. Статья с сайта компании BaseGroup
Labs. URL: http://www.basegroup.ru/glossary/definitions/k_means/
16. Технический справочник по алгоритму кластеризации (Майкро-
софт). URL:
http://msdn.microsoft.com/ru-ru/library/cc280445(v = SQL.100).aspx
17. Технический справочник по алгоритму взаимосвязей (Майкро-
софт). URL:
http://msdn.microsoft.com/ru-ru/library/cc280428(v = SQL.100).aspx
18. Технический справочник по алгоритму логистической регрессии
(Майкрософт). URL:
http://msdn.microsoft.com/ru-ru/library/cc645904(v = SQL.100).aspx
19. Содержимое моделей интеллектуального анализа данных для мо-
делей нейронных сетей (службы Analysis Services – интеллектуальный
анализ данных). URL:
http://msdn.microsoft.com/ru-ru/library/cc645783(v = SQL.100).aspx

271
Нестеров Сергей Александрович

БАЗЫ ДАННЫХ
ИНТЕЛЛЕКТУАЛЬНЫЙ АНАЛИЗ ДАННЫХ

Учебное пособие

Лицензия ЛР № 020593 от 07.08.97


Налоговая льгота – Общероссийский классификатор продукции
ОК 005-93, т. 2; 953005 – учебная литература

Подписано к печати Формат 60х84/16. Печать цифровая.


Усл. печ. л. 16,88. Уч.-изд. л. . Тираж _____ экз. Заказ______

Отпечатано с готового оригинал-макета, предоставленного авторами,


в Цифровом типографском центре
Издательства Политехнического университета.
195251, Санкт-Петербург, Политехническая ул., 29.
Тел.: (812) 550-40-14.
Тел./факс: (812) 297-57-76.

Вам также может понравиться