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

 
Andrey Dik #:
ты уже забыл про какие критерии останова писал? опять в несознанку? ну сколько можно уже, прекращай.

это ты натягиваешь все на вся, чтобы показать свою значичмость

я не писал изначально ни про какие критерии останова

ты имеешь наглость приписывать мне то, чего я не говорил 

по сути, ты просто бредишь и развлекаешь аудиторию

а мне приходится догадываться, какие рандомные процессы идут в твоей голове и в какую сторону они движутся
 
Ты просто закидываешь рандомную инфу и требуешь ото всех с ней согласиться
 
Andrey Dik #:

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

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

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

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

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

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

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

 
Aleksey Vyazmikin #:

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

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

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

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

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

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

Я делал ранее модели, которые со временем просто переставали давать торговые сигналы. И да, это лучше, чем бы смещалась вероятность верных ответов к 50/50 на новых данных. Суть - при обучении добиваться попадания ответов сетки в узком диапазоне чисел, со временем ответы начинают выходить из диапазона и пропадают сигналы. Это очень трудоёмкий процесс, автоматизировать полностью обучение и дальнейшую торговлю мне не удалось.

Это один из подходов, наверное есть и другие, нужно изучать эту тему.

 
Andrey Dik #:

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

Я такую идею реализовывал с помощью оптимизатора МТ5: 

Ставлю условие своей псевдонейронке: "Открыть BUY, если результат сети даёт число в диапазоне Close[1] +/- 0.00050 пунктов."
Вход - одно только число —  Close[2];

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

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

Далее переключаюсь на режим тестирования, где условие уже изменённое: "Открыть BUY, если результат сети даёт число, большее Close[1] на N пунктов "

Вуаля: форвард в год прибыльный. 

Одна беда: это работало только с часовой свечкой в 2 часа ночи. Закрытие - на открытии следующего часа. 

Вот такую закономерность как-то нашёл. Работала на EURUSD, USDCHF и EURGBP в другой утренний час. 

 
Andrey Dik #:
ответов сетки в узком диапазоне чисел

Речь о НС или иной сетке?

Andrey Dik #:
со временем ответы начинают выходить из диапазона и пропадают сигналы

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

Вообще вопрос, почему что-то сломалось может быть очень важным для дальнейших идей.

 
Aleksey Vyazmikin #:

1. Речь о НС или иной сетке?

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

Вообще вопрос, почему что-то сломалось может быть очень важным для дальнейших идей.

1. Да, конечно.

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

Т.е., вместо того, что бы нести чушь принося убытки торговли на OOS, НС выдаёт в ответ тишину на незнакомые данные.

 
Aleksey Nikolayev #:
По вашей же ссылке говорится о связи "профиля" с кросс-валидацией, для которой, возможно, будет проще найти пакеты.

Я не уловил тут связи. Из каких слов это следует?

 
Forester #:

Работа экспериментальная. Вот цитата из http://www.ccas.ru/frc/papers/students/VoronKoloskov05mmro.pdf

Вряд ли каждому эксперименту создавали пакет.

Да и эксперимент искусственный. В четко разделенный по классам набор данных добавили шум. Причем четкое разделение всего по 1 фиче - по оси У. Если убрать шум (все данные от 0,2 до 0,8), то получится, что оставляем примеры только с расстоянием до другого класса не менее 0,6. Я про самый сложный 3-й вариант на картинке:


Переходим к реальной жизни и добавляем ваши 5000 предикторов, которые будут шумом к этой единственной рабочей фиче. В кластеризации вычисляется общее расстояние между точками в этом 5001 мерном пространстве.  Работающие 0,6 никогда не будут найдены в этом хаосе.

Думаю любые классификаторы это сделают лучше, то же дерево найдет эту единственную фичу и поделит именно по ней, сначала через 0,5 и потом дойдет и до сплитов по 0,2 и 0,8 за которыми будут листья с 100%ной чистотой.

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

Может попробуем разобраться? Я формулы не втыкаю - к великому моему сожалению.

 
mytarmailS #:
В одной из статей Владимира Перервенко был описан такой метод, ну и пример с кодом был естественно 

Я из видео узнал об этом алгоритме, там на слейде есть какие то формулы - сложно назвать это кодом.

А где Вы видели пример кода?