Обучение нейросети - страница 3

 
Dmitry Fedoseev:
Какое направление? k-means что ли? k-means вообще никаким боком сюда не лезет. 

Дмитрий, если вы разбираетесь в теме, подскажите, как правильно обучить нейросеть. Как сделать кластеризацию. Aliaksandr Hryshyn хоть идею подал, в отличие от вас.

Aliaksandr Hryshyn,  то есть

1. Подготавливаю информацию в ручную, через Exсel, выбираю данные с разных индикаторов, которые предшествуют хорошему входу в рынок.

2. Потом через метод k-средних  - Нейросеть векторного квантования сигналов (одна из версий нейронных сетей Кохонена). Сетка разделит входные данные по кластерам.

3. Сопоставить результат кластеризации с выходными данными, выбрать тот кластер, где прибыль лучше всего.

4. Сделать кластеризацию на новых данных - будут ли выбранные мною кластеры в пункте 3 вновь самыми лучшими.

5. Использовать это в торговли - то есть давать предварительно очищенные данные (первой нейросетью)  второй нейросети, которая торгует.

"Можно ещё попробовать каждый используемый кластер дать нейросети, для повышения точности" - всмысле?

Получается, у меня будет две нейросети, первая будет кластеризировать входные данные, а вторая уже торговать на основе этих данных, правильно?

Нейронная сеть Кохонена — Википедия
Нейронная сеть Кохонена — Википедия
  • ru.wikipedia.org
По способам настройки входных весов сумматоров и по решаемым задачам различают много разновидностей сетей Кохонена[1]. Наиболее известные из них: Слой Кохонена состоит из некоторого количества параллельно действующих линейных элементов. Все они имеют одинаковое число входов и получают на свои входы один и тот же вектор входных сигналов . На...
 
Aliaksandr Hryshyn:

По поводу "нет информации".

Сколько минимум значений необходимо взять с индикатора ZigZag для выявления данного паттерна https://www.mql5.com/ru/code/14029 ? Можете проверить его работу.

Немногим больше пяти. 

Что - то у меня Зиг-заг в голове. А выход, думаю, будет один...
 
Nexxtor:

Дмитрий, если вы разбираетесь в теме, подскажите, как правильно обучить нейросеть. Как сделать кластеризацию. Aliaksandr Hryshyn хоть идею подал, в отличие от вас.

Aliaksandr Hryshyn,  то есть

1. Подготавливаю информацию в ручную, через Exсel, выбираю данные с разных индикаторов, которые предшествуют хорошему входу в рынок.

2. Потом через метод k-средних  - Нейросеть векторного квантования сигналов (одна из версий нейронных сетей Кохонена). Сетка разделит входные данные по кластерам.

3. Сопоставить результат кластеризации с выходными данными, выбрать тот кластер, где прибыль лучше всего.

4. Сделать кластеризацию на новых данных - будут ли выбранные мною кластеры в пункте 3 вновь самыми лучшими.

5. Использовать это в торговли - то есть давать предварительно очищенные данные (первой нейросетью)  второй нейросети, которая торгует.

"Можно ещё попробовать каждый используемый кластер дать нейросети, для повышения точности" - всмысле?

Получается, у меня будет две нейросети, первая будет кластеризировать входные данные, а вторая уже торговать на основе этих данных, правильно?


В первом пункте не надо выбирать только хорошие входы, брать всё.
Как прибыль считать будете?
Пробуйте так)).
 
Aliaksandr Hryshyn:

В первом пункте не надо выбирать только хорошие входы, брать всё.
Как прибыль считать будете?
Пробуйте так)).

Вы не ответили, я просил пояснить: "Можно ещё попробовать каждый используемый кластер дать нейросети, для повышения точности" - всмысле?

Пока не дошел до практической части, раньше не работал с сетям по кластеризации, в частности, с сетями Кохонена.

Но представляю себе это таким образом:

После того, как сеть выделит кластеры, посмотреть на графике, какие участки графика какому кластеру соответствуют. То есть зачитать кластеры из экселя и подсветить на графике. По графику выбрать лучший кластер, либо визуально, либо может алгоритм какой написать, который будет пробегать по кластерам и торговать, например, со СЛ-50, ТП-70, или что-то посложнее.

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

Может, конечно, в чем то и ошибаюсь, на практике пока не реализовывал. 

 А вы как думаете? 

 
Nexxtor:

Вы не ответили, я просил пояснить: "Можно ещё попробовать каждый используемый кластер дать нейросети, для повышения точности" - всмысле?

Пока не дошел до практической части, раньше не работал с сетям по кластеризации, в частности, с сетями Кохонена.

Но представляю себе это таким образом:

После того, как сеть выделит кластеры, посмотреть на графике, какие участки графика какому кластеру соответствуют. То есть зачитать кластеры из экселя и подсветить на графике. По графику выбрать лучший кластер, либо визуально, либо может алгоритм какой написать, который будет пробегать по кластерам и торговать, например, со СЛ-50, ТП-70, или что-то посложнее.

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

Может, конечно, в чем то и ошибаюсь, на практике пока не реализовывал. 

 А вы как думаете? 

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

Вы не определились с результатом и как его представлять. Пускай результатом будет разность в пунктах цены через 5, 15 и 45 баров и текущей цены. Т.е. мы прогнозируем значение цены через 5, 15 и 45 баров, три значения. Берём каждый кластер, строим графики распределения результатов(разность между прогнозируемой ценой и текущей). Для каждого кластера должно получится по три графика(5,10,15) такого вида как на рисунке 1. Но интереснее делать так: для каждого кластера и используемого бара(5,15,45) считать перцентили 5, 25,50,75,95. Должно получится по 15 значений для каждого кластера. Эти значения отображаем следующим образом, как на картинке 2.

Кстати, берём не все данные, а те, где происходит изменение кластера. Например, есть серия кластеров: 22224444555223322, берём значения которые находятся после смены кластера, это будет 245232 .

 

Снизу наверх линии означают перцентили 5,25,50,75,95. По горизонтали бары(5,15,45), по вертикали перцентили.

Общий смысл такой: 

для чёрной линии - 

  • через 5 баров(iR_05) цена будет ниже уровня, который выше текущего на 50 пунктов с вероятностью 95%
  • через 15 баров(iR_15) цена будет ниже уровня, который выше текущего на 105 пунктов с вероятностью 95%
  • через 45 баров(iR_45) цена будет ниже уровня, который выше текущего на 345 пунктов с вероятностью 95%
для синей -

  • через 5 баров(iR_05) цена будет ниже уровня, который выше текущего на ~0 пунктов с вероятностью 50%
  • через 15 баров(iR_15) цена будет ниже уровня, который выше текущего на 20 пунктов с вероятностью 50%
  • через 45 баров(iR_45) цена будет ниже уровня, который выше текущего на 45 пунктов с вероятностью 50%
Смысл, думаю, понятен.
 
Alexander Milyoff:
Что - то у меня Зиг-заг в голове. А выход, думаю, будет один...

Для Зигзага можете аналогично делать, только в качестве входов использовать разного рода зависимости между коленами Зигзага, или эти зависимости вывести как параметры в советнике с указанием диапазонов, например, длина колена А деленное на длину колена Б, и добавляем параметр точности для этого значения, пусть будет +- 0.05..... Вариантов много.

 
ivanivan_11:

вам сюда))

https://www.mql5.com/ru/forum/86386

Посмотрел на топик Вы уже эту тему ведете очень давно. Кратко можете сказать у кого какие успехи в этом деле ?
 

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

особую сложность у меня вызывает это подбор слоев и нейронов.. как вообще это можно рассчитать и определить не переобучена ли сетка... просто катастрофа

 
Nexxtor:

Добрый день.

У меня есть 3 слойная нейросеть, 5 нейронов в каждом слое, на выходе 2 нейрона - структура 5-5-2; 

Обучаю по зигзагу и по индикатору RSI: когда по ZigZag вершина, даю нейросети на вход 5 последних значений индикатора RSI(14) и правильный сигнал на выходе 10 (SELL); Когда по ZigZag впадина, даю на вход 5 последних значений индикатора RSI(14) и правильный сигнал на выходе 01 (BUY).

Однако, сеть так никогда не обучится, так как данные в обучающей выборке для сигнала BUY и данные для сигнала SELL должны отличаться. Поэтому поставил условие, подавать 5 последних значений RSI в том случае, если все 5 больше 60 (для SELL) и меньше 40 (для BUY) (здесь без учета нормализации, в коде нормализация входных сигналов есть). Но в этом случае опять проблема: в случае флета все хорошо, но на тренде, если тренд вниз, в обучающей выборке остаются только сигналы на покупку, если тренд вверх, остаются сигналы только на продажу. То есть получается, даже на обучающем периоде советник сливает. 

Поэтому встал вопрос, на каких данных и каких образом обучать нейросеть? 

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

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

 
Ребята, всем привет !!! Я прям по адресу. Сейчас ожидается публикация статьи про нейронные сети. Там я отвечаю на множество Ваших вопросов которые здесь заданы. Статья будет называтся "Как зарабатывают нейронные сети". Осталось кое что дооформить, стилизовать код и отправить на проверку. надеюсь до понедельника её уже опубликуют.