Машинное обучение в трейдинге: теория, модели, практика и алготорговля - страница 3600
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Имхо, ещё должно хотеться сделать нормальный форум по МО в трейдинге))
Хочется сделать, но не хочется делать )
Если не делать сильно большой форвард, то работает как конфета. Потом переобучать, с учетом новых данных.
Признаки любые, но лучше поближе к ценам. Много не надо, 10 достаточно. Желательно нормализовать для кластеризации, если сильно отличаются по значениям.
Разметку желательно делать плотную, то есть для каждого изменения признаков должна быть метка. Но можно и на разреженном датасете. Метки должны соответствовать прибыльным сделкам в большинстве своем. Иначе будет обратный эффект.Видимо никто не читает, один флуд в теме.
Вроде я уже писал тогда, что у меня есть нечто такое же...
Чем больше subset_size
За что отвечает этот параметр?
Параметры можно подбирать.
Так когда перебираешь, то обязательно найдётся хороший результат - надо же, что бы всегда был хороший с любыми параметрами :)
Потом переобучать, с учетом новых данных.
Как понять, что уже не работает - извечный вопрос.
Много не надо, 10 достаточно.
В планах было сделать вариант выбора случайных признаков из моего ассортимента - пока не сделал - вообще почти месяц питон не трогал.
У меня там была задача найти не средний, а средний-максимальный спред - внутри минутки брался максимальный спред, а потом они усреднялись для каждой минуты дня.
В подсвеченном месте подставлял средневзвешенный по времени спред минуты. Всплески в 15:15, 15:30 и 17:00.
Вроде я уже писал тогда, что у меня есть нечто такое же...
Мой код исправляет метки, ваш код что делает?
Сейчас опять начнем ходить кругами, потому что ищем аналогии там, где их нет :)Как понять, что уже не работает - извечный вопрос.
Понять очень просто - перестает работать :)
Идею подхода уже описывал по ссылкам. Датасет группируется на похожие кластеры (паттерны, если угодно) по признакам. И метки для заданного (subset_size) кол-во кластеров исправляются, то есть все метки становятся 1 или 0, в зависимости от того, чего больше в кластере. Это убирает неоднозначность для финальной модели, она перестает переобучаться на шум и делать лишние сплиты.
В сортированном списке кластеров, по "смещению вероятности", в самом начале стоят самые смещенные. Они исправляются в первую очередь, чтобы стать полностью однозначными для последующего обучения модели. Остальные, которые в хвосте и вероятность в которых близка к 0.5, никак не трогаются и продолжают вносить шум в модель.
Варьируя кол-во кластеров и subset_size, ищется баланс между хорошими кластерами и плохими, который удовлетворяет юзера.
Работа функции прозрачна в том смысле, что дает проверенно ожидаемый результат: чем больше кластеров исправляется, тем модель более устойчива, но менее "красива" и наоборот. Поэтому добавлена доп. настройка, для регулировки.
В итоге, такая маленькая ф-я делает практически всю работу по поиску устойчивых паттернов в данных и улучшению модели. Если устойчивых паттернов нет, всегда будет предсказуемый (плохой) результат даже на трейне, тогда как без этой функции модель бы переобучилась и показала грааль на трейне.
Мой код исправляет метки, ваш код что делает?
Ваш код убирает строки из выборки, которые относятся к кластерам, имеющих среднее значение (как Вы пишите 0,5) единиц.
Мой код делает то ж самое, если кратко:
1. Открываем выборку train
2. Делаем кластеризацию по принципу дерева, т.е. последовательно углубляясь в каждый кластер.
3. Оцениваем метрики каждого кластера на всех выборках.
4. Отбираем кластеры по выборке train, где есть смещение вероятности встретить целевую "1" больше 5%.
5. Формируем новую выборку по отобранным кластерам.
Но, я не пробовал так много кластеров использовать...
Особой стабильности после этого нет, улучшения есть, если хорошо разметка прошла рандомной кластеризацией, но без подглядывания в новые данные это не гарантированно.
И метки для заданного (subset_size) кол-во кластеров исправляются, то есть все метки становятся 1 или 0, в зависимости от того, чего больше в кластере. Это убирает неоднозначность для финальной модели, она перестает переобучаться на шум и делать лишние сплиты.
Вот этого я не делал. Но, по сути это бинаризация уже получается. Опять же, если вероятности сохраняться на новых данных - эффект будет, а если нет, то трындец.
Схожий эффект я получаю через квантование по сути.Ваш код убирает строки из выборки, которые относятся к кластерам, имеющих среднее значение (как Вы пишите 0,5) единиц.
Вот этого я не делал. Но, по сути это бинаризация уже получается. Опять же, если вероятности сохраняться на новых данных - эффект будет, а если нет, то трындец.
Схожий эффект я получаю через квантование по сути.