Блог им. Eugene777

Немного извратов с Random Forest в R

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

И так, возьмем 1000 дней AAPL, 20 внутридневных метрик и попробуем обучить алгоритмы случайного леса и ближайших соседей и прогнать его на последних 120 днях. 

Результат для числовых значений результата:
Немного извратов с Random Forest в R 

Теперь формализованные значения:
Немного извратов с Random Forest в R 
Выглядит хуже, почти нет разбросам в результатах работы ближних соседей и RF.

Очень хорошо оценить эффективность обучения можно с помощью коэффициента корреляции между нашими результатами и B&H.


А теперь сделаем следующую вещь. Обучим 50 случайных лесов на случайных 80 процентах данных InSample, проверим на оставшихся 20%, и посмотрим, что получилось для каждого из них на наших 120 днях.

Немного извратов с Random Forest в R 


 Теперь это можно проанализировать. Среднее значения для прогонки InSample — 68, OutOfSample — 55. Не стоит сравнивать эти значения между собой, так как объем данных отличается, но это значит, что в среднем леса в произвольной выборке были прибыльными, и наш OutOfSample в среднем тоже оказался прибыльными. 

Теперь посмотрим коэффициент корреляции между этими  значениями. Он равен -0.13, что значит, что зависимости результатов прогнозирования OutOfSample от результата пронозирования InSample нет.


А теперь посмотрим, какая эквити на OutOfSample у нас получится, если мы будем брать среднее прогнозное значение всех 50 лесов.
  
Немного извратов с Random Forest в R 
В общем, неплохо, но смущают просадки. Попробуем заменить абсолютные значения нашей выборки на термины Long/Short/Flat и брать только те случаи, когда перевес за лонг или шорт больше чем у пяти деревьев.

Немного извратов с Random Forest в R
 Получилось красивее, просадки меньше. Коэффициент корелляции равен -0.76, то есть мы в основном шортили, что было вполне оправдано. 

Ну и последним делом я решил попробовать обучить еще один случайный лес уже на результатах этих 50 лесов и прогнать последние двадцать сделок.

Немного извратов с Random Forest в R 

Получилось, честно говоря, не очень, ну и ладно. Данных действительно мало.
 

И так, что я всем этим хотел сказать…
— несмотря на довольно относительные предикторы, самообучающиеся алгоритмы делают интерсные вещи; 
— надо уметь оценивать эффективность обучения и использовать для этого разные возможности; 
— оценка результатов обучения чрезвычайно важна при принятии решения о переобучении и достоверности новых моделей;


На связи!
★15
35 комментариев
молоток!
Тимофей Мартынов, стараемся!
avatar
Eugene777, привет!) где можно по R найти что-нить почитать, руководства и т.д.?
avatar
Макс, привет! Есть документация, есть сообщество русское, думаю, можно найти и очень хороший блог я нашел как раз по временным рядам algorithmist.ru. Человек перестал писать, но там много кейсов практически применимых.
avatar
Eugene777, ок, почитаю! Спасибо!)
avatar
Макс, Matloff N. — Art of R Programming — A Tour of Statistical Software Design — 2011, примитивно, просто и быстро.

Можно и guide — под 1000 страниц!
avatar
Rustem, Оу, круто! Спасибо!)
avatar
Я тебе без всяких алгоритмов скажу: до тех пор, пока люди верят, что разбив стольник на десять десяток они становятся богаче — в них будут без малейшего сомнения разгружать позиции институционалы, уверяя, что сплит 1:7 в начале июня приведет к цене за акцию в $100.

Алиса.У нас пять червонцев. Понятно? Пять на два не делится. Понятно? Попробуем разделить на пять, получается один червонец. Получай…
Базилио.Ты, слушай, не путай меня.
Алиса.Боже сохрани, когда же я путала. Остается четыре червонца. Четыре на пять не делится… Понятно? (Постным голосом.)Уж так и быть, я себе и неделящиеся возьму… Я всегда готова услужить другу.
Базилио.Запутала, обманула, тварь!
avatar
Spekyl, да, запутаться есть в чем!
avatar
Eugene777, и ты туда же…

Ну смотри. Акция AAPL стоит сегодня $600. Через 2-3 недели будет сплит, одну акцию разобьют на семь. Вопрос: сколько будет стоить одна новая акция?
avatar
Spekyl, ты же сам сказал — 100$ =)))
avatar
Eugene777, ну и про то же! Т.е. у тебя сколько сейчас денег есть? Я могу еще по старой цене эппловских акций тебе продать. На бирже их уже не осталось почти, да и обманут там. А мне деньги срочно понадобились.
Только быстро думай, тут уже покупатель едет. Мне всё равно, кому продать, но он мент бывший, а ты мне нравишься. Есть у тебя голова, сразу видно! В общем, если успеешь за 15 минут через вебмани бабки мне скинуть — я мусору скажу, что все акции кончились, быстрее ехать надо было.
avatar
Spekyl, ща, погоди, кредит возьму!
avatar
Eugene777, да я тебе и дам кредит… Не переживай. У тебя прямо сейчас хоть немного денег есть? Надо только маржу внести, а остальное потом заплатишь. Под 8% в рублях — где еще такой процент найдешь? За два дня там всего-то ничего набежит, процентов 16. А прибыль все покроет.
avatar
Начать стоило бы серию постов о двадцати метриках :)

Или это грааль? ;)
avatar
siva, метрики — шлак, честно…
avatar
Eugene777, вот в этом то все и дело.
Имхо.
Хватило бы и двух хороших метрик без всякого леса, да где их взять, вот в чем вопрос.
avatar
SergeyJu, по сути да. Чем меньше — тем лучше, но пост все же не о метриках, а о способюе оценки. На самом деле все сводится с тому, что торговать — тренд или флэт.
avatar
Eugene777, а Вы не пробовали оценить, какие из метрик реально что-то дают Вашему лесу и Вашим ближайшим соседям. Наверняка окажется, что из этих 20 можно оставить 5, а то и 3 и получится результат не хуже.
avatar
SergeyJu, пробовал. Так и есть. В данном случае я просто загнал все что мог. Опять же, хотелось понять как оценивать качество обучения.
avatar
Skifan, немного промазал =)
avatar
Eugene777, да я в предыдущий пост писал )))
avatar
Skifan, я понял!
avatar
А на тиковых данных не хотите проверить?
avatar
Lafert, на тиковых, наверное нет, а вот на секундах — да. Просто сейчас задача стоит доточить робота под не очень быстрый ньюйорк, а там как пойдет.
avatar
Интересно, кто нибудь понял из присутствующих о чем это все?
Написано конечно увлекательно, но к сожалению непонятно!
Автору было бы хорошо немного добавить текста «для чайников» :)
Frank_Cowperwood, на самом деле здесь есть люди, которые разбираются в этом в разы лучше меня. Суть поста в методе оценки обучения алгоритма случайного лесас помощью совокупности случайных лесов, обученых на случайных данных предыдущего периода. А если еще проще, то подогнать алгоритм под прошлые данные достаточно просто, но гарантировать его работоспособность в будущем чрезвычайно сложно.
avatar
Eugene777, я бы с удовольствием почитал бы о сути этого метода, о языке R, о лесах могучих только в более читаемом формате с разъяснениями.
Frank_Cowperwood, трудно объяснять математику «на пальцах».
Вот обзор, попробуйте просмотреть, не вдаваясь в детали.
file:///C:/Users/saltykov/Downloads/trudy_2013_1_117-136.pdf
Смысл в том, чтобы настряпать кучу простых решающих правил (каждое из них называется дерево) и принимать решение по совокупности решений частных правил.
avatar
SergeyJu, ссылка не та.
transactions.krc.karelia.ru/publ.php?plang=r&id=10552
Качните ПДФ по ссылке.
avatar
Frank_Cowperwood, ну для этого есть литература специальная. Я только практик, мне не совсем важно как, главное, чтобы работало.
avatar
Попробуйте сделать шаг за шагом тестирование чтобы не попасть в тренд (как у вас преимущественно short).
Я тоже играю с Random Forest (использую alglib) — результат совсем не впечатляет увы :(
Возможно дело в моих кривых руках и входных данных — я пока только цены и объемы запихал (на скорую руку).
avatar
ELab, есть определенные ньюансы с этим всем. Если у Вас в выборке 80 процентов лонговых сделок, то и лес обучится на лонг не зависимо от того, какие данные на входе.
avatar
Eugene777, я запихывал по 2000 баров для обучения и все равно выходили ямы — алгоритм тупил при OutOfSample внушительными убытками
PS. Есть кнчно и периоды просветления — как в данном примере. Вообщем или я тупой или RandomForest никуда не годится
avatar

теги блога Eugene777

....все тэги



UPDONW
Новый дизайн