我一直在进行机器学习竞赛,他们使用 RMSLE(均方根对数误差)来评估预测某类设备销售价格的性能。问题是我不确定如何解释我最终结果的成功。
例如,如果我达到的 RMSLE,我可以将它提高指数幂并像 rmse 一样解释它吗?(即)?
然后我可以说我的预测是与实际价格的平均值吗?还是有更好的方法来解释指标?或者,除了与其他模型的其他 RMSLE 进行比较之外,甚至可以完全解释该指标吗?
我一直在进行机器学习竞赛,他们使用 RMSLE(均方根对数误差)来评估预测某类设备销售价格的性能。问题是我不确定如何解释我最终结果的成功。
例如,如果我达到的 RMSLE,我可以将它提高指数幂并像 rmse 一样解释它吗?(即)?
然后我可以说我的预测是与实际价格的平均值吗?还是有更好的方法来解释指标?或者,除了与其他模型的其他 RMSLE 进行比较之外,甚至可以完全解释该指标吗?
我以前没见过 RMSLE,但我假设它是 .
因此取幂不会给你RMSE,它会给你
。
如果我们取双方的对数,我们得到 RMSLE 与 ,这显然不是一回事。
不幸的是,一般来说,没有一个很好的简单关系(尽管比我更聪明/比我思考得更努力的人可能会使用 Jensen 的不等式来找出两者之间的某种关系)。
当然,它是对数转换变量的 RMSE,这是值得的。如果您想粗略了解分布的分布,则可以粗略了解它们的对数分布,因此 RMSLE 为 1.052 意味着“平均值”是倍,或者1/2.86。当然,这不是 RMSE 的意思……
我不知道是否有一个简单的通用解释,甚至分析一个特定的案例。
例如,如果您使用平均值预测所有案例并将其与您的方法进行比较,您可能有兴趣评估错误是什么。
无论如何,我相信当预测值和真实值都是巨大的数字时,当您不想惩罚预测值和真实值的巨大差异时,通常会使用 RMSLE。在这些情况下,只有百分比差异很重要,因为您可以重写
。
例如,对于 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 。
此外,您还可以通过绘制的简单图形来获得直观的印象。