Машинное обучение в трейдинге: теория, модели, практика и алготорговля - страница 521
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Почитайте про функции активации нейронов. Можно подавать на выход какие угодно значения, но неправильная функция активации будет выдавать отрицательные значения. Обычно это гиперболический тангенс. Функция потерь софтмакс будет работать с ним не правильно. Хотя многое зависит от библиотеки и реализации функции потерь. Например в Tensorflow на выходных нейронах для функции потерь софтмакс не должно быть никакой функции активации. А для правильного использования обученой сети надо добавлять активацию софтмакс. С ALGLIB не работал, возможно они что-то не правильно сделали. В любом случае обученная сеть с софтмакс не должна выдавать отрицательные значения.
Софтмакс не есть функция потерь. Вы что то путаете. Софтмах - функция активации выходного слоя для классификационных задач. Не путайте человека, он сам запутается.
Alglib Вы пользуете на свой риск. Просто выполняйте все в Rstudio.
Удачи
Подобное бывает если в обучающих примерах один их классов очень сильно преобладает в количестве по сравнению с другими классами. Например 2000 обучающих примеров для buy и всего 1000 для sell. Нейронка может всегда выдавать "Buy" и будет при этом права в 66% случаев. Лучше количество обучающих примеров каждого класса сделать равным.
Класс NA - будет преобладать, от 50% при частой торговле, до 99% при редкой. Но у меня он 3-й, а переклинило НС на 1-й класс.
Мне вот интересно, почему в статьях обучающие примеры для моментов, когда ничего делать не надо не используются? Ведь ничего не делать в правильные моменты тоже важно, обычно эти моменты бывают тогда, когда торговля приведет к убытку.
Не обучившись делать паузы, НС может начать торговать и сливать депозит.
Софтмакс не есть функция потерь. Вы что то путаете. Софтмах - функция активации выходного слоя для классификационных задач. Не путайте человека, он сам запутается.
Alglib Вы пользуете на свой риск. Просто выполняйте все в Rstudio.
Удачи
Если быть точным функция потерь называется софтмакс кроссэнтропия. Да, я не ясно выразился.
Софтмакс не есть функция потерь. Вы что то путаете. Софтмах - функция активации выходного слоя для классификационных задач. Не путайте человека, он сам запутается.
Alglib Вы пользуете на свой риск. Просто выполняйте все в Rstudio.
Удачи
Кстати интересно, что из примера выше
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. Но это сделала НС - регрессия с линейным выходом.
Класс NA - будет преобладать, от 50% при частой торговле, до 99% при редкой.
Очень опасно раздавать классы учителю наугад, типа взять какой-то индикатор для создания классов учителя и потом часть значений ещё и заменить на NA.
Даже если есть хорошие предикторы и хорошие классы для обучения и модель держит хороший результат на новых данных - то любая попытка подкрутить значения классов может полностью сломать модель. Найти индикаторы для предикторов и индикатор для классов, которые будут сохранять прибыльность модели и на новых данных - это большая удача.
Я бы рекомендовал для начала взять два простых класса - цвет следующего бара (т.е. buy/sell). Взять хотя бы 10000 обучающих примеров (бар истории), обучить модель, и оценить результат на следующих в истории 10000 барах (которые для модели при обучении были неизвестны). Когда удастся подобрать предикторы при которых точность модели будет сохраняться примерно одинаковой и на старых и на новых данных - можно начать подбирать какой-то индикатор для классов учителя. И окажется что просто взяв первый попавшийся индикатор модель перестанет сохранять точность на новых данных. Почему некоторые индикаторы могут служить для учителя, а некоторые не могут - я не знаю, это какая-то удача и мистика.
На 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 реализована предобработка данных (стандартизация обучающего множества). Предобработка осуществляется неявно для пользователя - перед передачей данных в нейронную сеть они автоматически подвергаются предобработке, результат работы сети подвергается обратному преобразованию.
Здесь есть проверка НС на таблице умножения
Для лесов я такую же делал, все работает прекрасно
А вы сумму 2-х выходов единицу ставили? не знаю, у меня все ровно работало, без перекосов. Софтмакс понравился.
и да, насколько помню для софтмакса нормировал в диапазон от 0 до 1 входы
Леса вообще всегда четко работают для регрессии и классификации. Бывают ситуации когда выдают на бай или на селл только, но потом покопал обучающую выборку и да, там был перекос в примерах подавляющий, поэтому не мудрено (потому что у меня они сами переобучаются через опр. интервалы и я заранее не знаю что в выборку попадет). Еще не забываейте, что леса не могут экстраполировать. Обучать нужно всем известным в будущем значениям.
Входы не нормировал, ниже вы подтвердили, что это не обязательно. Таблицу умножения проверял (но это не софтмакс).
Если софтмакс у Вас работал - попробую еще покрутить его, может получится (хотя на абсолютно тех же данных регрессия с лин. выходами работает, как надо).