Читайте также:
|
|
Дипломная работа
Интеллектуальный анализ влияния текущих событий на протекание связанных с ними процессов
Специальность 230201 Информационные системы и технологии
Выполнил студент гр. 6082 М.К. Хайтович
Научный руководитель, к.т.н., проф. Л.А. Станкевич
Санкт-Петербург
2015 г
Реферат
Объем работы: 123 страницы, 9 иллюстраций, 4 приложения, 1 таблица
Ключевые слова: алгоритм классификации, анализ данных, data mining, машинное обучение
Дипломная работа посвящена методике разработки программного продукта для поиска причин в изменениях трендов в данных. Рассмотрено создание системы предобработки данных и разработка системы классификации на базе различных алгоритмов машинного обучения. В работе определяется область применения разработанной программы. Для разработки системы предобработки данных использован язык программирования C#, Фреймворк.Net, а также СУБД MS SQL Server 2008R2. Для разработки системы классификации использован язык программирования Python и библиотека Scikit-Learn. Для системы классификации была использована стратегия One-vs-Rest для алгоритмов классификации Машина Опорных Векторов (с различными ядрами) и Наивный Байесовский Классификатор. Разработка велась под операционной системой Windows 7. Осуществлены эксперименты по проверке точности объяснений, даваемых системой на тестовых данных.
Оглавление
Реферат. 1
1. Введение. 4
1.1 Постановка задачи. 8
2. Методы машинного обучения и алгоритмы машинного обучения. 12
2.1 Задача классификации. 12
2.2 Multiclass классификация. 14
2.2.1 Стратегия One-vs.-rest 14
2.3 Multi-label классификация. 16
2.4 Выводы.. 18
3. Методы и алгоритмы, реализованные в программной системе. 20
3.1 TF-IDF. 20
3.2 Наивный Байесовский Классификатор. 22
3.3 SVM.. 25
3.3.1 Стохастический Градиентый Спуск. 33
3.4 Выводы.. 36
4. Реализация системы.. 38
4.1 Предобработка информации. 38
4.1.1 Инструкция пользователя. 47
4.2 Система классификации. 49
4.2.1 Рабочий режим.. 50
4.2.2 Тестовый режим.. 53
4.2.3 Инструкция пользователя. 54
4.3 Выводы.. 58
5. Машинный эксперимент. 60
5.1 Выводы.. 62
6. Заключение. 65
Список использованных ресурсов. 67
Приложение 1. Система предобработки информации. 68
Program.cs. 68
FactMiner.cs. 72
Logger.cs. 102
Приложение 2. Файл конфигурации системы предобработки информации 105
Приложение 3. Хранимые процедуры и табличные представления базы данных FactEventAnalysisDB.. 106
usp_populateCoraxFactsTable. 106
usp_clearFactsTables. 110
SpikeFactsHypothesis. 113
PriceFactsHypothesis. 114
Приложение 4. Система классификации. 117
Введение
В современном мире особенно сложной является задача по поиску причины в изменении поведения комплексной системы. Например:
- Что послужило причиной скачка энергопотребления города?
- Почему резко выросла заболеваемость гриппом в определенной стране?
- По какой причине цена некой ценной бумаги резко упала в конкретный день?
Одной из самых сложных проблем при выявлении и разработке законов развития комплексных систем и принятия решений является формирование понимания внутренних связей и механизмов тех или иных процессов в системах. Как правило, этих связей и механизмов много, разные элементы системы могут быть связаны между собой самыми разными прямыми и обратными связями, при этом каждый элемент так или иначе связан с функциями системы и очень часто – с вредными или нежелательными эффектами. Учитывать и использовать все эти связи в работе очень сложно.
В самом деле, в любом из упомянутых выше случаев на динамику системы (уровень энергопотребления, заболеваемость, цена ценной бумаги) могут влиять сотни тысяч различных событий. Выявить какое из событий вызвало изменение в динамике чрезвычайно сложно. Согласно исследованиям психологов, нормальный человек способен удерживать в зоне своего внимания 7 ± 2 объекта. А в реальных системах объектов и связей во много раз больше. В результате при попытке все это «охватить в уме» внимание нарушается, случайным образом «прыгает» от объекта к объекту, преувеличивает одни и преуменьшает или просто пропускает другие элементы и связи и т.п. Цельную и объективную картину увидеть не удается.
Например, ниже представлен график цен некой нефтедобывающей компании по месяцам.
Рис.1. Пример слома тренда
На данном графике явно виден рост цены акций данной компании вплоть до 6.1.2008, который сменился ее стабильным спадом после этого момента времени. Опытный специалист в анализе ценных бумаг может проверить события, которые произошли 6.1.2008 и выяснить, что в этот день был опубликован отчет о перспективах китайской экономики, который был негативным. Цена акций нефтедобывающих компаний сильно зависит от экономики Китая, ибо данная страна является крупнейшим в мире потребителем нефти, и проблемы в ее экономике могут сильно снизить доходы нефтедобывающих компаний.
Однако для выполнения анализа, который позволит найти объяснение произошедшему изменению в динамике цены ценной бумаги требуются обширные знания в предметной области, хорошо разбираться в характеристиках компаний, а также быть в состоянии изучить колоссальные объемы данных – ибо в тот же день, 6.1.2008, в мире произошли миллионы событий, каждое из которых могло повлиять на динамику цены.
Очевидно, одним из способов помочь эксперту в определении причин изменения динамики системы будет решение задачи по сокращению списка событий, связанных с системой, которые эксперту нужно рассмотреть. Вместо десятков тысяч событий эксперт сможет сосредоточиться на рассмотрении лишь их небольшого подмножества и применив свою компетенцию в предметной области сможет ответить на вопрос, что же вызвало изменение в динамике системы. Именно данная задача выделения наиболее вероятных объяснений причин некоего изменения и будет решена в данной работе.
В первой главе производится постановка задачи, ее более подробное описание а также описание исходных данных.
Во второй главе приводится описание алгоритмов и методов, примененных при разработке данной системы.
В третей главе описывается реализация системы с помощью языков программирования T-SQL, C# и Python, а также библиотеки scikit-learn.
В четвертой главе приводится описание методов оценки качества работы полученной системы и делаются выводы о качестве работы системы на тестовых данных.
Постановка задачи
Решить задачу по идентификации наиболее интересных для рассмотрения событий может помочь Интеллектуальный Анализ Данных.
Интеллектуальный анализ данных (также известный как Data Mining) - собирательное название, используемое для обозначения совокупности методов обнаружения в данных ранее неизвестных, нетривиальных, практически полезных и доступных интерпретации знаний, необходимых для принятия решений в различных сферах человеческой деятельности. Данный термин был введен в обиход Григорием Пятецким-Шапиро в 1989 году.
Основу методов Data Mining составляют всевозможные методы классификации, моделирования и прогнозирования, основанные на применении деревьев решений, искусственных нейронных сетей, генетических алгоритмов, эволюционного программирования, ассоциативной памяти, нечёткой логики. К методам Data Mining нередко относят статистические методы (дескриптивный анализ, корреляционный и регрессионный анализ, факторный анализ, дисперсионный анализ, компонентный анализ, дискриминантный анализ, анализ временных рядов, анализ выживаемости, анализ связей). Такие методы, однако, предполагают некоторые априорные представления об анализируемых данных, что несколько расходится с целями Data Mining (обнаружение ранее неизвестных нетривиальных и практически полезных знаний). Одними из важнейших инструментов, позволяющих решать задачи Data Mining являются методы Машинного Обучения.
Машинное обучение или Machine Learning — обширный подраздел искусственного интеллекта, изучающий методы построения моделей, способных обучаться, и алгоритмов для их построения и обучения. Различают два типа обучения. Обучение по прецедентам, или индуктивное обучение, основано на выявлении закономерностей в эмпирических данных. Дедуктивное обучение предполагает формализацию знаний экспертов и их перенос в компьютер в виде базы знаний. Дедуктивное обучение принято относить к области экспертных систем, поэтому термины машинное обучение и обучение по прецедентам можно считать синонимами.
Машинное обучение находится на стыке математической статистики, методов оптимизации и дискретной математики, но имеет также и собственную специфику, связанную с проблемами вычислительной эффективности и переобучения. Многие методы индуктивного обучения разрабатывались как альтернатива классическим статистическим подходам.
Задачу машинного обучения можно описать следующим образом. Имеется множество объектов (ситуаций) и множество возможных ответов (откликов, реакций). Существует некоторая зависимость между ответами и объектами, но она неизвестна. Известна только конечная совокупность прецедентов — пар «объект, ответ», называемая обучающей выборкой. На основе этих данных требуется восстановить зависимость, то есть построить алгоритм, способный для любого объекта выдать достаточно точный ответ. Для измерения точности ответов определённым образом вводится функционал качества.
Данная постановка является обобщением классических задач аппроксимации функций. В классических задачах аппроксимации объектами являются действительные числа или векторы. В реальных прикладных задачах входные данные об объектах могут быть неполными, неточными, нечисловыми, разнородными. Эти особенности приводят к большому разнообразию методов машинного обучения. Раздел машинного обучения, с одной стороны, образовался в результате разделения науки о нейросетях на методы обучения сетей и виды топологий архитектуры сетей, а с другой, вобрал в себя методы математической статистики. Подобное разнообразие позволяет нам подобрать инструмент для решения озвученной задачи по поиску событий, вызвавших изменения в динамике систем.
Итак, имеется набор данных о ценах на ценные бумаги и о корпоративных событиях (таких как выплата дивидендов, изменения рейтинга компаний, собраниях акционеров) которые хранятся в базе данных MS SQL Server.
Задача делится на три части:
1) Извлечь из информации о ценах данные о том для каких ценных бумаг когда наблюдалось изменение в тренде в цене (если цена на бумагу росла некоторое время, то в какой момент она начала снижаться или стала неизменной).
2) Разработать систему, которая сможет обучиться на информации о предшествующих событиях и изменениях в трендах
3) После обучения система получив на вход информацию о некотором изменении в динамике цены какой-либо ценной бумаги должна будет предоставлять информацию о том, какое событие наиболее вероятно вызвало данное изменение (какими характеристиками должно обладать такое событие).
С учетом этого описания и анализа имеющейся литературы в данной области определим направления работы:
1) Разработка программы, которая будет преобразовывать информацию о ценах на ценные бумаги в информацию об изменениях в трендах цен на ценные бумаги.
2) Рассмотрение различных методов машинного обучения, выбор наиболее подходящего алгоритма машинного обучения с точки зрения его математической модели
3) Реализация выбранных алгоритмов в коде
4) Проверка работы системы на тестовых данных
Система должна быть способна к масштабируемости, а ее архитектура должна быть легко изменяемой. Легче всего этого добиться использую библиотеку scikit-learn, которая предоставляет большое количество различных модулей, которые можно легко использовать в других системах.
Дата добавления: 2015-11-16; просмотров: 88 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Глава XIV. Обращение взыскания на денежные средства | | | Задача классификации |