如何获得CatBoost get_object_importance to work with AUC?

2024-05-14 20:43:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我复制了示例here。在

该示例试图改进RMSE(更低->更好)。在

我有限的理解是CatBoost会尽量减少引擎盖下的日志损失。在这个例子中,较低的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

除了用cb.eval_metrics(validation_pool, ['RMSE'])['RMSE'][-1]观察RMSE之外,这个示例并没有真正地将RMSE用作自定义的丢失函数。在

^{pr2}$

在我的例子中,我有一个二进制分类问题,我想最大化AUC。 我不确定是否应该让代码保持原样,希望较低的logloss与较高的AUC相关(事实并非如此),或者我是否需要进行不同的设置,也许使用AUC作为一个自定义的loss/eval\u度量函数,然后将importance_values_sign从“Positive”翻转到“Negative”。在


Tags: from示例objectsonevaltrainare例子
1条回答
网友
1楼 · 发布于 2024-05-14 20:43:32

loss_function='RMSE'的情况下,CatBoost尝试最小化RMSE损失函数,而不是{}。RMSE是默认的CatBoost丢失函数。在

CatBoost使用来自this页的公式计算Logloss。因此,较低的Logloss与较高的AUC相关。在

所以,你只需要更换

cb = CatBoost({'iterations': 100, 'verbose': False, 'random_seed': 42})

cb = CatBoost({'loss_function': 'Logloss', 'iterations': 100, 'verbose': False, 'random_seed': 42})

而不是观察RMSE,而是观察AUC。在

相关问题 更多 >

    热门问题