Машинное обучение в трейдинге: теория, модели, практика и алготорговля - страница 58
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Я пробовал классифицировать зигзаг, да, но не точку разворота, а весь тренд который зигзаг показывает, результат 0 если текущий зз тренд идёт вниз, и 1 если тренд идёт вверх. Тренды зз выглядят довольно несбалансированными, но я от них откзалася не поэтому. Мне не понравилось то что для модели нужна очень высокая точность. Если модель пару раз ошибётся в течении тренда и развернёт сделку в неудачное время, даже хотя-бы всего на один бар, то это обычно приводит к дополнительным потерям, плюс ещё и платить комиссию со спредом каждый раз. Модель будет прибыльной только если она будет открывать сделку, ждать конца тренда, и разворачиваться. Без единой ошибки внутри каждого тренда.
Если предсказывать не тренд, а следующий бар, то каждая ошибка будет приводить к меньшим денежным потерям.
Балансировку я не делаю, при прогнозе следующего бара разброс классов и так минимален, я не думаю что +-10% какого-то одного класса сильно повлияет на результат.
Вот тут в статье пишут что балансировку можно заменить правильной оценкой модели (F-мера или R-Precision). Это русский аналог той статьи что СанСаныч давал ссылку ранее.
http://bazhenov.me/blog/2012/07/21/classification-performance-evaluation.html
...
Тем не менее, у этой метрики [точность] есть одна особенность которую необходимо учитывать. Она присваивает всем документам одинаковый вес, что может быть не корректно в случае если распределение документов в обучающей выборке сильно смещено в сторону какого-то одного или нескольких классов. В этом случае у классификатора есть больше информации по этим классам и соответственно в рамках этих классов он будет принимать более адекватные решения. На практике это приводит к тому, что вы имеете accuracy, скажем, 80%, но при этом в рамках какого-то конкретного класса классификатор работает из рук вон плохо не определяя правильно даже треть документов.
Один выход из этой ситуации заключается в том чтобы обучать классификатор на специально подготовленном, сбалансированном корпусе документов. Минус этого решения в том что вы отбираете у классификатора информацию об отностельной частоте документов. Эта информация при прочих равных может оказаться очень кстати для принятия правильного решения.
Другой выход заключается в изменении подхода к формальной оценке качества.
Точность и полнота
Точность (precision) и полнота (recall) являются метриками которые используются при оценке большей части алгоритмов извлечения информации. Иногда они используются сами по себе, иногда в качестве базиса для производных метрик, таких как F-мера или R-Precision. Суть точности и полноты очень проста.
Точность системы в пределах класса – это доля документов действительно принадлежащих данному классу относительно всех документов которые система отнесла к этому классу. Полнота системы – это доля найденных классфикатором документов принадлежащих классу относительно всех документов этого класса в тестовой выборке.
....
F-мера
Понятно что чем выше точность и полнота, тем лучше. Но в реальной жизни максимальная точность и полнота не достижимы одновременно и приходится искать некий баланс. Поэтому, хотелось бы иметь некую метрику которая объединяла бы в себе информацию о точности и полноте нашего алгоритма. В этом случае нам будет проще принимать решение о том какую реализацию запускать в production (у кого больше тот и круче). Именно такой метрикой является F-мера1.
F-мера представляет собой гармоническое среднее между точностью и полнотой. Она стремится к нулю, если точность или полнота стремится к нулю.
итд, там в статье дальше разные красивые графики
Я пробовал классифицировать зигзаг, да, но не точку разворота, а весь тренд который зигзаг показывает, результат 0 если текущий зз тренд идёт вниз, и 1 если тренд идёт вверх. Тренды зз выглядят довольно несбалансированными, но я от них откзалася не поэтому. Мне не понравилось то что для модели нужна очень высокая точность. Если модель пару раз ошибётся в течении тренда и развернёт сделку в неудачное время, даже хотя-бы всего на один бар, то это обычно приводит к дополнительным потерям, плюс ещё и платить комиссию со спредом каждый раз. Модель будет прибыльной только если она будет открывать сделку, ждать конца тренда, и разворачиваться. Без единой ошибки внутри каждого тренда.
Если предсказывать не тренд, а следующий бар, то каждая ошибка будет приводить к меньшим денежным потерям.
Балансировку я не делаю, при прогнозе следующего бара разброс классов и так минимален, я не думаю что +-10% какого-то одного класса сильно повлияет на результат.
Вот тут в статье пишут что балансировку можно заменить правильной оценкой модели (F-мера или R-Precision). Это русский аналог той статьи что СанСаныч давал ссылку ранее.
http://bazhenov.me/blog/2012/07/21/classification-performance-evaluation.html
итд, там в статье дальше разные красивые графики
У меня вот какой вопрос к Юрию. При выяснении рузельтата у тринарной модели, когда в ручную ввожу данные, в результатах иногда выводится символ тире. Тоесть есть 0, есть 1 и есть тире. Так вот что означает тире???
Тоже самое, что означает знаменитая фраза Сократа "Я знаю, чего я не знаю". Тернарный классификатор отвечая минусом, сообщает, что в обучающей выборке не было примеров похожих на классифицируемый паттерн, а потому он не может однозначно отнести его к какому либо классу, т.е. он не может дать утвердительный ответ на предъявленный паттерн. Честно признаётся в отсутствии у него должной компетенции в некоторых областях знаний, а не пытается утвердительно отвечать с наглой рожей на лице на вопросы, на которые он не знает ответов.
Тоже самое, что означает знаменитая фраза Сократа "Я знаю, чего я не знаю". Тернарный классификатор отвечая минусом, сообщает, что в обучающей выборке не было примеров похожих на классифицируемый паттерн, а потому он не может однозначно отнести его к какому либо классу, т.е. он не может дать утвердительный ответ на предъявленный паттерн.
Хм. Ну чтож понятно... скажи а существует ли возможность в обозримом будущем выгружать тернарную модель в файл, чтобы потом использовать её в МКУЛЬ? Так же как и бинарную, а то ручками когда вводишь, есть вероятность ошибится и всё такое.....
Тоже самое, что означает знаменитая фраза Сократа "Я знаю, чего я не знаю". Тернарный классификатор отвечая минусом, сообщает, что в обучающей выборке не было примеров похожих на классифицируемый паттерн, а потому он не может однозначно отнести его к какому либо классу, т.е. он не может дать утвердительный ответ на предъявленный паттерн. Честно признаётся в отсутствии у него должной компетенции в некоторых областях знаний, а не пытается утвердительно отвечать с наглой рожей на лице на вопросы, на которые он не знает ответов.
Судя по приложенной картинке, я правильно понял суть? Слева бинарный классификатор; справа - тернарный (белая зона это "минус")
Если так, то идея по-моему хорошая, почему-то я раньше не встречал её, можете пожалуйста какие-то статьи по тернарному классификатору посоветовать?
Дописал позже:
С интуитивной точки зрения эта задача довольно простая. Допустим есть 2 предиктора (X и Y), это значит что работать нужно в 2-мерном пространстве (как на картинках выше). Далее надо огородить такое 2-мерное пространство, которое включает в себя все классы "купить" (синяя заливка). Затем, огородить второе пространство, включающее все классы "продать" (красная). Оба огороженных пространства не должны пересекаться. Для классификации новых данных нужно просто посмотреть в какое огороженное пространство попадает искомая точка. Если никуда не попадает (белый цвет на правой картинке) - то ясно видно что модель про эту точку сказать ничего не может, и торговать в данный момент не следует.
С 3 предикторами будет уже 3-х мерное пространство, где классы будут огорожены некими трехмерными объёмными фигурами. Итд, чем больше предикторов, тем многомернее фигуры.
Такие модели существуют? Обычно классификаторы находят в пространстве некую гиперплоскость, которая разделяет классы. А тут нужны две замкнутые гиперфигуры.
Mihail Marchukajtes:
...
В первых версиях предиктора 6 входов оптимизировались порядка 40 минут, что было крайне не удобно, а сейчас 9 входов делает за 10 минут. И от этого качество модели только увеличилось. Теперь проблема в другом, где же найти столько входных данных. Но мы не лыком шиты. В запасе есть ещё что предложить предиктору :-)Судя по приложенной картинке, я правильно понял суть?
Слева бинарный классификатор; справа - тернарный (белая зона это "минус")
Если примитивно для чайников, то вполне сойдёт в качестве наглядного пособия.
Если так, то идея по-моему хорошая, почему-то я раньше не встречал её, можете пожалуйста какие-то статьи по тернарному классификатору посоветовать?
Если в гугле не забанили, то можно поискать по фразе "тернарный классификатор машинное обучение"
Если в гугле не забанили, то можно поискать по фразе "тернарный классификатор машинное обучение"
Другими словами "Посмотрите первую ссылку в гугле которая ведёт на мой сайт" :)
Я нашёл, у вас комитет из двух моделей, это совсем не то как я понял и написал выше.