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

 
elibrarius:

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

Вот алгоритм бустинга, как раз сам изучаю https://neurohive.io/ru/osnovy-data-science/gradientyj-busting/


Я так понимаю это классика бустинга. Может в катбусте что-то свое придумали...

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


elibrarius:

Вы там случайно не листья из бустинговых деревьев с номером > 1 исследуете, подавая на них исходные данные? Если да то результат должен быть случайным, т.к. те деревья учились не на исходных данных, а на ошибках. Т.е. вы решаете задачу, которую дерево и его листья не обучались решать.
Если бы те деревья были из случ. леса  - то все они обучены на исходных данных и их можно использовать (но нет смысла, т.к. 1 дерево сильно уступает по ошибке лесу). В бустинге - нет, т.к. 1 дерево без всех остальных не имеет смысла рассматривать.

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

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

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

 
Aleksey Vyazmikin:

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

А как модель в мт5 вытягиваете? Ну что бы торговать, там, или в тестере прогнать. Думаю как лучше сделать, пока не придумал: или перейти полностью на Пайтон и связать с мт5 или взять бинарник катбуста

 
Maxim Dmitrievsky:

А как модель в мт5 вытягиваете? На что бы торговать там или в тестере прогнать. Думаю как лучше сделать, пока не придумал: или перейти полностью на Пайтон и связать с мт5 или взять бинарник катбуста

Преобразовывается модель для C++ в MQL5 - там фактически только массивы берутся, и есть интерпретатор этой модели на MQL (код не мой). Соответственно модели загружаются в советник, сейчас через файл сразу могу грузить сотни моделей и смотреть их уже в терминале, в том числе через оптимизатор гонять.

 
Aleksey Vyazmikin:

Преобразовывается модель для C++ в MQL5 - там фактически только массивы берутся, и есть интерпретатор этой модели на MQL (код не мой). Соответственно модели загружаются в советник, сейчас через файл сразу могу грузить сотни моделей и смотреть их уже в терминале, в том числе через оптимизатор гонять.

ну вот статью бы написали с каким-то каркасом и идеей (идея должна быть не менее чем космической), и какая помощь нужна, или кооп что там

я так понял, сообщество разделилось: одни вытягивают, другие наоборот обобщают. Я. например, не согласен с таким подходом, может быт просто не до конца вник в идею
 
Maxim Dmitrievsky:

ну вот статью бы написали с каким-то каркасом и идеей (идея должна быть не менее чем космической), и какая помощь нужна, или кооп что там

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

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

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

 
Maxim Dmitrievsky:

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

А я не знаю про сообщество, т.е. не знаю, как там делают иные лица в иных областях?

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

 
Aleksey Vyazmikin:

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

Не уверен в этом, 4-е дерево своими листьями корректирует ошибки первого. Думаю, что только в паре они имеют смысл. Но я могу ошибаться. Т.к. с такими вещами не экспериментировал.

 
elibrarius:

Не уверен в этом, 4-е дерево своими листьями корректирует ошибки первого. Думаю, что только в паре они имеют смысл. Ноя могу ошибаться. Т.к. с такими вещами не экспериментировал.

Если совсем примитивно, то у первого дерева нет отклика на выборку, он возвращает ноль, а у четвертого дерева есть этот отклик и он считает "вероятность" 0,6 - технически исправили ошибку первого дерева, а фактически выявили связь, которой ранее не было вообще. Даже если представить, что все деревья делят всю выборку (а это не так судя по всему), то пусть будет не ноль, а 0,1, а у последующего дерева 0,5, то тут такой же эффект. Там правда вероятность не совсем вероятность, значения в массиве потом преобразовываются в нечто похожее на вероятность только после сложений всех значений активированных бинарных деревьев.

 

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

а вот убрал шум 0,01 до -0,01 из массива с весом ответов бинарных деревьев

Прибыль чуть меньше, зато относительные показатели улучшились.

 

Хм, убрал(обнулил значения) уже бинарным деревьям от -0,02 до 0,02

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

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