您如何解释 RMSLE(均方根对数误差)?

机器算法验证 回归 机器学习 解释 测量误差 数理统计
2022-02-13 17:31:40

我一直在进行机器学习竞赛,他们使用 RMSLE(均方根对数误差)来评估预测某类设备销售价格的性能。问题是我不确定如何解释我最终结果的成功。

例如,如果我达到的 RMSLE,我可以将它提高指数幂并像 rmse 一样解释它吗?(即)?1.052ee1.052=2.863=RMSE

然后我可以说我的预测是与实际价格的平均值吗?还是有更好的方法来解释指标?或者,除了与其他模型的其他 RMSLE 进行比较之外,甚至可以完全解释该指标吗? ±$2.863

4个回答

我以前没见过 RMSLE,但我假设它是 .1Ni=1N(log(xi)log(yi))2

因此取幂不会给你RMSE,它会给你

e1Ni=1N(log(xi)log(yi))21Ni=1N(xiyi)2

如果我们取双方的对数,我们得到 RMSLE 与 ,这显然不是一回事。12log(1Ni=1N(xiyi)2)

不幸的是,一般来说,没有一个很好的简单关系(尽管比我更聪明/比我思考得更努力的人可能会使用 Jensen 的不等式来找出两者之间的某种关系)。

当然,它是对数转换变量的 RMSE,这是值得的。如果您想粗略了解分布的分布,则可以粗略了解它们的对数分布,因此 RMSLE 为 1.052 意味着“平均值”是倍,或者1/2.86。当然,这不是 RMSE 的意思……2.86

我不知道是否有一个简单的通用解释,甚至分析一个特定的案例。

例如,如果您使用平均值预测所有案例并将其与您的方法进行比较,您可能有兴趣评估错误是什么。

无论如何,我相信当预测值和真实值都是巨大的数字时,当您不想惩罚预测值和真实值的巨大差异时,通常会使用 RMSLE。在这些情况下,只有百分比差异很重要,因为您可以重写

logPi+1logAi+1=logPi+1Ai+1

例如,对于 P = 1000 和 A = 500,与 P = 100000 和 A = 50000 时的误差大致相同。

有一种间接的方法可以用更容易理解的方式来衡量损失函数的性能,尽管它不会像您希望的那样直接转换值。

使用 RMSLE 对模型进行训练和测试后,只需对其采用新的度量即可。仅仅因为模型是在 RMSLE 上训练的,这并不意味着您不能将其他更容易理解的损失函数作为指标。

例如,在 Keras 中,您可以在模型编译器的指标类别中指定额外的损失函数。在下面,MSLE 用于训练模型(相当于 RMSLE),但同时记录了 MAE 和 MSE:

model.compile(loss='mean_squared_logarithmic_error', optimizer='adam', metrics=['mean_absolute_error','mean_squared_error'])

我的理解是,当我们对预测和实际数字进行对数时,我们会得到比原始结果更平滑的结果。并减少较大 x 的影响,同时强调对较小的 x 。logx+1

此外,您还可以通过绘制的简单图形来获得直观的印象。y=logx+1