Блог им. Eugene777

Самообучающиеся системы в R. Random Forest vs Nearest Neighbor.

Все больше и больше нравится использовать R для поиска идей и анализа. 
Сегодня я хочу рассказать о небольшом исследовании и сравнении системы прогнозирования на основе алгоритма случайного леса и  алгоритма ближайшего соседа. 

Вопросы, которые я себе ставил были следующими:
— на сколько алгоритм Random Fores (RF) продуктивнее чем Nearest Neighbor (NN) или наоборот;
— каково влияние параметров количества случайных соседей на работу алгоритма и на сколько оно может оказаться простой подгонкой данных;
— получится ли эффективно сочетать результаты NN для маленькой и большой выборки, избавляясь тем самым от ошибки переоптимизации;
— как оценить надежность обучения;
— какой метод работает лучше, регрессионный или с формализованными ответами;
— когда проводить переобучение;

Данное исследование помогло мне ответить на некоторые вопросы. 

В качестве предикторов были использованы некоторые внутридневные метрики (10 штук) акции AAPL за один год, результатом я считал изменение цены акции от Close первой пятиминутной свечи до конца дня. Сразу скажу, предикторы мне показались неэффективными, но суть исследования, все же, была в оценке методов прогнозирования прежде всего. Я надеялся, что алгоритмы смогут выявить определенные паттерны внутри многомерного пространства и использовать их. 

И так, первый график показывает эквити за последние 60 дней выборки Out of sample, результатом которой бралась величина изменения цены.
(сразу извинюсь за грамматическую ошибку в легенде, переделывать не стал)
Самообучающиеся системы в R.  Random Forest vs Nearest Neighbor.



И так, мы видим результат, если бы мы каждый день покупали Apple в сравнении с торговлей Long+Short. Random Forest выглядит достаточно убедительно, за исключение серьезного DrawDown в конце. Неплохо ведут себя NN для 10 и 30 соседей, однако, совокупная эквити для трех NN выглядит неубедительно. 

Теперь возьмем и формализуем результат в терминах Flat/Long/Short и посмотрим, что получилось.

Самообучающиеся системы в R.  Random Forest vs Nearest Neighbor.

Ближние соседи для 10 точек выглядят молодцом, даже немного лучше чем Random Forest. Все остальное очень плохо.

За 60 дней результат в абсолютном выражении очень неплох. Он, кстати, выражен в пунктах, то есть если мы торгуем 100 акций, его надо умножить на 100 и вычесть комиссии. 

А теперь посмотрим, на сколько эффективно такое обучение вообще. Out of Sample в этом случае будут 30 процентов выборки. 
Здесь я приведу два графика. Один плох совсем, другой выглядит неплохо для Random Forest.



Самообучающиеся системы в R.  Random Forest vs Nearest Neighbor.

 
 Формализованное обучение:
Самообучающиеся системы в R.  Random Forest vs Nearest Neighbor. 
 
И второй массив случайных данных. 

Самообучающиеся системы в R.  Random Forest vs Nearest Neighbor.
 
 Самообучающиеся системы в R.  Random Forest vs Nearest Neighbor.

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

И так, выводы:
— Random Forest выглядит действительно лучше Nearest Neighbor. 
— похоже, параметр ближайших соседей очень сильно влияет на результаты. На каких-то данных лучше работает маленькая выборка, на каких-то — большая. Когда мы говорим о многомерном пространстве и непонятных предикторах, все же все это выглядит очень серьезной авантюрой в стиле бросания дротика. 
— сочетать результаты работы ближних соседей получается плохо. К сожалению, по всей видимости происходит рассогласование, ведущее к отсечке сигналов, при этом отнюдь не гарантируется, что согласованность результатов даст правильное направление к действию.
— оценка надежности обучения требует проверки моделей на разных типах данных Out of sample. Можно увидеть как очень положительный, так и очень отрицательный результат. 
— если сравнивать абсолютные и формализованные значения результатов, вторые выглядят привлекательнее, однако, может быть есть смысл поработать с рядами данных на предмет сглаживания экстремальных значений.
  — по поводу переобучения есть несколько мыслей, но ни требуют дальнейшего исследования.
★9
8 комментариев
от итть, нифига не понял))))) в наше время все было просто — покупай на лоях, продавай на хаях. старею неверное…
avatar
bumbastik, да нет, все правильно!
avatar
Мы работаем в условиях достаточно сильного шума, или, если угодно, в условиях высокой статистической неопределенности. Отсюда, как я полагаю, следует, что обучающая выборка должна быть очень большой, тысячи испытаний, а объем подбираемых параметров маленький.
У Вас изначально небольшая выборка, что ставит результаты под сомнение.
С другой стороны, для метода «ближайшего соседа», строго имхо, надо задавать не фиксированное число соседей, а долю в выборке. 10%, 5 % и так далее.
avatar
SergeyJu, и соглашусь и не соглашусь одновременно по поводу большой выборки и соседей. То что накидало результаты два года назад совсем не обязательно будет работать сейчас. Суть всего, как раз в оперативном переобучении. Количество соседеей — у меня это параметр K, то есть результаты скольки ближайших соседей я беру. Пока выборка статична смысла уходить в проценты по этому параметру я не вижу.
avatar
Если Вам не нравится большой набор во времени — набирайте в пространстве.
В США торгуются тысячи акций, ликвидность которых позволяет купить утром и сдать вечером.
avatar
SergeyJu, я сильно сомневаюсь, что обучение по одному инструменту позволит использовать те же правила на других. Есть, конечно, нормализация, но так чтобы тысячи…
avatar
Тоже пробую RF. Сравнил RF с корреляцией и кластеризацией. Результаты полученные с RF подобны корреляционному анализу, просто в RF это быстрее и непонятней.
avatar
Rustem, мне казалось, это ближе к кластерам, хотя, конечно, могу ошибаться
avatar

теги блога Eugene777

....все тэги



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