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

 
elibrarius:

Нашел в ALGLIB обучение методом раннего останова с валидационным участком:

Neural network training using early stopping (base algorithm -   L-BFGS with regularization).    
...
Algorithm stops if validation set error increases for a long    
enough or step size is small enought (there are task where      
validation set may decrease for eternity). In any case solution 
returned corresponds to the minimum of validation set error.     


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


А у вас в сетке больше 500 связей? У них написано что L-BFGS менее эффективен чем L-M если мало нейронов
 
Maxim Dmitrievsky:

А у вас в сетке больше 500 связей? У них написано что L-BFGS менее эффективен чем L-M если мало нейронов
Пока меньше, для экономии времени - стадия разработки, как все доделаю буду уже на полную напрягать в поисках предикторов и схемы сети
 
elibrarius:
Пока меньше, для экономии времени - стадия разработки, как все доделаю буду уже на полную напрягать в поисках предикторов и схемы сети


Может статью напишете, когда полностью разберетесь? :) Статей нет хороших по алглибовской нейронке, есть одна переведенная сложноусваимая

Статья типа описание НС (т.к. у алглиб даже справки нормальной я не нашел) и примерчик обучения/переобучения, автооптимизации в боте. Ну это я так, просто заметил что не хватает инфы для изучения. За это вроде как еще и платят ) потратите время не даром

 
Maxim Dmitrievsky:


Может статью напишете, когда полностью разберетесь? :) Статей нет хороших по алглибовской нейронке, есть одна переведенная сложноусваимая

Статья типа описание НС (т.к. у алглиб даже справки нормальной я не нашел) и примерчик обучения/переобучения, автооптимизации в боте. Ну это я так, просто заметил что не хватает инфы для изучения. За это вроде как еще и платят ) потратите время не даром

Вряд ли - на статью 100% времени не найду... к тому же я сам в НС только начинаю разбираться, ничего умного/нового сказать не смогу.

За основу https://www.mql5.com/ru/articles/2279 и взял. Часов за 8 привел в рабочее состояние. Думаю у большинства программистов не займет больше времени.

А вот уже неделю занимает доработка, внесение доп. опций, тестов и т.д.
Нейросеть: Самооптимизирующийся советник
Нейросеть: Самооптимизирующийся советник
  • 2016.10.03
  • Jose Miguel Soriano
  • www.mql5.com
Возможно ли создать советник, который согласно командам кода автоматически оптимизировал бы критерии открытия и закрытия позиций с определенной периодичностью? Что произойдет, если реализовать в советнике нейросеть (многослойный персептрон), которая, будучи модулем, анализировала бы историю и оценивала стратегию? Можно дать коду команду на ежемесячную (еженедельную, ежедневную или ежечасную) оптимизацию нейросети с последующим продолжением работы. Таким образом возможно создать самооптимизирующийся советник.
 
elibrarius:
Вряд ли - на статью 100% времени не найду... к тому же я сам в НС только начинаю разбираться, ничего умного/нового сказать не смогу.

За основу https://www.mql5.com/ru/articles/2279 и взял. Часов за 8 привел в рабочее состояние. Думаю у большинства программистов не займет больше времени.

А вот уже неделю занимает доработка, внесение доп. опций, тестов и т.д.


я все еще пока смотрю в сторону байесовского классификатора + генетики, неплохие результаты. С сетками как-то мутно пока в голове, много нюансов

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

 
Осталась непонятной ситуация с перемешиванием результатов:

Обучение методом раннего останова на неперемешаных данных:

Средняя ошибка на обучающем     (80%) участке =0.535 nLearns=200 NGrad=142782 NHess=0 NCholesky=0 codResp=6
Средняя ошибка на валидационном (20%) участке =0.298 nLearns=200 NGrad=142782 NHess=0 NCholesky=0 codResp=6
Полный участок (обучающий + валидационный):
Средняя ошибка обучения=0.497 nLearns=200 NGrad=142782 NHess=0 NCholesky=0 codResp=6
Средняя ошибка на тестовом      (20%) участке =0.132 nLearns=200 NGrad=142782 NHess=0 NCholesky=0 codResp=6

Такое ощущение что произошла подгонка к валидационному участку. Тестовый вообще удачный, но он в обучении не был и не сравнивался, видимо просто случайное совпадение.
Этой же ф-ей ансамбли считают, а там разделение 2/3 и все перемешивается между обоими участками, попробую так же сделать...
Перемешал:

Средняя ошибка на обучающем     (60%) участке =0.477 nLearns=10 NGrad=10814 NHess=0 NCholesky=0 codResp=6
Средняя ошибка на валидационном (40%) участке =0.472 nLearns=10 NGrad=10814 NHess=0 NCholesky=0 codResp=6
Полный участок (обучающий + валидационный):
Средняя ошибка обучения=0.475 nLearns=10 NGrad=10814 NHess=0 NCholesky=0 codResp=6
Средняя ошибка на тестовом      (20%) участке =0.279 nLearns=10 NGrad=10814 NHess=0 NCholesky=0 codResp=6

За счет перемешивания ошибка выровнялась на обучающем и валидационном участках.
А на тестовом ухудшилась.

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

А если не перемешивать и валидировать на последнем участке, то как избежать подгонки под этот участок?
 
elibrarius:
4 участка получается? Обучающий/валидационный/тестовый1/тестовый2 ?

Сколько циклов обучения/валидации нужно делать? Нигде про это не видел информации... 1 цикл всего? - и сразу после этого либо одобряем, либо что-то изменяем в наборе предикторов или схеме сети? Точнее за N циклов обучения нам покажут один лучший.


Участок тестовый2 - это приговор: не совпало, то начинаем все по новой, желательно с набора предикторов


ПС.

Кстати, еще имеется тестер, окончательный приговор ТС. 

 
elibrarius:
Осталась непонятной ситуация с перемешиванием результатов:

Обучение методом раннего останова на неперемешаных данных:

Средняя ошибка на обучающем     (80%) участке =0.535 nLearns=200 NGrad=142782 NHess=0 NCholesky=0 codResp=6
Средняя ошибка на валидационном (20%) участке =0.298 nLearns=200 NGrad=142782 NHess=0 NCholesky=0 codResp=6
Полный участок (обучающий + валидационный):
Средняя ошибка обучения=0.497 nLearns=200 NGrad=142782 NHess=0 NCholesky=0 codResp=6
Средняя ошибка на тестовом      (20%) участке =0.132 nLearns=200 NGrad=142782 NHess=0 NCholesky=0 codResp=6

Такое ощущение что произошла подгонка к валидационному участку. Тестовый вообще удачный, но он в обучении не был и не сравнивался, видимо просто случайное совпадение.
Этой же ф-ей ансамбли считают, а там разделение 2/3 и все перемешивается между обоими участками, попробую так же сделать...
Перемешал:

Средняя ошибка на обучающем     (60%) участке =0.477 nLearns=10 NGrad=10814 NHess=0 NCholesky=0 codResp=6
Средняя ошибка на валидационном (40%) участке =0.472 nLearns=10 NGrad=10814 NHess=0 NCholesky=0 codResp=6
Полный участок (обучающий + валидационный):
Средняя ошибка обучения=0.475 nLearns=10 NGrad=10814 NHess=0 NCholesky=0 codResp=6
Средняя ошибка на тестовом      (20%) участке =0.279 nLearns=10 NGrad=10814 NHess=0 NCholesky=0 codResp=6

За счет перемешивания ошибка выровнялась на обучающем и валидационном участках.
А на тестовом ухудшилась.

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

А если не перемешивать и валидировать на последнем участке, то как избежать подгонки под этот участок?


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


2. Перемешивание.

Не знаю НС. 

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

Но по любому наши точки зрения совпадают и изначально тестирование на тестовом2 я всегда делаю без перемешивания.


ПС.

Еще раз.

Если ошибка на двух разных выборках разница так как у Вас - это означает, что Ваша система безнадежна, только на выброс.

 

блуждая по бездонной выгребной яме под названием интернет,наткнулся на такую бумажку.

Artificial Neural Networks architectures for stock price prediction:comparisons and applications

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

Файлы:
 
elibrarius:
Осталась непонятной ситуация с перемешиванием результатов:


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

А если не перемешивать и валидировать на последнем участке, то как избежать подгонки под этот участок?

После разделения на train/test/valid перемешать train. Остальные наборы не перемешивать. 
Это валидно для классификации нейросетями. Более того при обучении глубоких нейросетей перемешивают каждый minibatch перед подачей нейросети. 

Удачи

Причина обращения: