/>
Висновок
У рамках даної роботи нам вдалося вирішити задачу з пошуку найбільш ймовірних причин у змінах в трендах даних. Завдання, яке стояло перед нами є гібридом multi-label і multiclass класифікації. Для кожного прикладу нам потрібно передбачати один або декілька тегів (наприклад, країна, в якій сталася подія, або індустрія, з якою пов'язано подія, що відбулася), кожній мітці може бути присвоєно кілька різних значень. Подібні завдання мають назву multi-task класифікація або multiclass - multi-output класифікація. Завдання, подібні до цієї відносно успішно вирішуються в такій області як Document classification (класифікація документів), що дозволило нам використовувати методи, що традиційно застосовуються в рамках класифікації документів
Завдання складалася з двох частин:
) Витяг з інформації про ціни дані про те для якихось цінних паперів коли спостерігалася зміна в тренді в ціні (якщо ціна на папір росла деякий час, то в який момент вона почала знижуватися або стала незмінною).
) Розробка системи, яка зможе навчитися на інформації про попередні події та зміни в трендах виявляючи найбільш ймовірні характеристики подій - причин, і далі зможе передбачити, якими характеристиками найймовірніше володіє подія, яка викликала переданий системі злам в тренді.
Перша частина завдання була вирішена за допомогою мови програмування C #.
Друга задача була вирішена за допомогою мови python та відкритої бібліотеки програмного забезпечення для машинного навчання scikit-learn. Дана бібліотека має відкритий вихідний код, пропонує ефективну реалізацію всіх популярних алгоритмів машинного навчання і підтримується великою спільнотою розробників і дослідників з університетів і лабораторій усього світу. При вирішенні другої частини завдання ми використовували алгоритм TF-IDF який дозволив нам підвищити вагомість рідкісних подій і знизити вагу частих подій. Далі були застосовані алгоритми класифікації Машина Опорних Векторів і Наївний Байєсівський Класифікатор. Перевірено ефективність різних ядер для Машини Опорних Векторів, а також ефективність пакетного градієнтного спуску і стохастичного градієнтного спуску. Встановлено, що найкращою точністю володіють SVM з лінійним ядром і Наївний Байєсівський Класифікатор. Нам вдалося отримати точність класифікації близько 80%. Також встановлено, що навчання за методом стохастичного градієнтного спуску дозволяє значно прискорити тренування SVM класифікатора без будь-яких жертв в точності.
Реалізована система володіє прийнятною продуктивністю. І достатньою точністю для її практичного застосування. Архітектура розробленої програми дозволяє включити її до складу більш складної системи.
Список використаних ресурсів
1. Scikit-learn: Machine Learning in Python, Pedregosa et al., JMLR 12, 2 011, pp. 2825-2830.
2. C # 5.0 in a Nutshell 5th Edition, Albahari J., Albahari B., +2012, pp.319 - 423.
3. Нейронні мережі. Повний курс, Хайкін С., Видавничий дім Вільямс raquo ;, 2006, с. 417 - 458
4. Python manual [Електронний ресурс]
. Причинно-наслідковий аналіз [Електронний ресурс]
. Інвестиції - Підручник, Вільям Ф. Шарп, Инфра-М, 2 001
Додаток 1
Система предобработки інформації
Program.cs
using System;System.Collections.Generic;System.Linq;System.Text;System.Threading.Tasks;System.Xml.Linq;FactEventAnalyzer
{struct Parameters
{double ChangeThreshold; int SecIdFrom; int SecIdTo; int DateFrom; int DateTo; double SpikeThreshold; Logger fileLogger; int minerDateThreshold; string folderForMLFiles;
} Program
{void Main ()
{startDate=System.DateTime.Now; curParam=
readInitialParams(AppDomain.CurrentDomain.BaseDirectory);.fileLogger.writeToLog(laquo;Fact-Event analysis tool started ) ;. runFactMiner (CurParam: curParam) ;. fileLogger.writeToLog ("Fact-Event analysis tool completed, it
took + (System.DateTime.Now - startDate) .TotalSeconds.ToString () + ." );
} Parameters readInitialParams (string paramPass)
{curParam=new Parameters (); config=XElement.Load (paramPass + Config.xml ); LogConfig=config.Element ( logging ). Element ( logFolder raquo ;) ;. fileLogger=new
Logger (LogConfig.Attribute ( path ). Value.ToString (...