如何防止欧几里得距离和马氏距离的上溢和下溢

计算科学 统计数据
2021-12-11 08:18:14

当我在我的项目中工作时,我被以下问题所震惊:在计算这两个距离时是否有必要或至少谨慎地防止上溢和下溢。

我记得有一个斜边计算的实现来防止这种情况。大多数语言的实现者,并以Hypot着称

欧几里得距离的计算保持不变的“模式”,我认为如果Hypot()控制上溢和下溢也应该注意欧几里得距离。我很失望地注意到我们使用的语言和其他语言不控制计算距离的溢出和下溢。会不会不值得花这个“额外的努力”?

我进行了搜索并在Math.StackExchange中提出了一个问题

这个问题没有明确的答案,而且有些陈旧。我想的第一件事是:会好吗?我认为是的,看到这是对执行的相同程序的概括Hypot()

我决定将这个概念外推到马氏距离。原文如下:

DM(X,Y,L)=i=1n(XiYiLi)2

自从L是特征值的向量。

我的建议是这样的:

DM(X,Y,L)=Ci=1n(XiYiLi1C)2

这与以下内容相同:

DM(X,Y,L)=Ci=1n(XiYiLiC)2

C是来自的最大值|(XiYi)/Li|

C=maxi(XiYiLi)

没事吧?

1个回答

假设不为零,类似于对规范所做的分析,这样的算法可能足以缓解溢出问题;Mahalanobis 距离就像一个加权范数。Li