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

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

блин...  значит таки не понял.. 

 
mytarmailS:

 Что с чем коррелировать должно? как вы это делаете? Я тоже не понимаю..

 Думаю кроме вас тут Это никто не делал )

Поясню еще раз и призываю почитать про вложенную кроссвалидацию (nested crossvalidation).

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

 

Я перебираю параметры обучения модели, на тестовых фолдах кроссвалидации отбираю лучшую модель и потом ее валидирую. Всего я отобрал на тесте 100 моделей (точки на графике). Это лучшие модели на тестовой выборке. Отличаются они тем, что в них используются разные предикторы.

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

Мы имеем корреляцию работы отобранных моделей по тесту с работой на валидации.

 

При варьировании количества предикторов, модель растет от underfit до fully fit. И этот рост характерен и для тех данных, где отбирается лучшая модель, и для тех данных, где отобранная лучшая модель валидируется. Есть консистентность! 

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

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

Поэтому, проводя отбор моделей, но не проводя тестирование самой процедуры отбора вне выборки, мы подгоняем модель. 

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

При моделировании финансовых временных рядов, я уже показывал, у меня, на примере 2 000 отобранных моделей, их метрика качества на тестовых выборках не коррелирует с валидационными.

Вложенная кроссвалидация подразумевает многократное обучение разных моделей - или модели с разными входами или параметрами - на уникальных обучающих выборках с последующим тестированием. Для каждой уникальной выборки выбирается лучшая модель. Затем она еще раз тестируется на уникальной валидационной выборке. Этот процесс повторяется много раз. Внешний слой тестирования нужен для того, чтобы показать, что сама модель и ее процедура отбора дают консистентность результатов in-sample и out-of-sample.

Я указывал на это СанСанычу, Др. и другим участникам. Др. меня понял. СанСаныч не понял.

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

 
Alexey Burnakov:

Поясню еще раз и призываю почитать про вложенную кроссвалидацию (nested crossvalidation).

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

 

Я перебираю параметры обучения модели, на тестовых фолдах кроссвалидации отбираю лучшую модель и потом ее валидирую. Всего я отобрал на тесте 100 моделей (точки на графике). Это лучшие модели на тестовой выборке. Отличаются они тем, что в них используются разные предикторы.

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

Мы имеем корреляцию работы отобранных моделей по тесту с работой на валидации.

 

При варьировании количества предикторов, модель растет от underfit до fully fit. И этот рост характерен и для тех данных, где отбирается лучшая модель, и для тех данных, где отобранная лучшая модель валидируется. Есть консистентность! 

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

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

Поэтому, проводя отбор моделей, но не проводя тестирование самой процедуры отбора вне выборки, мы подгоняем модель. 

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

При моделировании финансовых временных рядов, я уже показывал, у меня, на примере 2 000 отобранных моделей, их метрика качества на тестовых выборках не коррелирует с валидационными.

Вложенная кроссвалидация подразумевает многократное обучение разных моделей - или модели с разными входами или параметрами - на уникальных обучающих выборках с последующим тестированием. Для каждой уникальной выборки выбирается лучшая модель. Затем она еще раз тестируется на уникальной валидационной выборке. Этот процесс повторяется много раз. Внешний слой тестирования нужен для того, чтобы показать, что сама модель и ее процедура отбора дают консистентность результатов in-sample и out-of-sample.

Я указывал на это СанСанычу, Др. и другим участникам. Др. меня понял. СанСаныч не понял.

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

До сих пор не понимаю, уж извините.

Фолды для валидации: они находятся в одном файле с фолдами для тестирования или валидация вообще на новом файле?

 

ПС.

Под кроссвалидацией я понимаю следующий алгоритм: файл делится, например, на 10 фолдов. Учат на первых 9, а на 10 валидация. Затем учат на 2-10, а валидация на 1 фолде. И так двигают фолд валидации. Так? 

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

До сих пор не понимаю, уж извините.

Фолды для валидации: они находятся в одном файле с фолдами для тестирования или валидация вообще на новом файле?

 

ПС.

Под кроссвалидацией я понимаю следующий алгоритм: файл делится, например, на 10 фолдов. Учат на первых 9, а на 10 валидация. Затем учат на 2-10, а валидация на 1 фолде. И так двигают фолд валидации. Так? 

Да.

Один цикл обучения с кроссвалидацией M1 на 10 фолдах, вы правильно понимаете. Для каждой комбинации параметров обучения: на 9-ти фолдах учим, на отложенном проверяем. Так 10 раз. Получаем среднее значение метрики качества на 10 отложенных фолдах. Назовем эту величину m1.

Повторим эту процедуру N раз (все время подсовывая в обучение и тестирование новые данные). 

Вложенная кроссвалидация:

 

Повторяем M - N раз. Каждый цикл M - это уникальная обучающая выборка. Получаем m1, m2, .. mn метрик качества, полученных в ходе обучения и отбора лучших моделей, все на разных данных.

Внешний слой. Каждую отобранную модель M проверяем на уникальной валидационной выборке. Получаем k1, k2, ... kn тестов вне выборки.

Строим точечную диаграмму M vs. K. Получаем оценку того, как изменение в качестве модели на кроссвалидации предопределяет качество вне выборки. 

 

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

 
Alexey Burnakov:


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

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

Проверку модели надо проводить только на данных, которые не имеют НИКАКОГО отношения к процедуре обучения,тестирования и валидации. 

Бррррр.

Так это и предполагается! Проверка делается на отложенной выборке (точнее, выборках, если мы говорим про вложенный подход).

Какая иллюзия? Этот подход по-любому объективнее подгонки модели однократной.

 
Alexey Burnakov:

Бррррр.

Так это и предполагается! Проверка делается на отложенной выборке (точнее, выборках, если мы говорим про вложенный подход).

Какая иллюзия? Этот подход по-любому объективнее подгонки модели однократной.

Вам видней.

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

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

Вам видней.

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

Допустим, у вас это работает постоянно, а не только на примере 2-х месяцев, что может быть случаем.

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

 
Alexey Burnakov:

Допустим, у вас это работает постоянно, а не только на примере 2-х месяцев, что может быть случаем.

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

Недостатки целевой не имеют никакого отношения к методике определения переобученности моделей. Я выполнил несколько заказов с неизвестными мне целевыми и предикторами. Результат везде одинаков, если удалить шумовые предикторы.
 
СанСаныч Фоменко:
Недостатки целевой не имеют никакого отношения к методике определения переобученности моделей. 

Думаю, вы заблуждаетесь. Зашумленные лейблы (целевка) дат диссонанс между тем, что вы видите на своем тесте и тем, что увидите в будущем. Именно для таких случаев введены всякие навороты типа вложенной валидации. Есть даже подходы, которые доказывают, что из нескольких альтернативных моделей на тесте нужно выбрать ту, что похуже.

 

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

 Как вы это определили? Вы отследили работу ваших предикторов на тогда неизвестном будущем?