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

 
Mihail Marchukajtes:

Реальный смысл всё таки таков. Если на контрольном участке идёт плоходе раздерелине, НЕ важно правильно или нет, сам факт разделения слабенький. И модель проработала не больше 50% от интревала обучения, то такая модель считается переобученной.... ИМХО

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

я придумал интересное решение реализовать что-то подобное через нечеткую логику и встроить в процесс обучения.. позже мб скину что-нибудь :)

 
Maxim Dmitrievsky:

Иногда мозг начинает ломаться.. насчет шума на форексе, это же не радиосигнал, так? Откуда на форексе шум? 


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

В моем представлении "шум" - это предиктор весь или его часть, которая не имеет отношения к целевой переменной, этакая кофейная гуща.


Поясню на примере (повторяю ранее написанное).


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

Берем предиктор: одежда.

Значения предиктора только два: штаны и юбки. В определенных странах такой предиктор обладает 100% предсказательной способностью, т.е. юбки предсказывают женщин, а штаны мужчин. Этот предиктор ВООБЩЕ не имеет шума. Ошибка классификации = 0. Переобучение отсутствует.

Пример надуман и предиктор "одежда" может содержать одежду с названием "юнисекс". Для нас это означает, что такую одежду могут носить как мужчины, так и женщины, т.е. для нашей целевой переменной одежда "юнисекс" ВООБЩЕ не имеет предсказательной способности - это в моем понимании ШУМ.

Если мы возьмем предиктор, в котором имеются значения "штаны", "юбки" и "юнисекс", то "юнисекс" будет являться источником ошибки классификации. Если доля одежды "юнисекс" 30%, то теоретически можно добиться ошибки обучения модели =  30%, но на таком предикторе  ошибка 29% означает переобученность модели в размере 1%!


Я это использую на практике. Благодаря этому мне удалось отобрать предикторы для случайного леса с ошибкой менее 30%. Этот не переобученная модель. Ошибка примерно одинакова при обучении, на тестовых выборка внутри этого же файла и на других внешних файлах.

Что значит уменьшить ошибку в моей примере? Это означает найти такие предикторы, значения которых, шумовые значения, составляли бы менее этих самых 30%. Мне это не удалось. Может быть кому-то удастся.

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


ПС.

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

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

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

В моем представлении "шум" - это предиктор весь или его часть, которая не имеет отношения к целевой переменной, этакая кофейная гуща.


Поясню на примере (повторяю ранее написанное).


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

Берем предиктор: одежда.

Значения предиктора только два: штаны и юбки. В определенных странах такой предиктор обладает 100% предсказательной способностью, т.е. юбки предсказывают женщин, а штаны мужчин. Этот предиктор ВООБЩЕ не имеет шума. Ошибка классификации = 0. Переобучение отсутствует.

Пример надуман и предиктор "одежда" может содержать одежду с названием "юнисекс". Для нас это означает, что такую одежду могут носить как мужчины, так и женщины, т.е. для нашей целевой переменной одежда "юнисекс" ВООБЩЕ не имеет предсказательной способности - это в моем понимании ШУМ.

Если мы возьмем предиктор, в котором имеются значения "штаны", "юбки" и "юнисекс", то "юнисекс" будет являться источником ошибки классификации. Если доля одежды "юнисекс" 30%, то теоретически можно добиться ошибки обучения модели =  30%, но на таком предикторе  ошибка 29% означает переобученность модели в размере 1%!


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

но в целом вроде бы понятно )

 
Maxim Dmitrievsky:

.. там просто отсеиваются неинформативные 


Это глубочайшее заблуждение: работает алгоритм минимизации ошибки, которая может пониматься самым разным образом.  Наиболее пригодным оказывается шум, который содержит бОльшее разнообразие, чем НЕ шум. Алгоритм нахватывается пены с кофейной гущи.

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

Это глубочайшее заблуждение: работает алгоритм минимизации ошибки, которая может пониматься самым разным образом.  Наиболее пригодным оказывается шум, который содержит бОльшее разнообразие, чем НЕ шум. Алгоритм нахватывается пены с кофейной гущи.

я про Jpredictor.. он вроде как сам отсеивает всякие шумовые фичи

в общем это тема больше для экспериментов чем для попыток реально понять что там происходит )

Хочу попробовать эту платформу h2O, там как раз леса с бустингом.. может быть слышали? люди говорят вроде норм, наряду с майкрософтовским и xgbboost

https://www.h2o.ai/

 

Кто не видел рекомендую обратить внимание на эту ветку

 
Vizard_:

Фа с Мишаней не минеры)))
Пойдет для дрочки на попугаях. + LightGBM, + CatBoost.
Хочется получить рез чуть лучше - ставишь питон и все на GPU...

Многие пакеты R отлично работает с GPU. 

Вы запустили CаtBoost ? Так интересуюсь.

Удачи

 
Maxim Dmitrievsky:
я про Jpredictor.. он вроде как сам отсеивает всякие шумовые фичи

в общем это тема больше для экспериментов чем для попыток реально понять что там происходит )

Хочу попробовать эту платформу h2O, там как раз леса с бустингом.. может быть слышали? люди говорят вроде норм, наряду с майкрософтовским и xgbboost

https://www.h2o.ai/

Написана на Java, жрет памяти немерено. Работает не лучше и не хуже аналогичных пакетов R. Есть один недостаток, он же достоинство - постоянное улучшение без обратной совместимости. 

Экспериментировать можно, в работу я бы не рекомендовал (ИМХО)

Удачи

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

Это глубочайшее заблуждение: работает алгоритм минимизации ошибки, которая может пониматься самым разным образом.  Наиболее пригодным оказывается шум, который содержит бОльшее разнообразие, чем НЕ шум. Алгоритм нахватывается пены с кофейной гущи.

"шум" и "overfitting" - жаргонизмы  значение которых все определяют по разному. Интуитивно мы понимаем разницу между "вызубрил" и "выучил" - перевести на язык программ сложновато. Я определяю просто - момент когда ошибка тестирования начинает расти и есть начало "overtraininga" (не одно и тоже с "overfitting"). Если найду скину ссылку на интересную дискуссию по этому вопросу в англоязычном нете.

Удачи

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

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

В моем представлении "шум" - это предиктор весь или его часть, которая не имеет отношения к целевой переменной, этакая кофейная гуща.


Поясню на примере (повторяю ранее написанное).


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

Берем предиктор: одежда.

Значения предиктора только два: штаны и юбки. В определенных странах такой предиктор обладает 100% предсказательной способностью, т.е. юбки предсказывают женщин, а штаны мужчин. Этот предиктор ВООБЩЕ не имеет шума. Ошибка классификации = 0. Переобучение отсутствует.

Пример надуман и предиктор "одежда" может содержать одежду с названием "юнисекс". Для нас это означает, что такую одежду могут носить как мужчины, так и женщины, т.е. для нашей целевой переменной одежда "юнисекс" ВООБЩЕ не имеет предсказательной способности - это в моем понимании ШУМ.

Если мы возьмем предиктор, в котором имеются значения "штаны", "юбки" и "юнисекс", то "юнисекс" будет являться источником ошибки классификации. Если доля одежды "юнисекс" 30%, то теоретически можно добиться ошибки обучения модели =  30%, но на таком предикторе  ошибка 29% означает переобученность модели в размере 1%!


Я это использую на практике. Благодаря этому мне удалось отобрать предикторы для случайного леса с ошибкой менее 30%. Этот не переобученная модель. Ошибка примерно одинакова при обучении, на тестовых выборка внутри этого же файла и на других внешних файлах.

Что значит уменьшить ошибку в моей примере? Это означает найти такие предикторы, значения которых, шумовые значения, составляли бы менее этих самых 30%. Мне это не удалось. Может быть кому-то удастся.

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


ПС.

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

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

Как то пессимизм сквозит в сообщениях..

Мне показалось?

Удачи

Причина обращения: