我在这里复制了这个例子。
该示例试图改进 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
从“正”翻转到“负”。