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

 
И какую роль в этом сыграла квантизация? По 10-бальной шкале 
 Я вот прошел старфилд и там короче сингулярность началась. Попал в мультивселенную и встретил копию самого себя. Теперь бегаю по разным вариантам вселенных. И из этого нет выхода. Теперь надо искать новые смыслы.

Вот когда мозг или нейросеть упирается в пределы разумного, то начинается сингулярность.
 
Aleksey Vyazmikin #:

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

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

Делите основной трейн на 5-10 сабтрейнов, каждый из которых делите на трейн и вал. На каждом обучаетесь по типу cv, потом предсказываете на всем мэйн трейне. Сравниваете исходные метки для всех моделей с предсказанными. Те, которые не угадались, заносите в блэк лист. Потом удаляете все плохие примеры при обучении финальной модели, посчитав среднюю стремность для каждого семпла. Опционально, можно научить вторую модель отделять вайт семплы от блэк семплов, либо через 3-й класс.

3 строчки кода, результаты на уровне.. ну, мне особо не с чем сравнивать.. короче на каком-то уровне.

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

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

Примерно так должно выглядеть АМО с элементами козула, которое само ищет ТС.
 
Maxim Dmitrievsky #:
Делите основной трейн на 5-10 сабтрейнов, каждый из которых делите на трейн и вал. На каждом обучаетесь по типу cv, потом предсказываете на всем мэйн трейне. Сравниваете исходные метки для всех моделей с предсказанными. Те, которые не угадались, заносите в блэк лист. Потом удаляете все плохие примеры при обучении финальной модели, посчитав среднюю стремность для каждого семпла. Опционально, можно научить вторую модель отделять вайт семплы от блэк семплов, либо через 3-й класс.

3 строчки кода, результаты на уровне.. ну, мне особо не с чем сравнивать.. короче на каком-то уровне.

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

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

Примерно так должно выглядеть АМО с элементами козула, которое само ищет ТС.

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

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

 
mytarmailS #:
Да, интересно..

Сообщаю, что на отдельной выборке test - 7467, а на exam - 7177, но там есть не малое число листьев без активаций вообще - сразу не посчитал.

0

Так выглядит распределение сменивших класс листьев по их значению для выборки test

1

а это exam.

А это разбивка на классы - их три, третий "-1" - отсутствие активации.


Для выборки train


Для выборки test


Для выборки exam

В общем видно, что веса листьев больше не соответствуют логике класса - ниже график с выборки test - уже нет чёткого вектора.


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

Вообще, допускаю, что отчётливые "столбики" на графике выше - весьма схожие листья по месту и частоте активации.


mytarmailS #:

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

Сложно обсуждать то, о чём не знаешь. Поэтому, могу только порадоваться за Ваши успехи. Если бы у меня был такой метод, то я бы использовал его :)

Мой метод, пока, не даёт таких качественных результатов, но он достаточно хорошо паралеллиться.

 
Maxim Dmitrievsky #:
И какую роль в этом сыграла квантизация? По 10-бальной шкале

Сложно полностью изолировать мыслительные процессы.

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

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

Maxim Dmitrievsky #:
 Я вот прошел старфилд и там короче сингулярность началась. Попал в мультивселенную и встретил копию самого себя. Теперь бегаю по разным вариантам вселенных. И из этого нет выхода. Теперь надо искать новые смыслы.

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

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

Я вот запустил God of War (2018) на старой видеокарте HD7950 (скинул её в отдельный компьютер, который чисто для расчетов) под десяткой, поставил графику по минимуму и просто в шоке от картинки. Но главный интерес это проработка взаимоотношений отца и сына - сложно найти аналоги в компьютерной индустрии, где подымается эта тема.

Maxim Dmitrievsky #:
Делите основной трейн на 5-10 сабтрейнов, каждый из которых делите на трейн и вал. На каждом обучаетесь по типу cv, потом предсказываете на всем мэйн трейне. Сравниваете исходные метки для всех моделей с предсказанными. Те, которые не угадались, заносите в блэк лист. Потом удаляете все плохие примеры при обучении финальной модели, посчитав среднюю стремность для каждого семпла. Опционально, можно научить вторую модель отделять вайт семплы от блэк семплов, либо через 3-й класс.

3 строчки кода, результаты на уровне.. ну, мне особо не с чем сравнивать.. короче на каком-то уровне.

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

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

Примерно так должно выглядеть АМО с элементами козула, которое само ищет ТС.

Но тут же так же работа с данными через модели. Или видите в чём то разницу?

 
Aleksey Vyazmikin #:

Но тут же так же работа с данными через модели. Или видите в чём то разницу?

Ну типа на автомате, не надо ничего придумывать и (что важно) делать :)
 
Maxim Dmitrievsky #:
Ну типа на автомате, не надо ничего придумывать и (что важно) делать :)

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

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

 
Aleksey Vyazmikin #:

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

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

По идее, этот рандом не так страшен, как рандом в датасете
 
Maxim Dmitrievsky #:
По идее, этот рандом не так страшен, как рандом в датасете

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

Обучить модель же не проблема - проблема выбрать ту, у которой больше потенциал корректной работы на новых данных.

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

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

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

 
Aleksey Vyazmikin #:

Да, с бинарными сложней. Но не понял идеи, как нормирование может тут помочь.

Бинарный признак с 0и1 уже нормирован, а остальные нужно тоже нормировать.