Size: a a a

2020 May 05

SN

Sergey Novozhilov in catboost_ru
Aleksei Ustimenko
Еще вариант поварьировать порог, у вас, скорее всего, класс 1 предсказывается, если модель выдала предсказание > 0.5, можно получить другие предсказания, если вы будете относить к первому классу по другому порогу
'target_border' имеется ввиду?
источник

AU

Aleksei Ustimenko in catboost_ru
Sergey Novozhilov
'target_border' имеется ввиду?
Да, но я не знаю, можно ли его менять, надеюсь тут кто-нибудь подскажет. Я имел ввиду предсказать вероятности и руками обработать, типа если вероятность больше руками заданного порога t, то относить к первому классу и тд
источник

SN

Sergey Novozhilov in catboost_ru
Aleksei Ustimenko
Да, но я не знаю, можно ли его менять, надеюсь тут кто-нибудь подскажет. Я имел ввиду предсказать вероятности и руками обработать, типа если вероятность больше руками заданного порога t, то относить к первому классу и тд
Менять можно, я пользовался, выгоду получить не удавалось ни разу. Может, кто-то подскажет, когда это работает? Я пробовал вместе с  параметром scale_pos_weight и без него
источник

NT

Nikolay Tolstov in catboost_ru
Я сталкивался с подобной ситуацией. В некоторых случаях поверх классификатора, можно обучить регрессор. Т.е. по y_proba из классификатора предсказывать таргет. Тогда предсказание регрессора становится больше похоже на вероятность
источник

AD

Anna Veronika Dorogu... in catboost_ru
Sergey Novozhilov
Менять можно, я пользовался, выгоду получить не удавалось ни разу. Может, кто-то подскажет, когда это работает? Я пробовал вместе с  параметром scale_pos_weight и без него
target_border - это параметр обучения, который отвечает за бинаризацию целевой переменной перед обучением. Этот параметр практически никому не нужен, он есть в библиотеке по сути исключительно по историческим причинам. Если хочется бинаризовать целевую переменную, это вполне можно сделать перед обучением.
Этот параметр никак не поможет использовать различные пороги при предсказании, так как он не бинаризует предсказания.
источник

SN

Sergey Novozhilov in catboost_ru
отлично, многое ставит на свои места, я боролся с этим недолго, но отметил для себя, что ничего непонятно
источник
2020 May 06

AY

Alexey Yurasov in catboost_ru
Andrei Khropov
Всем привет! Вышел CatBoost 0.22.

New features:

- The main feature of the release is the support of non symmetric trees for training on CPU.
Using non symmetric trees might be useful if one-hot encoding is present, or data has little noise.
To try non symmetric trees change `grow_policy` parameter.
Starting from this release non symmetric trees are supported for both CPU and GPU training.
- The next big feature improves catboost text features support.
Now tokenization is done during training, you don't have to do lowercasing, digit extraction and other tokenization on your own, catboost does it for you.
- Auto learning-rate is now supported in CPU MultiClass mode.
- CatBoost class supports `to_regressor` and `to_classifier` methods.

The release also contains a list of bug fixes.
Привет!
Все три варианта grow_policy исполняются только на CPU.
А на GPU приходит сообщение:
CatBoostError: catboost/cuda/train_lib/train.cpp:265: Error: optimization scheme is not supported for GPU learning Loss=Tweedie;OptimizationScheme=SymmetricTree
Версия 0.23
Может конечно где-то у меня в коде причина..
источник

AD

Anna Veronika Dorogu... in catboost_ru
Tweedie поддержана только на CPU
источник

AY

Alexey Yurasov in catboost_ru
Понял, спасибо.
источник

SN

Sergey Novozhilov in catboost_ru
grid = {'learning_rate': [0.03], #   0.005],
           # 'score_function': ["Cosine", "L2", "NewtonL2"],
           'depth': [6, 8, 10],
           'l2_leaf_reg': [2, 5, 8],
           # 'nan_mode': ["Min", "Max"],
           # 'fold_len_multiplier': np.linspace(1.1, 3, 3),
           'bagging_temperature': np.linspace(1, 3000, 3),

          }
   
   model = catboost.CatBoostClassifier(

       bootstrap_type="Bayesian",
       scale_pos_weight=en.scale_pos_weight,
       loss_function = "Logloss",
       # eval_metric="AUC:hints=skip_train~false",
       # langevin=True,
       # use_best_model=True,
       iterations=1000,
       od_type="Iter",
       od_wait=30,
       rsm=1,
       # random_seed=100,
       boosting_type='Ordered',
       logging_level="Verbose",
       train_dir="grid",

   )
   
   grid_search_result = model.grid_search(
       grid,
       X=train_pool,
       stratified=True,
       cv=3,
       search_by_train_test_split=False,
       plot=PLOT,

   )
Похожий вопрос. Этот код нормально исполняется на GPU, но не удается получить выигрыша. Если выключить GPU или включить, время исполнения не меняется. Как бы разобраться, чтобы получить выигрыш? Пробовал на Виртуалной машине в Yandex Cloud, там могут ли быть настройки, которые исполняться коду позволяют, т.е. GPU нормально определяется, а на самом деле GPU не используется?
источник
2020 May 07

NT

Nikolay Tolstov in catboost_ru
Как вы включаете GPU?
источник

MF

Maxim FromSiberia in catboost_ru
Всем привет! Обучаю бинарную классификацию на CatBoost. Специфика бизнеса такова, что ошибаться на малых вероятностях гораздо дороже, чем на больших. Т.е. предсказать 55% при истинной вероятности 50% - это норм. А предсказать 5% при истинной 0% - это проблема. Есть понимание, что нужна loss function, которая "штрафует" ошибки на малых вероятностях сильнее, чем на больших. Есть ли такая известная функция? Может быть другие есть идеи, как с этим бороться?
источник

NT

Nikolay Tolstov in catboost_ru
как вы расчитываете истинную вероятность в 0 или 50%?  
В моем понимании если у вас в выборке процент 1 класса 5%, то вероятность 1 класса для любого объекта будет 5%.
источник

MF

Maxim FromSiberia in catboost_ru
Истинная вероятность - понятие абстрактное. Но иногда она очевидна. Например, эксперт говорит, что вулкан завтра извергаться точно не будет. А модель дает 0.5%.
источник

MF

Maxim FromSiberia in catboost_ru
> В моем понимании если у вас в выборке процент 1 класса 5%, то вероятность 1 класса для любого объекта будет 5%

Не должно так быть. Вероятность же зависит от фич. Из того, что завтра будет извергаться 5% вулканов не следует, что извержение данного вулкана завтра будет с вероятностью 5%.
источник

NT

Nikolay Tolstov in catboost_ru
Maxim FromSiberia
Истинная вероятность - понятие абстрактное. Но иногда она очевидна. Например, эксперт говорит, что вулкан завтра извергаться точно не будет. А модель дает 0.5%.
Если у вас есть истинная вероятность, то вам можно написать кастомную лосс функцию. Либо решать задачу регрессии по предсказыванию истинной веротности.
источник

NT

Nikolay Tolstov in catboost_ru
Вероятность не может быть очевидна практически ни для чего
источник

NT

Nikolay Tolstov in catboost_ru
Могу предположить, что с истинной веротностью вы напутали и ее у вас нет. Значит вам просто нужно максимизировать AUC с помощью стандартного logloss
источник

MF

Maxim FromSiberia in catboost_ru
Истинной вероятности нет. Есть исторические наблюдения. Список фич, описывающих состояние вулкана и результат: 1 - на след день было извержение, 0 - не было.
источник

MF

Maxim FromSiberia in catboost_ru
Но есть экспертная оценка результатов, которые дает модель. Иногда бывают очевидные ситуации. Вулкан извергаться не будет. А модель дает значения типа 0.5%, 0.3%, 1% и т.д.
источник