Сохрани и опубликуйсвоё исследование
О проекте | Cоглашение | Партнёры
Разработка программного обеспечения для выявления сложных событий в активных базах данных
Комментировать 0
Рецензировать 0
Скачать - 1,8 МБ
Enter the password to open this PDF file:
-
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РФ Федеральное государственное бюджетное образовательное учреждение высшего образования «ПЕНЗЕНСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ» ПОЛИТЕХНИЧЕСКИЙ ИНСТИТУТ Факультет Кафедра вычислительной техники МОиПЭВМ Направление подготовки 09.03.02 «Информационные системы и технологии» БАКАЛАВРСКАЯ РАБОТА на тему Программные средства выявления сложных событий в активных базах данных Студент __________ Данилина Елена Александровна (подпись, дата) Руководитель (ФИО полностью) Шибанов С.В. ___________ (подпись, дата) Нормоконтролёр ___________ . (фамилия, инициалы) Такташкин Д.В. (подпись, дата) . (фамилия, инициалы) Работа допущена к защите (протокол заседания кафедры от ___________№_____) Заведующий кафедрой __________________ (подпись) Макарычев П.П. . (фамилия, инициалы) Работа защищена с отметкой ______ (протокол заседания ГЭК от ______№____) Секретарь ГЭК __________________ (подпись) Пенза, 2018 Попова Н.А. (фамилия, инициалы) .
2 Федеральное государственное бюджетное образовательное учреждение высшего образования ПЕНЗЕНСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ПОЛИТЕХНИЧЕСКИЙ ИНСТИТУТ Факультет Кафедра Вычислительной техники МО и ПЭВМ «Утверждаю» Заведующий кафедрой ___________П.П. Макарычев «__»_____________2017 г ЗАДАНИЕ НА ВЫПУСКНУЮ КВАЛИФИКАЦИОННУЮ РАБОТУ БАКАЛАВРА 1. Студент Данилина Елена Александровна гр. 14ВИ1 факультета ФВТ 2.Тема работы Программные средства выявления сложных событий в активных базах данных . _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ Тема утверждена приказом ПГУ № 377 а/о от " 25 " апреля 2018 3. Руководитель работы Шибанов С.В. 4. Задание на работу (назначение разработки, исходные данные и т.п.) Программные средства предназначены для выявления сложных событий в активных базах данных _____________________________________________________________________________ Функции системы: 1. Выявление сложных событий в активных базах данных 2. Прогнозирование событий 3. Взаимодействие с сервисом логирования _____________________________________________________________________________ Язык программирования: Java Инструментальные средства: Qt Creator 4.6.1, Microsoft Office Visio 2013 _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________
3 5. Перечень подлежащих разработке вопросов 1.Анализ предметной области и постановка задачи 2. Теоретические основы процесса выявления сложных событий 3. Анализ требований на разработку 4. Разработка программных средств выявления сложных событий 5. Тестирование программных средств 6. Оформление ВКР _____________________________________________________________________________ _____________________________________________________________________________ 6. Календарный график выполнения работы Объем № п/п Наименование этапов работы работы Срок выполнения 1. Анализ предметной области и 25% 17.02.18 – 17.03.18 10% 17.03.18 – 27.03.18 15% 27.03.18 – 17.04.18 25% 17.04.18 – 15.05.18 9% 15.05.18 – 22.05.18 16% 22.05.18 – 5.06.18 постановка задачи 2. Теоретические основы процесса выявления сложных событий 3. Анализ требований на разработку 4. Разработка программных средств выявления сложных событий. 5. Тестирование программных средств 6. Оформление ВКР Дата выдачи задания "___"_________________20_____ Руководитель бакалаврской работы ____________________________ (подпись, дата) Задание к исполнению принял студент ________________________ (подпись, дата) Работу к защите допустить Декан факультета _____________________________________ (подпись, дата) Подпись руководителя
4 Реферат Пояснительная записка содержит 60 листов, 14 рисункова, 19 таблиц, 16 использованных источников, 1 приложение. СЛОЖНЫЕ СОБЫТИЯ, АКТИВНАЯ БАЗА ДАННЫХ, UML, МЕТОДЫ SPM, АЛГОРИТМ GSP, БИБЛИОТЕКА XELOPES Объект разработки – система выявления сложных событий в активных базах данных Цель работы – исследование, проектирование и разработка программных средств выявления сложных событий в активных базах данных Результаты работы – разработана и протестированы программные средства выявления сложных событий в активных базах данных. ПГУ 09.03.02-08ВР141.03 ПЗ Изм. Лист № докум. Разраб. Провер. Данилина Е.А. Шибанов С.В. Реценз. Н. Контр. Такташкин Д.В. Утв. Подпись Дата Программные средства выявления сложных событий в активных базах данных Лит. Лист Листов 4 60 гр. 14ВИ1
5 Содержание Введение ............................................................................................................... 7 1 Анализ предметной области и постановка задачи .......................................... 8 1.1 Обработка сложных событий ........................................................................ 8 1.1.1 Виды событий .............................................................................................. 8 1.1.2 Отслеживание и выявление сложных событий ....................................... 10 1.2 Технологии и средства обработки выявления сложных событий ............. 12 1.2.1 Обработка сложных событий в CEP-системах ........................................ 12 1.2.2 Обработка сложных событий в активных базах данных ......................... 14 1.2.3 Программные средства анализа сложных событий ................................. 17 1.3 Постановка задачи на разработку ................................................................ 17 2 Методы и алгоритмы выявления шаблонов сложных событий.................... 19 2.1 Операции для представления сложных событий ........................................ 19 2.2 Обоснование выбора интеллектуального анализа для выявления сложных событий ............................................................................................................... 20 2.2.1Обзор методов интеллектуального анализа для выявления сложных событий ............................................................................................................... 20 2.2.2 Метод секвенциального анализа .............................................................. 21 2.3 Выбор алгоритма для выявления сложных событий .................................. 22 2.3.1 Обзор алгоритмов секвенциального анализа ........................................... 22 2.3.2 Алгоритм GSP для выявления сложных событий ................................... 23 3 Анализ требований на разработку .................................................................. 26 3.1 Анализ функциональных требований ......................................................... 26 3.2 Обобщенная архитектура сервиса конструирования и исполнения активных правил ................................................................................................ 29 3.3 Выбор технологий и средств разработки .................................................... 32 3.3.1 Библиотека интеллектуального анализа данных Xelopes ....................... 32 3.3.2 Объектно-ориентированный язык программирования Java и среда разработки NetBeans .......................................................................................... 33 3.4 Требования к аппаратно – программному окружению .............................. 34
6 4 Разработка программных средств выявления сложных событий ................. 36 4.1 Схема работы приложения с использованием библиотеки Xelopes .......... 36 4.2 Структура программных средств выявления сложных событий ............... 38 4.3 Реализация программных средств выявления сложных событий ............. 41 4.3.1 Система классов для выявления сложных событий ................................ 41 4.3.2 Метод getSequentialsEvents для построения цепочек событий ............... 47 4.3.3 Метод getComplexEvents для построения сложных событий ................. 48 5 Тестирование программных средств .............................................................. 51 5.1 Выбор режима тестирования ....................................................................... 51 5.2 Проведение тестирования программных средств ....................................... 52 Список использованных источников ................................................................ 57 Приложение А. Код программы ........................................................................ 59
7 Введение В современном мире человек ежедневно сталкивается с большими объёмами информации. В связи с этим требования к методам и способам обработки информации стали значительно выше, чем были раньше. Обычные базы данных уже не подходят для точного и быстрого анализа данных, поэтому в большинстве случаев предпочтение в использовании отдаётся активным базам данных, позволяющим в режиме реального времени обнаруживать события и незамедлительно их обрабатывать, а на основе полученных данных прогнозировать появление будущих событий. Целью выпускной квалификационной работы (ВКР) является разработка программного обеспечения для выявления сложных событий в активных базах данных. Для достижения поставленной цели были поставлены следующие задачи: провести анализ предметной области и постановка задачи на разработку программного средства для выявления сложных событий в активных базах данных; анализ методов и алгоритмов выявления шаблонов сложных событий; анализ функциональных требований на разработку программного обеспечения для выявления сложных событий; разработка программного обеспечения для выявления шаблонов сложных событий; тестирование разработанного программного средства. В результате выполнения ВКР было создан прототип программных средств выявления сложных событий в активных базах данных. В дальнейшем планируется развитие разработанного прототипа и его практическое применение в составе сервиса конструирования и исполнения, активных правил.
8 1 Анализ предметной области и постановка задачи Задача выявления и прогнозирования сложных событий играет важную роль в жизнедеятельности человека, так как существуют области, в которых определяющим фактором является своевременное обнаружение событий, а для этого необходимо иметь возможность прогнозировать возникновения событий. Наиболее популярными для поиска последовательностей событий являются обнаружения алгоритмы поиска шаблонов шаблонов последовательностей событий (sequential pattern mining или SPM). Данные алгоритмы позволяют формировать закономерности появления событий, связанных во времени. 1.1 Обработка сложных событий 1.1.1 Виды событий В широком смысле все события можно разделить на простые (примитивные) и сложные (составные). Примитивные события - события, предварительно определенные в системе, для каждого из них механизм его эффективного обнаружения, вероятно, будет внедрен в систему. Примитивные события являются дополнительным классом в событиях базы данных, временных событиях и явных событиях. Составные или сложные события - события, которые формируются путем применения набора операторов к примитивным и составным событиям. События базы данных соответствуют операциям (преобразованным в события с использованием модификаторов), используемых для управления данными. Для реляционной модели они соответствуют начальным и конечным вариантам операций вставки, удаления, изменения, извлечения и транзакций.
9 Явные события – это те события, которые обнаруживаются и сигнализируются вместе с их параметрами прикладными программами и управляются только системой. Перед их использованием в системе должны регистрироваться явные события и их формальные параметры [1]. Также события могут быть сгруппированы по следующим признакам: по степени сложности; по соответствию с шаблоном; по степени спланированности; по степени предсказуемости; по степени формальности. Классификация событий по соответствию с шаблоном представлена в таблице 1. Таблица 1 – Классификация событий по соответствию с шаблоном № п/п 1 Вид события Стандартное Описание Событие, которое имеет стандартную структуру. 2 Нестандартное Событие, которое имеет отклонения от стандартной структуры события. Классификация событий по степени предсказуемости представлена в таблице 2. Таблица 2 – Классификация событий по степени предсказуемости № п/п 1 2 Вид события Ожидаемое Неожидаемое Описание Событие, которое ожидает поток обработки событий. Событие, которое не ожидает не один из потоков обработки событий. Классификация событий по степени спланированности представлена в таблице 3. Таблица 3 – Классификация событий по степени спланированности № п/п 1 Вид события Запланированное 2 Незапланированное Описание Событие, наступление которого запланировано в данный момент времени. Событие, наступление которого незапланированно в данный момент времени.
10 Классификация событий по степени формальности представлена в таблице 4. Таблица 4 – Классификация событий по степени формальности № п/п 1 2 Вид события Зарегистрированное Незарегистрированное Описание Событие, которое зарегистрировано в системе. Событие, которое не зарегистрировано в системе. Временные события связаны со временем и имеют два типа: абсолютные и относительные. 1.1.2 Отслеживание и выявление сложных событий В процессе функционирования активных баз данных отслеживаются различные типы событий и информация о них записывается в журнал событий. Информация из журналов событий может использоваться в качестве исходных данных для отслеживания и выявления сложных событий. Простым (элементарным) событием называется событие, которое не содержит в себе элементы других событий. Примером простого события является нажатие кнопки мыши. Элементарные события, происходящие во временном интервале, обозначаются E[t1 , t 2], где E – это событие, t1 – начальный интервал события, t 2 – конечный интервал события. У простых событий начальный и конечный интервалы считаются одинаковыми (т.е. t1 = t 2 ). Обнаружение элементарного события входящего в интервал [t1, t 2] происходит в конце временного интервала. Сложным (составным) событием называется событие, содержащее в себе два или более простых события, связанных между собой операциями алгебры логики. Примером сложного события может служить потеря сознания человеком, данное сложное событие состоит из нескольких элементарных событий: увеличение артериального давления, уменьшение температуры тела человека, изменение частоты пульса и частоты дыхания.
11 Для определения семантики обнаружения составного события введем понятия инициатора, детектора и терминатора. Инициатором составного события является первое элементарное событие, возникновение которого начинает составное событие. Детектором сложного события является элемент сложного события, возникновение которого обнаруживает сложное событие, а терминатор сложного события является элементом сложного события, которое отвечает за прекращение сложного события. Для некоторых операторов детектор и терминатор различны. Для многих операторов детектор и терминатор являются одинаковыми [2]. Составное событие E, происходящие во временном интервале, обозначаются E[t1, t 2 ], где E – это составное событие, t1 – время возникновения составного события, t 2 – время окончания составного события. Обнаружение сложного события может потребовать обнаружения одного или нескольких составных событий, а также одного или нескольких событий сложного события. События, требующие появления нескольких событий (одного и того же типа или разных типов) для обнаружения сложного события, приводят к альтернативным способам вычисления параметров, поскольку события, могут происходить несколько раз в течение отведенного времени. Процесс отслеживания сложных событий сопровождается возникновением ряда коллизий. К ним относятся: возникновение одного экземпляра событий, ожидаемого несколькими потоками обработки событий; повторное возникновение одного и того же вида событий, относящихся к одному экземпляру событий; возникновение неожидаемого события; возникновение незарегистрированного события. Для преодоления коллизий в отслеживании сложных событий выделяется несколько режимов потребления событий [3,4].
12 Задача выявления шаблонов сложных событий заключается в поиске частых последовательностей среди всех последовательностей событий, содержащихся в журнале или базе данных. 1.2 Технологии и средства обработки выявления сложных событий 1.2.1 Обработка сложных событий в CEP-системах Обработка сложных событий (Complex Event Processing, CEP) – это метод отслеживания и обработки потоковых данных из множества источников событий, метод идентификации наиболее значимых событий или их комбинации, и последующей выработки соответствующих заключений, а также способ быстрой реакции на эти события [5]. CEP обрабатывают события исключительно на основе атрибутов, которые они имеют в кортеже событий. Путем сопоставления событий и их атрибутов кортежей как части семантической онтологии, ограничения запросов могут быть, затем определены для связанных понятий и сущностей. Это значительно увеличивает силу определения шаблона события при обнаружении очень точных ситуаций, исключая ложные срабатывания. Традиционные подходы CEP, такие как Cayuga и SASE, были сфокусированы на определении и обнаружении временных и логических отношений между синтаксическими событиями, смоделированными как бесконечные последовательности реляционных кортежей с интервальными временными метками. Они используют SQL-модель запросов с такими операциями, как выбор, проецирование и условная последовательность. Характерной особенностью рассматриваемых систем является то, что они оперируют потоком данных, отслеживаемых различного рода датчиками в режиме реального времени, при этом данные могут поступать из нескольких гетерогенных источников и, используя сложные бизнес-правила, системы CEP распознают сложное событие, посредством чего выдают необходимую незамедлительную реакцию.
13 Важным моментом является еще то, что при использовании этой технологии устанавливаются постоянные запросы, у которых входными данными являются потоки постоянно меняющейся информации из различных источников. Благодаря этому реакция на данные запросы осуществляется максимально быстро и выдается с задержкой близкой к нулевому значению. Системы CEP управляются данными, поскольку шаблон обнаруживается, когда последнее событие требуется для полного совпадения. Современные системы CEP обрабатывают примитивные события как кортежи реляционных данных, то есть примитивное событие =<атрибуты; отметка времени>. СЕР системы поддерживают потоковый ввод, за счет которого осуществляется непрерывный поток данных, а также пакетный ввод, он обрабатывает данные, представляя их в виде значительных фрагментов. Система получает из разных, даже может быть абсолютно не связанных между собой источников, поток данных в данный момент времени. После этого, применяя правила алгебры логики и используя язык событий, производится анализ, поступивших данных, в результате которого из нескольких атомарных событий складывается одно большое сложное событие. В основе систем CEP лежат правила, которые должны выполняться во входящих событиях. Механизмы правил могут варьироваться от простых пользовательских доменных языков до сложных систем управления бизнесправилами. На основании, приведенных анализирующих действий, на выход поступает реакция. Реакция представляет собой либо отсутствие действий, либо отправка уведомлений оператору или датчику, в зависимости от рассматриваемого приложения и предметной области. Также имеется возможность сохранять результаты обработки событий.
14 Системы CEP по типу реализации можно разделить на два типа: 1) CEP – системы со спецификой направленной на вычисления; 2) CEP – системы, основной уклон в которых делается на обнаружение событий. В первом случае, она производит вычислительные действия в режиме реального времени в ответ на поступающие данные. Что касается систем CEP, ориентированных на обнаружение, то, главной задачей данных системы это в потоке входящих данных выявить комбинации событий [6]. 1.2.2 Обработка сложных событий в активных базах данных С развитием технологий баз данных (БД) и систем управления базами данных (СУБД) увеличивается круг областей применения и решаемых ими задач. Изначально базы данных рассматривались лишь как репозитории, которые хранят информацию, необходимую для приложений, и доступную прикладным программам или пользователям. Примерами систем, при разработке которых приходится преодолевать пассивность традиционных баз данных, являются корпоративные распределенные информационные системы и базы данных, системы удаленного управления и конфигурирования приложений, в том числе работающие в сети Интернет. Как правило, в таких системах имеется большая быстро изменяющаяся во времени база элементарных фактов, описывающая состояния объектов. Система должна обнаруживать некоторое, возможно, большое число заданных ситуаций и автоматически реагировать на их возникновение соответствующими действиями. Каждая из обнаруживаемых ситуаций задается своей системой правил. Данные, изменяющие базу элементарных фактов, могут поступать от различных датчиков, а также вводиться оператором с клавиатуры ЭВМ или других устройств ввода. Решение задач хранения и обработки информации в таких системах целесообразно возлагать на систему управления активной базой данных (СУАБД).
15 База данных называется активной базой данных (АБД), если система управления базой данных по отношению к ней выполняет не только те действия, которые явно указывает пользователь, но и дополнительные действия в соответствии с правилами, заложенными в саму БД [2]. При этом СУАБД постоянно отслеживает наступление определенных событий, реагируя на активность системы и пользователя, и отвечают на события путем вызова процедур, затрагивающих как саму базу данных, так и ее окружение [7,8]. В таблицах 5 и 6 представлены системы, включающие активное поведение в объектные системы. Таблица 5 – Объектные системы, основанные на языке С++ № п/п 1 Название Особенности HiPAC 1. Связана с пассивной объектной СУБД PROBE; 2. Параллельное выполнение вызванных правил как подтранзакций; 3. Сетевой эффект набора изменений. 1. Связана с пассивной объектной СУБД ADAM; 2. Расширяемая модель правил. 1. Связан с пассивной объектной СУБД О2; 2. Реализована как часть ядра СУБД; 3. Поддержка двух языков – О2C и OQL. 1. Поддержка дедуктивных правил; 2. Условия и действия правил могут получать доступ к предыдущим состояниям БД либо к началу текущей транзакции, либо, когда правило было запущено. 2 EXACT 3 NAOS 4 Chimera Таблица 6 – Объектные системы, не основанные на языке С++ № п/п 1 Название Ode 2 Sentinel 3 REACH 4 SAMOS Особенности 1. Описана и управляется с использованием языка программирования баз данных О++; 2. Правила поделены на ограничения и триггеры 1. Основана на системе OpenOODB; 2. Интеграция системы правил в сложный менеджер транзакций. 1. Основана на системе OpenOODB; 2. Взаимодействие со сложными моделями транзакций. 1. Реализована на верхнем уровне объектной СУБД ObjectStore; 2. Наличие детектора событий, основанного на сетях Петри. Систему можно считать активной, если она выполняет не только явно указанные пользователем действия, но и дополнительные действия в соответствии с правилами, заложенными в саму систему (в данном случае базу данных). Кроме того, система управления активной базой данных
16 (СУАБД) должна отслеживать возникновение событий, описанных в АБД, и осуществлять их обработку посредством запуска процедур, затрагивающих как саму АБД, так и ее окружение. Чтобы обеспечивать реагирующее поведение, СУАБД должна поддерживать соответствующие модели описания и выполнения правил. Классическая модель описания активных правил основывается на правилах, которые содержат три компонента: событие (event), условие (condition) и действие (action) и называются ECA-правилами ( Event–Condition–Action). Компонент Событие (event) описывает какое-либо событие, которое может произойти в СУБД или вне нее. Компонент Условие (condition) проверяет контекст возникновения события на соответствие заданным критериям. Действие (action) описывает реакцию системы на возникновение события при условии справедливости (истинности) всех критериев, определенных в условии. Действия могут менять структуру базы данных или набора правил, выполнять некоторый вызов поведения внутри базы данных или внешний администратора вызов, информировать пользователя о какой-либо ситуации, или системного прерывать транзакцию или принимать альтернативную линию поведения. Классическая модель ECA-правил не учитывает, что в реальных приложениях поведение объекта часто зависит от его состояния (state). Состояние – это абстракция значений и связей объекта, которая определяет отклик объекта на получаемые события. В конкретном состоянии обрабатываются только те события, для которых явным образом описано поведение, любые другие события игнорируются. Это свойство состояний особенно важно – оно позволяет наделить объекты системы свойством изменчивости – способности изменять свое поведение в зависимости от возникающих событий. Модель, учитывающую состояние объекта называется расширенной моделью ECA-правил, моделью SECA-правил или SECA-моделью (State–
17 Event–Condition–Action). Добавление в классическую модель ECA-правил понятия состояния сокращает количество необходимых правил и упрощает процесс разработки активной системы [9]. 1.2.3 Программные средства анализа сложных событий Анализ сложных событий может быть осуществлен методами интеллектуального анализа данных. В таблице 7 представлены инструментальные средства интеллектуального анализа данных, решающие задачи. Таблица 7 – Инструментальные средства Data Mining Название WEKA Решаемые задачи data mining Задачи прогнозирования Классификации Кластеризации Регрессионный анализ Визуализация результатов Дерево решений Секвенциальный анализ Кластерный анализ Проведение экспериментов Решение задач машинного обучения Xelopes RapidMiner Представленные в таблице 7 инструментальные методы интеллектуального анализа данных способны выявлять частые наборы элементов и решать задачу прогнозирования. 1.3 Постановка задачи на разработку Системы управления активными базами данных (СУБД) отслеживают наступление определенных событий, как в базе данных, так и вне ее, и реагируют на них выполнением соответствующих правил. События, на которые реагируют СУАБД, могут быть простыми (элементарными) и сложными (составными). Сложные события являются комбинацией элементарных и, возможно, других сложных событий. Структура сложного события определяется в процессе конструирования активных правил. При большом количестве событий, зарегистрированных и отслеживаемых в СУАБД на протяженном временном
18 интервале, возможны некоторые скрытые закономерности в появлении тех или иных событиях. Такие закономерности зачастую являются крайне важными и требуют выявления. Примером может являться выявление сложных взаимосвязей событий, предшествующих авариям или сбоям в технических системах. Другим примером является задача определения взаимосвязанных событий, образующих сложное событие и инициированных каким-то конкретным событием. Несмотря на большое количество методов интеллектуального анализа закономерностей в цепочках событий, задача выявления сложных событий до настоящего времени не решена и является весьма актуальной. В рамках выпускной квалификационной работы необходимо спроектировать, разработать, отладить и протестировать программные средства выявления сложных событий для сервиса конструирования и исполнения, активных правил. Для решения поставленной цели необходимо: провести исследования принципов построения систем управления активными базами данных и активными правилами; изучить способы представления сложных событий в алгоритмов и информационно-управляющих системах; провести обзор существующих методов, программных средств интеллектуального анализа, которые могут быть использованы для выявления сложных событий; определить структуру и принципы функционирования программных средств выявления сложных событий; спроектировать, разработать и отладить программные средства обнаружения и обработки сложных событий; выполнить тестирование программных средства обнаружения и обработки сложных событий. Разрабатываемые программные средства должны функционировать под управлением операционных систем семейства WINDOWS.
19 2 Методы и алгоритмы выявления шаблонов сложных событий 2.1 Операции для представления сложных событий Комплексные (составные) события задаются в соответствии с алгеброй событий, такими как Snoop , ODE , REACH и SAMOS . В настоящее время для сложных событий не существует стандартной алгебры событий или метаязыков. Базовыми операциями для систем, поддерживающих сложные события являются: последовательность (;) : (E1;E2); дизъюнкция (∨): (E1 конъюнкция ( ): (E1 E2); одновременно (=): (E1=E2); отрицание (¬): (E1 ∧ ¬ Ε2 ); любое : любое(n) E1,когда происходит n событий типа E1; апериодический (Ap): Ap(E2, E1, E3) , E2 в пределах E1 и E3; периодический (Per): Per(t, E1, E2) , каждые t временных шагов E2); между E1 и E2 [13,14]. Описание операций алгебры событий представлено в таблице 8. Таблица 8 – Операции алгебры событий № Операция Описание операции Представление 1 Дизъюнкция E1 2 Конъюнкция 3 Последовательность 4 Одновременный 5 История 6 Отрицание 7 Любое Составное событие происходит, когда произошел e1 или e2. Составное событие происходит, когда оба e1 e2 произошли в любом порядке Составное событие возникает, когда событие e1 встречается до e2; Составное событие возникает, когда события e1 и e2 происходят одновременно; Составное событие сигнализируется, когда событие e1 происходит n раз в течение интервала времени. Составное событие обнаруживает нечеткость события e1 во временном интервале. Составное событие возникает, когда m из n разных событий e1, e2,..en произошло. E2 E1∧ E2 E1;E2 E1=E2 (times (n, E1)): (E1 ∧ ¬ Ε2 ) Любое(n)E1
20 Продолжение таблицы 8 8 9 Апериодический (Ap) Периодический (Per) Составное событие, возникает, когда e2 в пределах e1 и e3. Составное событие возникает, при наличии постоянных t временных шагов между e1 и e2. Ap(E2, E1, E3) Per(t, E1, E2) Язык алгебры событий представляет набор операторов с четкой семантикой. Эта семантика позволяет построить широкое разнообразие композитных событий. Составное событие – это выражение, которое образовано применением алгебры событий на простых или составных событиях. Экземпляр события – это событие во время соответствующего события. Как правило, экземпляр события начинается в момент времени 𝑡𝑠 и заканчивается в момент времени 𝑡𝑒 . Мы говорим о том, что наше событие мгновенное и происходит в момент времени е𝑢 . 2.2 Обоснование выбора интеллектуального анализа для выявления сложных событий 2.2.1Обзор методов интеллектуального анализа для выявления сложных событий Методы интеллектуального анализа данных хороший инструмент для обработки данных и визуализации полученных результатов, помимо этого их достоинством является простота в реализации. Для решения задачи выявления сложных событий рассматривались следующие методы интеллектуального анализа [9,10]. К ним относятся: деревья решений; нейронные сети; поиск ассоциативных правил; временные ряды; секвенциальный анализ.
21 Описание каждого метода представлено в таблице 9. Таблица 9 – Методы интеллектуального анализа данных Название метода Деревья решений. Методика «разделяй и властвуй» Нейронные сети Назначение Предсказывает значение целевой переменной Краткое описание Рекурсивный процесс объединения соответствующим признакам. Анализ данных Прогнозирование временных рядов На основании данного временного ряда определяется значение n-k его элемента, при k>0. Поиск ассоциативных правил Выявление часто встречающихся наборов. Секвенциальный анализ Определение часто встречающихся последовательностей объектов. С помощью выбранного метода интеллектуального анализа данных строится сеть. Как только сеть построена наступает этап обучения. После обработки входных данных сеть выделяет закономерности в входных данных. Прогнозирование временных рядов осуществляется в три этапа: 1.Построение модели временного ряда. 2.Оценка построенной модели. 3.Если к модели временного ряда нет замечаний, то она выполняет задачи прогнозирования. На основе работы метода поиска ассоциативных правил выделяются наборы объектов, чья частота присутствия в наборе больше минимальной поддержки, определенной пользователем. Методы анализа аналогичны поиску ассоциативных правил, разница в том, что входными данными для анализа являются последовательности данных и пользователь имеет возможность вводить ограничения временного окна между рассматриваемыми последовательностями данных. объектов по Каждый из методов, рассмотренных в таблице 9, в зависимости от особенностей реализации, решают задачу выявление закономерностей. Для реализации поставленной задачи в большей степени подходит метод секвенциального анализа. 2.2.2 Метод секвенциального анализа Секвенциальный анализ – метод интеллектуального анализа данных, который является частным случаем метода поиска ассоциативных правил. Для точного рассмотрения метода секвенциального анализа введем определения. Определение 1. Последовательностью называется упорядоченное множество объектов. Определение 2. Поддержкой последовательности S называется отношение количества транзакций, в которое входит последовательность S, к общему количеству транзакций.
22 Важным моментов в рассматриваемом методе является установление порядка отношения между последовательностями. Для установления порядка имеются различные подходы. Если последовательности связаны во времени их называют событиями. Если необходимо провести анализ в конкретный период времени, то вводится понятие временного окна. В ходе анализа над входными данными выявляются последовательности, частота появления которых больше минимальной поддержки, значение которых в зависимости от условий предметной области предварительно задает пользователь: Supp(A)> 𝑆𝑢𝑝𝑝𝑚𝑖𝑛 , где S(A) – значение, равное тому сколько раз встречается данная последовательность в исследуемой транзакции [11,12]. Конечным результатом выполнения секвенциального анализа является набор всех частых последовательностей: L={S| Supp(S)> 𝑆𝑢𝑝𝑝𝑚𝑖𝑛 }, где L – набор всех частых последовательностей. 2.3 Выбор алгоритма для выявления сложных событий 2.3.1 Обзор алгоритмов секвенциального анализа Секвенциальный анализ имеет в своём распоряжении два алгоритма: AprioriAll и GSP. AprioriAll – это алгоритм, который реализуется в несколько этапов. На первом этапе загружаются все элементы с минимальной поддержкой (часто используемые элементы набора). На следующем этапе производится преобразование базы данных, чтобы каждая транзакция была заменена набором всех частых наборов элементов, содержащихся в транзакции, а затем последовательными последовательностями. Данный подход имеет следующие недостатки:
23 вычислительно дорого сделать преобразование данных в режиме реального времени; алгоритм можно расширить для обработки временных ограничений и таксономий, но не представляется возможным включить ограничения временного окна. Алгоритм GSP позволяет в отличие AprioriAll вводить минимальные и максимальные значения времени между транзакциями событий и определять значения временного окна. Именно поэтому для реализации программной разработки был выбран метод GSP. 2.3.2 Алгоритм GSP для выявления сложных событий Выполнение алгоритма GSP подразумевает выполнение нескольких проходов над входными данными. На рисунке 1 представлена общая схема работы алгоритма GSP. После первого прохода определяется поддержка каждого элемента, то есть количество последовательностей данных, которые включают элемент. В конце первого прохода алгоритм знает, какие элементы частые. Каждый такой элемент дает 1-элементную частую последовательность, состоящую из этого элемента. Входными данными для последующих проходов являются частые наборы, выявленные на предыдущем проходе. Набор элементов используется для создания новых потенциально частых последовательностей, называемых последовательностями кандидатов. Каждая последовательность кандидатов имеет на один элемент больше, чем последовательность, выявленная на предыдущем проходе, поэтому все последовательности-кандидаты количество элементов. в проходе будут иметь одинаковое
24 Рисунок 1 – Общая схема работы алгоритма GSP Поддержка этих потенциальных последовательностей обнаруживается во время прохождения данных. Алгоритм завершается в том случае, когда нет частых последовательностей в конце прохода, или когда не генерируются никакие последовательности кандидатов. В общем виде в алгоритме GSP можно выделить два этапа обработки данных: 1) генерация кандидатов; 2) подсчет кандидатов. Генерация кандидатов проходит две фазы обработки: фаза присоединения;
25 фаза сокращения. В фазе присоединения последовательности кандидатов генерируются, присоединением частой последовательности 𝐿𝑘−1 к 𝐿𝑘−1. Последовательность 𝑠1соединяется с 𝑠2, если подпоследовательность, полученная сбросом первого элемента 𝑠1, такая же, как и подпоследовательность, полученная сбросом последнего элемента 𝑠2. Последовательность кандидатов, сгенерированная объединением 𝑠1 с 𝑠2 ,, представляет собой последовательность 𝑠1, расширенную последним элементом в 𝑠2. Добавленный элемент становится отдельным элементом в последовательности, если он был отдельным элементом в 𝑠2 и частью последнего элемента 𝑠1 в противном случае. При объединении 𝐿1 с 𝐿1 необходимо добавить этот элемент в 𝑠2 как часть набора предметов, так и как отдельный элемент, поскольку обе последовательности <(x) (y)> и <(x y)> дают одну и ту же последовательность <(y)> при удалении первого элемента. В фазе сокращения последовательности-кандидаты, имеющие непрерывную подпоследовательность (k-1), чье число поддержки меньше минимальной поддержки, удаляются. Если транзакциями ограничение максимального последовательностей интервала отсутствует, времени между последовательности- кандидаты, у которых есть подпоследовательность <y> без минимальной поддержки также удаляются. На втором этапе работы алгоритма GSP,подсчете кандидатов при каждом проходе, считывается одна последовательность данных за раз и увеличивается количество поддерживаемых кандидатов, содержащихся в последовательности данных. Таким образом, учитывая набор последовательностей кандидатов с и последовательность данных d, необходимо найти все последовательности из c, которые содержатся в d [13].
26 3 Анализ требований на разработку 3.1 Анализ функциональных требований Функциональные требования, предъявляемые к программному средству определяют его функциональные возможности и поведение. Для проектирования требований к разрабатываемому приложению и детального описания его отдельных компонентов были использованы диаграммы в нотации Unified Modeling Language (UML). Диаграмма вариантов использования, представленная на рисунке 2 содержит функциональные требования к разрабатываемой программе. Рисунок 2 – Функциональные требования к программному обеспечению (диаграмма вариантов использования)
27 Унифицированный язык моделирования – это универсальный язык визуального моделирования систем, абсолютно независящий от платформ и языков программирования, с использованием которых реализуется приложение. Основная идея UML – возможность моделировать программное обеспечение и другие системы как наборы взаимодействующих объектов. Это, конечно же, замечательно подходит для объектно-ориентированных программных систем и языков программирования, но также очень хорошо работает и для бизнес-процессов и других прикладных задач. В UML модели есть два аспекта: статическая структура – описывает, какие типы объектов важны для моделирования системы и как они взаимосвязаны; динамическое поведение – описывает жизненные циклы этих объектов и то, как они взаимодействуют друг с другом для обеспечения требуемой функциональности системы. Понимание работы UML как визуального языка начинается с рассмотрения его структуры. Эта структура включает: строительные блоки – основные элементы, отношения и диаграммы UML модели; общие механизмы – общие UML пути достижения определенных целей; архитектура – UML представление архитектуры системы. Согласно «The Unified Modeling Language User Guide», UML состоит всего из трех строительных блоков: сущности – это сами элементы модели; отношения связывают сущности и отношения определяют, как семантически связаны две или более сущностей; диаграммы – это представления моделей UML, показывающие наборы сущностей, которые «рассказывают» о программной системе и являются нашим способом визуализации того, что будет делать система
28 (аналитические диаграммы) или как она будет делать это (проектные диаграммы). Система выявления сложных событий предназначена для выявления шаблонов последовательностей сложных событий. К разрабатываемому программному обеспечению были выдвинуты следующие требования: подготовка данных для анализа; подготовка метаданных для анализа; промежуточный контроль и принятие решений; выявление сложных событий; выгрузка из журнала событий; выбор наиболее частых последовательностей; выбор вариантов сложных событий [14]. В таблицах 10 – 13 описываются основные прецеденты диаграммы вариантов использования. Таблица 10 – Описание прецедента «Подготовка данных для анализа» Название прецедента ID Краткое описание Главные актёры Второстепенные актёры Предусловие Основной поток событий Постусловие Альтернативные потоки Подготовка данных для анализа 1 Подготовка данных для анализа Пользователь Файл исходных данных и метаданных Запуск приложения 1.Пользователь открывает файл с исходными данными и метаданными 2.Пользователь выгружает данные из файла. Анализ выгруженных данных - Таблица 11 – Описание прецедента «Подготовка метаданных для анализа» Название прецедента ID Краткое описание Главные актёры Второстепенные актёры Предусловие Основной поток событий Постусловие Альтернативные потоки Подготовка метаданных для анализа 2 Метаданные подготавливаются для анализа Пользователь Файл исходных данных и метаданных Запуск приложения 1. Пользователь открывает файл с данными и метаданными 2. Пользователь выгружает метаданные из файла с данными и метаданными Анализ выгруженных метаданных -
29 Таблица 12 – Описание прецедента «Промежуточный контроль и принятие решений» Название прецедента ID Краткое описание Главные актёры Второстепенные актёры Предусловие Основной поток событий Постусловие Альтернативные потоки Промежуточный контроль и принятие решений 2 Принятие решений относительно промежуточных результатов анализа Пользователь Файл с наиболее частыми последовательностями Анализ данных и метаданных 1.Пользователь получает подмножества последовательностей событий. 2.Пользователь получает результат выполнения анализа в виде вариантов сложных событий 3.Пользователь помещает предварительно сформированные последовательности событий в файл с наиболее частыми последовательностями. 4.Пользователь принимает решение относительно предварительных данных Утвержденные пользователем данные возвращаются в приложение для дальнейшей обработки - Таблица 13 – Описание прецедента «Выявление сложных событий» Название прецедента ID Краткое описание Главные актёры Второстепенные актёры Предусловие Основной поток событий Постусловие Альтернативные потоки Выявление сложных событий 2 Выявление шаблонов наиболее частых последовательностей событий Пользователь Файл с Анализ данных 1.Пользователь выбирает среди результатов анализа варианты сложных событий. 2.Пользователь сохраняет выбранные варианты сложных событий в файл с вариантами сложных событий. - Данная диаграмма описывает взаимодействие элементов менеджера сложных событий. 3.2 Обобщенная архитектура сервиса конструирования и исполнения активных правил Сервис конструирования и исполнения правил в активных базах данных предназначен для быстрого развертывания приложений активных баз данных на основе современных реляционных и объектно-ориентированных СУБД. Функциональность активных баз данных реализована в виде переносимых компонентов в рамках единой архитектуры и включает
30 автоматизированное конструирование, анализ корректности и исполнение активных правил. Обобщенная архитектура сервиса конструирования и исполнения правил в активных базах данных представлена на рисунке 3. Рисунок 3 – Обобщенная архитектура сервиса конструирования и исполнения правил в активных базах данных (диаграмма развертывания)
31 Сервис конструирования и исполнения правил в активных базах данных включает следующие основные компоненты: приложение для конструирования, анализа и аудита активных правил; репозиторий активных правил; сервис исполнения активных правил. Приложение для конструирования, анализа и аудита активных правил представляет собой конструировать web-приложение, новые правила, с помощью изменять которого имеющиеся можно правила, активизировать или отключать правила, выполнять проверку корректности правила, а также проводить анализ работы системы на основании данных из журналов. Репозиторий активных правил – база метаданных о наблюдаемых событиях и соответствующих активных правилах, функционирующая под управлением реляционной или объектно-ориентированной СУБД. Ведение активных правил включает выполнение следующих операций: создание/удаление/редактирование правил, включение/выключение правил, анализ связей между правилами, тестовый запуск (без сохранения изменений), назначение приоритета обработки, настройка параллельного выполнения правил, протоколирование правил [1]. Сервис исполнения активных правил – программный компонент, который принимает от наблюдаемой БД элементарные события, находит и выполняет соответствующие им активные правила как реакцию на наступившие события. Для управления активным поведением реализованы специальные программные средства на основе механизмов, предоставляемых целевой СУБД. В реляционных СУБД такими механизмами являются триггеры, хранимые процедуры и функции, в объектно-ориентированных СУБД – методы классов и функции обратного вызова. При этом события, связанные с модификацией (добавлением, удалением и обновлением) данных,
32 отслеживаются и обрабатываются явно. События, которые не могут быть сведены к операциям модификации данных, фиксируются и обрабатываются в специальной очереди событий. Программные средства выявления сложных событий в составе сервиса конструирования и исполнения, активных правил должны функционировать в рамках приложения конструирования и анализа, активных правил. Сведения журнала событий, накопленные в процессе обработки событий и исполнения активных правил, являются исходными данными для выявления сложных событий. Процесс выявления сложных событий выполняется в автоматизированном режиме с привлечением специалистов (экспертов) предметной области. В дальнейшем актуальной задачей является реализации программных средств выявления сложных событий, функционирующих автоматически в онлайн режиме. 3.3 Выбор технологий и средств разработки Для реализации программного обеспечения были выбраны объектноориентированный язык программирования распространяемая библиотека Java и свободно- Xelopes, обеспечивающая универсальную основу для стандартного доступа к алгоритмам data mining [13]. 3.3.1 Библиотека интеллектуального анализа данных Xelopes В ходе анализа функциональных возможностей инструментальных средств, рассматриваемых в разделе 2.2.1, выбор был сделан в пользу свободно распространяемой библиотеки Xelopes. Разработчиками данной библиотеки являются компания Prudsys совместно с российской компанией ZSoft. Архитектура данного соответствии со стандартом обеспечивает Java,C++ и C#. программного инструмента построена в MDA (Model Driven Architecture), что возможность ее реализации на языках программирования
33 Можно выделить следующие основные достоинства библиотеки Xelopes: свободно распространяемая библиотека - доступна для свободного использования; универсальна по отношению к любой платформе – так как базовое ядро сформировано в UML, то могут быть получены реализации практически на любом объектно-ориентированном языке; независимость входных значений – одной из главных идей Xelopes является абстракция – матрица данных. Это необходимо в связи с тем, что каждый алгоритм Data Mining работает в декартовом пространстве переменных, характеризующих исследуемые данные; соответствие стандартам Data Mining [13]. 3.3.2 Объектно-ориентированный язык программирования Java и среда разработки NetBeans Java является одним из часто используемым объектно- ориентированным языком программирования. Компания Sun Microsystems c 1991 года начала заниматься его разработкой и 23 мая 1995 года он официально вышел на рынок. Изначально Java разрабатывался ни как отдельный язык программирования,а как часть программного обеспечения,написанного на языке С++. Но в связи с возникшими трудностями,разработчиками было принято решение создать новый язык программирования,который бы содержал в себе лучшие стороны языков С и С++,таким образом появился Java. Перед программистом, использующим язык Java открыт богатый набор классов объектов, отличительной чертой которых, является то, что абстракции, которые они создают независимы для большого количества системных интерфейсов.
34 В настоящее время существует большое количество интегрированных средств разработки приложений на языке Java, из которых самыми популярными являются NetBeans,Eclipse и Intellj IDEA. Для разработки была выбрана среда разработки NetBeans.Данный выбор обусловлен наличием у неё ряда преимуществ, делающих процесс разработки программного средства выявления сложных событий более удобным. К данным характеристикам относятся: наличие большого количества встроенного обучающего материала; бесплатная лицензия и открытый исходный код; адаптирована под большое количество языков программирования; наличие возможности пользователю настраивать проекты вне среды IDE; поддержка стандартов и платформ языка Java; расширяемая платформа; поддержка языков написания сценария,например, JavaScript,PHP,Groovy; наличие инструментальных средств профилирования и отладки; наличие средств, позволяющих команде разработчиков ввести совместную работу над проектами. 3.4 Требования к аппаратно – программному окружению Минимальные и рекомендуемые требования к аппаратному окружению представлены в таблице 14. Таблица 14 – Требования к аппаратному окружению Название Минимальные требования Рекомендуемые требования Операционная система Процессор Windows XP Intel® Core™ i3- @1.30GHz 1.30GHz 2ГБ 6ГБ Windows 7 и выше Intel® Core™ i5- @2.30GHz 2.30GHz и выше 4ГБ 8ГБ и выше ОЗУ Свободное место
35 В таблице 15 представлены минимальные и рекомендуемые требования к программному окружению программного обеспечения [2]. Таблица 15 – Требования к программному окружению Название Операционная система Браузер Веб-сервер Виртуальная java-машина Минимальные требования Windows XP Internet Explorer Tomcat версии 8.0. Java Runtime Environment (JRE) версии 1. Рекомендуемые требования Windows 7 и выше Google Chrome Tomcat версии 8.0.27 и выше; Java Runtime Environment (JRE) версии 1.8 и выше; Программные и аппаратные средства обеспечивают удобство и качество разрабатываемых программных средств.
36 4 Разработка программных средств выявления сложных событий 4.1 Схема работы приложения с использованием библиотеки Xelopes Работа алгоритма выявления сложных событий с использованием библиотеки Xelopes начинается с загрузки исходных данных и метаданных. Для загрузки исходных данных создается экземпляр класса исходных данных – MiningInputStrea. Затем выделяются метаданные загруженных данных. Для настройки процесса построения модели создаются экземпляры классов MiningSettings и MiningAlgorithmSpecification. У данных экземпляров устанавливаются необходимые параметры. Создание конкретных экземпляров классов зависит от используемого метода и решаемой задачи. Создание экземпляра класса MiningAlgorithm выполняется динамической загрузкой класса в соответствии с указанным в специфических параметрах именем класса. Созданному экземпляру алгоритма передаются исходные данные и настройки. Создание модели выполняется вызовом метода buildModel(). Он возвращает модель, построенную в виде экземпляра класса MiningModel. После создания модели выполняется анализ данных. Если построенная модель является экземпляром класса SupervisedMiningModel, то она может быть применена к новым данным с целью определения значения зависимой переменной. Далее результаты анализа проверяются на наличии ошибок, и если ошибок нет, то пользователю выводится результат и модель сохраняется, в противном случае алгоритм завершается с ошибкой. Приложение, созданное для выявления сложных событий с применением библиотеки Xelopes, работает по схеме, представленной на рисунке 4.
37 Рисунок 4 – Схема работы приложения с использованием библиотеки Xelopes (диаграмма деятельности) Любая построенная модель может быть сохранена в формате PMML или в текстовом формате.
38 4.2 Структура программных средств выявления сложных событий Взаимодействие с любым алгоритмом интеллектуального анализа данных можно представить в виде работы четырех механизмов: Входные данные – матрица данных, используемая алгоритмом интеллектуального анализа данных; Результат – модель интеллектуального анализа данных, возвращаемая алгоритмом Data Mining; Настройки – параметры алгоритма интеллектуального анализа данных; Функции обратного вызова – обработка событий алгоритма интеллектуального анализа данных. На рисунке 5 представлена общая структура программного обеспечения. Рисунок 5 – Общая структура программного обеспечения Общая структура программного обеспечения выявления сложных событий представлена следующими компонентами: среда разработки; модель анализа; алгоритм анализа;
39 атрибуты; настройки анализа; java- приложения. На рисунке 6 представлена общая структура программного обеспечения выявления сложных событий. Рисунок 6 – Общая структура программного обеспечения выявления сложных событий (диаграмма компонентов) Среда разработки «Xelopes developer studio» – это программа, реализующая функции обработки, визуализации и экспорта данных. Среда разработки использует для получения данных структурированные текстовые файлы. В Xelopes developer studio включен полный набор механизмов, позволяющий провести весь цикл обработки (очистку, трансформацию данных, построение моделей), отобразить полученные результаты удобным образом и экспортировать результаты. Компонент «модель анализа» содержит несколько основных классов. Абстрактный класс MiningModel реализует интерфейс PmmlSerializable и представляет собой модель интеллектуального анализа данных и содержит массив MiningModelResult. Компонент настройки анализа так же содержит несколько основных классов. Центральный класс – MiningSettings. Он содержит ссылки на экземпляры MiningDataSpecification, которые содержат MiningAttributes, массив AttributeUsageRelation, описывающий использование всех атрибутов алгоритмом и, возможно, экземпляр MiningModel, который был создан с этими настройками. Переменные доступны через методы getter и setter. Метод verifySettings проверяет, определены ли параметры алгоритма,
40 функции и спецификации – в противном случае параметры интеллектуального анализа являются неполными и не могут использоваться алгоритмами. Другие классы настроек содержат собственные методы для проверки полноты настроек. Некоторые из AssociationRulesSettings, SupervisedMiningSettings классов, а именно SequentialSettings, содержат StatisticsSettings, и CustomerSequentialSettings ссылки на специальный класс MiningAttribute, важный для их алгоритмов. Центральным элементом компонента «атрибуты» является абстрактный класс MiningAttribute. Он содержит переменные для имени и ссылок для MiningDataSpecification и массива AttributeUsageRelatio. Имя атрибута можно получить и установить через соответствующие методы. Основным классом компонента «алгоритм анализа» является MiningAlgorithm. Для исполнения алгоритма требуются объекты типа MiningInputStream, MiningAlgorithmSpecification результате для MiningSettings алгоритм для общих конкретных возвращает объект настроек настроек алгоритма и алгоритма. В MiningModel модели интеллектуального анализа данных. Объекты ввода и настройки могут быть переданы через конструкторы: public MiningAlgorithm (); public MiningAlgorithm (MiningInputStream miningInputStream; MiningSettings miningSettings; MiningAlgorithmSpecification miningAlgorithmSpecification); public MiningAlgorithm (MiningInputStream miningInputStream; MiningSettings miningSettings). Кроме того, эти объекты доступны с помощью методов getter и setter. К объекту MiningModel можно получить доступ через getMiningModel, а методы getMetaData и getApplicationInputSpecification возвращают
41 параметры MiningDataSpecification и ApplicationInputSpecification соответственно, которые определены с помощью MiningSettings алгоритма. Абстрактный метод runAlgorithm запускает алгоритм интеллектуального анализа данных. Абстрактный метод buildModel также выполняет алгоритм и возвращает MiningModel. MiningListeners могут быть добавлены в MiningAlgorithm для обратных вызовов. Концепция слушателя XELOPES очень похожа на концепцию Java Swing. С помощью методов addMiningListener и removeMiningListener слушатели могут быть добавлены или удалены из внутреннего списка EventListenerList. Метод fireMiningEvent уведомляет всех MiningListeners и вызывает processMiningEvent для принятия соответствующей реакции. Метод buildModelWithAutomation предназначен для автоматического создания моделей. 4.3 Реализация программных средств выявления сложных событий 4.3.1 Система классов для выявления сложных событий Разработанное программное обеспечение представляет собой набор классов. Классы MiningSettings, MiningModel,MiningAttribute,MiningAlgorithm предоставляются библиотекой Xelopes. Класс BuilderComplexEvents разработан в ходе реализации программного обеспечения. Разработанное программное обеспечение представлено в виде диаграммы классов на рисунке 7. Класс BuilderComplexEvents предназначен для выявления сложных событий и содержит два метода: getSequentialsEvents() и getComplexEvents(). Метод getSequentialsEvents() выполняет построение цепочек событий. Метод getComplexEvents() на основе цепочек событий, строит сложные события.
42 Рисунок 7 – Диаграмма классов разработанного программного обеспечения Класс MiningAlgorithm реализует алгоритм поиска. Алгоритм запускается с использованием защищенного метода runAlgorithm. С помощью метода buildModel, внутри которого также выполняется алгоритм, может быть создан класс MiningModel для представления модели и поиска. Метод buildModelWithAutomation генерирует модель интеллектуального анализа данных с использованием методов автоматической настройки параметров, позволяя полностью автоматизировать методы поиска и запускает метод buildModel.Класс MiningAlgorithm обращается к данным из класса MiningInputStream и возвращает результат в виде MiningModel. Общие параметры поиска берутся из класса MiningSettings, а настройки конкретного алгоритма получены из MiningAlgorithmSpecification. Все эти объекты могут быть установлены и получены с помощью соответствующих методов getter и setter класса MiningAlgorithm. Класс MiningSettings содержит спецификацию MiningDataSpecification, например, метаинформацию данных поиска, которая, следовательно, также доступна из MiningAlgorithm методом getMetaData. Класс MiningSettings и его подклассы содержат основные параметры алгоритма, т. е. те параметры,
43 которые требуются для всех алгоритмов одного типа. Специфический для алгоритма класс MiningAlgorithmSpecification содержит функцию и тип, имя, имя класса, версию и конкретные параметры алгоритма. Они доступны через соответствующие методы получения и установки. Методы getInputAttribute и setInputAttribute обрабатывают конкретные параметры, которые содержатся в объектах класса MiningAlgorithmParameter. Каждый параметр описывается его именем, типом, значением, описанием, методом setter и содержит ссылку на связанный с ним объект класса MiningAlgorithmSpecification. Концептуальная область настроек дополнительно описывает настройки Mining и их отношения использования к атрибутам спецификации ввода. Класс MiningAttribute. Концептуальная область класса определяет два подкласса MiningAttribute: NumericAttribute и категориальный атрибут. Категория представляет свойства и ценности категории, которые могут иметь либо категориальный атрибут, либо атрибут OrdinalAttribute, в то время как CategoryHierarchy представляет любую таксономию, с которой может ассоциироваться категориальный атрибут. Класс MiningAttribute расширяет атрибут класса CWM Core, но XELOPES не использует свои методы. Класс MiningAttribute реализует интерфейс PmmlPresentable и поэтому может быть представлен в PMML (как элемент DataField) с использованием методов createPmmlObject и parsePmmlObject. Пакет Sequential содержит все классы для секвенциального анализа, описание которых представлено в таблице 16. Таблица 16 – Классы секвенциального анализа Наименование класса SequentialSettings SequentialMiningModel SequentialAlgorithm ItemSetSeq Класс Описание Настройки секвенциального анализа Модель секвенциального анализа Основной класс для алгоритмов секвенциального анализа Представление секвенциального набора элементов SequentialSettings описывает настройки для анализа последовательности, атрибуты, как в AssociationRulesSettings без атрибута
44 доверия, и новый с itemIndex соответствующей ассоциацией с MiningAttributes, определяющими порядок позиций в транзакциях. Класс CustomerSequentialSettings описывает настройки для анализа последовательной корзины, атрибуты, как в AssociationRulesSettings без атрибута доверия, и новый customerId с соответствующей ассоциацией с MiningAttributes, определяющими клиентов транзакций. Метод transactionPosition выполняет правило transactionId, но также определяет порядок транзакции для каждого клиента. Класс содержит SequentialSettings следующие переменные: minimumSupport, itemld, transactionld, itemIndex.Описание переменных класса SequentialSettings представлено в таблице 17. Таблица 17 – Переменные класса SequentialSettings Наименование переменной minimumSupport itemId transactionId itemIndex Описание Минимальная поддержка Содержит идентификаторы элементов Содержит идентификаторы транзакций Содержит порядок элементов Все эти переменные доступны с помощью методов getter и setter. Метод verifySettings вызывает тот же метод своего суперкласса, а затем проверяет, определены ли идентификатор элемента, идентификатор транзакции и атрибут индекса элемента. Класс MiningModel.Концептуальная область модели состоит из общего представления модели интеллектуального математической модели, созданной анализа данных (то есть или созданной при выполнении алгоритма интеллектуального анализа данных). MiningModel состоит из представления самой модели интеллектуального анализа, MiningSettings, которая управляет построением модели ApplicationInputSpecification, которая определяет набор входных атрибутов для модели и MiningModelResult, который представляет собой набор результатов, генерируемой модели. созданный тестированием или приложением
45 Класс MiningDataSpecification содержит метаинформацию исходных данных. В принципе, это всего лишь массив элементов MiningAttribute. Чтобы добавить новый атрибут miningDataSpecification,используется метод public void addMiningAttribute (MiningAttribute miningAttribute) и для назначения целого массива атрибутов анализа public void setAttributesArray (MiningAttribute [] attributesArray). Спецификация MiningDataSpecification содержит имя отношения, к которому можно получить доступ через соответствующие методы get и set. Если были применены преобразования данных, MiningDataSpecification содержит описание всех его преобразований в переменной relationsDictionary и исходной спецификации MiningDataSpecification (перед преобразованиями) в переменной pretransfomedMetaData. Класс SupervisedMiningModel расширяет MiningModel для контролируемого обучения, т. е. классификация и регрессия. Следовательно, для этого класса требуется TargetAttribute. Функция атрибута MiningModel описывает класс функций интеллектуального анализа данных (например, AssociationRules), а алгоритмы атрибутов используются для указания конкретного алгоритма (например, decisionTree). SequentialMiningModel также содержит полную реализацию всех методов MiningModel, включая все функции PMML. Далее он содержит методы getSequentialRules и setSequentialRules для получения и установки всех последовательностей. Программный код для получения последовательностей представлен в листингах 1 и 2. Листинг 1 – Получение последовательности и информации о транзакции SequentialMiningModel seqModel = …; Vector seq = seqModel.getSequentialRules(); int nSeq = seq.size(); CategoricalAttribute itemId = (CategoricalAttribute) ( (SequentialSettings) seqModel.getMiningSettings() ).getItemId(); CategoricalAttribute transactId = (CategoricalAttribute) ( (SequentialSettings) seqModel.getMiningSettings() ).getTransactionId();
46 int itemsNumber = itemId.getCategoriesNumber(); int transactsNumber = transactId.getCategoriesNumber(); Листинг 2 – Получение всех последовательностей for (int i = 0; i < nSeq; i++) { ItemSetSeq iss = (ItemSetSeq) seq.elementAt(i); int itemSize = iss.getSize(); for (int j = 0; j < itemSize; j++) { int pN = iss.getItemAt(j); Category cat = (Category) itemId.getCategory(pN); }; double Support = 100.0 * ((double) iss.getSupportCount()) / ((double) transactsNumber); }; Класс SequentialAlgorithm. Класс является базовым классом для всех алгоритмов секвенциальго анализа, которые должны расширять этот алгоритм. Класс SequentialAlgorithm содержит переменные, описание которых представлено в таблице 18. Таблица 18 – Переменные класса SequentialAlgorithm Наименование переменной minimumSupport itemId transactionId itemIndex automationParameter Описание Минимальная поддержка Содержит идентификаторы элементов Содержит идентификаторы транзакций Содержит порядок элементов Параметр для автоматической настройки Эти переменные могут использоваться алгоритмами, расширяющими класс SequentialAlgorithm. Класс SequentialAlgorithm перезаписывает метод setMiningSettings класса MiningAlgorithm посредством реализации этого метода для последовательностей. В частности, он проверяет, имеют ли MiningSettings тип SequentialSettings. Далее SequentialAlgorithm реализует метод buildModel, создавая SequentialMiningModel и включая алгоритм автоматической настройки параметра поддержки. Внутри он использует метод runAlgorithm, который, не реализован, поскольку он зависит от алгоритма конкретной последовательности.
47 Для извлечения модели метод getSequentialRules включен в SequentialAlgorithm, который возвращает вектор. На рисунке 8 представлена диаграмма деятельности, описывающая работу реализованного программного обеспечения. Рисунок 8 – Диаграмма деятельности программного обеспечения выявления сложных событий Реализации алгоритмов подпакете Algorithms. секвенциального анализа содержатся 4.3.2 Метод getSequentialsEvents для построения цепочек событий Метод getSequentialsEvents выполняет построение цепочек событий. в
48 Работа метода начинается с загрузки исходных данных и создания экземпляра класса MiningInputStream. Далее у загруженных исходных данных выделяются метаданные. Построение модели цепочек событий начинается созданием экземпляров классов MiningSettings и MiningAlgorithmSpecification. Во время создания, экземплярам задаются параметры. Программный код настроек параметров экземпляров классов представлен в листинге 3. Листинг 3 – Настройка параметров экземпляров String className = miningAlgorithmSpecification.getClassname(); Class algorithmClass = = Class.forName(className); Object alg = algorithmClass.newInstance();MiningAlgorithm algorithm = (MiningAlgorithm) alg; Программный код передачи исходных данных и настроек созданному экземпляру класса представлен в листинге 4. Листинг 4 – Передача выполненных настроек экземпляру класса. algorithm. setMiningInputStream(inputData); algorithm.setMiningSettings (miningSettings); algorithm.setMiningAlgorithmSpecification(miningAlgorithmSpecifi cation); Модель цепочек событий создаётся вызовом метода buildModel(). 4.3.3 Метод getComplexEvents для построения сложных событий Метод getComplexEvents предназначен для построения сложных событий. Данный метод работает с цепочками событий, полученными в результате работы метода getSequentialsEvents. Работа метода начинается с цикла поиска последовательностей. Если последовательности не найдены, то метод заканчивает свою работу. Если последовательности найдены, тогда выбирается следующая последовательность и начинается поиск подпоследовательностей. На рисунке 9 представлена диаграмма деятельности работы метода getSequentialsEvents.
49 Рисунок 9 – Диаграмма деятельности метода getSequentialsEvents Если подпоследовательности найдены, то выбирается следующая подпоследовательность и формируются варианты шаблонов событий, после чего выполняется возвращение на начало цикла поиска подпоследовательностей. Если подпоследовательности вновь найдены,то выполняются аналогичные подпоследовательности действия, закончились, в то противном выполняется вариантов шаблонов событий и возвращение случае, если формирование на начало в поиск последовательностей. Условие определения шаблона для формирования сложных событий на основании AND и SEQ представлены в таблице 19.
50 Таблица 19 – Правила формирования шаблонов событий Последовательность: 𝑒1,𝑒2 Варианты шаблона 𝐸1 𝐴𝑁𝐷 𝐸2 𝐸1 ; 𝐸2 (SEQ(𝐸1 , 𝐸2)) Условие t(𝐸2)-t(𝐸1)≤△ 𝑡𝐴𝑁𝐷 t(𝐸2)-t(𝐸1)≤△ 𝑡𝑆𝐸𝑄 Если последовательности имеются, то повторяется вся работа метода, как только последовательности getComplexEvents прекращается [15]. закончились, работа метода
51 5 Тестирование программных средств Тестирование программного обеспечения – это определение качества разрабатываемого приложения. Тестирование – это процесс, проверяющий отвечает ли программный продукт всем функциональным требованиям, предъявленным пользователем, и соответствуют результаты тестирования тем, которые должны быть на выходе при правильной работе программного обеспечения. 5.1 Выбор режима тестирования В зависимости от детализации тестирования программного средства режимы тестирования можно разделить по следующим признакам: 1) по объекту тестирования : функциональных функциональное тестирование – проверяет соответствие возможностей программного обеспечения всем функциональным требованиям выдвинутым пользователем в процессе составления технического задания на разработку; нагрузочное тестирование – проверяет показатели производительности программного обеспечения; тестирование стабильности – автоматизированное тестирование,основной задачей которого является проверка устойчивости приложения к длительной работе при соответствующем объёме нагрузкию 2) по знанию системы: тестирование черного ящика – режим тестирования, работа которого направлена на проверку поведения объекта с точки зрения внешнего мира; тестирование белого ящика – объектом тестирования является логика работы программного кода. 3) по степени автоматизации:
52 ручное тестирование – осуществляется непосредственно тестировщиком без применения каких-либо программных средств, путём имитации работы пользователя; автоматизированное тестирование – тестирование, осуществляемое с применением программных средств, что в значительной степени позволяет сократить длительность проверки [16]. Для разработанного программного средства выбран функциональный режим тестирования. 5.2 Проведение тестирования программных средств На основе данных из журнала событий формируется входной набор данных для анализа. Структура журнала событий представлена в таблице 16. Таблица 16 – Структура журнала событий ID_записи_журнала Дата/время_наступления ID_типа_события ……… ………. ……… С помощью SQL-запроса формируется входной набор данных для анализа. Структура входного данных для анализа представлена в таблице 17. Таблица 17 – Структура набора данных для анализа ID_экземпляра_события_инициатора ……… Дата/время_наступления ID_типа_события ………. ……… Алгоритм секвенциального анализа тестировался в среде Xelopes developer studio. Главное окно среды представлено на рисунке 10. разработки «Xelopes developer studio»
53 Рисунок 10 – Главное окно среды разработки «Xelopes developer studio» На рисунке 11 представлено окно настройки входных данных в среде разработки «Xelopes developer studio». Рисунок 11 – Окно настройки входных данных в среде разработки «Xelopes developer studio»
54 Процесс, описывающий настройку алгоритма в среде «Xelopes developer studio» представлен на рисунках 12 и 13. Рисунок 12 – Выбор алгоритма анализа и его настройка в среде разработки «Xelopes developer studio» Рисунок 13 – Детальное описание выбранного алгоритма в среде разработки «Xelopes developer studio»
55 На рисунке 14 представлены последовательности событий, полученные в результате применения секвенциального анализа. Рисунок 14 – Последовательности событий, полученные в результате применения секвенциального анализа Тестирование показало, что разработанное программное обеспечение отвечает выделенным тестирования функциональным соответствуют значениям, правильной работе программного средства. требованиям, которые и должны результаты быть при
56 Заключение В процессе выполнения выпускной квалификационной работы был выполнен анализ предметной области. Помимо этого, был проведен анализ вариантов использования системы обработки сложных событий в активных базах данных. Были исследованы методы интеллектуального анализа данных для решения задач прогнозирования и выявления сложных событий. Также было представлено описание выбранных технологии и средств разработки. В результате был разработан прототип приложения, реализующего выявление программное сложных событий в активных базах данных.Разработанное обеспечение позволяет выявить сложные события с применением свободно-распространяемой библиотеки Xelopes. Тестирование программных средств заключалось в обзоре методов тестирования, выборе подходящих методов тестирования и выполнение тестов. Результаты функционального тестирования показали корректность работы подсистемы. Разработанный прототип в дальнейшем может быть усовершенствован внедрением дополнительных классов и интерфейсов для осуществления выявления сложных событий, также может быть включен в сервис конструирования и исполнения, активных правил.
57 Список использованных источников 1. Luckham, D. The Power of Events: An Introduction to Complex Event Processing in Distributed Enterprise Systems. / D. Luckham. – MA. : Cambridge, 2002. – 400 p. 2. Лотман Ю.М. Событие // Википедия [Электронный ресурс]. URL: https://ru.wikipedia.org/wiki/Событие (дата обращения 21.05.2018) 3. Adaikkalavan R. Event Operators: Formalization, Algorihms, and Implementation Using Interval-Based Semantics. / R.Adaikkalavan. – Arlington. : MS Thesis, 2002. – p.4 – 5 4. Chakravarthy S. Composite Events for Active Databases: Semantics, Contexts and Detection / S. Chakravarthy, V. Krishnaprasad, E. Anwar, S.-K. Kim // Proceedings, International Conference on Very Large Data Bases. – San Francisco: Morgan Kaufmann Publisher, 1994. – p. 606 – 617 5. David C. Luckham. Event Processing for Business: Organizing the Real-Time Enterprise. — John Wiley & Sons, 2011. – 288 с. 6. Клендар Н. Esper на службе корреляции // Хакер [Электронный ресурс]. URL: https://xakep.ru/2014/12/24/esper/ (дата обращения 12.05.2018) 7. Mani, K. Chandy Event-Driven Applications: Costs, Benefits and Design Approaches. / K. Mani // In Proceedings of the Second International Workshop on Rules in Database Systems. – 2006. – p. 69 – 85. 8. Widom, J. A denotational semantics for the Starburst production rule language / J.Widom // SIGMOD Rec. – 1992. – №21. – p. 4 – 9. 9. Шибанов, С.В. Формализация ECA и SECA-моделей активных правил / С.В. Шибанов, Э.В. Лысенко, А.А. Скоробогатько // Прикладная математика, управление и информатика: сборник трудов Междунар. молодеж. конф.: в 2 т. – Белгород: ИД «Белгород», 2012. – Т. 1. – с. 319 – 322. 10. . Gatziu, S. Integrating active concepts object-oriented database system / S. Gatziu, A. Geppert, K. Dittrich. – Zürich: Institut für Informatik, 1991. – 97 p.
58 11. Шибанов, С.В. Формальное представление правил в активных базах данных как последовательных взаимодействующих процессов / С.В. Шибанов, А.Б. Зудов // Модели, системы, сети в экономике, природе и обществе. № 1 (17), 2016. – Пенза. – c. 335 – 343. 12. Chakravarthy, S. Snoop: An expressive event specification language for active databases / S. Chakravarthy, D. Mishra // Data & Knowledge Engineering. – 1994. – №1. – p.1 – 26. 13. Gehani, N. H. Event specification in an Active object-oriented Database / N. H. Gehani, H. V. Jagadish, O Shmueli, // In ‘Proc. Intl. Conf. on Management of Data (SIGMOD). San Diego, California, 1992.–, pp. 81–90. 14. Buchmann Alejandro P. Building an integrated active OODBMS: Requirements, architecture, and design decisions / Alejandro P Buchmann, Jürgen Zimmermann, José A Blakeley, David L Wells // Proceedings of the Eleventh International Conference on. IEEE, 1995. – p. 117 – 128 p. 15. Gatziu S. Detecting Composite Events in Active Database Systems Using Petri Nets. / S. Gatziu, K.R. Dittrich. – Universität Zürich, 1993. – 328 16. Events in an Active Object-Oriented... (PDF Download Available). Available from: https://www.researchgate.net/ publication/2773901_Events_in_an _Active_Object-Oriented_Database_System [accessed Jun 10 2018].
59 Приложение А. Код программы (обязательное)
60 package com.ActiveRules; яimport com.prudsys.pdm.Core.*; import java.util.*; import com.prudsys.pdm.Models.*; import com.prudsys.pdm.Models.Sequential.*; public class BuilderComplexEvents { protected CategoricalAttribute itemId; protected CategoricalAttribute transactionId; protected NumericAttribute itemIndex; protected double minimumSupport; private AutomationParameter automationParameter = null; public void getSequentialsEvents( String inputFilePath, double minimumSupport, String outputFilePath) throws IllegalArgumentException { // Открыть файл исходных данных и загрузить из него данные MiningArffStream arff = new MiningArffStream(filePath); // и их метаданные MiningDataSpecification metaData = inputData.getMetaData(); // Получить атрибут, идентифицирующий транзакции CategoricalAttribute transactId = (CategoricalAttribute) metaData.getMiningAttribute( "transactId"); // Получить атрибут, идентифицирующий элементы CategoricalAttribute itemId = (CategoricalAttribute) metaData.getMiningAttribute( "itemId"); // Создать экземпляр для выполнения настроек построения модели // сиквенциального анализа SequentialSettings miningSettings = new SequentialSettings(); // Передать в настройки метаданные miningSettings.setDataSpecification( metaData); // Передать в настройки атрибут, идентифицирующий транзакции miningSettings.setTransactionId( transactId); // Передать в настройки атрибут, идентифицирующий элементы miningSettings.setItemId( itemId); // Установить минимальную поддержку miningSettings.setMinimumSupport(minimumSupport); // Получить имя класса алгоритма String className = miningAlgorithmSpecification.getClassname(); // Создать экземпляр алгоритма SequentialAlgorithm algorithm = (SequentialAlgorithm) initAlgorithm(className); // Передать алгоритму исходные данные и настройки algorithm.setMiningInputStream( inputData); algorithm.setMiningSettings( miningSettings); algorithm.setMiningAlgorithmSpecification( miningAlgorithmSpecification); // Построить модель MiningModel model = algorithm.buildModel(); // Вывести полученный результат writer = new FileWriter(outputFilePath); model.writePlainText(writer); } public void getComplexEvents() { } }
Отзывы:
Авторизуйтесь, чтобы оставить отзыв