Машинное обучение в трейдинге: теория, модели, практика и алготорговля - страница 3331
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Не знаю какого Диогена имеете в виду, но в смысле троллинга мы все дети малые в сравнении хоть с Диогеном Синопским, хоть с Диогеном Лаэртским.
Если посмотрите на даты той моей ветки, моей регистрации на ресурсе и сегодняшнюю, то станет понятнее. Через два года после регистрации надежда на возможность конструктивного и полезного общения на форуме ещё была, а через шесть с половиной - её почти не осталось. Just for fun.
Вот спасибо, приятно, что рады за мой доход - редкое это явление!
Статья вводная - Вы правы, всё что там написал - думаю, и так понятно.
Вторая часть на модерации, там чуть интересней. Впрочем, на данный момент я отказался от описания именно своего метода, и придумал упрощённый вариант, который дал на тестах небольшой эффект. Он будет описан во второй части.
Впрочем - это тот случай, когда новые идеи занимают не более 5% текста.
Заходите по желанию читать и комментировать.
Зачем рандомно?
Цикл по всем точкам 1 класса, и измеряете расстояние до всех точек др. класса, берете минимальное расстояние.
Когда все получено, сортируете, удаляете до нужного вам расстояния, по одной паре. Если удаленная точка использовалась в другой паре, то находите освободившейся точке, новую с новым минимальным расстоянием, снова сортируете и продолжаете.
Может как то пооптимальнее можно придумать. Может и без сортировки - просто удалять до нужного расстояния.
Ех, туго до меня доходит, я так понимаю:
Правильно я понял прототип алгоритма?
Возвращаюсь к теме с такой задержкой, так как немного увлекла мысль о том, что листья в моделях CatBoost да и в других ансамблях деревьев, могут сильно коррелировать по активации, что искажает при обучении их уверенность, приводя к завышению значения в листе для модели в целом.
Ех, туго до меня доходит, я так понимаю:
Правильно я понял прототип алгоритма?
Возвращаюсь к теме с такой задержкой, так как немного увлекла мысль о том, что листья в моделях CatBoost да и в других ансамблях деревьев, могут сильно коррелировать по активации, что искажает при обучении их уверенность, приводя к завышению значения в листе для модели в целом.
1) Можно и матрицу, но не обязательно, а сразу находим каждой точке 0 класса самую ближайшую 1 класса, т.е. получаем сразу п.2.
3) ничего не считаем и не относим к кластерам, просто удаляем пары ближайших точек. С расстоянием меньше порога, порог в том примере хорошо подошел бы 0,6. В др. задачах видимо подбирать придется.
Если удаленная точка 1 класса участвовала в паре с другой точкой 0 класса, то она осталась без пары, ей надо найти новую ближайшую точку 1 класса (снова произвести расчет или воспользоваться матрицей, как вы предложили в п.1, если хватит памяти, думаю матрица 1млн на 1млн уже ни в какую память не влезет, до 100 тыс может быть).
4) не пока не останется, а до поргового расстояния. Если он оч. большой, то останутся только точки 1 из классов, которых изначально было больше.
Но, как я уже писал ранее, не думаю, что это удаление шума хорошая идея (см. https://www.mql5.com/ru/forum/86386/page3324#comment_50171043). Вы же не сможете этот шум удалять при прогнозировании. Дерево само пометит шумные листья тем, что даст им вероятность около 50%, а не шумные листья берите например с вероятностью одного из классов >80% (или сколько сочтете нужным).
Кластеры тут не при чем. Это просто удаление ближайших точек с разными классами, противоречащих друг другу, т.е. шумовые. А потом хоть кластеризацией, хоть деревом - чем угодно обучаете.
1) Можно и матрицу, но не обязательно, а сразу находим каждой точке 0 класса самую ближайшую 1 класса, т.е. получаем сразу п.2.
3) ничего не считаем и не относим к кластерам, просто удаляем пары ближайших точек. С расстоянием меньше порога, порог в том примере хорошо подошел бы 0,6. В др. задачах видимо подбирать придется.
Если удаленная точка 1 класса участвовала в паре с другой точкой 0 класса, то она осталась без пары, ей надо найти новую ближайшую точку 1 класса (снова произвести расчет или воспользоваться матрицей, как вы предложили в п.1, если хватит памяти, думаю матрица 1млн на 1млн уже ни в какую память не влезет, до 100 тыс может быть).
4) не пока не останется, а до поргового расстояния. Если он оч. большой, то останутся только точки 1 из классов, которых изначально было больше.
Но, как я уже писал ранее, не думаю, что это удаление шума хорошая идея (см. https://www.mql5.com/ru/forum/86386/page3324#comment_50171043). Вы же не сможете этот шум удалять при прогнозировании. Дерево само пометит шумные листья тем, что даст им вероятность около 50%, а не шумные листья берите например с вероятностью одного из классов >80% (или сколько сочтете нужным).
Пока не укладывается в голову. Хорошо это всё в одном пространстве же происходит - в метрике одного предиктора, а как учитывать остальные?
По поводу что делать при прогнозировании - я предполагал использовать две модели - одна детектит то, что отсеяли, или подтверждает, что данные в области "кучкавания", а другая уже работает на том, что осталось.
Пока не укладывается в голову. Хорошо это всё в одном пространстве же происходит - в метрике одного предиктора, а как учитывать остальные?
По поводу что делать при прогнозировании - я предполагал использовать две модели - одна детектит то, что отсеяли, или подтверждает, что данные в области "кучкавания", а другая уже работает на том, что осталось.
https://www.mql5.com/ru/articles/9138
уже год как никому нет дела
Подобных алгоритмов написал с десяток или двадцаток, некоторые хорошо себя зарекомендовали. В статье не самый лучший по стабильности результатов, первый блин комом.
поэтому пока нечего обсуждать, потому что пока нет ничего лучше
Пока не укладывается в голову. Хорошо это всё в одном пространстве же происходит - в метрике одного предиктора, а как учитывать остальные?
По поводу что делать при прогнозировании - я предполагал использовать две модели - одна детектит то, что отсеяли, или подтверждает, что данные в области "кучкавания", а другая уже работает на том, что осталось.
В примере 2 предиктора, т.е. изменяем расстояние в 2-х мерном пространстве (рассчитываем гипотенузу). Если будет 5000 признаков, значит будете измерять расстояние в 5000-мерном пространстве (как измерять - см код k-means в алглибе, там как раз это основная задача - измерять расстояния, возьмите его себе за основу).
Похоже, что корень из суммы квадратов катетов во всех пространствах https://wiki.loginom.ru/articles/euclid-distance.html
Если будете реально делать - не забудьте отнормировать предикторы, чтобы например объемы 1...100000, не проглотили в расчетах дельты цен 0,00001...0,01000.
Как это детектировать? Вот в чем вопрос. Особенно на рыночных данных, где не будет такого четкого разделения зашумленной области, как в примере. Зашумлено будет всё, процентов на 90-99.
Возможно проще воспользоваться готовыми пакетами по удалению шумных строк, может там и детектор есть...
https://www.mql5.com/ru/articles/9138
уже год как никому нет дела
Подобных алгоритмов написал с десяток или двадцаток, некоторые хорошо себя зарекомендовали. В статье не самый лучший по стабильности результатов, первый блин комом.
поэтому пока нечего обсуждать, потому что пока нет ничего лучше
Ну, почему нет дела - думаю, что просто не распространён ещё питон среди трейдеров, что бы люди переходили в активное обсуждение.
Попробую попозже на своей выборке Ваш подход.
Пробовали метод из коробки от CatBoost?
sibirqk #:
Они синхронизированы. Я же написал в начале поста - 'выровнял их по датам', что как раз и означает синхронизацию пар по времени.
"Но к сожалению, имхо, опять полный рандом. На картинке кусок графиков для иллюстрации."
Вы правы, не все так просто