欧几里得距离和RMSE有什么区别?

数据挖掘 Python 神经网络 深度学习 优化 损失函数
2022-03-06 16:12:57

我正在寻找适合我的项目的损失函数。其实我有两个问题,但他们在同一个方向。我看一下均方根误差和欧几里得距离的定义,它们对我来说是一样的!这就是为什么我想知道两者之间有什么区别。如果我使用 rmse 作为损失函数或欧几里德距离会有什么区别?

第二个问题是如何寻找损失函数。我的意思是我知道这取决于问题,共同的事情是 MSE 用于回归和交叉熵用于分类,但假设我有一个特定问题,我如何搜索损失函数?我还看到有些人使用自定义损失函数,大多数深度学习框架都允许我们定义自定义损失函数,但我为什么要使用自定义损失函数?我如何获得需要自定义损失函数的直觉?

现在来解释我的问题。我正在做一个项目,我需要减少车辆的 GPS 误差(我有一些车辆数据,我的神经网络会尝试预测经度和纬度,所以这是一个回归问题)这就是为什么我得到了可能的想法欧几里得距离作为损失函数是有意义的,对吧?现在不知何故,MSE对我来说也很有意义,因为它正在区分预测和基本事实。作为专业的 ML 工程师或数据科学家,这对您有意义吗?如果您可以使用自定义损失函数,您会建议什么以及为什么?

2个回答

欧几里得距离只是指特定类型的度量(欧几里得空间中两点之间的线)。而 RMSE 是用于特定目的的误差函数(实际分数和预测分数之间的平均平方距离的平方根)。

您可能会感到困惑的是,RMSE 是两个回归之间的欧几里得距离的一个示例,它通过对整个回归中的特定向量误差进行平均来获得,请参阅此处以获取更深入的摘要。

总而言之,RMSE 是一种欧几里得距离,但还有其他的。

正如您所说,您的问题的特定损失函数的其余问题是非常具体的问题。我建议发布一个特定问题,其中包含您考虑的特定问题和解决方案的更多详细信息(需要比上面更多的详细信息),以尝试找到一个好的损失函数。

希望有帮助。

假设 RMSE 和欧几里得距离不是同一类型,即使它们的公式很接近。RMSE 是一个损失函数,而欧几里得距离是一个度量。请参阅Cros Validated 上的这个问题,以更好地理解损失函数和度量之间的区别:损失函数通常基于参考度量。

欧几里得距离是一种度量,因此它量化了两个观测值之间的距离。顾名思义,RMSE 是真实值和预测值之间的平方误差的均值根,在一定范围内的观察。RMSE 通常用于模型性能评估。

您的困惑可能来自这样一个事实:如果您将 RMSE 公式应用于您的坐标集(经度和纬度),它会给出欧几里得距离。但在这种情况下,这不会被称为 RMSE,而是欧几里得距离。

在您的情况下,您可以使用欧几里德距离的 RMSE作为损失函数。您的预测器产生的误差是欧几里德距离,而您的损失函数将是这些误差的 RMSE。

定义损失函数是针对特定问题的。首先,您需要确定将哪些指标用作误差函数。在您的情况下,实际位置与预测位置之间的欧几里得距离是一个明显的度量,但它不是唯一可能的度量。例如,您可以使用平方或立方欧几里得距离,以便为预测不佳的情况赋予更多权重。您还可以设计一个临时指标来考虑:

  • 不对称性,例如对东侧的错误比西侧的错误更宽容
  • 各向异性,例如对纬度轴上的误差比经度轴上的误差更大
  • 不确定性容差,例如,如果欧几里得距离小于容差,则误差为零,否则等于欧几里得距离
  • 等等(取决于你的问题)

随后的指标将允许您评估经过训练的模型在测试集上的性能,从而为您提供错误分布。您需要将此分布缩小为用作全局模型性能的单个标量值:您几乎可以选择任何代表有关分布的标量:

  • 均方误差 (MSE) 或其根 (RMSE) - MSE 的计算速度更快,但 RMSE 具有优势或与误差函数具有相同的维度(在您的情况下为距离)
  • 其他类型的范数(RMSE 是范数)LpL2
  • 分布的任何分位数(中位数、75%、95%、最大值)
  • 任何你认为相关的东西!