几种距离计算方法

本次记录:
1、闵可夫斯基距离
2、马氏距离
3、内积
4、汉明距离
5、杰卡德距离
6、编辑距离
7、KL散度距离

闵可夫斯基距离

假设数值点P和Q的坐标如下:


那么闵可夫斯基距离被定义为:

上式中的p的变化可导出不同的距离计算方法:
当p=2时,是欧氏距离
当p=1时,是曼哈顿距离

如下图所示:

其中绿色斜线就是欧氏距离,在现实中这样的测量是不现实的。
其他三条路线代表曼哈顿距离,这三条折线的长度是相等的。

当p趋近于无穷大时,闵可夫斯基距离转化为契比雪夫距离,即:



下图展示了随着p值的变动,其距离表达式的几何意义:



p=2的欧氏距离的表达式显然可以看出是个圆的方程。

闵可夫斯基距离比较直观,但是它与数据分布无关,因此具有一定的局限性,如果x方向的幅值远远大于y方向的值,这个距离公式就会过度放大x维度的作用。所以,在计算距离之前,我们还需要对数据进行z-transform处理,即减去均值,除以标准差:


马氏距离

上述计算距离建立在各个维度互不相关的前提下,如果维度之间的数据相关,例如身高和体重的两个数据维度之间是有很大的关联的,这个时候就要用到马氏距离。



对于上面这幅等高线图来说,如果用欧氏距离计算的话,绿黑距离大于红黑距离,但是马氏距离恰恰相反。

理论依据

马氏距离实际上是利用 Cholesky transformation 来消除不同维度之间的相关性和尺度不同的性质。

计算方法

假设样本点p为:


数据集分布的均值为:


协方差矩阵为:

则样本点p与数据集合的马氏距离为:


马氏距离也可以衡量同一分布的样本x和y的相似性:


其实当样本协方差矩阵是个单位矩阵时,也就是样本各个维度的方差为1,马氏距离与欧氏距离等价,那么也就可以将马氏距离看作是标准化了的欧氏距离。

为何马氏距离可以抵消量纲问题?

○ 在判断一个样本是否属于一个集合时,首先计算这个集合的中心点,也就是计算这个集合中全部样本向量的均值,然后求出该点到中心点的距离,但是这样计算出的距离会存在一个问题,也就是:某些集合的跨度较大,原本应该属于该集合的样本可能因为距离其他集合中心点近而被误分,这也就是量纲带来的影响!

○马氏距离为了消除量纲,上面求出的样本点距集合中心的距离再除以一个尺度因子,也就是样本的标准差,而方差刚好是协方差矩阵的对角线,那么马氏距离便可以表示为上面的式子了,因为这里除的方差,而我们想要除以标准差,因此需要开根号。

向量内积


向量内积的物理意义是空间内向量间的相似度,通常情况下,内积归一化的形式用于表征相似度的值,其实也就是我们常见的余弦相似度:

余弦相似度与向量的幅值无关,只与向量的方向相关,在文档相似度(TF-IDF)和图片相似性(histogram)计算上都有它的身影。需要注意一点的是,余弦相似度受到向量的平移影响,上式如果将 x 平移到 x+1, 余弦值就会改变。怎样才能实现平移不变性?这就是下面要说的皮尔逊相关系数。

有时候皮尔逊相关系数也直接叫相关系数,计算方式是协方差除以两个变量的标准差,相关系数衡量的是俩个随机变量的相关程度。


皮尔逊相关系数具有平移不变性和尺度不变性,计算出了两个向量(维度)的相关性。不过,一般我们在谈论相关系数的时候,将 x 与 y 对应位置的两个数值看作一个样本点,皮尔逊系数用来表示这些样本点分布的相关性。

由于皮尔逊系数具有的良好性质,在各个领域都应用广泛,例如,在推荐系统根据为某一用户查找喜好相似的用户,进而提供推荐,优点是可以不受每个用户评分标准不同和观看影片数量不一样的影响。

汉明距离

汉明距离特指相同长度的两字符串的编辑距离(实际编辑距离不一定是同长度的):

杰卡德相似系数

有些场景下特定的数值并不能代表什么,例如有一个电影库,用 1 表示用户看过电影,0表示用户没看过,那么对于电影库中的电影就可以用01组成一个序列,考虑到电影基础很大,用户毕竟看过的电影是相对很少的,因此共同没看过的电影不一定能反应两用户爱好相似,但是看过同一部电影则一定程度上可以反映相似,因此在这个例子中,等于1的权重应该远大于0的权重,因此引出了杰卡德系数:



用 M11 表示两个用户都看过的电影数目,M10 表示用户 A 看过,用户 B 没看过的电影数目,M01 表示用户 A 没看过,用户 B 看过的电影数目,M00 表示两个用户都没有看过的电影数目。

编辑距离

汉明距离特指同长度字符串的距离,而编辑距离是可以允许增删的,衡量不同长度的字符串距离。

同时,编辑距离作为一道基础的动归题目,秋招过程也是被问了好几次,包括百度和头条。

概率分布之间的距离

前面我们谈论的都是两个数值点之间的距离,实际上两个概率分布之间的距离是可以测量的。在统计学里面经常需要测量两组样本分布之间的距离,进而判断出它们是否出自同一个 population,常见的方法有卡方检验(Chi-Square)和 KL 散度( KL-Divergence)。

熵的大小与字符平均最短编码长度是一样的(shannon)。

设有一个未知的分布 p(x), 而 q(x) 是我们所获得的一个对 p(x) 的近似,按照 q(x) 对该随机变量的各个值进行编码,平均长度比按照真实分布的 p(x) 进行编码要额外长一些,多出来的长度这就是 KL 散度(之所以不说距离,是因为不满足对称性和三角形法则),即:

转载注明:https://www.jianshu.com/p/125944ecc12a

你可能感兴趣的:(几种距离计算方法)