Блог им. Replikant_mih

IS/OOS 75%/25% норм? – Ага щаззз.

IS – in sample (оно же обучающая выборка), OOS — out of sample (оно же тестовая выборка). Ну или ближе к обычным алго – IS – там, где оптимизируешь стратегию, OOS – данные, которые стратегия ещё не видела.

 

 

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

 

Из-за того, что несколько раз к данным подступался при разных объёмах этих самых данных, несколько выпятился наружу вопрос достаточности данных в целом и в частности вопрос соотношения IS/OOS в целом.

 

Когда данных совсем мало – без разницы как делить – не хватит ни чтобы обучить (терминология у меня ML’ная, но, по сути, без разницы, ML или классические алгоритмы) ни чтобы оценить.

 

Когда данных чуть побольше – хватает либо чтобы только хоть как-то обучить ИЛИ только адекватно оценить, тоже ни о чем – это обязательные 2 этапа, и выбросить ни один из них по понятным причинам нельзя.

 

Плавно подошли к варианту, когда данных уже достаточно, не прям столько что как выборку не поруби, всем всего хватит, но уже можно играться. Так вот, раньше в голове у меня сидело что-то типа 80/20, 70/30, 60/40. Короче, заметно, что OOS по остаточному принципу. Но это не хорошо. Если давать мало на обучение – плохо обучишься, или подгонишься под состояние. Если давать мало на OOS – нерепрезентативно оценишься или оценишься для конкретного состояния (случайно попавшего на эту выборку).

 

По мере накопления данных в какой-то момент объем данных для обучения стал достаточным, и для тестирования (как я подумал) стал достаточным. Данные продолжили расти, я стал увеличивать абсолютный размер IS, не меняя абсолютный размер OOS. Ну щас-то моя моделька каак обучится ещё лучше, думал я. И по мере роста объема данных эту гипотезу проверял несколько раз. И нифига, что-то менялось при оценке на OOS, но неслучайного роста качества не было. А что было когда я зафиксировал размер IS (он уже был достаточным) и стал увеличивать OOS. Всё стало выравниваться. По метрикам результаты становились все менее случайными (тут не раскрываю, опираюсь на свой набор метрик/критериев, которые использую для различения случайного/закономерного). Т.е. одна и та же модель по результатам её оценки на OOS выглядела всё лучше и лучше, всё «закономерней» и «закономерней».

 

 

Самое крутое, конечно, это что-то типа WFO – в этом случае у тебя OOS в размере всей выборки. Склеиваем маленькие OOS куски, получаем один большой – его результаты это наши целевые OOS результаты.

 

 

Какие я сделал выводы для себя:

— Сначала добираем объем обучающей выборки до некоторого достаточного размера. Как оценить достаточность – на вскидку не скажу (это как пытаться описать модель движения ног сороконожки если ты сороконожка), но опытный трейдер это видит. Ну т.е. объем выборки сначала влияет драматически, потом всё меньше и меньше и когда дельта уходит в линию можно смело «инвестировать» в OOS.

— Дальше наращиваем OOS. OOS много не бывает.

— Если не лень добавить лишние шаги, обертки и т.д., то пилим итерации и WFO, это будет ещё лучше.

— Берем весь объем данных и на нём обучаемся. И в бой. (Что? Не комфортно делать шаг с закрытыми глазами даже если точно знаешь, куда шагаешь? – Ничё не знаю, по крайней мере я делаю так).


P.S. А, да, забыл, текущую мдель обучаю на соотношении: IS/OOS 25%/75%.

 

10 комментариев
это все работает в предположении, что данные +- стационарны во времени. Замечаю такую картину, что будущее лучше учитывает прошлое, чем прошлое отражается в будущем (вроде понятно объяснил ;). Т.е. натренированное на будущем как правило хорошо работает на прошлом и плохо на будущем.
avatar
Roman Ivanov, Ну, я бы наоборот сказал, что это одно из проявлений разнообразных попыток работать со сложными нестационарными данынми.

Т.е. натренированное на будущем как правило хорошо работает на прошлом и плохо на будущем.

Да, что-то такое есть. Думаю, это больше справедливо на больших горизонтах для неких масштабных закономерностей, которые со временем затухают (и такое затухание лучше отторговывается если обуаться на плохом участке, торговать на хорошем, а не наоборот).
avatar
Replikant_mih, ну вот потому я опасаюсь оптимизировать страты на данных из будущего, даже если они как-то частично подмешаны, это грозит подгонкой.
avatar
какого рода данные на входе? бары типа минуток?
avatar
wrmngr, В модели, описываемой в посте, нет, раз в минуту идет дамп некоторых данных. Секретных)). Не минуток (в смысле не свечей ценовых), но раз в минуту).
avatar
Replikant_mih, ну уже обнадёживает)
avatar

Не понимаю проблемы. IS нужна для выбора модели. Есть стандартные рекомендации, типа — не менее, чем число переменных в квадрате или что-то такое. Но в условиях сильной зашумленности все это дело растет.

Я бы сказал, что IS должна быть такой, чтобы на этой IS можно было вычленить хоть что-то из шума. «Секретные метрики» вам в помощь.

 

OS не важен, можно хоть LOO. Но если данных достаточно, то можно всю оставшуюся часть пихать в OOS и делать кросс-валидацию (перемещать разделение на IS и OS по выборке).

 

В итоге все зависит от числа переменных и уровня шума. Много шумов и переменных — LOO, мало переменных и мало шума — K fold и т.д..

 

По-моему вы и так все это прекрасно знаете.

avatar
Kot_Begemot, 
Не понимаю проблемы.

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

Но в условиях сильной зашумленности все это дело растет.

Я бы сказал, что IS должна быть такой, чтобы на этой IS можно было вычленить хоть что-то из шума. «Секретные метрики» вам в помощь.


Ну типа того). Я, правда, на IS результаты давно не смотрю), поэтому мне более критично какова OOS выборка.


LOO — загуглил, жесть какая)), у меня выборка относительно маленькая — скорее да, из-за зашумления, на рынках обычно закономерности не прям лежат на тарелочке с каёмочкой). Т.е. мне не хватит ресурсов для такого облъема вычислений). А так да, K-Fold (оказывается так этот алгоритм называется) хорошая тема и эффективно закрывает этот вопрос, просто сначала обычно простое разделение делаешь, а потом поверх уже лень навешивать что-то).

В итоге все зависит от числа переменных и уровня шума. Много шумов и переменных — LOO, мало переменных и мало шума — K fold и т.д..

Это прям значимая разница будет между тими алгоритмами (ну если K например, до 10), или разница будет определяться чисто размером средней обучающей выборки, т.в. в первом случае это N-1, во втором N-N/k. Если так, то обычно это не стоит того, обычно если данных нехватает, то это в разы или на порядки, а 10-20% не сделают погоды. А вот вычислений порядком прибавится.
avatar
Replikant_mih, ну да, я тоже не понимаю зачем LOO нужон. Я его чисто как предел обозначил) 
avatar
— Берем весь объем данных и на нём обучаемся. И в бой.
Пока противник рисует карты наступления, мы меняем ландшафты, причём вручную. Когда приходит время атаки, противник теряется на незнакомой местности и приходит в полную небоеготовность. В этом смысл, в этом наша стратегия. © ДМБ

теги блога Replikant_mih

....все тэги



UPDONW
Новый дизайн