Машинное обучение в трейдинге: теория, модели, практика и алготорговля - страница 560

 
СанСаныч Фоменко:

Я имею аналогичные цифры для леса и ada.

А теперь, если вернуться к нашим "баранам" - как отбросить из произвольного перечня предикторов шум? У меня имеется некий эмпирический алгоритм, который отобрал мои 27 предикторов из 170. Кроме этого я его использовал  для анализа чужих наборов предикторов и тоже удачно. На основании этого опыта я утверждаю, что все методы из R, которые в своих алгоритмах используют "важность" переменных, не могут очистить набор предикторов от шума. 

Обращаюсь ко всем читателям ветки: готов сделать соответствующий анализ, если исходные данные будут представлены в виде RData или экселевском файле, не требующем обработки.

 Кроме этого.

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


решил почитать тему сначала (оказывается, что не читал). И тут возник ряд вопросов, например:

1. леса обучаются на на случайном подмножестве признаков, значит ли это, что признаки, случайным образом не попавшие в обучение, будут промаркированы как "не важные"?

2. как быть\или понять, когда имеются категориальные признаки, и леса заранее будут отдавать им меньшую значимость чем признакам с бОльшим кол-вом категорий?

3. Разве PCA на каждой новой выборке не будет выделять "новые" компоненты, которые будут очень сильно отличаться от компонентов в обучающей выборке, как с этим бороться?

ну и еще в завершение статейка про несколько иной метод выбора признаков (recursive feature elimination): http://blog.datadive.net/selecting-good-features-part-iv-stability-selection-rfe-and-everything-side-by-side/

в статье есть также ссылки на предыдущие части, где описаны в т.ч. и леса

Selecting good features – Part IV: stability selection, RFE and everything side by side
  • 2014.12.20
  • blog.datadive.net
In this post, I’ll look at two other methods: stability selection and recursive feature elimination (RFE), which can both considered wrapper methods. They both build on top of other (model based) selection methods such as regression or SVM, building models on different subsets of data and extracting the ranking from the aggregates. As a wrap-up...
 
Maxim Dmitrievsky:

решил почитать тему сначала (оказывается, что не читал). И тут возник ряд вопросов, например:

1. леса обучаются на на случайном подмножестве признаков, значит ли это, что признаки, случайным образом не попавшие в обучение, будут промаркированы как "не важные"?

2. как быть\или понять, когда имеются категориальные признаки, и леса заранее будут отдавать им меньшую значимость чем признакам с бОльшим кол-вом категорий?

3. Разве PCA на каждой новой выборке не будет выделять "новые" компоненты, которые будут очень сильно отличаться от компонентов в обучающей выборке, как с этим бороться?

ну и еще в завершение статейка про несколько иной метод выбора признаков (recursive feature elimination): http://blog.datadive.net/selecting-good-features-part-iv-stability-selection-rfe-and-everything-side-by-side/

в статье есть также ссылки на предыдущие части, где описаны в т.ч. и леса


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

Существует достаточно большое число алгоритмов определения "важности" признаков (регрессия или категория не имеет значения) - все это есть в R.

Я потратил много времени на их освоения и в конце выяснил, что ПРЕДВАРИТЕЛЬНО надо избавиться от шумовых, не имеющих отношение к целевой переменной признаков, а потом использовать из R, что даст уменьшение ошибки на 5-7%. Менее 20% ошибки добиться не удалось.

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


Цифры такие.  

  • Из нескольких сотен предикторов отобрал 27 предикторов по критерию шума, т.е. "имеющих отношение" к целевой переменной.
  • из 27 на каждом баре отбираю по критерию важности (RFE)
  • на полученных 5-15 признаках учу лес. Этот перечень все время меняется в пределах используемых 27.


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

Любые другие подходы у меня не работают, причем замена одного типа модели на другой ничего не улучшает в смысле переобучения.



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

 
СанСаныч Фоменко:

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

если вернуться к лесам

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

+ процесс обучения леса рандомизирован, при нескольких обучениях подряд можно получить разные результаты, иногда значительно отличающиеся.. тоже не совсем понятно как работать с этим приколом. Ладно если мы зафитили модель, сохранили ее и используем потом.. а если модель самопереобучающаяся.. это нужно несоклько раз подряд обучить, выбрать минимальную ошибку, как-то так.. иначе при множественных прогонах в тестере получаются разные результаты, по моим наблюдениям до 5 и больше, потом они повторяются\чередуются при последующих прогонах

 
Maxim Dmitrievsky:

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

если вернуться к лесам

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

+ процесс обучения леса рандомизирован, при нескольких обучениях подряд можно получить разные результаты, иногда значительно отличающиеся.. тоже не совсем понятно как работать с этим приколом. Ладно если мы зафитили модель, сохранили ее и используем потом.. а если модель самопереобучающаяся.. это нужно несоклько раз подряд обучить, выбрать минимальную ошибку, как-то так.. иначе при множественных прогонах в тестере получаются разные результаты, по моим наблюдениям до 5 и больше, потом они повторяются\чередуются при последующих прогонах


Я не помню описанных Вами страстей. При одинаковом seed результат стабильно одинаков.

 
СанСаныч Фоменко:

Я не помню описанных Вами страстей. При одинаковом seed результат стабильно одинаков.


за что там seed отвечает? уже не помню.. за кол-во признаков как раз? я юзаю alglib лес

 
revers45:
Учителю, не знающему таблицу умножения и разработчику НС, не навязывающему ей, случайные, правильные решения - больше не наливать!

Поддерживаю.

Это просто пустое сотрясение воздуха. Выложите пример, потолочные данные, что бы можно было проверить. 

Существует три основных способа обучения: без учителя (целевая не предъявляется), с учителем (целевая полностью размечена) и semisupervised (не знаю как перевести правильно). Это когда модели предъявляется целевая не полностью (частично)  размеченная. Все остальное от лукавого.

Удачи

 
Maxim Dmitrievsky:

за что там seed отвечает? уже не помню.. за кол-во признаков как раз? я юзаю alglib лес

Да ладно...

set.seed устанавливает генератор случайных чисел в определенное состояние и при повторении вычислений иметь воспроизводимый результат.

Учите матчасть.

 
Vladimir Perervenko:

Да ладно...

set.seed устанавливает генератор случайных чисел в определенное состояние и при повторении вычислений иметь воспроизводимый результат.

Учите матчасть.


че да ладно то? у меня вообще нет такой настройки, поэтому и спросил

значит в мт5 тоже можно сделать, пасиб

 
Vladimir Perervenko:

Поддерживаю.

Это просто пустое сотрясение воздуха. Выложите пример, потолочные данные, что бы можно было проверить. 

Существует три основных способа обучения: без учителя (целевая не предъявляется), с учителем (целевая полностью размечена) и semisupervised (не знаю как перевести правильно). Это когда модели предъявляется целевая не полностью (частично)  размеченная. Все остальное от лукавого.

Удачи

Ну, ну.)) Если вы полностью знаете алгоритм, и можете найти целевую, то на фига вам НС? Можно и без нее все сделать.)

НС и прочее ДМ нужны именно тогда, когда вы не знаете.

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

А вот то, что вы говорите,  и есть сотрясение воздуха. Почитайте что-либо дальше введения. )

Удачи.

 
Yuriy Asaulenko:

Ну, ну.)) Если вы полностью знаете алгоритм, и можете найти целевую, то на фига вам НС? Можно и без нее все сделать.)

Вы сами поняли, что написали? Целевая не ищется, она предварительно определяется как то, чему должна обучится модель. О каком алгоритме Вы говорите?

НС и прочее ДМ нужны именно тогда, когда вы не знаете.

Чего мы не знаем?

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

Мы здесь говорим о двух решаемых задачах: регрессия и классифиация (опускаем кластеризацию и ранжирование). Какие другие "конкретные задачи" Вы имеете в виду?

А вот то, что вы говорите,  и есть сотрясение воздуха. Почитайте что-либо дальше введения. )

???

Удачи.