Обсуждение статьи "Случайные леса предсказывают тренды" - страница 11

 
CyberCortex:


Я занимаюсь совершенно конкретными вещами, поэтому не склонен обсуждать что-либо "в общем". 

Итак конкретнее.

В оболочке caret используется около 140 пакетов машинного обучения - я использую в своей работе два пакета для лесов случайных деревьев и один пакет для машин опорных векторов (SVM). Как видите делать какие-либо обобщения для инструментов машинного обучения, доступных в R, я не в состоянии. 

Более того.

Это ветка, в которой используется очень ограниченная оболочка Rattle, из которой в данной статье я использовал только пакет randomforest. 

Более того.

Из указанного пакета мною в статье используется только часть функций.

Далее я прокомментирую Ваш пост, используя только эти ограничения, но под свои слова я могу подложить программный код и результаты его использования. 

Итак. 

1. " все финансовые ряды относятся к так называемым временным рядам, в которых важен порядок следования величин. " - никто этого не отрицает и этот порядок не нарушается, хоть это и временной ряд. Вы же, обучив модель на ценах P1, P2, P3...Pn, не меняете порядок их следования при тестировании на Out Of Samples или при реальном использовании.

 Это совершенно не соответствует указанным пакетам. В рамках других пакетов можно реализовать Ваше замечание, но это будет гораздо более сложный код. Тот код, который используется в статье (а именно этот подход является самым распространенным в алгоритмах машинного обучения)выглядит следующим образом:

Исходная выборка (набор данных) разбивается на три части: train (70%), test(15%), validate(15). Алгоритм разбивки следующий: например, для train случайным образом, а не последовательно, выбирается 70% строк исходного набора данных. Из оставшихся 30% опять случайным образом выбирается еще 15%.     Понятно, что оставшиеся 15% - это тоже случайная последовательность строк. Не может быть и речи о какой-либо соблюдении последовательности баров.

Но это еще не все.

Обучение, которое ведется на наборе train, использует только часть данных (примерно 66%). Оставшаяся часть данных - это и есть оценка Out of sample (ООВ). Т.е. бары, на которых было вычислено ООВ, они  были другими, но они были перемешаны с барами, на которых производилось обучение. В статье эта оценка приводится и она всегда дает самую хорошую результативность.

Затем в rattle можно получить оценку обученной модели еще на двух наборах данных. Сравнивая ТРИ оценки можно делать выводы.

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

 2. Я согласен с Вами в одном: если на входе 100% мусорных предикторов, то мы и получаем 100% мусора на выходе. Это очевидно и с этим никто не спорит. Я говорю лишь о том, что существуют алгоритмы, где неважно отбирать данные, потому что они дают хорошие результаты на Out Of Samples с любым количеством мусорных данных, отличных от 100%, ибо мусорные данные не используются де-факто. Здесь также важно отличать алгоритмы, для которых критично сокращение размерности данных, например с помощью анализа главных компонент или автоэнкодеров, от алгоритмов, которые к размерности данных не чувствительны.

 Это не так. В randomforest имеется встроенный алгоритм определения знАчимости предикторов. Этот алгоритм совершенно бесполезен, если среди предикторов имеется мусор. В самом пакете randomforest имеется дополнительная функция для предварительного отсеивания мусорных предикторов, но она недоступна в rattle. 

 "На фондовом рынке распространены исследования о связи экономических причин с направлением движения, но все это не относится к  внутридневным интервалам." - Ну еще как относится, причем к внутридневным интервалам, например выход Non-Farm Payrolls. 

Не знаю, не в курсе про указанный ресурс. НО я хорошо знаю экономику. И могу уверенно утверждать, что часовики по Газпрому не зависят от каких бы то ни было экономических данных по другим предприятиям. По результатам месяца - без вопросов. 

3. Я конечно Вас понимаю, каждый зарабатывает как он умеет, но Вы хоть раз сами реализовывали какие-либо алгоритмы машинного обучения? Я убежден, что для того, чтобы понять как работает алгоритм, его нужно написать самому с нуля. Поверьте, что в этом случае открываются такие вещи, о которых и не пишут в книжках. И даже, казалось бы, очевидные элементы, которые до этого казались легкими, на самом деле работают не так как ты думал:) 

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

 

ПС.

Я написал книгу, в которой имеются более глубокие ответы на поставленные Вами вопросы.

ПСПС

Мой личный опыт показывает, что основное время до 70% уходит на подбор предикторов - тупая и нудная работа.  На почве продажи книги образовался некоторый коллектив - никому не удается сделать быстрый и эффективный подбор предикторов, который бы не порождал переобученные модели. Причем большинство читателей уже вышли за рамки книги и используют более эффективные инструменты для работы. 

С признательностью за Ваш содержательный интерес к ветке. 

 
faa1947:


Спасибо за развернутый ответ.

Но в некоторых местах прошу Вас уточнить.  

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

" все финансовые ряды относятся к так называемым временным рядам, в которых важен порядок следования величин. " 

А потом пишете, что в Random Forest, который вы используете: " Не может быть и речи о какой-либо соблюдении последовательности баров."

И позвольте спросить: каким образом тогда происходит работа Random Forest на временных рядах, если алгоритм изначально использует метод случайных подпространств и перемешивает эти временные ряды?

 "Еще раз, чтобы учить модели на временных рядах нужно прилагать специальные усилия." - тогда мы опять возвращаемся к началу. Зачем же тратить время на подобные алгоритмы, если для того, чтобы заставить их работать на временных рядах требуются специальные усилия? Мы ведь сейчас рассуждаем не с академической точки зрения в рамках исследовательской работы в ВУЗе, где такая работа поощряется, а с точки зрения практики.

"могу уверенно утверждать, что часовики по Газпрому не зависят от каких бы то ни было экономических данных по другим предприятиям." - значит ли это, что на акции Газпрома на внутридневных интервалах никак не влияет индекс РТС, в который входит и Газпром и другие предприятия?

 "Одно дело делать мерсы, а другое на них ездить. Я предпочитаю ездить, но каждый делает свой выбор сам. " - в софистике это называется отступление от первоначального тезиса:) Я же говорил об алгоритмах и их реализации, а Вы незаметно выдвинули тезис об автомобилях, внешне как бы и связанный с исходным тезисом, но не тождественный ему. Мне кажется между алгоритмами и автомобилями есть "небольшая" пропасть. Не обращайте внимания, просто мне нравится подмечать подобные особенности:)

Подведем промежуточный итог: то, что Вы пишете конкретно про Rattle и Random Forest, вероятнее всего, имеет отношение к действительности и Вы разбираетесь в этом.

Но один вопрос остается все еще открытым: почему человек, имея выбор из двух равноценных по качеству классификации алгоритмов (первый из которых прекрасно работает на временных рядах без специальных усилий и навыков, а второй - с таковыми), должен сделать выбор в пользу последнего? И будет ли это в данном случае оптимальным?

 
joo:
не смог пройти мимо такой фразы.. Респект!
Спасибо:)
 
CyberCortex:


Но один вопрос остается все еще открытым: почему человек, имея выбор из двух равноценных по качеству классификации алгоритмов (первый из которых прекрасно работает на временных рядах без специальных усилий и навыков, а второй - с таковыми), должен сделать выбор в пользу последнего? И будет ли это в данном случае оптимальным?

 

Разные инструменты решают разные задачи, которые, в свою очередь определяются доступным материалом.

Rattle - замечательный инструмент чтобы проверить какую-либо идею по-быстрому. Но построить с его помощью рабочую модель будет довольно затруднительно.

Можно углубиться в rattle и из него вытащить журнал с готовыми обращениями в рамках пакета randomforest. Если Ваша целевая переменная, например, предсказываете приращение актива, а не тренды, и к этому Вы сумели подобрать предикторы, то случайная выборка будет очень даже полезной. Если Вы собрались предсказывать тренды, то придется вручную делить выборку на куски, сохраняя последовательность, что в rattle затруднительно (хотя возможно) и работать прямо в пакете randomforest, который не налагает никаких ограничений на алгоритм формирования входной выборки.  Существует довольно обширный набор инструментов по формированию выборок для тестирования. Это отдельные пакеты.

Ну, и в таком духе дальше. Общий вывод: нет самого "оптимального" инструмента.

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

 

ПС. Когда я писал о Газпроме, то имел ввиду о связях котировок с величинами типа прибыли. А индекс - это арифметика, тот же индюк... Но это другая проблема... Хотя использование машинного обучения на фондовом рынке более перспективен, чем на форексе. Как мне кажется.

 
faa1947:

 

Разные инструменты решают разные задачи, которые, в свою очередь определяются доступным материалом.

Rattle - замечательный инструмент чтобы проверить какую-либо идею по-быстрому. Но построить с его помощью рабочую модель будет довольно затруднительно.

Можно углубиться в rattle и из него вытащить журнал с готовыми обращениями в рамках пакета randomforest. Если Ваша целевая переменная, например, предсказываете приращение актива, а не тренды, и к этому Вы сумели подобрать предикторы, то случайная выборка будет очень даже полезной. Если Вы собрались предсказывать тренды, то придется вручную делить выборку на куски, сохраняя последовательность, что в rattle затруднительно (хотя возможно) и работать прямо в пакете randomforest, который не налагает никаких ограничений на алгоритм формирования входной выборки.  Существует довольно обширный набор инструментов по формированию выборок для тестирования. Это отдельные пакеты.

Ну, и в таком духе дальше. Общий вывод: нет самого "оптимального" инструмента.

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

 

ПС. Когда я писал о Газпроме, то имел ввиду о связях котировок с величинами типа прибыли. А индекс - это арифметика, тот же индюк... Но это другая проблема... Хотя использование машинного обучения на фондовом рынке более перспективен, чем на форексе. Как мне кажется.

Спасибо, вопросов больше не имею.
 
хорошая статья
 
Отличная работа!
 
Интересная статья, спасибо. Про R в первый раз услышал, выглядит как очень полезная вещь. Давно хочу сделать нейронную сеть которая сможет сама торговать на основе исторических данных, попробую выгрузить историю из mt5 (ohlc, spread, volumes), передать её в rattle, и посмотреть что получится.
 
Dr.Trader:
Интересная статья, спасибо. Про R в первый раз услышал, выглядит как очень полезная вещь. Давно хочу сделать нейронную сеть которая сможет сама торговать на основе исторических данных, попробую выгрузить историю из mt5 (ohlc, spread, volumes), передать её в rattle, и посмотреть что получится.

В Rattle шесть моделей, одна из них НС. Рекомендую сравнить результаты НС со случайными лесами, ada и SVM. Думаю, что результат Вас очень удивит.

 
Dr.Trader:
Интересная статья, спасибо. Про R в первый раз услышал, выглядит как очень полезная вещь. Давно хочу сделать нейронную сеть которая сможет сама торговать на основе исторических данных, попробую выгрузить историю из mt5 (ohlc, spread, volumes), передать её в rattle, и посмотреть что получится.

Вот как раз для этого rattle и не предназначен. Работать нужно прямо в R. Вот здесь вариант такого решения https://www.mql5.com/ru/articles/1103.

Успехов

Третье поколение нейросетей: "Глубокие нейросети"
Третье поколение нейросетей: "Глубокие нейросети"
  • 2014.11.27
  • Vladimir Perervenko
  • www.mql5.com
Статья посвящена новому и очень перспективному направлению в машинном обучении — так называемому "глубокому обучению" и конкретней "глубоким нейросетям". Сделан краткий обзор нейросетей 2 поколения, их архитектуры связей и основных видов, методов и правил обучения и их основных недостатков. Далее рассмотрена история появления и развития нейросетей 3 поколения, их основные виды, особенности и методы обучения. Проведены практические эксперименты по построению и обучению на реальных данных глубокой нейросети, инициируемой весами накапливающего автоэнкодера. Рассмотрены все этапы от выбора исходных данных до получения метрик. В последней части статьи приведена программная реализация глубокой нейросети в виде индикатора-эксперта на MQL4/R.