相似性度量
相似性度量指的是在分类或者聚类算法中两个变量(向量)的相似程度,常用的方法是计算两个变量(向量)之间的距离,选择什么样的方法计算距离,计算什么样的距离常常会直接影响分类的效果。
本文详细地说明了以下几种常见的相似度量方法的原理。
- 欧式距离
- 曼哈顿距离
- 切比雪夫距离
- 闵科夫斯基距离
- 标准化欧式距离
- 马氏距离
- 夹角余弦
- 汉明距离
- 杰卡德距离/杰卡德相似度
- 皮尔逊相关系数
- 相关系数/相关距离
- KL散度
- JS散度
- 交叉熵
1.欧氏距离(Euclidean Distance)
欧式距离是最容易理解的距离计算方法。将欧式空间中两点间距离扩展到N维空间,即欧式距离指的是N为空间中两点之间的距离。
N维空间中两点用两个向量表示:
a = (X11,X12,…X1N)和b = (X21,X22,…X2N)
A与B的欧式距离表示为:
向量形式表示为:
2.曼哈顿距离(Manhattan Distance)
曼哈顿距离(Manhattan Distance)也被叫做城市街区距离(City Block distance),想象你要从城市的一个十字路口到另一个十字路口,行走的距离显然不可能是两点之间的距离。你实际行走的距离就是曼哈顿距离。
向量a = (X11,X12,…X1N)和b = (X21,X22,…X2N)之间的曼哈顿距离为:
3.切比雪夫距离
在国际象棋中,国王一步可以移动到8个相邻各自中的任意一个。那么国王从(x1,y1)到(x2,y2)需要走多少步呢。这就是二维平面内的切比雪夫距离:
向量a = (X11,X12,…X1N)和b = (X21,X22,…X2N)之间的切比雪夫距离为:
另一种等价形式为
3.闵可夫斯基距离(Minkowski Distance)
闵科夫斯基距离不是一种距离,二是一组距离的定义。
向量a = (X11,X12,…X1N)和b = (X21,X22,…X2N)之间的闵氏距离定义为
其中p是一个可变参数,他与上述三种距离的关系为:
p | 距离 |
---|---|
1 | 曼哈顿距离 |
2 | 欧式距离 |
∞ | 切比雪夫距离 |
闵氏距离包括上述三种距离存在一些缺点:
拿一个例子来说:二维样本(身高、体重),其中身高范围是150~190,体重范围是50~60,有三个样本a(180,50),b(190,50),c(180,60).那么a与b之间的闵氏距离等于a与c之间的闵氏距离,但是身高的10cm真的等价于体重的10kg么?因此用闵氏距离来衡量这些样本的相似度就有问题了。
简单来说,闵氏距离的缺点有两个:
- 将各个分量的量纲当作相同的量纲来看呆了
- 没有考虑各个分量的分布(期望、方差等)可能是不同的。
5.标准化欧式距离(Standardized Euclidean distance )
标准化欧式距离是针对简单欧式距离的缺点而作为的一种改进方案。
标准化欧式距离的思路:将各个分量“标准化”到均值、方差相等。
标准化后的值 = ( 标准化前的值 - 分量的均值 ) /分量的标准差
即
经过简单的推到,可以得到两个N维向量a = (X11,X12,…X1N)和b = (X21,X22,…X2N)之间的标准化欧式距离为:
另外,如果将方差的倒数看成是一个权重,这个公式可以看成是一种加权欧氏距离(Weighted Euclidean distance)。
6.马氏距离(Mahalanobis Distance)
1.马氏距离的定义
有M个样本向量X1~Xm,协方差矩阵记为S,均值记为向量μ,则其中样本向量X到u的马氏距离表示为:
其中向量Xi与Xj之间的马氏距离定义为:
如果协方差矩阵为单位矩阵(各个样本向量之间独立同分布),那么公式就变成了:
这也是欧式距离的计算公式。
如果协方差矩阵是对角矩阵,公式变成了标准化欧式距离。
2.马氏距离的优缺点:量纲无关、排除变量之间的相关性的干扰
7.夹角余弦
这是walk2friends论文中运用到的相似度量方式
在几何中,夹角余弦可以用来衡量两个向量方向的差异,机器学习中借用这一概念来衡量样本向量之间的差异。
1.二维空间中向量A(x1,y1)与向量B(x2,y2)的夹角余弦公式为:
2.两个N维向量(样本点)a = (X11,X12,…X1N)和b = (X21,X22,…X2N)之间的夹角余弦为
也就是
3.夹角余弦的一些性质:
夹角余弦的取值范围是[-1,1],夹角余弦越大表示两个向量之间的夹角越小,反之两个向量之间的夹角越大。当两个向量的方向重合时夹角余弦取最大值1,方向相反时夹角余弦取最小值1。
8.汉明距离
汉明距离是使用在数据传输差错控制编码里面的,汉明距离是一个概念,它表示两个(相同长度)字对应位不同的数量,我们以d(x,y)表示两个字x,y之间的汉明距离。对两个字符串进行异或运算,并统计结果为1的个数,那么这个数就是汉明距离。
汉明距离用于信息编码和解码中,为了增强容错性,编码间的汉明距离应尽可能大。
9.杰卡德相似系数(Jaccard similarity coefficient)
杰卡德相似系数被定义为两个集合A和B交集中的元素占A和B并集元素的比例,表示为J(A,B)
杰卡德距离定义为1 - J(A,B),用两个集合中不同元素占所有元素的比例来衡量两个集合的区分度。
杰卡德相似系数与杰卡德距离可以衡量样本的相似度。
-
样本A和B是两个N维向量,且所有维度的取值都是0或1。例如:A(0111)和B(1011)。我们将样本看成是一个集合,1表示集合包含该元素,0表示集合不包含该元素。
p :样本A与B都是1的维度的个数
q :样本A是1,样本B是0的维度的个数
r :样本A是0,样本B是1的维度的个数
s :样本A与B都是0的维度的个数这样样本AB的杰卡德相似系数可以表示为:J = p/(p+q+r)
10.相关系数 ( Correlation coefficient )与相关距离(Correlation distance)
1.相关系数
相关系数的取值范围为[-1,1]。相关系数的绝对值越大表明X与Y相关程度越高,且整数表示正相关,负数表示负相关
2.相关距离
样本XY的相关距离定义为
11.KL散度(Kullback–Leibler divergence)
KL散度又称KL距离,相对熵
当P(x)和Q(x)的相似度越高时,KL散度越小。
KL散度有两个性质:
- 不对称性:尽管KL散度从直观上是个度量或距离函数,但他并不是一个真正的度量或距离,也就是说D(P||Q)!=D(Q||P)
- 非负性
12.JS散度(Jensen-Shannon divergence)
JS散度也叫JS距离,是KL散度的一种变形。
不同于KL散度的是:
- 值域为[0,1],PQ相同为0,PQ相反为1。相对于KL散度,对相似度的判别更加确切
- 对称性,即JS(P||Q)=JS(Q||P)
13.交叉熵(Cross Entropy)
在神经网络中,交叉熵可以作为损失函数,因为它可以衡量P和Q的相似性
交叉熵和相对熵存在以下关系:
小结:
-
欧式距离、曼哈顿距离、切比雪夫距离都是闵科夫斯基距离的不同形式,标准化欧式距离实际上是对向量中每个维度进行加权后的欧式距离,是一种特殊的(协方差矩阵为对角矩阵)的马氏距离(协方差矩阵为1时为欧式距离)。
-
汉明距离度量的是二进制向量之间不同字符的数量,主要应用于编码。
-
夹角余弦通过度量两向量的方向来确定它们之间的相似程度,而不会考虑其长度。
-
杰卡德距离用于度量两个集合之间的相似程度。
-
KL散度、JS散度和交叉熵都用来衡量两个概率分布之间的相似性。
[1].https://blog.csdn.net/txwh0820/article/details/51791739
[2].https://blog.csdn.net/frankiehello/article/details/80614422