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