Size: a a a

2019 January 24

AS

Arthur Suilin in catboost_ru
Вопрос про custom loss function:
Сustom loss на Питоне работает крайне медленно, в принципе понятно почему, все обращения к интерпретатору должны быть из одного треда.

Нужную мне функцию можно реализовать на Cython или Numba, так что у неё будет сишный интерфейс в обход Питон-интерпретатора, но как подключить её к CatBoost?
Я правильно понимаю, что единственный способ подключить низкоуровневый код - это пересобрать весь CatBoost из исходников вместе с собственным C++ классом, унаследованным от  TUserDefinedPerObjectError?
см. https://github.com/catboost/catboost/blob/master/catboost/tutorials/custom_loss/custom_metric_tutorial.md
Проще никак не получится?
источник

AD

Anna Veronika Dorogush in catboost_ru
Ничего не надо наследовать, надо прямо у этого класса реализовать функции. И перекомпилировать, да.
источник

AS

Arthur Suilin in catboost_ru
Anna Veronika Dorogush
Ничего не надо наследовать, надо прямо у этого класса реализовать функции. И перекомпилировать, да.
И всё равно это будет рабоать только в CPU режиме?
источник

VE

Vasily Ershov in catboost_ru
да, в CPU
но если функция ошибок поточечная (как MSE/Logloss/etc), то добавить ее на GPU  немного сложнее, но относительно реально и можем помочь
источник

AS

Arthur Suilin in catboost_ru
Vasily Ershov
да, в CPU
но если функция ошибок поточечная (как MSE/Logloss/etc), то добавить ее на GPU  немного сложнее, но относительно реально и можем помочь
А как loss, по которому вычисляется градиент, может быть непоточечным? Я имею в виду имено loss, а не custom user metric.

Конкретнее - нужен Poisson loss для цензурированных справа данных, в вычислении производных там используется гамма функция, это реально для GPU?
источник

VE

Vasily Ershov in catboost_ru
реально, вот тут есть список всех спец функций, доступных из коробки в куде https://docs.nvidia.com/cuda/cuda-math-api/group__CUDA__MATH__SINGLE.html
источник

VE

Vasily Ershov in catboost_ru
можно подхачить catboost/cuda/targets/kernel/pointwise_targets_cu
там есть TPoissonTarget, в котором есть Score, Der и Der2 в поточечном интерфейсе
в принципе если их заменить на нужные и пересобрать, то все будет работать и бещз cusom-loss, если выставлять Poisson в опциях пакета 🙂
источник

VE

Vasily Ershov in catboost_ru
работать = работать на GPU
на CPU нужно другие места править
источник

AS

Arthur Suilin in catboost_ru
источник

VE

Vasily Ershov in catboost_ru
это для CPU, да. но там только производные
для CPU есть еще собственно само ззначение функции потерь, его отдельно надо добавлять в метрики
источник

AS

Arthur Suilin in catboost_ru
Ок, спасибо.
Тогда сначала реализую на Python, проверю что всё работает как надо, и потом еще видимо обращусь к вам за помощью
источник

AD

Anna Veronika Dorogush in catboost_ru
Кстати реализовать свою функцию ошибки - это отличная задача для опенсорс-спринта 2го февраля. У нас как раз будет возможность помочь.
источник

D

Danila in catboost_ru
Добрый день! Как можно у класса CatBoostClassifier посмотреть параметры?
источник

AD

Anna Veronika Dorogush in catboost_ru
get_params, если не ошибаюсь
источник

AD

Anna Veronika Dorogush in catboost_ru
источник

D

Danila in catboost_ru
Да, большое спасибо.
источник

D

Danila in catboost_ru
извиняюсь, возможно, ответ лежит на поверхности, но каков по стандарту n_estimators? В доках =None, он ставится во время fit?
источник

AD

Anna Veronika Dorogush in catboost_ru
источник

AD

Anna Veronika Dorogush in catboost_ru
очень советую смотреть не только докстринги, но и вот эту доку, там больше информации
источник

AD

Anna Veronika Dorogush in catboost_ru
1000 итераций по умолчанию
источник