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

 
Aleksey Vyazmikin #:

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

Я, лично, так и не понял, что за дополнительные 2 координаты у ящика (2 - границы кванта) - предположил, что это обрезка выборки.

Просто ищу что-то полезное для развитие своего метода. У меня склейка "ящиков" так же есть - но алгоритм не идеален.

Если вы конкретно про PRIM, то по моей ссылке просто был пример его работы для двух предикторов x1 и x2. Соответственно, выбирается ящик вида (a1<x1<b1)&(a2<x2<b2). То что остаётся вне ящика, видимо, считается относящимся к другому классу, чем то что внутри. Там была попытка показать на простом примере суть алгоритма - отрезание от ящика на каждом шаге маленького кусочка (пилинг). Какой именно кусочек отрезается и по какому предиктору - выбирается из условия оптимальности шага "траектории".

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

 
Aleksey Nikolayev #:

Если вы конкретно про PRIM, то по моей ссылке просто был пример его работы для двух предикторов x1 и x2. Соответственно, выбирается ящик вида (a1<x1<b1)&(a2<x2<b2). То что остаётся вне ящика, видимо, считается относящимся к другому классу, чем то что внутри. Там была попытка показать на простом примере суть алгоритма - отрезание от ящика на каждом шаге маленького кусочка (пилинг). Какой именно кусочек отрезается и по какому предиктору - выбирается из условия оптимальности шага "траектории".

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

Хорошо, что Вы разобрались - я сразу не понял, спасибо за пояснения.

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

 
Aleksey Vyazmikin #:

Хорошо, что Вы разобрались - я сразу не понял, спасибо за пояснения.

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

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

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

 
Aleksey Nikolayev #:

Как-нибудь приведу соображения по этому поводу.

Может все же лучше реализацию и тест
 
Aleksey Nikolayev #:

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

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

https://xgboost.readthedocs.io/en/stable/tutorials/feature_interaction_constraint.html
 
Aleksey Nikolayev #:

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

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

Aleksey Nikolayev #:

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

Отрезается - это что значит - маленький остаток после сплитавания условно близко к корню дерева?

Aleksey Nikolayev #:

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

А почему не на 5? :) Я за эксперименты!

 
mytarmailS #:
Может все же лучше реализацию и тест

Вряд ли получится. Пока есть лишь сумбурное предположение.

Допустим, откуда-то точно известно, что важным будет правило A<x1<B, но пока есть правило a<x1<b, где a<A и B<b. Хорошее правило получится самое меньшее за два шага, например 1) a<x1<B и 2) A<x1<B. На практике это может означать, что между этими двумя шагами случайно вклинится шаг разбиения по другому предиктору и это важное правило просто не появится в итоге. Поэтому, количество кусков разбиения на каждом шаге может быть не фиксированным, а определяться из соображений оптимальности. Тогда в особых случаях (почти как для синуса в военное время) их число может быть равным и пяти) Дерево, конечно, при этом перестаёт быть бинарным.

 
Aleksey Vyazmikin #:

Отрезается - это что значит - маленький остаток после сплитавания условно близко к корню дерева?

Там, возможно, вообще нет идеи построить красивое дерево - хотят лишь вырезать "хороший кусочек") Мне близка идея, что скорее нужно вырезать кусочки подходящие для торговли, чем изображать из себя плиточника, которому обязательно надо без зазоров замостить всё пространство) Это вполне соответствует старинной цитате "не пытайтесь быть всё время в рынке". Случаи, когда предикторы не попадают в "хорошие кусочки" просто игнорируем, поэтому деревья оказываются в итоге не очень-то и нужны.

Да, отказ от дерева приводит к возне с возможными пересечениями ящиков, но если это будет работать, то деревья не жалко)

 

Это вроде что-то более серьёзное, чем мои мелкие эксперименты) Вроде, связано с учётом структуры зависимостей между предикторами, которая известна заранее.

 
Aleksey Nikolayev #:

Вряд ли получится. Пока есть лишь сумбурное предположение.

Допустим, откуда-то точно известно, что важным будет правило A<x1<B, но пока есть правило a<x1<b, где a<A и B<b. Хорошее правило получится самое меньшее за два шага, например 1) a<x1<B и 2) A<x1<B. На практике это может означать, что между этими двумя шагами случайно вклинится шаг разбиения по другому предиктору и это важное правило просто не появится в итоге. Поэтому, количество кусков разбиения на каждом шаге может быть не фиксированным, а определяться из соображений оптимальности. Тогда в особых случаях (почти как для синуса в военное время) их число может быть равным и пяти) Дерево, конечно, при этом перестаёт быть бинарным.

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

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

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