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

 
Maxim Dmitrievsky #:
Нет, не юзал. Посмотрю вечером что такое.
Эти способы моделезависимые. Данные сами по себе не разделяются и не отделяются. Не знаю как объяснить. Один раз попытался - нарвался опять на оптимизаторщиков. В книжках короче написано.
А то здесь налево пойдёшь - коня потеряешь. Направо пойдешь - двухглавый дракон.

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

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

 

Вот взял модельку, и посмотрел, что там по листьям получается. Модель не сбалансированная единичек всего 12,2%.  17к листьев.

Сделал разметку листьев на классы - если на выборке откликов с целевой "1" оказалось больше начального значения - 12,2%, то класс "1", иначе "0". Идея класса тут в наличии полезной информации для улучшения классификации.

На гистограмме видим значения в листьях модели (X) и их % в модели (Y) - без разбивки на классы.

0

А тут то же самое, но класс только "0".


Класс только "1".

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

Теперь можно посмотреть распределение по проценту как раз (по точности классификации) - отдельно для листов с "1" и с "0".


Гистограмма для "0" - огромное число листьев с точностью возле "100%".


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

Взглянув не Recall становится понятно, что это листья все с малым числом активаций - менее 5% от своего класса.


Recall для класса "0"


Recall для класса "1"

Далее можно посмотреть на зависимость веса в листе от точности классификации им - так же отдельно для каждого класса.

00

Для целевой "0"


Для целевой "1".

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

Может это безобразие надо убирать?

Так же, если посмотреть не значение в листьях в зависимости от показателя Recall, то увидим маленький вес в листьях (возле 0), который имеет иногда очень большое значение откликов. Такая ситуация как раз говорит о том, что лист получился никакой, но вес ему прилепили. Так может эти листья так же считать шумом и обнулить показатели?

000

Для целевой "0".


Для целевой "1".

Интересно, какой процент листьев на новой выборке (не train) "поменяет" свой класс?

 

Ну и в дополнении - классика - взаимозависимость полноты и точности.

0

Класс "0".


Класс "1".

В общем думаю, как бы это перевзвесить...

 

А так вот выглядит моделька я разрезе вероятностей

train

На выборке train - аж на 35% уже прибыль давать начинает - как в сказке!


На выборке test - на диапазоне от 0,2 до 0,25 теряем жирный кусок прибыли - точки максимумов классов смешались


На выборке exam - пока ещё зарабатывает, но уже корёжет модельку.

 
Aleksey Vyazmikin #:

Интересно, какой процент листьев на новой выборке (не train) "поменяет" свой класс?

Да, интересно..

________________________

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


[Удален]  
И какую роль в этом сыграла квантизация? По 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, то есть склонность каждого сэмпла играть роль в обучении.

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

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

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