Машинное обучение в трейдинге: теория, модели, практика и алготорговля - страница 3333
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Нет, не юзал. Посмотрю вечером что такое.
Всё верно - это способ выделить примеры, ухудшающие обучение - это в теории.
Идея в том, что бы обучить моделей 100 и посмотреть, какие примеры в среднем "мешают" достоверной классификации, а потом попробовать их детектировать другой моделью.
Вот взял модельку, и посмотрел, что там по листьям получается. Модель не сбалансированная единичек всего 12,2%. 17к листьев.
Сделал разметку листьев на классы - если на выборке откликов с целевой "1" оказалось больше начального значения - 12,2%, то класс "1", иначе "0". Идея класса тут в наличии полезной информации для улучшения классификации.
На гистограмме видим значения в листьях модели (X) и их % в модели (Y) - без разбивки на классы.
А тут то же самое, но класс только "0".
Класс только "1".
Эти коэффициенты в листьях суммируются и преобразуются через логит, а значит знак "+" увеличивает вероятность класса "1", а "-" уменьшает. В общем разбивка по классам выглядит достоверно, но в модели есть смещение.
Теперь можно посмотреть распределение по проценту как раз (по точности классификации) - отдельно для листов с "1" и с "0".
Гистограмма для "0" - огромное число листьев с точностью возле "100%".
А тут большее скопление возле начального значения разделения, т.е. очень много малоинформативных листьев, в то же время есть и те, что возле 100%.
Взглянув не Recall становится понятно, что это листья все с малым числом активаций - менее 5% от своего класса.
Recall для класса "0"
Recall для класса "1"
Далее можно посмотреть на зависимость веса в листе от точности классификации им - так же отдельно для каждого класса.
Для целевой "0"
Для целевой "1".
Обращает на себя наличие линейности, хоть и с большим таким размахом. Но вот "столбец" с вероятностью 100 выбивается из логики, распластавшись очень широко по диапазону значения листа.
Может это безобразие надо убирать?
Так же, если посмотреть не значение в листьях в зависимости от показателя Recall, то увидим маленький вес в листьях (возле 0), который имеет иногда очень большое значение откликов. Такая ситуация как раз говорит о том, что лист получился никакой, но вес ему прилепили. Так может эти листья так же считать шумом и обнулить показатели?
Для целевой "0".
Для целевой "1".
Интересно, какой процент листьев на новой выборке (не train) "поменяет" свой класс?
Ну и в дополнении - классика - взаимозависимость полноты и точности.
Класс "0".
Класс "1".
В общем думаю, как бы это перевзвесить...
А так вот выглядит моделька я разрезе вероятностей
На выборке train - аж на 35% уже прибыль давать начинает - как в сказке!
На выборке test - на диапазоне от 0,2 до 0,25 теряем жирный кусок прибыли - точки максимумов классов смешались
На выборке exam - пока ещё зарабатывает, но уже корёжет модельку.
Интересно, какой процент листьев на новой выборке (не train) "поменяет" свой класс?
Всё верно - это способ выделить примеры, ухудшающие обучение - это в теории.
Идея в том, что бы обучить моделей 100 и посмотреть, какие примеры в среднем "мешают" достоверной классификации, а потом попробовать их детектировать другой моделью.
Делите основной трейн на 5-10 сабтрейнов, каждый из которых делите на трейн и вал. На каждом обучаетесь по типу cv, потом предсказываете на всем мэйн трейне. Сравниваете исходные метки для всех моделей с предсказанными. Те, которые не угадались, заносите в блэк лист. Потом удаляете все плохие примеры при обучении финальной модели, посчитав среднюю стремность для каждого семпла. Опционально, можно научить вторую модель отделять вайт семплы от блэк семплов, либо через 3-й класс.
Метки (учитель, целевая переменная) НЕ могут быть мусорными по определению. Котировка размечается из неких внешних по отношению к предикторам соображениям. После того, как определились с метками, возникает проблема предикторов, которые имеют отношение к найденному набору меток. Запросто возникает проблема, что набор меток - красавцы, а вот предикторы к ним подобрать не удается и приходится искать другой набор меток. Например, метки - это развороты ЗЗ. Красавцы метки. А как подобрать предикторы к таким меткам?
Как только начинаем фильтровать метки по предикторам - это сверх подгонка, что и показывает все, что Вы тут показываете, включая маркет - не работает на внешнем, новом файле в естественном пошаговом режиме.
Да, интересно..
Сообщаю, что на отдельной выборке test - 7467, а на exam - 7177, но там есть не малое число листьев без активаций вообще - сразу не посчитал.
Так выглядит распределение сменивших класс листьев по их значению для выборки test
а это exam.
А это разбивка на классы - их три, третий "-1" - отсутствие активации.
Для выборки train
Для выборки test
Для выборки exam
В общем видно, что веса листьев больше не соответствуют логике класса - ниже график с выборки test - уже нет чёткого вектора.
В общем, аппроксимирует данный способ обучения что угодно, но вот за качество предикторов он не ручается.
Вообще, допускаю, что отчётливые "столбики" на графике выше - весьма схожие листья по месту и частоте активации.
Сложно обсуждать то, о чём не знаешь. Поэтому, могу только порадоваться за Ваши успехи. Если бы у меня был такой метод, то я бы использовал его :)
Мой метод, пока, не даёт таких качественных результатов, но он достаточно хорошо паралеллиться.
И какую роль в этом сыграла квантизация? По 10-бальной шкале
Сложно полностью изолировать мыслительные процессы.
Есть проблемы по разным фронтам - поэтому смотрю, что можно улучшить с меньшими затратами сил и с большим результатом. Периодически прыгая от "данных" к "процессу обучения" и экспериментируя.
Изначальная идея - это оценить корреляцию, но готовых методов не нашел, модернизирую свой. Думаю, что если листья похожи, то они искажают оценку.
Любопытно придумали. В эту игру, может, поиграю когда нибудь потом Я к играм отношусь как к творчеству, сейчас игры значительно медленней устаревают по графике.
Я вот запустил God of War (2018) на старой видеокарте HD7950 (скинул её в отдельный компьютер, который чисто для расчетов) под десяткой, поставил графику по минимуму и просто в шоке от картинки. Но главный интерес это проработка взаимоотношений отца и сына - сложно найти аналоги в компьютерной индустрии, где подымается эта тема.
Делите основной трейн на 5-10 сабтрейнов, каждый из которых делите на трейн и вал. На каждом обучаетесь по типу cv, потом предсказываете на всем мэйн трейне. Сравниваете исходные метки для всех моделей с предсказанными. Те, которые не угадались, заносите в блэк лист. Потом удаляете все плохие примеры при обучении финальной модели, посчитав среднюю стремность для каждого семпла. Опционально, можно научить вторую модель отделять вайт семплы от блэк семплов, либо через 3-й класс.
Но тут же так же работа с данными через модели. Или видите в чём то разницу?