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

 
Поддержу разговор, причём мысль пришла на выходных. Действительно чем чаще сеть говорит "Незнаю" Тем ближе момент к тому чтобы её перетренировывать. В самом начале ООС практически все сигналы интерпретируются однозначно, но со времененм Сеть всё чаще начинает говорить "Незнаю" что говорит о поступлении новых данных, которые трудно интерпретировать. При достижении определённого уровня "Незнаю" происходит перетренеровка сети. Очень полезнаю штука.... 
 
Все разговоры про постепенное протухание модели на ООС и полезности этих сведений в торговли выглядят неубедительно без разговоров о предварительном отборе предикторов
 
СанСаныч Фоменко:
Все разговоры про постепенное протухание модели на ООС и полезности этих сведений в торговли выглядят неубедительно без разговоров о предварительном отборе предикторов. 
Ну а что выбор. Выбираем модель с максимальным уровнем обобщения, смотрим как она работала на тренировочном интервале. Эувити должна расти равномерно... И тут ущ на удачу. Без неё никуда...
 
Andrey Dik:

Ато.

Если модель дает неправильные сигналы на ООС - это показатель неправильного обучения, а не факт изменения рынка. 

С этим я согласен. А как вы анализируете сигналы двух сеток? Не совсем понятно? Насколько они расходятся или в унисон идут?
 
Alexey Burnakov:
С этим я согласен. А как вы анализируете сигналы двух сеток? Не совсем понятно? Насколько они расходятся или в унисон идут?

Привожу сигналы к общему по такой схеме:

SELL   BUY  Интерпритация

-1        0           sell

0         0         забор

0         1           buy

-1        1         забор

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

 
Andrey Dik:

Привожу сигналы к общему по такой схеме:

SELL   BUY  Интерпритация

-1        0           sell

0         0         забор

0         1           buy

-1        1         забор

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

Спасибо. Это может быть рабочей идеей.
 
Комбинатор:

Да, но только не на конфигурацию нейронки.

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

Или на что-то еще. Но хотелось бы получить более развернутый ответ. 

 

Вышла новая версия jPrediction 9.00 Release

Цитата из инструкции для пользователей:

"Отличия jPrediction от другого ПО для машинного обучения

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

Функции, выполняемые jPrediction в автоматическом режиме

  1. Считывание и парсинг файла с множеством примеров для построения математической модели классификации;
  2. Нормирование данных перед машинным обучением;
  3. Разделение множества всех примеров из выборки на два подмножества: обучающее и тестовое;
  4. Балансировка примеров из обучающего подмножества;
  5. Формирование архитектуры нейросетей;
  6. Обучение множества моделей на обучающем подмножестве примеров с различными комбинациями предикторов (факторов);
  7. Редукция архитектуры нейросетей - удаление лишних элементов;
  8. Тестирование множества моделей на тестовом подмножестве примеров и вычисление обобщающих способностей;
  9. Выбор наилучшей модели по критерию максимальности обобщающей способности.

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

Следует сказать, что начиная с 8-й версии у jPrediction нет ограничений на максимальное количество предикторов в обучающей выборке. До 8-ки количество предикторов в обучающей выборке ограничивалось десятью штуками.

До 8-й версии jPrediction был одномодельным. Т.е. бралась выборка и по ней обучалась и тестировалась всего одна единственная модель.

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

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

Проблема комбинаторного "взрыва" в jPrediction была решена не методом перебора всех возможных комбинаций, а методом последовательного поиска. Суть метода такова:

Предположим, что мы нашли какую-то комбинацию содержащую  N предикторов с максимальной обобщающей способностью, перебрав все возможные комбинации из N и меньшего количества предикторов. Нам необходимо добавить к ней N+1 предиктор. Для этого к уже найденной комбинации добавляем поодиночке предикторы из выборки, которые в комбинацию не вошли и замеряем для них обобщающую способность. Если в процессе такого перебора мы нашли комбинацию с N+1 предикторами, обобщающая способность которой превышает лучшую комбинацию из N предикторов, то можно будет таким же образом подобрать и комбинацию с N+2 предикторами. А если не нашли, то очевидно, что дальше искать нет никакого смысла и алгоритм перебора комбинаций останавливается на лучшей комбинации из N предикторов. В результате чего алгоритм поиска комбинации предикторов для модели останавливается намного раньше, по сравнению с полным перебором всех возможных комбинаций. Дополнительная экономия вычислительных ресурсов происходит за счёт того, что поиск начинается с малого количества предикторов в сторону увеличения этого количества. А чем меньше предикторов нужно для обучения, тем меньше времени и вычислительных мощностей понадобится для построения моделей.

Вот такие пирожки.

Кому будет интересно, то в прикреплённом ZIP архиве находится инструкция для пользователей jPrediction 9 на русском языке в формате PDF:

Файлы:
 
Круто! А Вы что один это все волокете? Непонятен термин "редукция". Если технику рассматривать, то это кратное понижение чего либо. А у Вас это отбор.
 
Yury Reshetov:

Вышла новая версия jPrediction 9.00 Release


Все хорошо кроме пустяка: отсутствует сравнение с другими моделями.

Предлагаю сови услуги по сравнению

1. Вы готовите входной экселевский файл, содержащий предикторы и целевую переменную

2. Делаете расчеты

3. Пересылаете входной файл мне

4. Я делаю расчеты по randomforest, ada, SVM

 

Сравниваем. 

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