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

 
elibrarius:

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

Но это конечно ИМХО

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

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

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

Ни деревья ни НС не разделяют строки по времени, а даже перемшивают их. Поэтому никаких деревьев "потом" не строится. Они все на равномерно перемешанных данных строятся. Строки из 2014 и 2016 могут стоять рядом.

Если для НС не перемешивать строки, то она как раз переобучится на первые примеры и зайдет в тупик и последние данные не будут ее доучивать. После перемешивания строк НС равномерно учится. Деревьям можно не перемешивать строки если r=1 (доля строк для обучения одного дерева), но обычно его ставят <1 чтобы избежать переобучения, поэтому тоже надо перемешать, чтобы при r=0.5 мы не взяли только данные за 2014 и 2015.

Aleksey Vyazmikin:
не могу понять как провести эксперимент, который поможет определить, какой длины должна быть каждая из трех выборок. Есть у кого идеи по этому поводу?

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

 
Aleksey Vyazmikin:

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

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

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

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


 
elibrarius:

Ни деревья ни НС не разделяют строки по времени, а даже перемшивают их. Поэтому никаких деревьев "потом" не строится. Они все на равномерно перемешанных данных строятся. Строки из 2014 и 2016 могут стоять рядом.

Не совсем возможно я донес мысль.

Вот смотрите, построили мы одно дерево на учебной выборке, оно охватило 10% выборки (Recall) и так допустим 20 деревьев, каждое добавляет там по 3%-7% к Recall, но это у нас на выборке обучения, в то время как на тестовой выборке, может только 5 и 6 дерево вообще даст какой то отклик по полноте и точности, а деревья перед и после будут тогда шумом, но если те, что "после" будут обрезаны алгоритмом, то те что "до" останутся. Таким образом мы получим модель, которая получила деревья помогающие классификации и те, что ей мешают или просто ведут себя пассивно. Поэтому и возникает вопрос именно в размере тестовой выборки и её наполнении.

Всего у меня порядка 14к строк, их надо разделить на 3 выборки.

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

 
elibrarius:

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

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


Гляну видео, спасибо, но лучше бы я посмотрел от Японцев или ещё от кого независящего...

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

А какой алгоритм обрежет деревья из уже построенного леса? Лес закончит наращиваение либо при достижении определенного количества либо др. методом, когда сочтет, что хорошо обучился. Если будет обрезка при обучении, значит это положительно сказывается на ошибке на train (и при наличии на  valid).

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

 
elibrarius:

А какой алгоритм обрежет деревья из уже построенного леса? Лес закончит наращиваение либо при достижении определенного количества либо др. методом, когда сочтет, что хорошо обучился. Если будет обрезка при обучении, значит это положительно сказывается на ошибке на train (и при наличии на  valid).

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

elibrarius:

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

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

 
Aleksey Vyazmikin:

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

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

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


1. Установите линейную регрессию или дерево решений на данные (здесь выбрано дерево решений в коде) [вызов x как input и y в качестве output] (1 дерево обучается на данных)

2. Вычислите погрешности ошибок. Фактическое целевое значение, минус прогнозируемое целевое значение [e1 = y — y_predicted1]

3. Установите новую модель для отклонений в качестве целевой переменной с одинаковыми входными переменными [назовите ее e1_predicted] (2 и остальные деревья обучаются на ошибках)

4. Добавьте предсказанные отклонения к предыдущим прогнозам
[y_predicted2 = y_predicted1 + e1_predicted]

5. Установите еще одну модель оставшихся отклонений. т.е. [e2 = y — y_predicted2], и повторите шаги с 2 по 5, пока они не начнутся overfitting, или сумма не станет постоянной. Управление overfitting-ом может контролироваться путем постоянной проверки точности на данных для валидации.


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

Градиентый бустинг — просто о сложном
Градиентый бустинг — просто о сложном
  • 2018.11.27
  • neurohive.io
Хотя большинство победителей соревнований на Kaggle используют композицию разных моделей, одна из них заслуживает особого внимания, так как является почти обязательной частью. Речь, конечно, про Градиентный бустинг (GBM) и его вариации. Возьмем, например. победителя Safe Driver Prediction, Michael Jahrer. Его решение — это комбинация шести...
 
Aleksey Vyazmikin:

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

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

 
elibrarius:

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

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