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

 
Aleksey Nikolayev #:

ИМХО, похоже на пи-хакинг, о котором недавно писал Максим. Если не используются какие-нибудь стат-тесты для определения значимости выделенных квантов, то это точно он.

Когда-то приводил простейший пример, когда на СБ выбирался лучший час недели для торговли (в то время как его очевидно не существует). Всего-то 5*24=120 вариантов, но этого вполне достаточно, что бы такой час всегда нашёлся (временной промежуток был вроде бы полгода). Там и "стабильность по выборке" присутствует.

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

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

Относительно примера на СБ, тут два соображения:

1. Если неизвестен процесс, а есть только данные, то можно принять за закономерность, что есть некий лучший час для торговли. Или есть соображение, как отвергнуть эту гипотезу?

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

В обучении я использую выборки за большой период - обычно это не менее 10 лет.

 
СанСаныч Фоменко #:

Разбивка файла на разные участки, а в приведенном Вами пример, случайная включение пациентов в группу, что соответствует моему sample, работает только в том случае, если предикторы имеют отношение к целевой переменной. т.е. это не мусор. В медицине выяснение отношения лекарства (предиктора) к болезни выполняется за счет  понимания физиологии процесса ввода лекарства в организм. У нас же должны быть другие методы определения связи между предиктором и целевой переменной - все это препроцессинг, который делается ДО обучения модели и этот этап обязателен.

Точно так же обязательна архитектура тестирования, которая должна быть направлена ПРОТИВ переобучения модели.

К сожалению нет. Фагоцитоз виден в микроскоп, а вот далее наука медицины, где микроскоп не помогает, это гипотезы подтвержденные надлежащими экспериментами) 

И кстати, больные не знают в какой они группе)))

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

 
fxsaber #:

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

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

Но, может, чисто статистически меняется частота их появлений. Т.е. старые продолжают действовать, но есть и новые для модели, которые ранее не встречались по ряду причин - главное их не было при обучении. К примеру существенно изменилась волатильность, а в коде (условно предикторах) есть какие то фиксированные значения, или банально мало наблюдений при такой волатильности - была всё время стабильна на обучении или в других диапазонах. Иными словами, нарастают новые наблюдения в выборке (если новые данные собирать) - тут нужен механизм детекцыи появления таких событий.

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

При этом человек видел только историю поведения советника с 2016 года изначально (рост золота) и сетовал, что что-то сломалось и надо оптимизировать с помощью МО правый слом графика.

Под капотом оказалось, что десяток индикаторов, каждый из которых давал в среднем 100 сигналов, т.е. фактически были найдены выбросы, задетектированные разными индикаторами на истории и объединены в общую группу. Будут эти выбросы и дальше повторяться на истории с тем же вероятностным исходом?

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

fxsaber #:

На графике три года ежедневной торговли.

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

fxsaber #:

Вот что не делал, так это не строил график для каждого диапазона. Стат. данные считал, а сам график не смотрел.

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

Ещё такой нюанс, с тем же CatBoost - там примерно 50% листьев отмирает на новых данных, т.е. закономерности перестают встречаться на которых была построена модель.

fxsaber #:

Не понял выделенное.

Две другие выборки - это test и exam, следующие за выборкой, на которой производилось обучение.

Потом Вы спрашивали, зачем их использовать - изначально test использовал для контроля переобучения в CatBoost, т.е. когда новые закономерности не дают улучшений на выборке test - итерации по улучшению останавливаются. А exam - просто уже независимое тестирование модели. В идеале по train и test нужно научится отбирать модель, которая будет успешна на exam - это отдельный вопрос.

И, конечно, если задача отбора модели решена, то выборку для обучения можно увеличить, если в этом есть необходимость, или как минимум сместить выборки train и test ближе к текущей дате.

 
Aleksey Vyazmikin #:

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

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

Относительно примера на СБ, тут два соображения:

1. Если неизвестен процесс, а есть только данные, то можно принять за закономерность, что есть некий лучший час для торговли. Или есть соображение, как отвергнуть эту гипотезу?

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

В обучении я использую выборки за большой период - обычно это не менее 10 лет.

Могу предложить модифицировать свой эксперимент. Пусть имеется десять ящиков с номерами от 1 до 10, сто белых шаров и сто чёрных шаров (числа 10 и 100 взяты условно). Шарики как-то раскладываются по ящикам, потом вы смотрите сколько каких шаров в каждом ящике и пытаетесь понять наличие закономерности в алгоритме раскладки - в ящиках с какими номерами есть преобладание шаров какого-то цвета.

Так вот, если каждый шар (обоих цветов) просто кладётся случайно и с равной вероятностью 0.1 в один из ящиков, то в итоге никакой равномерности по соотношению цветов не будет! Практически всегда будет ящик, где почти все белые и такой, где почти все чёрные. И дело совсем не в качестве ГСЧ, можете брать реальный квантовый ГСЧ и всё будет так же. Дело в самой природе вероятностной случайности. Неравномерность будет всегда, но совершенно непредсказуемы номера ящиков, где она обнаружится при следующей раскладке. То же самое и в предыдущем примере с часом недели (час недели - аналог номера ящика).

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

Надеюсь, понятно, что номера ящиков (час недели) - это аналогия с вашими квантами.

 
Aleksey Nikolayev #:

Могу предложить модифицировать свой эксперимент. Пусть имеется десять ящиков с номерами от 1 до 10, сто белых шаров и сто чёрных шаров (числа 10 и 100 взяты условно). Шарики как-то раскладываются по ящикам, потом вы смотрите сколько каких шаров в каждом ящике и пытаетесь понять наличие закономерности в алгоритме раскладки - в ящиках с какими номерами есть преобладание шаров какого-то цвета.

Так вот, если каждый шар (обоих цветов) просто кладётся случайно и с равной вероятностью 0.1 в один из ящиков, то в итоге никакой равномерности по соотношению цветов не будет! Практически всегда будет ящик, где почти все белые и такой, где почти все чёрные. И дело совсем не в качестве ГСЧ, можете брать реальный квантовый ГСЧ и всё будет так же. Дело в самой природе вероятностной случайности. Неравномерность будет всегда, но совершенно непредсказуемы номера ящиков, где она обнаружится при следующей раскладке. То же самое и в предыдущем примере с часом недели (час недели - аналог номера ящика).

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

Надеюсь, понятно, что номера ящиков (час недели) - это аналогия с вашими квантами.

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

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

Знаете какой-либо стат-тест дополнительный, который подошёл бы к этому случаю?

Уверенным ни в чём нельзя быть, к тому же на СБ то...

Я ищу методы, которые будут добавлять уверенности.

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

 

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

Два столбика - это два предиктора - вертикальные столбцы - символизируют как бы время (но я не делал точное воспроизведение по нему).

Толстая линия - это стандартное место расщепления предиктора деревянной моделью.

На втором предкторе (левый на рисунке) видно, что в диапазоне от 2 до 3 включительно наибольшее скопление единиц, что выделил цветом.

После первого сплита я подсветил голубоватым цветом те цифры, которые остались от первого сплита (допустим это правая часть, куда по ветке ушли единицы).

Итак, если посчитать суммарно единицы, оставшиеся после первого сплита, то разделение нужно делать ровно по середине и сплитовать от 1 до 2 включительно, но первый столбец содержит самые слабые статистические показатели по откликам в абсолютном выражении, как и 4 - всего по 8, в то время как центральные содержат 10 и 12. За счет квантового отрезка можно сместить в одну сторону столбец 1 и 4, и в другую 2 и 3, что всего на единицу меньше суммарно, чем без квантового отрезка, но зато изначально в этом диапазоне на 8 единиц наблюдается больше, что кажется существенным. Т.е. ожидается, что и далее в этот диапазон будут чаще попадать единицы, чем в два соседних.

Удалось объяснить суть идеи отбора квантовых отрезков?

Добавлю: Это условность - допуская арифметические ошибки - главное текст и логика, а не цифры тут.
 

Ну а в бытовом плане - у нас есть допустим предиктор с диапазоном -162 и +162 - который посылает сигналы.

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


 
Aleksey Vyazmikin #:

Знаете какой-либо стат-тест дополнительный, который подошёл бы к этому случаю?

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

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

 
Aleksey Nikolayev #:

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

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

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

Можете сделать такую выборку для теста в csv? Думаю в R это достаточно быстро. А то я ещё день потрачу на написание кода, и то не факт, что правильно сделаю.

 
Aleksey Vyazmikin #:

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

Можете сделать такую выборку для теста в csv? Думаю в R это достаточно быстро. А то я ещё день потрачу на написание кода, и то не факт, что правильно сделаю.

Можно же в МТ5 сделать, в стат. библиотеке есть функции генерации выборок для разных распределений. Например, в качестве признака в первый столбик генерируете нормальную выборку длиной 200, а во втором столбике делаете метки случайным выбором с вероятностью по 0.5

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

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