这篇文章是大嘴在网上摘录并整理过来的:
一般而言,定义一个距离函数 d(x,y), 需要满足下面几个准则:
1) d(x,x) = 0 // 到自己的距离为0 2) d(x,y) >= 0 // 距离非负3) d(x,y) = d(y,x)
// 对称性: 如果 A 到 B 距离是 a,那么 B 到 A 的距离也应该是 a 4) d(x,k) d(k,y)>= d(x,y) // 三角形法则: (两边之和大于第三边)
闵可夫斯基距离:
闵可夫斯基距离(Minkowski distance)是衡量数值点之间距离的一种非常常见的方法,假设数值点 P 和 Q坐标如下:
那么,闵可夫斯基距离定义为:
该距离最常用的 p 是 2 和 1, 前者是欧几里得距离(Euclideandistance),后者是曼哈顿距离(Manhattan distance)。假设在曼哈顿街区乘坐出租车从 P 点到 Q点,白色表示高楼大厦,灰色表示街道:
绿色的斜线表示欧几里得距离,在现实中是不可能的。其他三条折线表示了曼哈顿距离,这三条折线的长度是相等的。
当 p 趋近于无穷大时,闵可夫斯基距离转化成切比雪夫距离(Chebyshev distance):
(点击切换版式)我们知道平面上到原点欧几里得距离(p = 2)为 1 的点所组成的形状是一个圆,当 p 取其他数值的时候呢?
注意,当 p < 1 时,闵可夫斯基距离不再符合三角形法则,举个例子:当 p< 1, (0,0) 到 (1,1) 的距离等于 (1 1)^{1/p}> 2, 而 (0,1) 到这两个点的距离都是 1。
闵可夫斯基距离比较直观,但是它与数据的分布无关,具有一定的局限性,如果 x 方向的幅值远远大于 y方向的值,这个距离公式就会过度放大 x 维度的作用。所以,在计算距离之前,我们可能还需要对数据进行 z-transform处理,即减去均值,除以标准差:
可以看到,上述处理开始体现数据的统计特性了。这种方法在假设数据各个维度不相关的情况下利用数据分布的特性计算出不同的距离。如果维度相互之间数据相关(例如:身高较高的信息很有可能会带来体重较重的信息,因为两者是有关联的),这时候就要用到马氏距离(Mahalanobisdistance)了。
===============
感谢大家的支持,由于时间太紧(经常加班到很晚),很多地方大嘴只能大概介绍,会较广,但未必很细,这里只给您指出知识的一个方向,至于深度上,还请大家根据感兴趣的文章多搜集资料,大嘴也在不断学习中,一起努力吧!
===============
声明: