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

 
TheXpert:

Переобученность это устоявшийся и вполне конкретный термин. Вы его мало того что подменяете так еще и не объясняете что это такое в вашем понимании.

Очень султона напоминает ) по манере общения.

Обученность модели - это когда модель вычленяет суть процесса, в местном жаргоне "паттерны", которые имеют место не только в выборке обучения, но и вне выборки обучения.

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

На этом форуме многие сталкивались с переобученностью (может не осознавая этого), так как очень легко можно получить переобученный советник с помощью оптимизации в тестере. 

 

Но все это философия.

 

А реальность упирается в конкретное умение, в инструменты, которые при этом используются.

Своей статьей и книгой я не пытаюсь решить проблему переобученности, а только приоткрывают дверь в мир предсказательных моделей, которые (модели) учат предсказывать качественные вещи в будущем. Если бы уважаемый gpwr запустил Rattle, потратив пару часов, то его вопросы обладали бы гораздо большим содержанием без демонстрации того, что мою статью он не удосужился прочесть, но имеет мнение о ее содержании. Но самое главное, Rattle охватывает весь процесс создания очень сложных моделей включая оценку результативности моделей вне выборки, перечня знАчимых предикторов, количества найденных паттернов .... Я до сих пор использую Rattle, хотя в реальные модели другие. Просто прикинуть, проверить идею... 20-30 минут и направление разработки может радикально поменяться.

Очень ограниченная цель.

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

Файлы:
PredictTrend.zip  858 kb
 
faa1947:


1. формируем довольно большой набор предикторов, например штук 50 с количество баров 15000

2. С помощью одного из указанных алгоритмов на этих 15 тысячах баров отбираем предикторы - получается обычно от 15 до 20 штук, который используются при построении модели чаще, чем в 20% случаев.

3. Затем берем меньшее окно, например 2000 баров и начинаем его двигать по одному бару, отбирая знАчащие предикторы из отобранных ранее 20 из 50.

4. Конкретный перечень знАчащих предикторов все время меняется. 

 

1. Это как? 60 лет дневной истории нужно?

2. Заглядываете в будущее уважаемый. Отбираете 15-20 предикторов на всей истории, а потом проверяете их на "необученной" выборке из тех же 15000 баров? Если бы мне кто-то сказал сегодня какие 15-20 предикторов будут "отобраны" в будущем, мне больше ничего и не надо чтобы стать миллиардером.

Я использую MatLab. Там много разных тулбоксов. Так что не нужно предполагать что мне ваши методы неизвестны. Также не нужно предполагать что у меня какой-то поверхностный или дилитантный подход (я как раз так думаю о вашем подходе). Пользоваться разными пакетами и тулбоксами все могут. А вот понять их суть не всем дано. И не нужно вам рекламировать мне ваши услуги и книгу. У меня проблемы намного сложнее чем определение переобученности. У меня 10 тысяч экономических показателей-предикторов, а как выбрать те влияющие на рынок очень трудно. Если перебирать по каждому предиктору индивидуально, то я пропущу ситуации типа моего примера выше когда целевой ряд не коллерует с одним из предикторов, но этот предиктор входит в модель целевого ряда. Если перебирать всевозможные сочетания разных предикторов, то жизни на это не хватит. Даже перебор двух предикторов из 10тыс занимает больше недели. Пока у меня отбор N релевантных переменных ведётся биологической self-pruning сетью (долго объяснять, нужна некая подготовленность чтобы понять). Эта сеть побыстрее перебора всевозможных сочетаний предикторов, но всё равно медленная. Так что если у вас есть гениальная идея как посмотрев только на y и x1 в моём примере определить что x1 является частью модели y, то я вас озолочу. 

 
gpwr:

1. Это как? 60 лет дневной истории нужно?

2. Заглядываете в будущее уважаемый. Отбираете 15-20 предикторов на всей истории, а потом проверяете их на "необученной" выборке из тех же 15000 баров? Если бы мне кто-то сказал сегодня какие 15-20 предикторов будут "отобраны" в будущем, мне больше ничего и не надо чтобы стать миллиардером.

Я использую MatLab. Там много разных тулбоксов. Так что не нужно предполагать что мне ваши методы неизвестны. Также не нужно предполагать что у меня какой-то поверхностный или дилитантный подход (я как раз так думаю о вашем подходе). Пользоваться разными пакетами и тулбоксами все могут. А вот понять их суть не всем дано. И не нужно вам рекламировать мне ваши услуги и книгу. У меня проблемы намного сложнее чем определение переобученности. У меня 10 тысяч экономических показателей-предикторов, а как выбрать те влияющие на рынок очень трудно. Если перебирать по каждому предиктору индивидуально, то я пропущу ситуации типа моего примера выше когда целевой ряд не коллерует с одним из предикторов, но этот предиктор входит в модель целевого ряда. Если перебирать всевозможные сочетания разных предикторов, то жизни на это не хватит. Даже перебор двух предикторов из 10тыс занимает больше недели. Пока у меня отбор N релевантных переменных ведётся биологической self-pruning сетью (долго объяснять, нужна некая подготовленность чтобы понять). Эта сеть побыстрее перебора всевозможных сочетаний предикторов, но всё равно медленная. Так что если у вас есть гениальная идея как посмотрев только на y и x1 в моём примере определить что x1 является частью модели y, то я вас озолочу. 

1. Это как? 60 лет дневной истории нужно?

Не будем утрировать.

Я работаю на Форексе. Предсказываю тренды и меня вполне устраивают тренды у которых развороты 50-100 пипсов. Дневки для этого не нужны. В моих примерах - это Н1, 18000 - это три года. 

2. Заглядываете в будущее уважаемый. Отбираете 15-20 предикторов на всей истории, а потом проверяете их на "необученной" выборке из тех же 15000 баров? 

Это уже объяснял. Очень желательно, чтоб Вы читали, что я лично для Вас объясняю. Нет у меня заглядывания в будущее. Результативность всегда вне выборки. Rattle другой возможности, предположенной Вами, не предоставляет, даже если бы я этого захотел. 

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

О полном переборе нет речи. Леса случайных деревьев наиболее хорошо работают, когда количество предикторов меряется тысячами, как-то видел цифру 50 тысяч.   На моих данных показатели таковы: 90 предикторов, 10000 строк (баров) - время обучения модели около минуты на одном ядре. В результате: метки класса, вероятность метки класса, знАчимость каждого предиктора при построении модели.

  Эта сеть побыстрее перебора всевозможных сочетаний предикторов, 

Перебора предикторов нет. Алгоритм следующий. Имеется параметр - количество предикторов в узле дерева, на основании которого принимается решение о классификации. Можно самому назначить, умолчание = sqrt(из максимального количества предикторов у меня 90). Примерно, 9 предикторов используется в каждом узле. Алгоритм, при рассмотрении каждого узла дерева всегда берет 9 предикторов, но всегда выбирает случайным образом из обшего количества=90. За счет крос валидации в конечном итоге выбираются наиболее значимые предикторы, которые и используются в конечном итоге при построении дерева.  

 

ПС.

А почему Вы не используете R? Если платные, то SAS.... 

Матлаб ведь вообще не входит в число специализированных пакетов по статистике. 

 
Объясните, пожалуйста, зачем вы мучаетесь отбирая предикторы? Ведь соврменные алгоритмы способны обрабатывать тысячи предикторов, даже если большинство из этих предикторов случайны. При этом модели получаются надежными.
 
CyberCortex:
Объясните, пожалуйста, зачем вы мучаетесь отбирая предикторы? Ведь соврменные алгоритмы способны обрабатывать тысячи предикторов, даже если большинство из этих предикторов случайны. При этом модели получаются надежными.

К сожалению это не так. Во всяком случае для меня.

Мне не известны алгоритмы отбора предикторов (хотя мне известно несколько десятков алгоритмов отбора), после работы которых (алгоритмов) была бы исключена переобученность модели.

Старое правило статистики все еще действует: "Мусор на входе - мусор на выходе".  

 
faa1947:

К сожалению это не так. Во всяком случае для меня.

Мне не известны алгоритмы отбора предикторов (хотя мне известно несколько десятков алгоритмов отбора), после работы которых (алгоритмов) была бы исключена переобученность модели.

Старое правило статистики все еще действует: "Мусор на входе - мусор на выходе".  

Ну не знаю, я проверял свою программку и вроде все неплохо.

Если можно, приведу цитату из моей писанины на другом ресурсе: "Мы протестировали правильность работы программы на данных, взятых отсюда:

http://archive.ics.uci.edu/ml/index.html

(Сайт Центра машинного обучения и интеллектуальных систем). 

В этом случае использовались данные анализа крови здоровых людей и людей больных раком. Гипотеза заключалась в построении модели, способной прогнозировать рак у человека на основе его анализов. Классифицировать требовалось на 2 класса (болен - не болен).

Длина обучающего примера составила 10000 признаков. 3000 из которых носили случайный характер и специально добавлены для тестирования качества классификации. Всего в обучающей выборке использовано 100 примеров, что, несомненно, очень мало, но больше мы найти не смогли. При тестировании использовались уже другие примеры в количестве также 100 штук. 

http://archive.ics.uci.edu/ml/datasets/Arcene

(Ссылка на архив с оригинальными данными). 

Точность распознавания составила 75% на незнакомых данных. Мы убеждены, что если бы данных для обучения было большее, то можно было бы существенно увеличить точность прогнозов." Конец цитаты.

P.S.: Времени на обучение потребовалось около 2 минут на ПК с 8-ядерным процессором и 8 Gb памяти, потому что время обучения алгоритма растет не экспоненциально в зависимости от количества предикторов. А неинформативные предикторы автоматически не используются.

Если кому интересно, то вот ссылка cybercortex.blogspot.ru (не сочтите за рекламу:)

 
CyberCortex:

Ну не знаю, я проверял свою программку и вроде все неплохо.

Если можно, приведу цитату из моей писанины на другом ресурсе: "Мы протестировали правильность работы программы на данных, взятых отсюда:

http://archive.ics.uci.edu/ml/index.html

(Сайт Центра машинного обучения и интеллектуальных систем). 

В этом случае использовались данные анализа крови здоровых людей и людей больных раком. Гипотеза заключалась в построении модели, способной прогнозировать рак у человека на основе его анализов. Классифицировать требовалось на 2 класса (болен - не болен).

Длина обучающего примера составила 10000 признаков. 3000 из которых носили случайный характер и специально добавлены для тестирования качества классификации. Всего в обучающей выборке использовано 100 примеров, что, несомненно, очень мало, но больше мы найти не смогли. При тестировании использовались уже другие примеры в количестве также 100 штук. 

http://archive.ics.uci.edu/ml/datasets/Arcene

(Ссылка на архив с оригинальными данными). 

Точность распознавания составила 75% на незнакомых данных. Мы убеждены, что если бы данных для обучения было большее, то можно было бы существенно увеличить точность прогнозов." Конец цитаты.

P.S.: Времени на обучение потребовалось около 2 минут на ПК с 8-ядерным процессором и 8 Gb памяти, потому что время обучения алгоритма растет не экспоненциально в зависимости от количества предикторов. А неинформативные предикторы автоматически не используются.

Если кому интересно, то вот ссылка cybercortex.blogspot.ru (не сочтите за рекламу:)

У Вас просто замечательный, причем типовой пример, на которой можно показать проблему.

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

2. Но имеется гораздо более серьезное обстоятельство, причем прямо по теме Вашего вопроса.

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

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

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

 
faa1947:

У Вас просто замечательный, причем типовой пример, на которой можно показать проблему.

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

2. Но имеется гораздо более серьезное обстоятельство, причем прямо по теме Вашего вопроса.

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

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

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

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

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

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

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

 
faa1947:

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

И да, кстати, совсем необязательно использовать "математические величины типа индикаторов". Можно придумать массу собственных эвристик завязанных на цене, объеме, времени и дельте, если хотите. Единственные математические индикаторы, которые я бы стал использовать и которые действительно математические - это среднее, стандартное отклонение и корреляция.
 
CyberCortex:
....

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

не смог пройти мимо такой фразы.. Респект!
Причина обращения: