Машинное обучение в трейдинге: теория, модели, практика и алготорговля - страница 521

 
Grigoriy Chaunin:

Почитайте про функции активации нейронов. Можно подавать на выход какие угодно значения, но неправильная функция активации будет выдавать отрицательные значения. Обычно это гиперболический тангенс. Функция потерь софтмакс будет работать с ним не правильно. Хотя многое зависит от библиотеки и реализации функции потерь. Например в Tensorflow на выходных нейронах для функции потерь софтмакс не должно быть никакой функции активации. А для правильного использования обученой сети надо добавлять активацию софтмакс. С ALGLIB не работал, возможно они что-то не правильно сделали. В любом случае обученная сеть с софтмакс не должна выдавать отрицательные значения.

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

Alglib Вы пользуете на свой риск. Просто выполняйте все в Rstudio.

Удачи

 
Dr. Trader:

Подобное бывает если в обучающих примерах один их классов очень сильно преобладает в количестве по сравнению с другими классами. Например 2000 обучающих примеров для buy и всего 1000 для sell. Нейронка может всегда выдавать "Buy" и будет при этом права в 66% случаев. Лучше количество обучающих примеров каждого класса сделать равным.

Класс NA - будет преобладать, от 50% при частой торговле, до 99% при редкой. Но у меня он 3-й, а переклинило НС на 1-й класс.

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

 
Vladimir Perervenko:

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

Alglib Вы пользуете на свой риск. Просто выполняйте все в Rstudio.

Удачи


Если быть точным функция потерь называется софтмакс кроссэнтропия. Да, я не ясно выразился.

 
Vladimir Perervenko:

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

Alglib Вы пользуете на свой риск. Просто выполняйте все в Rstudio.

Удачи

Скорее всего после вашей следущей статьи (где будет связка с терминалом) приделаю и себе по аналогии связку с R.
 

Кстати интересно, что из примера выше

 Buy              Sell               NA
 0.10302356, 0.01091621, 0.88606040
 0.09705416, 0.01083526, 0.89211080
 0.08283979, 0.12548789, 0.79167247
 1.02522414,-0.00119697,-0.02403573
 0.09498582, 0.01529507, 0.88971917
 1.01878489,-0.00111341,-0.01767998
 0.07906346, 0.05960769, 0.86132762
 0.00201949, 0.00497863, 0.99300189

Сумма каждой строки равна 1. (4 верхние проверил). Т.е. некая аналогия с софтмаксом, когда сумма (т.е. вероятность) тоже = 1. Но это сделала НС - регрессия с линейным выходом.

 
elibrarius:

Класс NA - будет преобладать, от 50% при частой торговле, до 99% при редкой. 

Очень опасно раздавать классы учителю наугад, типа взять какой-то индикатор для создания классов учителя и потом часть значений ещё и заменить на NA.

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

Я бы рекомендовал для начала взять два простых класса - цвет следующего бара (т.е. buy/sell). Взять хотя бы 10000 обучающих примеров (бар истории), обучить модель, и оценить результат на следующих в истории 10000 барах (которые для модели при обучении были неизвестны). Когда удастся подобрать предикторы при которых точность модели будет сохраняться примерно одинаковой и на старых и на новых данных - можно начать подбирать какой-то индикатор для классов учителя. И окажется что просто взяв первый попавшийся индикатор модель перестанет сохранять точность на новых данных. Почему некоторые индикаторы могут служить для учителя, а некоторые не могут - я не знаю, это какая-то удача и мистика.

 
elibrarius:

На ALGLIB c SOFTMAX версией НС что-то не то. Все ответы перекосло на первый выход (у меня это BUY).
На тех же данных НС - регрессия с 3-мя выходами (с линейной активацией) дает более достоверные результаты:

 Buy              Sell               NA
 0.10302356, 0.01091621, 0.88606040
 0.09705416, 0.01083526, 0.89211080
 0.08283979, 0.12548789, 0.79167247
 1.02522414,-0.00119697,-0.02403573
 0.09498582, 0.01529507, 0.88971917
 1.01878489,-0.00111341,-0.01767998
 0.07906346, 0.05960769, 0.86132762
 0.00201949, 0.00497863, 0.99300189

через >0.5 будет давать правдоподобные ответы.

Леса, кстати тоже перекосило на 1-й выход.


А вы сумму 2-х выходов единицу ставили? не знаю, у меня все ровно работало, без перекосов. Софтмакс понравился.

и да, насколько помню для софтмакса нормировал в диапазон от 0 до 1 входы

Леса вообще всегда четко работают для регрессии и классификации. Бывают ситуации когда выдают на бай или на селл только, но потом покопал обучающую выборку и да, там был перекос в примерах подавляющий, поэтому не мудрено (потому что у меня они сами переобучаются через опр. интервалы и я заранее не знаю что в выборку попадет). Еще не забываейте, что леса не могут экстраполировать. Обучать нужно всем известным в будущем значениям.

 

Кстати, похоже что нормровать даже не обязательно:

Предобработка данных

Для улучшения скорости сходимости и качества получаемых решений в ALGLIB реализована предобработка данных (стандартизация обучающего множества). Предобработка осуществляется неявно для пользователя - перед передачей данных в нейронную сеть они автоматически подвергаются предобработке, результат работы сети подвергается обратному преобразованию.

 

Здесь есть проверка НС на таблице умножения

Для лесов я такую же делал, все работает прекрасно

Библиотеки: ALGLIB - библиотека численного анализа
Библиотеки: ALGLIB - библиотека численного анализа
  • 2012.10.12
  • www.mql5.com
Статьи и техническая библиотека по автоматическому трейдингу: Библиотеки: ALGLIB - библиотека численного анализа
 
Maxim Dmitrievsky:

А вы сумму 2-х выходов единицу ставили? не знаю, у меня все ровно работало, без перекосов. Софтмакс понравился.

и да, насколько помню для софтмакса нормировал в диапазон от 0 до 1 входы

Леса вообще всегда четко работают для регрессии и классификации. Бывают ситуации когда выдают на бай или на селл только, но потом покопал обучающую выборку и да, там был перекос в примерах подавляющий, поэтому не мудрено (потому что у меня они сами переобучаются через опр. интервалы и я заранее не знаю что в выборку попадет). Еще не забываейте, что леса не могут экстраполировать. Обучать нужно всем известным в будущем значениям.

У меня сумма 3-х выходов=1, а точнее не сумма, а только 1 из выходов =1, остальные=0.
Входы не нормировал, ниже вы подтвердили, что это не обязательно. Таблицу умножения проверял (но это не софтмакс).
Если софтмакс  у Вас работал - попробую еще покрутить его, может получится (хотя на абсолютно тех же данных регрессия с лин. выходами работает, как надо).