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

 
Rorschach:

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

Про какой движок речь? В самописном брутфорсом или генетикой, для начала.

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

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

 
Aleksey Vyazmikin:

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

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

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

Для начала можно взять мартин, антимартин и переворотную. А дальше ifelse: если сделка закрылась в минус, то следующая открывается с удвоенным лотом или просто в противоположном направлении или и то и другое. Что то более сложное с нуля тяжело придумать.

 
Rorschach:

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

Для начала можно взять мартин, антимартин и переворотную. А дальше ifelse: если сделка закрылась в минус, то следующая открывается с удвоенным лотом или просто в противоположном направлении или и то и другое. Что то более сложное с нуля тяжело придумать.

Я могу предоставить ресурсы, пока большего не могу.

 
Aleksey Vyazmikin:

Я могу предоставить ресурсы, пока большего не могу.

В катбусте есть feature_importances, возможность посмотреть кластера, как в лесах?

Ваша машина переварит таблицу 14 на 180.000.000?

 
Rorschach:

В катбусте есть feature_importances, возможность посмотреть кластера, как в лесах?

Ваша машина переварит таблицу 14 на 180.000.000?

"feature_importances" это важность признаков, при чем тут кластера? Или я что-то не знаю. Такая возможность есть, но я её особо не пользуюсь, так как важность эта считается по сути по вершинам деревьев, что не укладывается в мою концепцию.

Я обучал модели на таблицах в 6 гигабайт. И памяти там потреблялось не более 2х гигабайт, как сейчас помню.

 
Aleksey Vyazmikin:

"feature_importances" это важность признаков, при чем тут кластера? Или я что-то не знаю. Такая возможность есть, но я её особо не пользуюсь, так как важность эта считается по сути по вершинам деревьев, что не укладывается в мою концепцию.

Я обучал модели на таблицах в 6 гигабайт. И памяти там потреблялось не более 2х гигабайт, как сейчас помню.

Для леса есть возможность посмотреть важность и кластера. В катбуст это наверно plot_tree.

Данные подготовлю и выложу.

Сделал тестовую версию на 6 столбцов, заняла 11Гб. Notepad++ не смог открыть, говорит слишком большой файл. BD Browser for SQLite уже висит минут 20.
 
Rorschach:

Для леса есть возможность посмотреть важность и кластера. В катбуст это наверно plot_tree.

Данные подготовлю и выложу.

Сделал тестовую версию на 6 столбцов, заняла 11Гб. Notepad++ не смог открыть, говорит слишком большой файл. BD Browser for SQLite уже висит минут 20.
В тотал командере просмотр берет большие файлы, от которых  Notepad++ зависает
 
Aleksey Vyazmikin:

"feature_importances" это важность признаков, при чем тут кластера? Или я что-то не знаю. Такая возможность есть, но я её особо не пользуюсь, так как важность эта считается по сути по вершинам деревьев, что не укладывается в мою концепцию.

Я обучал модели на таблицах в 6 гигабайт. И памяти там потреблялось не более 2х гигабайт, как сейчас помню.

Интересно, как они не забирая все данные в память обучают деревья? Если таблица 6 Гб, то и памяти должно было около 6 гб задействоваться. Дереву же нужно целиком каждый столбец сортировать. Если не забирать всё в память, а каждый раз считывать данные с диска, то это будет тормозно.
Единственный вариант - данные не  double, а в float типе держать в памяти, но это снизит точность. Для нас с 5 знаками точности, это может и не страшно, но катбуст универсальный софт, думаю физические и математические задачи должны в double точности решаться.

 
Rorschach:

Для леса есть возможность посмотреть важность и кластера. В катбуст это наверно plot_tree.

Данные подготовлю и выложу.

Сделал тестовую версию на 6 столбцов, заняла 11Гб. Notepad++ не смог открыть, говорит слишком большой файл. BD Browser for SQLite уже висит минут 20.

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

А зачем его открывать? :) Я просто делаю мини копию с аналогичной структурой для отладки.

 
elibrarius:

Интересно, как они не забирая все данные в память обучают деревья? Если таблица 6 Гб, то и памяти должно было около 6 гб задействоваться. Дереву же нужно целиком каждый столбец сортировать. Если не забирать всё в память, а каждый раз считывать данные с диска, то это будет тормозно.
Единственный вариант - данные не  double, а в float типе держать в памяти, но это снизит точность. Для нас с 5 знаками точности, это может и не страшно, но катбуст универсальный софт, думаю физические и математические задачи должны в double точности решаться.

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

Преобразование происходит по сетке квантования каждого предиктора (доступно 6 алгоритмов), и, к примеру, из 1000 разных значений переменной остается 32 варианта(попадающих в диапазон квантовой сетки) и такой вектор данных легко сжимается, к тому же цифры уже только целые (судя по ограничениям размера сетки - типа данных ushort - 2 байта на число), а таблица квантования просто лежит в памяти и используется уже потом при создании модели в код. Вот уже прилично уменьшили размер, а дальше можно сократить объем за счет выбора не всех предикторов для оценки, а их части, что рекомендуется делать при больших выборках, при этом алгоритм рандомизатора позволяет в других деревьях использовать те предикторы, что сразу не попали в "мешок", за счет этого обучение будет ещё и быстрей, но в моделе будет больше деревьев. Наверняка есть и иные хитрости, но главное - это квантование.

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

Поэтому, выборку можно самому отквантовать и она будет хорошо сжиматься.

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