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

 
Aleksey Vyazmikin:

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

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

Я приложил файл - попробуйте сами разные  модели, Lasso рекомендовали именно для бинарных выборок - в этом фишка.

Попробуйте как есть для кросс-валидации. В цикле 10 раз с разными неизвестными участками по 1/10 от общего количества данных. Это будет наилучшая оценка для выбора катбуста с какими то параметрами  или лассо с параметрами по умолчанию.

 
Maxim Dmitrievsky:


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

Если МАшка участвует при обучении, то разве её не должно быть при применении модели?

Суть МАшки в разметке типа - выше только один класс, а ниже только другой?

 
elibrarius:

Попробуйте как есть для кросс-валидации. В цикле 10 раз с разными неизвестными участками по 1/10 от общего количества данных. Это будет наилучшая оценка для выбора катбуста с какими то параметрами  или лассо с параметрами по умолчанию.

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

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

Сейчас фактически CatBoost у меня обучается на 60% от всех данных - по 20% идет контроль остановки и по последним 20% оценка модели.

Если говорить о 10% для обучения - то этого слишком мало для выборки.
 
Aleksey Vyazmikin:

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

Вы про какую-то стандартную/древнюю кросс валидацию пишете.
Во первых, не нужно перемешивать строки а брать блоками как есть 0-90 обучение 90-100 тест, потом 10-100 обучение, 0-10 тест, потом 20-100-10 обучение 10-20 тест и т.д..
Во вторых по совету Прадо надо оставлять пробел (pruning) между трейном и тестом, чтобы соседние примеры из трейна и теста не попали в работу. Пример из трейна соседний с 10-100 примерами из теста будет им подсказкой/подглядыванием. Подробнее тут https://dou.ua/lenta/articles/ml-vs-financial-math/
Или вот картинка:

Aleksey Vyazmikin:

Сейчас фактически CatBoost у меня обучается на 60% от всех данных - по 20% идет контроль остановки и по последним 20% оценка модели.

Если говорить о 10% для обучения - то этого слишком мало для выборки.
Можете 20% или сколько хотите.

И наконец вместо кроссвалидации можете применить валкинг форвард. Который не по кругу тестовый участок берет, а только впереди.
Машинное обучение против финансовой математики: проблемы и решения
Машинное обучение против финансовой математики: проблемы и решения
  • dou.ua
Всем привет! Так получилось, что я уже около семи лет занимаюсь машинным обучением. В последние несколько из них я как исследователь и CTO Neurons Lab часто работаю с финансовыми данными в рамках проектов, связанных с инвестиционным менеджментом и алгоритмическим трейдингом. Чаще всего клиенты приходят с текущими стратегиями, которые нужно...
 
Maxim Dmitrievsky

За что отвечает параметр shuffle? Обычно если он False, то результаты гораздо хуже, чем при True. 

train_test_split(X, y, train_size = 0.5, test_size = 0.5, shuffle=True)
 

Картинка с объяснением валкинг форварда.

 
Evgeni Gavrilovi:

За что отвечает параметр shuffle? Обычно если он False, то результаты гораздо хуже, чем при True. 

перемешивает примеры для трейн и тест, чтобы они последовательно не шли

 
Maxim Dmitrievsky:

перемешивает примеры для трейн и тест, чтобы они последовательно не шли

случайным образом? то есть как здесь указано? тест на случайной выборке 50% 

 
Evgeni Gavrilovi:

случайным образом? то есть как здесь указано? тест на случайной выборке 50% 

да, можно почитать в документации sklearn

проверил такое же (как в видео) на сезонной версии.. вроде, сильно не улучшает ничего

 
elibrarius:

Вы про какую-то стандартную/древнюю кросс валидацию пишете.
Во первых, не нужно перемешивать строки а брать блоками как есть 0-90 обучение 90-100 тест, потом 10-100 обучение, 0-10 тест, потом 20-100-10 обучение 10-20 тест и т.д..
Во вторых по совету Прадо надо оставлять пробел (pruning) между трейном и тестом, чтобы соседние примеры из трейна и теста не попали в работу. Пример из трейна соседний с 10-100 примерами из теста будет им подсказкой/подглядыванием. Подробнее тут https://dou.ua/lenta/articles/ml-vs-financial-math/
Или вот картинка:

Можете 20% или сколько хотите.

И наконец вместо кроссвалидации можете применить валкинг форвард. Который не по кругу тестовый участок берет, а только впереди.

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

Какая цель этих ухищрений, с дроблением выборки на куски, - нахождение куска, где закономерность, присущая всей выборке менее зашумлена. Чем меньше шума/более выраженных правил, способствующих классификации, тем лучше будет модель. Да, такой метод имеет право на жизнь, но его хорошо применять, когда известно, что предикторов, связанных с целевой больше, тем случайных и когда объем выборки достаточно велик, что бы вместить по возможности множество комбинаций предикторов между собой, а чем больше предикторов тем больше должна быть выборка. У меня выборки редко превышают 20к строк (100%), а предикторов уже более 2к, и очевидно что уже все комбинации не попадут просто в саму выборку и не будут учтены моделью, отсюда всегда будет Recall не более +-50%.

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

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