Я повторил пример здесь .
Пример пытается улучшить RMSE (ниже-> лучше).
Мое ограниченное понимание - то, что CatBoost попытается минимизировать LogLoss под капотом. В этом примере более низкий LogLoss, кажется, коррелирует с более низким RMSE.
RMSE on validation datset when 0 harmful objects from train are dropped: 0.25915746122622113
RMSE on validation datset when 250 harmful objects from train are dropped: 0.25601149050939825
RMSE on validation datset when 500 harmful objects from train are dropped: 0.25158044983631966
RMSE on validation datset when 750 harmful objects from train are dropped: 0.24570533776587475
RMSE on validation datset when 1000 harmful objects from train are dropped: 0.24171376432589384
RMSE on validation datset when 1250 harmful objects from train are dropped: 0.23716221792112202
RMSE on validation datset when 1500 harmful objects from train are dropped: 0.23352830055657348
RMSE on validation datset when 1750 harmful objects from train are dropped: 0.23035731488436903
RMSE on validation datset when 2000 harmful objects from train are dropped: 0.2275943109556251
Помимо наблюдения RMSE с cb.eval_metrics(validation_pool, ['RMSE'])['RMSE'][-1]
, в данном примере в действительности не используется RMSE в качестве пользовательской функции потерь.
cb = CatBoost({'iterations': 100, 'verbose': False, 'random_seed': 42})
print(cb.eval_metrics(validation_pool, ['RMSE'])['RMSE'][-1])
В моем случае у меня есть проблема двоичной классификации, и я хочу максимизировать AUC.
Я не уверен, должен ли я просто оставить код как есть, и надеюсь, что более низкий logloss коррелирует с более высоким AUC (это не так), или если мне нужно настроить это по-другому, возможно, используя AUC в качестве пользовательской потери / eval_metric функции, а затем переворачивает importance_values_sign
с «Положительный» на «Отрицательный».