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

 

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

Вопрос: Какие входные переменные нужно убрать из обучающей выборки так как они являются шумом????

На самом деле вопрос этот очень не тривиален, ведь если бы мы знали какие входа являются шумом, а какие нет. То построение модели было бы делом простым. А когда у нас все входа имеют то или иное отношение к выходу. Что тогда????? Какие удалить?

Для меня ответ оказался очень простым.... Нужно оставить только те входные данные, которые имею нормальный закон распределения. Когда гистограмма имеет вид нармального распределения и центральная её часть находится в середине диапазона. Именно такие переменные могут быть полезны для обучения. Я не говорю что именно в таких переменных и есть альфа для выхода. Её там может и не быть. Но сам поиск будет более тщательный и в таких переменных алгоритму больше шансов зацепится и увеличить количество входов. Вот для примера:

Этот вход считает хорошим. Так как имеет нормальное распределение и центральная часть гистограммы находится в середине диапазона

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

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

Так что, как то так....

 

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

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

 
Maxim Dmitrievsky:

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

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


Классификация относительно нуля. Для этих целей данный подход в самый раз ИМХО!

 
Mihail Marchukajtes:

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

В статьях Владимира, есть пункт о удалении выбросов, если выбросы на вашем рисунке №2 удалить, то получится более нормальное распределение.

А еще есть центрирование входных данных - оно еще улучшит ситуацию.

 
elibrarius:

В статьях Владимира, есть пункт о удалении выбросов, если выбросы на вашем рисунке №2 удалить, то получится более нормальное распределение.

А еще есть центрирование входных данных - оно еще улучшит ситуацию.


Что делать когда этот выброс поступит в новых данных? Как его интерпретирует модель?

Удалить выброс из данных это значит удалить весь входной вектор при данном выбросе, а вдруг в этом векторе при других входах есть важные данные. Если природа входа склонна к таким выбросам, то лучше этот вход не брать вообще. ИМХО.

 
Mihail Marchukajtes:

Классификация относительно нуля. Для этих целей данный подход в самый раз ИМХО!


да, если выходы распределены примерно по тому же закону, если нет - будет то же самое переобучение

 
elibrarius:

В статьях Владимира, есть пункт о удалении выбросов, если выбросы на вашем рисунке №2 удалить, то получится более нормальное распределение.

А еще есть центрирование входных данных - оно еще улучшит ситуацию.


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

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

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

так что я хз чему в этой жизни верить. .все нужно перепроверять

 
Maxim Dmitrievsky:

да, если выходы распределены примерно по тому же закону, если нет - будет то же самое переобучение


Ну я всегда балансирую выход на предмет равного количества класса "0" и "1". Тоесть выход у меня сбалансирован и при этом беру входа с нормальным распределением относительно нуля. Оптимизатор приходится запускать несколько раз, но как правило чем больше входов используется в модели, тем лучше её показатели. Поэтому выбираю именну ту модель, которая является более параметрична с максимальным результатом на тестовом участке. Дальше бустинг и другие примочки...

 
Mihail Marchukajtes:

Что делать когда этот выброс поступит в новых данных? Как его интерпретирует модель?

Удалить выброс из данных это значит удалить весь входной вектор при данном выбросе, а вдруг в этом векторе при других входах есть важные данные. Если природа входа склонна к таким выбросам, то лучше этот вход не брать вообще. ИМХО.

В новых данных выбросы тоже удаляются, по полученному диапазону при обучении. Допустим удалили от -100 до +100 при обучении, запомнили - и удалили по этим же уровням на новых данных. Делать это надо на абсолютных значениях, а потом можно нормировать.  Без удаления выбросов, у меня центр отнормированных данных все время смещался и они становились не сравнимыми) с самим собой на неделю раньше.

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

 
Mihail Marchukajtes:


Ну я всегда балансирую выход на предмет равного количества класса "0" и "1". Тоесть выход у меня сбалансирован и при этом беру входа с нормальным распределением относительно нуля. Оптимизатор приходится запускать несколько раз, но как правило чем больше входов используется в модели, тем лучше её показатели. Поэтому выбираю именну ту модель, которая является более параметрична с максимальным результатом на тестовом участке. Дальше бустинг и другие примочки...


то есть уже не jPredictor наконец-то? :)