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

[Удален]  

Извините, ребята, есть вопрос.

Какое количество весовых коэффициентов в ваших сетках, и на каком количестве сделок проходит обучение?

Хочу понять соотношение между этими количествами и поразмыслить о зависимости переобучаемости от этого отношения. Спасибо.

 
Maxim Dmitrievsky:
Это перемешивание перед гмм или перед бустом? Надо чекнуть баланс классов для трейн/тест. Может ноли попали в трейн а единицы в тест. Можно ещё попробовать отдельную кластеризацию по бай и селл меткам. 

Перемешивание осуществляется перед созданием GMM.

 Перед этим дропаю метки по условию:

dataset['labels'].loc[dataset['labels'].diff(1) == 0] = np.nan


dataset = dataset.dropna()

это всегда приводит баланс классов к 1/1 с небольшими отклонениями:

count labels 0 before GMM: 57
count labels 1 before GMM: 58

В данном случае 115 меток были перемешаны, и разделены на 4 части. После на основе них было создано 4 модели GMM. C каждой семплится по 1000 меток и они объединяются в один датафрейм. После он разбивается пополам на трейн и тест. 

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

count labels train before train_test_split  lab0/lab1 2006/1994
count labels train before CatBoost lab0/lab1  972/1028
count labels test before CatBoost lab0/lab1  1034/966
Iteration:  0 R^2:  -0.09193595558595069

count labels train before train_test_split  lab0/lab1 1956/2044
count labels train before CatBoost lab0/lab1  968/1032
count labels test before CatBoost lab0/lab1  988/1012
Iteration:  1 R^2:  0.2187933983460144

count labels train before train_test_split  lab0/lab1 1937/2063
count labels train before CatBoost lab0/lab1  968/1032
count labels test before CatBoost lab0/lab1  969/1031
Iteration:  2 R^2:  0.07935341972355503

count labels train before train_test_split  lab0/lab1 2004/1996
count labels train before CatBoost lab0/lab1  1006/994
count labels test before CatBoost lab0/lab1  998/1002
Iteration:  3 R^2:  0.5243959241368454

count labels train before train_test_split  lab0/lab1 2002/1998
count labels train before CatBoost lab0/lab1  999/1001
count labels test before CatBoost lab0/lab1  1003/997
Iteration:  4 R^2:  -0.11495440249539668

count labels train before train_test_split  lab0/lab1 2034/1966
count labels train before CatBoost lab0/lab1  1016/984
count labels test before CatBoost lab0/lab1  1018/982
Iteration:  5 R^2:  -0.2007764868672567

...

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

count labels train before train_test_split  lab0/lab1 2012/1988
count labels train before CatBoost lab0/lab1  1008/992
count labels test before CatBoost lab0/lab1  1004/996
Iteration:  0 R^2:  0.6604621522811843

count labels train before train_test_split  lab0/lab1 1978/2022
count labels train before CatBoost lab0/lab1  1003/997
count labels test before CatBoost lab0/lab1  975/1025
Iteration:  1 R^2:  0.9280130097632814

count labels train before train_test_split  lab0/lab1 2024/1976
count labels train before CatBoost lab0/lab1  1031/969
count labels test before CatBoost lab0/lab1  993/1007
Iteration:  2 R^2:  0.8262169779783981

count labels train before train_test_split  lab0/lab1 1980/2020
count labels train before CatBoost lab0/lab1  1010/990
count labels test before CatBoost lab0/lab1  970/1030
Iteration:  3 R^2:  0.9348696093090818

count labels train before train_test_split  lab0/lab1 2030/1970
count labels train before CatBoost lab0/lab1  1016/984
count labels test before CatBoost lab0/lab1  1014/986
Iteration:  4 R^2:  0.5284975351783288

count labels train before train_test_split  lab0/lab1 2042/1958
count labels train before CatBoost lab0/lab1  1024/976
count labels test before CatBoost lab0/lab1  1018/982
Iteration:  5 R^2:  0.9246045699747673

...

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

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

 
Сбербанк запустил сервис постановки диагноза с помощью нейросетей
Сбербанк запустил сервис постановки диагноза с помощью нейросетей
  • 2020.12.02
  • РБК
  • www.rbc.ru
Сбербанк запустил сервис, в котором диагноз по описанным пациентами симптомам будет ставить искусственный интеллект. Цифровая медицина — перспективное направление, но эксперты пока видят очень много рисков в «лечении» нейросетями Входящие в группу Сбербанка компании — «СберЗдоровье», «СберМед ИИ» и «Лаборатория по искусственному интеллекту» —...
[Удален]  
welimorn:

Перемешивание осуществляется перед созданием GMM.

 Перед этим дропаю метки по условию:

это всегда приводит баланс классов к 1/1 с небольшими отклонениями:

В данном случае 115 меток были перемешаны, и разделены на 4 части. После на основе них было создано 4 модели GMM. C каждой семплится по 1000 меток и они объединяются в один датафрейм. После он разбивается пополам на трейн и тест. 

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

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

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

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

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

Или сделать на каком-то простом примере (не котировках) и сравнить потом.

 
Maxim Dmitrievsky:

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

Или сделать на каком-то простом примере (не котировках) и сравнить потом.

Максим, привет. давно я не заходил сюда... по поводу твоей статьи последней) поставил я все таки питон) пытаюсь разобраться, и у меня куча вопросов))) MARKUP это я так понимаю спред? Метки ты расставляешь просто сравниваю текущее значение с текущим + какое то  рандомное число, в зависимости от знака > или < ставишь метку 1 или 0. правильно? Для теста ты ставишь markup=0.0? при трейне  MARKUP=0,00001 вроде))) правильно?

[Удален]  
Александр Алексеевич:

Максим, привет. давно я не заходил сюда... по поводу твоей статьи последней) поставил я все таки питон) пытаюсь разобраться, и у меня куча вопросов))) MARKUP это я так понимаю спред? Метки ты расставляешь просто сравниваю текущее значение с текущим + какое то  рандомное число, в зависимости от знака > или < ставишь метку 1 или 0. правильно? Для теста ты ставишь markup=0.0? при трейне  MARKUP=0,00001 вроде))) правильно?

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

Я анализирую фидбэки и смотрю что можно улучшить 
 
Maxim Dmitrievsky:

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

Я анализирую фидбэки и смотрю что можно улучшить 

а ок))) просто работа работа))) + малой подрастает времени мало))) 

 

Вопрос созрел. Когда-то написал нубский пост в блоге на тему расположения OOS...

Однако, последние изуверства заставили еще раз задуматься над следующей ситуацией.


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

Делаю обучение на первых пяти годах. Получаю на них прямую на северо-восток. Запускаю на OOS (два года после) - конечно, там такая же прямая.


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

Очевидно, что это совсем дет.садовский вопрос в МО. Поэтому должен быть разобран на 100% вдоль и поперек. Кто в теме, прошу поделиться.

"Out-Of-Sample" - где расположить, справа или слева?
"Out-Of-Sample" - где расположить, справа или слева?
  • 2019.12.10
  • www.mql5.com
Когда-то в паблике столкнулся с мнением, что OOS должен располагаться только справа. Т.е. расположение его слева от интервала Оптимизации - ошибка. Я с этим был категорически не согласен, т.к. не видел разницы. Теперь вижу. Ошибался, был не прав. Представим годовой интервал, на котором есть замечательная закономерность, которую долго и успешно...
 
fxsaber:

Вопрос созрел. Когда-то написал нубский пост в блоге на тему расположения OOS...

Однако, последние изуверства заставили еще раз задуматься над такой ситуацией.


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

Делаю обучение на первых пяти годах. Получаю на них прямую на северо-восток. Запускаю на OOS (два года после) - конечно, там такая же прямая.


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

Очевидно, что это совсем дет.садовский вопрос в МО. Поэтому должен быть разобран на 100% вдоль и поперек. Кто в теме, прошу поделиться.

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

 
Valeriy Yastremskiy:

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

Так пример и подобран так, что на 2-х годах все плодоносит, что бы не "находилось" в рандоме.

Это не гипотетическая ситуация на самом деле.

ЗЫ Похоже, задача сводится к автоматическому поиску интервалов, на которых любая палка колосится. Ну и из OOS выкидывать такие интервалы.