Есть ли закономерность в хаосе? Попробуем поискать! Машинное обучение на примере конкретной выборки. - страница 21

 

Срезал ещё два года с этой выборки и средняя на Exam уже стала -485 (было - 1214) , а число моделей, преодолевших придел в 3000 пунктов стало 884 (было в последний раз 277).

Однако, результаты на выборке test ухудшились со среднего значения 2115 до 186 пунктов, т.е. существенно. Что это - меньше примеров стало в выборке train похожих на выборку test?

Среднее число деревьев сократилось до 7 с 10.

Перелом нуля на графике распределение баланса сместилось к центру.


 
Aleksey Vyazmikin #:

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

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

Если найдутся для рынка предикторы с закономерностью, то ООС тоже будет похож на трейн. Но не так как сейчас больше половины моделей в минус и треть в плюс. Все успешные модели стали такими случайно, от случайного seedа.

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

Aleksey Vyazmikin #:

Участвует только для контроля остановки обучения, т.е. если на test нет улучшений при обучении на train, то обучение останавливается и деревья удаляются до точки, где было последнее улучшение на модели test.

Тогда понятно почему тесты тоже хорошие. По сути это подгонка под тест. Я это перестал делать для 1 обучения. Делаю валкинг фовард, склеиваю все ООС, потом из множества вариантов склеенных ООС выбираю лучшие гиперпараметры модели (глубина, число деревьев и т.д.). Предполагаю, что и Exam будет примерно такой же как и выбранная склейка всех ООС. В том варианте за 5 лет, у меня переобучение раз в неделю - это сотни обучений и кусков ООС.

Aleksey Vyazmikin #:

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

примитивные стратегии, особенно на участках флэта рынка.

Ну эти 61 вы выбрали из 5000+. У меня и общее количество меньше и количество выбранных. Да и при добавлении по 1, после 3-4 отобранных, дальнейшее добавление признаков только ухудшают результат на ООС.

Aleksey Vyazmikin #:

Вообще я могу и больше предикторов добавить, ведь сейчас только по сути с 3 ТФ они используются, за небольшим исключением - думаю ещё пару тысяч можно и добавить, но вот будут ли все использованы должным образом при обучении - сомнительно, учитывая что 10000 вариантов seed для 61 предиктора дают такой разброс...

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

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

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

Aleksey Vyazmikin #:

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

На нижнем рисунке прибыльный вариант, но за 5 лет было всего 2 периода в 2017 году с сильным ростом (видимо был сильный предсказуемый тренд), модель на этих 2х периодах заработала больше всего. А хорошо бы иметь равномерный во времени рост. Я бы такую модель выключил через месяц бездействия.
Можно конечно сделать советника - ждуна белых лебедей. Но я предпочел бы активную торговлю.

 
Aleksey Vyazmikin #:

Срезал ещё два года с этой выборки и средняя на Exam уже стала -485 (было - 1214) , а число моделей, преодолевших придел в 3000 пунктов стало 884 (было в последний раз 277).

Однако, результаты на выборке test ухудшились со среднего значения 2115 до 186 пунктов, т.е. существенно. Что это - меньше примеров стало в выборке train похожих на выборку test?

Среднее число деревьев сократилось до 7 с 10.

Перелом нуля на графике распределение баланса сместилось к центру.


Ну вообще стремятся, чтобы ошибка на трейне и тесте были примерно одинаковыми. Вот ваш Exam движется в сторону трейна и теста т.е. вверх, а они к exam т.е. вниз. Переобучение падает.
 
RomFil #:
Доброе время суток! Можете выложить файлы из первого сообщения, тоже хочется попробовать одну идею.
Ссылка для скачивания: https://transfiles.ru/bvhrv
 
elibrarius #:

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

Если найдутся для рынка предикторы с закономерностью, то ООС тоже будет похож на трейн. Но не так как сейчас больше половины моделей в минус и треть в плюс. Все успешные модели стали такими случайно, от случайного seedа.

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

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

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

elibrarius #:

Тогда понятно почему тесты тоже хорошие. По сути это подгонка под тест. Я это перестал делать для 1 обучения. Делаю валкинг фовард, склеиваю все ООС, потом из множества вариантов склеенных ООС выбираю лучшие гиперпараметры модели (глубина, число деревьев и т.д.). Предполагаю, что и Exam будет примерно такой же как и выбранная склейка всех ООС. В том варианте за 5 лет, у меня переобучение раз в неделю - это сотни обучений и кусков ООС.

Главное не отделять последний экзаменационный участок.

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

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

elibrarius #:

Ну эти 61 вы выбрали из 5000+. У меня и общее количество меньше и количество выбранных. Да и при добавлении по 1, после 3-4 отобранных, дальнейшее добавление признаков только ухудшают результат на ООС.

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

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

elibrarius #:

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

Что значит "примерно одинаковые", я так полагаю, что речь идет о метриках каких либо или о чём? Конечно, данные можно пробовать другие, взять другой инструмент к примеру.

elibrarius #:

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

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

elibrarius #:

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

Можно конечно сделать советника - ждуна белых лебедей. Но я предпочел бы активную торговлю.

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

elibrarius #:
Ну вообще стремятся, чтобы ошибка на трейне и тесте были примерно одинаковыми. Вот ваш Exam движется в сторону трейна и теста т.е. вверх, а они к exam т.е. вниз. Переобучение падает.

А по какой метрике похожи?

Вот смотрите, к примеру, берем метрику Precision, вычитаем из train этот показатель на выборке test, - получается дельта (ось y), а по х смотрим прибыль на выборке exam.

Особой зависимости прям таки не наблюдается, или как?

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

Вот характеристики этой модели


А вот метрики другой модели, с убытками на двух выборках

Вот характеристики модели

 
Aleksey Vyazmikin #:

Неудобно отвечать в стиле форума, много раз нажимая ответить. Ниже мои ответы выделены просто цветом.

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

> Смотрел давно, как кванты строятся, основные варианты. Сначала сортируется столбец.
1) по диапазону, ровный шаг (например от 0 до 1 с шагом значения ровно через 0,1 итого 10 квантов 0.1, 0.2, 0.3 ... 0.9)
2) процентиль - т.е. по количеству примеров. Если делим на 10 квантов, то в каждый квант помещаем 10% от числа всех строк, если много дублей, то некоторые кванты будут больше 10%, т.к. дубли не должны попадать в др. кванты, например если дублей 30% от всей выборки, то в этот квант они все попадут. В зависимости от числа примеров в каждом кванте может быть такое распределение 0.001, 0.12,0.45,0.51,0,74, ... 0.98.
3) есть комбинация обоих типов

Так что ничего в построении квантов супер умного нету. Я себе оба этих метода квантования сделал. И как всегда что-то сделал так, как считаю лучше. Возможно ошибся. Да и без квантования обычно делаю расчеты, а по float данным.
Если вы сделаете все предикторы бинарными, то квантов будет всего 2, в одном все 0, в другом все 1.

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

> Смотрю на графики баланса и на просадки. Автоматизировать выбор пока не получилось. Да подгонка - под лучшую склейку ООС. Но не самой модели (т.е. не под трейн), а подбор лучших  гиперпараметров модели.


Что значит "примерно одинаковые", я так полагаю, что речь идет о метриках каких либо или о чём? Конечно, данные можно пробовать другие, взять другой инструмент к примеру.

> Все которые  сделаны на ценах и машках.

По старому вопросу.


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

> Примеры тут https://www.mql5.com/ru/articles/3473
Хороший вариант, когда найдена закономерность: терйн и тест имеют почти одинаковую ошибку


На рынках чаще что-то такое получается: хороший тест, а после какого-то шага обучения (на рисунке после 3-го) начинается переобучение и ошибка теста начинает расти. Картинки к нейросетям относятся, но с лесами и бустами тоже что-то такое есть, когда модель становится переобученой.




А по какой метрике похожи?

Я не смотрю на стандартные метрики. Как уже говорил смотрю на линии баланса и просадки на нем. Думаю лучше всего получается с хорошим отношением максимального баланса к просадке или фактор восстановления.
Но это не значит, что ваши метрики плохие.
Глубокие нейросети (Часть IV). Создание, обучение и тестирование модели нейросети
Глубокие нейросети (Часть IV). Создание, обучение и тестирование модели нейросети
  • www.mql5.com
В статье рассматриваются новые возможности пакета darch (v.0.12.0). Описаны результаты обучения глубокой нейросети с различными типами данных, структурой и последовательностью обучения. Проанализированы результаты.
 
Ваш текст удалил из блока цитат, а  потом отдельные фрагменты выделил как цитаты. Так вроде удобнее получилось.
 
elibrarius #:

Так что ничего в построении квантов супер умного нету. Я себе оба этих метода квантования сделал. И как всегда что-то сделал так, как считаю лучше. Возможно ошибся. Да и без квантования обычно делаю расчеты, а по float данным.

Методы конечно разные есть, я около 900 квантовых таблиц сейчас использую.

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

По факту бывает, что таких участков 1-2, редко бывает действительно много. И тут либо брать только эти участки, либо брать просто предикторы с такими участками, подобрав лучшую квантовую таблицу.

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

elibrarius #:

Если вы сделаете все предикторы бинарными, то квантов будет всего 2, в одном все 0, в другом все 1.

На самом деле будет один - 0,5 :) Но, таким образом можно будет предиктор разложить на полезные (содержащие потенциально полезную информацию) диапазоны.

elibrarius #:


> Смотрю на графики баланса и на просадки. Автоматизировать выбор пока не получилось. Да подгонка - под лучшую склейку ООС. Но не самой модели (т.е. не под трейн), а подбор лучших  гиперпараметров модели.

Ну это понятно, но не по канонам - метрика модели так же имеет важность, я думаю.

elibrarius #:

> Все которые  сделаны на ценах и машках.

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

elibrarius #:

По старому вопросу.

> Примеры тут https://www.mql5.com/ru/articles/3473
Хороший вариант, когда найдена закономерность: терйн и тест имеют почти одинаковую ошибку


На рынках чаще что-то такое получается: хороший тест, а после какого-то шага обучения (на рисунке после 3-го) начинается переобучение и ошибка теста начинает расти. Картинки к нейросетям относятся, но с лесами и бустами тоже что-то такое есть, когда модель становится переобученой.

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

Не знаю, что там именно за выборка была. Бывали у меня случаи, когда test обучается быстрей train, но чаще это происходит наоборот и между ними ощутимая дельта. В идеальных условиях разница будет маленькой конечно.

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

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

 

Срезал выборку для обучения ещё в два раза.

Моделей уже всего 306, средняя прибыль по exam -2791 пункта.

Зато получилась такая моделька

С такими характеристиками

Мат ожидание конечно упало, но зато вырос Recall в два раза - за счет этого и такой график с большим числом сделок.

Предикторы такие использовались:


И их на 9 меньше, чем в выборке - попробую взять только их и обучиться на всей выборке (на всех строках train).

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

Cплиты делаются только до кванта. Все что внутри кванта считается одинаковыми значениями и дальше уже не делятся. Не понимаю зачем вы вообще что-то ищете в квантах, его основное назначение - ускорение расчетов (вторичное - загрубление/обобщение модели, чтобы не было дальнейшего деления, но можно и просто ограничить глубину float данных) я его не использую, а просто на float данных делаю модели. Делал квантование на 65000 частей - результат абсолютно совпадает с моделью без квантования.

Лично я увидел, что предикторы, во всяком случае мои, не имеют плавных переходов вероятности, а скорей это происходит скачкообразно и меняется на противоположное отклонение, т.е. было +5 и сразу стало -5.

Тоже замечал подобное. Увеличение глубины на 1 резко изменяет прибыльность, иногда в + иногда  в -

На самом деле будет один - 0,5 :) Но, таким образом можно будет предиктор разложить на полезные (содержащие потенциально полезную информацию) диапазоны.

Будет 1 сплит, который разделит данные на 2 сектора - в одном все 0, в другом все 1. Я не знаю что принято называть квантами, я считаю что кванты - это число секторов полученных после квантования. Возможно - это число сплитов, как имеете в виду вы.