Программирование - это просто
Advertisement
Главная arrow Искусственный интеллект arrow Искусственный интеллект arrow Практика нейронных сетей (платный раздел) arrow Практика нейронных сетей. Урок 23. Исследования данных. Биржевые котировки.
16.12.2017 г.
Главное меню
Главная
Системный подход
Интернет магазин
Биржевые роботы
Программные продукты
Математика и информатика
1С:Предприятие
C#, Delphi, VB, F#, Web и пр.
Искусственный интеллект
Услуги
Ча. Во. (FAQ)
Платный раздел
Наука для чайников
Разное
Размышления
Карта сайта
Друзья сайта
Excel-это не сложно
Все о финансах
Практика нейронных сетей. Урок 23. Исследования данных. Биржевые котировки. Печать E-mail
Автор megabax   
03.12.2017 г.
unit AIObj

Практика нейронных сетей. Урок 23. Исследования данных. Биржевые котировки.

Чтобы смотреть урок полностью, подпишитесь на платный раздел.

В платном разделе статья и исходники находятся здесь.


На прошлом уроке я рассказал о лабораторной работе по нейросетям. Нейросеть, описанная там, обучается методом генетического алгоритма. В цикле уроков Генетический алгоритм будут продолжаться некоторые уроки, связанные с улучшение самого генетического алгоритма. А в данном цикле (Практика нейронных сетей) я буду рассказывать о некоторых экспериментах с нейростеями. И начну пожалуй, с задачи проведения исследования над данными. Для начала мы выберем тему исследования. Выбирать будет исходя из того, чтобы это исследование было интересным, полезным, и мы легко могли получить достаточное количество исходных данных. Затем мы соберем данные, подготовим их, обработаем, получим обучающую выборку. Выборка должна быть репрезентативной и непротиворечивой. Мы сделаем соответствующую проверку. Затем разделим выборку на две части, на одной части обучим нейросеть, на другой части будем тестировать ее. По результатам тестирования либо внесем в алгоритм корректировки и повторим данные шаги, либо перейдем к апробации нашей нейронной сети.

Вот какие есть идеи:

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

  • Восстановление изображения, испорченного шумом или царапинами, либо еще какими-либо дефектами. Берем нейросеть, обучаем ее предсказывать пиксели по окружающим пикселям и пытаемся данной нейросеть "вылечить" поврежденную картинку, похожую на те, на которых была обучена нейросеть. Исходные данные также можно найти полезность - восстановление поврежденных изображений.

  • Распознавать в звуковой дороже человеческий голос. Нейросеть должна определить, есть ли в дорожке голос (на выходе 1) человека или нет (на выходе 0). Тут исходными данными надо повозиться. Со звуковыми дорожками проблем нет, но разметить (где есть голос а где нету) их - надо потрудиться. Полезность - в дальнейшем можно будет написать распознаватель речи.

  • Распознавания подписи. Человек расписывается, а нейросеть должна распознать его роспись. С исходными данным надо повозиться, нужно будет собрать серию росписей разных людей (или образцов подчерка, если не получиться росписи). Еще нужно будет из растрового формата преобразовать роспись в какой-то иной вид, выделив в ней набор каких-либо признаков. Насчет полезности - ну, не знаю, задача просто интересная.

В общем, можно попробовать все задачи, выполняя их в указанном порядке. Поэтому начнем с того, что напишем программу, которая соберет скачанные из Интернета биржевые котировки, пронормирует их и создаст обучающую выборку.  Собственно, для работы с котировками у нас уже есть библиотека StockLibrary, ничего писать не надо, осталось только закодировать собор данных, их нормирование и создание выборки.

Для начала создадим простейший шаблон будущей программы, класс Core: ...

...

Как видим, данная функция вычисляет максимальное и минимальное изменение за указанное количество свечей. А потом, используя этот диапазон нормируемое значение преобразует к интервалу 0..1. Нам надо интервал от -1..1. Не страшно, умножим потом на 2 и вычтем 1. поехали дальше, вносим изменения в класс Core, добавим к нему поля selection и form, а также иные вспомогательные поля:

...       

        /// <summary>

        /// Обучающая выборка

        /// </summary>

        public LearnSelection selection;

 

        /// <summary>

        /// Ссылка на форму

        /// </summary>

        public MainForm form;

 

        /// <summary>

        /// Количество свечей для целей нормирования

        /// </summary>

        public int count_candles_for_normalize = 200;

...

Изменяем конструктор:

        /// <summary>

        /// Конструктор по ссылке на форму

        /// </summary>

        /// <param name="a_form">Ссылка на форму</param>

        public Core(MainForm a_form)

        {

            account = new Account();

            selection = new LearnSelection();

            form = a_form;

        }

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

...

Осталось доработать конструктор формы, так как теперь конструктор Core  у нс имеет параметр, а в конструкторе формы мы его вылизываем. но это не трудно:

        public MainForm()

        {

            InitializeComponent();

            core = new Core(this);

        }

Ну и добавляем новый пункт меню "Сформировать выборку", вот его обработчик:

        private void tsmiCreateSelection_Click(object sender, EventArgs e)

        {

            core.selection=core.create_selection();

            core.visualize_selection(core.selection.items);

        }

Проверяем:

Практика нейронных сетей. Урок 23. Исследования данных. Биржевые котировки.

Что будем делать дальше? А дальше проверим выборку на непротиворечивость. Одинаковые (или очень близкие) входные вектора не должны давать разные (сильно отличающиеся выходы). Как это проверить? Напишем специальную программу, которая проанализирует обучающую выборку. но этим мы займемся на следующем уроке.

Используемая литература

1.       Шуравин А. П. Исследование обучаемости нейронной сети на примере предсказания числовых рядов // Научные достижения и открытия 2017: сборник статей III Международного научно-практического конкурса. ПензаНаука и Просвещение, 2017. С. 31-36. (https://elibrary.ru/item.asp?id=30050179)

Последнее обновление ( 03.12.2017 г. )
 
Пред. »
 
© 2017 Программирование - это просто
Joomla! - свободное программное обеспечение, распространяемое по лицензии GNU/GPL.
Русская локализация © 2005-2008 Joom.Ru - Русский Дом Joomla!
Design by Mamboteam.com | Powered by Mambobanner.de
Я принимаю Яндекс.Деньги
Мы принимаем
Банковские карты
Оплатите покупку в интернет-магазине банковскими картами VISA и Mastercard любого банка.
узнать больше
Электронный кошелек
Моментальная оплата покупок с помощью вашего электронного кошелька RBK Money.
узнать больше
Банковский платеж
Оплатите покупку в любом российском банке. Срок зачисления средств на счет - 3-5 рабочих дней.
узнать больше
Денежные переводы
Оплата покупок через крупнейшие системы денежных переводов CONTACT и Unistream.
узнать больше
Почтовые переводы
Оплатите покупку в любом отделении Почты России. Срок зачисления платежа - 3-4 рабочих дня.
узнать больше
Платежные терминалы
Оплата покупок в терминалах крупнейших платежных систем в любом городе России - быстро и без комиссии.
узнать больше