Машинное обучение в трейдинге: теория, модели, практика и алготорговля - страница 97
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Продолжайте не доверять importance при использовании для форекс. Ирис это очень простые данные, там есть прямые закономерности между имеющимеся данными и классами. RF достаточно найти минимальный набор предикторов на которых можно определить классы iris - и всё готово.
а что RF может ловить не прямые зависимости? мне кажется что для рынка не работает исключительно из за того что предикторы тухлые, были бы нормальные предикторы работало бы как и с ирисами с ошибкой под 95%
С ирисами всё просто - если лепесток от такой-то до такой-то длинны то это класс 1, а если от такой-то до такой-то ширины то это уже класс 2, итд. RF тем и занимается что находит интервалы значений предикторов которые лучше всего соответствуют целевым значениям.
Для этой задачи даже лес не нужен, хватит одного дерева для точности 90%:
То есть если конкретному классу соответствует конкретный диапазон значений предикторов или их комбинации, и эти интервалы не пересекаются - то дерево или лес всё решат 100%.
Зависимости на форекс гораздо сложнее, и лесу нужны десятки предикторов для описания целевых значений. Лес обязательно найдёт такие интервалы предикторов и их комбинации которые описывают целевые значения, но это будут просто подобранные комбинации, без всякой логики и анализа. Что возьмёт лес для решения - шум, или действительно важный предиктор - дело случая. Лес для форекс будет правильно работать только если заранее отсеять неподходящие предикторы и оставить для обучения только нужные. А проблема как раз в том что нужные предикторы ещё нужно как-то определить или найти, и лес в этом не помощник.
ForeCA я ещё не смог.
Большая часть времени ушла на то чтобы отсеять предикторы с eigenvalue = 0 после cov() обучающей таблицы (я полагаю что подходят только особым образом коррелирующие между собой предикторы). Спустя сутки, дело дошло до обучения самой ForeCA модели, которая не обучилась потому что ошибка:
Пакет очень требователен к предикторам, много всяких ограничений. Что значит последняя ошибка даже не знаю, буду дальше разбираться.
Дописал позже:
Гугл говорит что удалять предикторы не обязательно. Можно их трансформировать таким образом чтобы они перестали коррелировать, тогда матрица ковариаций будет иметь полный ранг, что требуется для ForeCA. Для whitening есть какие-то функции в самом пакете (с полпинка не заработало, нужно разбираться), плюс теория в ссылках ниже.
Чтобы правильно использовать пакет ForeCA нужно сначала понять и научиться делать это:
http://stats.stackexchange.com/questions/23420/is-whitening-always-good
http://courses.media.mit.edu/2010fall/mas622j/whiten.pdf
1) Лес для форекс будет правильно работать только если заранее отсеять неподходящие предикторы и оставить для обучения только нужные. А проблема как раз в том что нужные предикторы ещё нужно как-то определить или найти, и лес в этом не помощник.
2) Пакет очень требователен к предикторам, много всяких ограничений. Что значит последняя ошибка даже не знаю, буду дальше разбираться.
1) Я предлагал как мне кажется достаточно хорошую идею как такой отбор сделать, но никому не интересно, а сам реализовать не могу
2) Только количество данных уменьшите а то сами знаете)
в продолжение про ирисы, данные там проще чем на форексе и в то же время информативнее...
нужно что то похожее и с ценами делать, я уже выкладывал этот пост но никто не отреагировал, попробую еще раз, есть такое понятие в ВР как динамическое искривление времени - dynamic time warping (DTW), вот с помощью его можно сделать график цены более читабельным, а в следствии более распознаваемым для алгоритма
и все вроде круто но печаль в том что в результате такого преобразования мы получаем две координаты х и у время(синтетическое) и значения
вопрос как теперь это преобразование вернуть в обычный вектор что бы оно не потеряло своих свойств
вот так выглядит преобразование - вверху обычный , внизу dtw
1) Я предлагал как мне кажется достаточно хорошую идею как такой отбор сделать, но никому не интересно, а сам реализовать не могу
2) Только количество данных уменьшите а то сами знаете)
А что предлагаете? Получается что я пропустил? Можно повторить Вашу идею?
вопрос как теперь это преобразование вернуть в обычный вектор что бы оно не потеряло своих свойств
Сделал ещё один пример с ForeCA, в архиве небольшая таблица для теста, и код для работы с ней.
В этот раз всё сделал правильней.
Таблицу с обучающими данными для модели можете брать и свою, главное она должна быть матрицей, без факторов (обучение с lm, можно только регрессию). Число строк должно быть значительно больше числа предикторов, иначе будут ошибки в ForeCA.
Целевые значения у меня 0 и 1, с другими точность будет определяться неправильно, если что подправьте код в RegressionToClasses01(regr) под свой случай в месте где результат регрессии округляется в классы.
trainData - данные для обучения
trainDataFT - данные для фронттеста
Результат:
lm на исходных данных: точность 75% на обучающих данных и 57% на новых.
lm на всех 14 компонентах из foreCA: 75% на обучающих данных и 61% на новых. Немного лучше, но в данном случае +4% это всего +1 правильный результат, таблица совсем небольшая :)
То есть, если предикторы и так уже заранее отобраны, то после ForeCA хуже быть не должно, может даже пару процентов точности прибавит.
Добавил ещё график, с зависимостью точности от числа ForeCA компонент. Судя по всему чем больше компонент, тем надёжней результат. Максимально допустимое число компонент = число предикторов.
Вторая часть эксперимента -
У меня было 14 ранее отобранных предикторов, добавил к ним ещё 14 с рандомными значениями. Максимально допустимое число ForeCA компонент теперь 28.
Точность предсказания со всеми 28 компонентами на тренировочных данных в обоих случаях (с и без foreCA) 76%, точность на новых данных в обоих случаях 57%.
С мусором в предикторах foreCA по-моему не справился, ожидаемого чуда я не увидел.
Так что??