На самом деле интересно кластеризацию посмотреть, как это будет сгруппировано, будет ли там какая то логика.
Для начала можно взять мартин, антимартин и переворотную. А дальше ifelse: если сделка закрылась в минус, то следующая открывается с удвоенным лотом или просто в противоположном направлении или и то и другое. Что то более сложное с нуля тяжело придумать.
В катбусте есть feature_importances, возможность посмотреть кластера, как в лесах?
Ваша машина переварит таблицу 14 на 180.000.000?
"feature_importances" это важность признаков, при чем тут кластера? Или я что-то не знаю. Такая возможность есть, но я её особо не пользуюсь, так как важность эта считается по сути по вершинам деревьев, что не укладывается в мою концепцию.
Я обучал модели на таблицах в 6 гигабайт. И памяти там потреблялось не более 2х гигабайт, как сейчас помню.
"feature_importances" это важность признаков, при чем тут кластера? Или я что-то не знаю. Такая возможность есть, но я её особо не пользуюсь, так как важность эта считается по сути по вершинам деревьев, что не укладывается в мою концепцию.
Я обучал модели на таблицах в 6 гигабайт. И памяти там потреблялось не более 2х гигабайт, как сейчас помню.
Для леса есть возможность посмотреть важность и кластера. В катбуст это наверно plot_tree.
Данные подготовлю и выложу.
Сделал тестовую версию на 6 столбцов, заняла 11Гб. Notepad++ не смог открыть, говорит слишком большой файл. BD Browser for SQLite уже висит минут 20.
"feature_importances" это важность признаков, при чем тут кластера? Или я что-то не знаю. Такая возможность есть, но я её особо не пользуюсь, так как важность эта считается по сути по вершинам деревьев, что не укладывается в мою концепцию.
Я обучал модели на таблицах в 6 гигабайт. И памяти там потреблялось не более 2х гигабайт, как сейчас помню.
Интересно, как они не забирая все данные в память обучают деревья? Если таблица 6 Гб, то и памяти должно было около 6 гб задействоваться. Дереву же нужно целиком каждый столбец сортировать. Если не забирать всё в память, а каждый раз считывать данные с диска, то это будет тормозно. Единственный вариант - данные не double, а в float типе держать в памяти, но это снизит точность. Для нас с 5 знаками точности, это может и не страшно, но катбуст универсальный софт, думаю физические и математические задачи должны в double точности решаться.
Интересно, как они не забирая все данные в память обучают деревья? Если таблица 6 Гб, то и памяти должно было около 6 гб задействоваться. Дереву же нужно целиком каждый столбец сортировать. Если не забирать всё в память, а каждый раз считывать данные с диска, то это будет тормозно. Единственный вариант - данные не double, а в float типе держать в памяти, но это снизит точность. Для нас с 5 знаками точности, это может и не страшно, но катбуст универсальный софт, думаю физические и математические задачи должны в double точности решаться.
Код я не изучал, но если логически подумать, то CatBoost, вероятно, преобразует таблицу данных выборки и хранит именно преобразованных вариант, который поддается быстрому сжатию.
Преобразование происходит по сетке квантования каждого предиктора (доступно 6 алгоритмов), и, к примеру, из 1000 разных значений переменной остается 32 варианта(попадающих в диапазон квантовой сетки) и такой вектор данных легко сжимается, к тому же цифры уже только целые (судя по ограничениям размера сетки - типа данных ushort - 2 байта на число), а таблица квантования просто лежит в памяти и используется уже потом при создании модели в код. Вот уже прилично уменьшили размер, а дальше можно сократить объем за счет выбора не всех предикторов для оценки, а их части, что рекомендуется делать при больших выборках, при этом алгоритм рандомизатора позволяет в других деревьях использовать те предикторы, что сразу не попали в "мешок", за счет этого обучение будет ещё и быстрей, но в моделе будет больше деревьев. Наверняка есть и иные хитрости, но главное - это квантование.
Квантованию тут вообще нужно уделять отдельное внимание, в идеале для каждого предиктора нужно подобрать свою сетку и подать уже на обучение данные вместе с сеткой, это позволяет делать алгоритм.
Поэтому, выборку можно самому отквантовать и она будет хорошо сжиматься.
Код я не изучал, но если логически подумать, то CatBoost, вероятно, преобразует таблицу данных выборки и хранит именно преобразованных вариант, который поддается быстрому сжатию.
Преобразование происходит по сетке квантования каждого предиктора (доступно 6 алгоритмов), и, к примеру, из 1000 разных значений переменной остается 32 варианта(попадающих в диапазон квантовой сетки) и такой вектор данных легко сжимается, к тому же цифры уже только целые (судя по ограничениям размера сетки - типа данных ushort - 2 байта на число), а таблица квантования просто лежит в памяти и используется уже потом при создании модели в код. Вот уже прилично уменьшили размер, а дальше можно сократить объем за счет выбора не всех предикторов для оценки, а их части, что рекомендуется делать при больших выборках, при этом алгоритм рандомизатора позволяет в других деревьях использовать те предикторы, что сразу не попали в "мешок", за счет этого обучение будет ещё и быстрей, но в моделе будет больше деревьев. Наверняка есть и иные хитрости, но главное - это квантование.
Квантованию тут вообще нужно уделять отдельное внимание, в идеале для каждого предиктора нужно подобрать свою сетку и подать уже на обучение данные вместе с сеткой, это позволяет делать алгоритм.
Поэтому, выборку можно самому отквантовать и она будет хорошо сжиматься.
Точно, вспомнил, там вроде по умолчанию сетка на 1024 варианта сплитов используется. Если все данные заменить на номера сплита, то в ushort формате можно хранить, а это 2 байта вместо 8, 4-х кратное сжатие. Видимо потому у вас 2 гб вместо 6 и использовалось. Теперь понял для чего эта сетка используется, оказывается для сжатия. Ну и сортировать ее быстрее.
Целый тип char занимает в памяти 1 байт (8 бит) и позволяет выразить в двоичной системе счисления 2^8 значений=256. Тип char может содержать как положительные, так и отрицательные значения. Диапазон изменения значений составляет от -128 до 127. uchar # Целый тип uchar также занимает в памяти 1 байт, как и тип char, но в отличие от него, uchar...
elibrarius: Точно, вспомнил, там вроде по умолчанию сетка на 1024 варианта сплитов используется. Если все данные заменить на номера сплита, то в ushort формате можно хранить, а это 2 байта вместо 8, 4-х кратное сжатие. Видимо потому у вас 2 гб вместо 6 и использовалось.
По умолчанию 254, но не помню, сколько я тогда ставил. Возможно и меньше 2 гб памяти потреблялось - помню точно, что сильно удивился, что так мало.
В любом случае, такой подход позволяет существенно сжать данные даже саму выборку. С нейросетями так не сделать
elibrarius: Теперь понял для чего эта сетка используется, оказывается для сжатия. Ну и сортировать ее быстрее.
Сетка позволяет и меньше подгоняться, ведь используется диапазон значений. Но не всегда это будет хорошо - для ловли теоретических уровней, думаю, надо самому сетку резать.
На самом деле интересно кластеризацию посмотреть, как это будет сгруппировано, будет ли там какая то логика.
Для начала можно взять мартин, антимартин и переворотную. А дальше ifelse: если сделка закрылась в минус, то следующая открывается с удвоенным лотом или просто в противоположном направлении или и то и другое. Что то более сложное с нуля тяжело придумать.
Я могу предоставить ресурсы, пока большего не могу.
Я могу предоставить ресурсы, пока большего не могу.
В катбусте есть feature_importances, возможность посмотреть кластера, как в лесах?
Ваша машина переварит таблицу 14 на 180.000.000?
В катбусте есть feature_importances, возможность посмотреть кластера, как в лесах?
Ваша машина переварит таблицу 14 на 180.000.000?
"feature_importances" это важность признаков, при чем тут кластера? Или я что-то не знаю. Такая возможность есть, но я её особо не пользуюсь, так как важность эта считается по сути по вершинам деревьев, что не укладывается в мою концепцию.
Я обучал модели на таблицах в 6 гигабайт. И памяти там потреблялось не более 2х гигабайт, как сейчас помню.
"feature_importances" это важность признаков, при чем тут кластера? Или я что-то не знаю. Такая возможность есть, но я её особо не пользуюсь, так как важность эта считается по сути по вершинам деревьев, что не укладывается в мою концепцию.
Я обучал модели на таблицах в 6 гигабайт. И памяти там потреблялось не более 2х гигабайт, как сейчас помню.
Для леса есть возможность посмотреть важность и кластера. В катбуст это наверно plot_tree.
Данные подготовлю и выложу.
Сделал тестовую версию на 6 столбцов, заняла 11Гб. Notepad++ не смог открыть, говорит слишком большой файл. BD Browser for SQLite уже висит минут 20.Для леса есть возможность посмотреть важность и кластера. В катбуст это наверно plot_tree.
Данные подготовлю и выложу.
Сделал тестовую версию на 6 столбцов, заняла 11Гб. Notepad++ не смог открыть, говорит слишком большой файл. BD Browser for SQLite уже висит минут 20."feature_importances" это важность признаков, при чем тут кластера? Или я что-то не знаю. Такая возможность есть, но я её особо не пользуюсь, так как важность эта считается по сути по вершинам деревьев, что не укладывается в мою концепцию.
Я обучал модели на таблицах в 6 гигабайт. И памяти там потреблялось не более 2х гигабайт, как сейчас помню.
Интересно, как они не забирая все данные в память обучают деревья? Если таблица 6 Гб, то и памяти должно было около 6 гб задействоваться. Дереву же нужно целиком каждый столбец сортировать. Если не забирать всё в память, а каждый раз считывать данные с диска, то это будет тормозно.
Единственный вариант - данные не double, а в float типе держать в памяти, но это снизит точность. Для нас с 5 знаками точности, это может и не страшно, но катбуст универсальный софт, думаю физические и математические задачи должны в double точности решаться.
Для леса есть возможность посмотреть важность и кластера. В катбуст это наверно plot_tree.
Данные подготовлю и выложу.
Сделал тестовую версию на 6 столбцов, заняла 11Гб. Notepad++ не смог открыть, говорит слишком большой файл. BD Browser for SQLite уже висит минут 20.Покажите картинку, как выглядят кластера из деревьев, пока не понимаю о чём речь.
А зачем его открывать? :) Я просто делаю мини копию с аналогичной структурой для отладки.
Интересно, как они не забирая все данные в память обучают деревья? Если таблица 6 Гб, то и памяти должно было около 6 гб задействоваться. Дереву же нужно целиком каждый столбец сортировать. Если не забирать всё в память, а каждый раз считывать данные с диска, то это будет тормозно.
Единственный вариант - данные не double, а в float типе держать в памяти, но это снизит точность. Для нас с 5 знаками точности, это может и не страшно, но катбуст универсальный софт, думаю физические и математические задачи должны в double точности решаться.
Код я не изучал, но если логически подумать, то CatBoost, вероятно, преобразует таблицу данных выборки и хранит именно преобразованных вариант, который поддается быстрому сжатию.
Преобразование происходит по сетке квантования каждого предиктора (доступно 6 алгоритмов), и, к примеру, из 1000 разных значений переменной остается 32 варианта(попадающих в диапазон квантовой сетки) и такой вектор данных легко сжимается, к тому же цифры уже только целые (судя по ограничениям размера сетки - типа данных ushort - 2 байта на число), а таблица квантования просто лежит в памяти и используется уже потом при создании модели в код. Вот уже прилично уменьшили размер, а дальше можно сократить объем за счет выбора не всех предикторов для оценки, а их части, что рекомендуется делать при больших выборках, при этом алгоритм рандомизатора позволяет в других деревьях использовать те предикторы, что сразу не попали в "мешок", за счет этого обучение будет ещё и быстрей, но в моделе будет больше деревьев. Наверняка есть и иные хитрости, но главное - это квантование.
Квантованию тут вообще нужно уделять отдельное внимание, в идеале для каждого предиктора нужно подобрать свою сетку и подать уже на обучение данные вместе с сеткой, это позволяет делать алгоритм.
Поэтому, выборку можно самому отквантовать и она будет хорошо сжиматься.
Код я не изучал, но если логически подумать, то CatBoost, вероятно, преобразует таблицу данных выборки и хранит именно преобразованных вариант, который поддается быстрому сжатию.
Преобразование происходит по сетке квантования каждого предиктора (доступно 6 алгоритмов), и, к примеру, из 1000 разных значений переменной остается 32 варианта(попадающих в диапазон квантовой сетки) и такой вектор данных легко сжимается, к тому же цифры уже только целые (судя по ограничениям размера сетки - типа данных ushort - 2 байта на число), а таблица квантования просто лежит в памяти и используется уже потом при создании модели в код. Вот уже прилично уменьшили размер, а дальше можно сократить объем за счет выбора не всех предикторов для оценки, а их части, что рекомендуется делать при больших выборках, при этом алгоритм рандомизатора позволяет в других деревьях использовать те предикторы, что сразу не попали в "мешок", за счет этого обучение будет ещё и быстрей, но в моделе будет больше деревьев. Наверняка есть и иные хитрости, но главное - это квантование.
Квантованию тут вообще нужно уделять отдельное внимание, в идеале для каждого предиктора нужно подобрать свою сетку и подать уже на обучение данные вместе с сеткой, это позволяет делать алгоритм.
Поэтому, выборку можно самому отквантовать и она будет хорошо сжиматься.
Теперь понял для чего эта сетка используется, оказывается для сжатия. Ну и сортировать ее быстрее.
Точно, вспомнил, там вроде по умолчанию сетка на 1024 варианта сплитов используется. Если все данные заменить на номера сплита, то в ushort формате можно хранить, а это 2 байта вместо 8, 4-х кратное сжатие. Видимо потому у вас 2 гб вместо 6 и использовалось.
По умолчанию 254, но не помню, сколько я тогда ставил. Возможно и меньше 2 гб памяти потреблялось - помню точно, что сильно удивился, что так мало.
В любом случае, такой подход позволяет существенно сжать данные даже саму выборку. С нейросетями так не сделать
Теперь понял для чего эта сетка используется, оказывается для сжатия. Ну и сортировать ее быстрее.