常用距离度量算法小结

1、欧式距离

2、曼哈顿距离

3、切比雪夫距离

4、马氏距离

5、夹角余弦距离

6、汉明距离

7、Person距离

8、杰卡德距离

1. 欧氏距离(Euclidean Distance)
       欧氏距离是最易于理解的一种距离计算方法,源自欧氏空间中两点间的距离公式。

两个n维向量a(x11,x12,…,x1n)与 b(x21,x22,…,x2n)间的欧氏距离:


应用场景:适用于求解两点之间直线的距离,适用于各个向量标准统一的情况,如各种药品的使用量、商品的售销量等。


2. 曼哈顿距离(Manhattan Distance)
       从名字就可以猜出这种距离的计算方法了。想象你在曼哈顿要从一个十字路口开车到另外一个十字路口,实际驾驶距离就是这个“曼哈顿距离”。而这也是曼哈顿距离名称的来源, 曼哈顿距离也称为城市街区距离(City Block distance)。

两个n维向量a(x11,x12,…,x1n)与 b(x21,x22,…,x2n)间的曼哈顿距离

应用场景:主要应用场景,如棋盘、城市里两个点之间的距离等。

3. 切比雪夫距离 (Chebyshev Distance )
      
国际象棋玩过么?国王走一步能够移动到相邻的8个方格中的任意一个。那么国王从格子(x1,y1)走到格子(x2,y2)最少需要多少步?自己走走试试。你会发现最少步数总是max( | x2-x1 | , | y2-y1 | )步 。有一种类似的一种距离度量方法叫切比雪夫距离。
(1)
二维平面两点a(x1,y1)b(x2,y2)间的切比雪夫距离

(2)两个n维向量a(x11,x12,,x1n) b(x21,x22,,x2n)间的切比雪夫距离

应用场景:计算国际象棋中国王走步。

4.马氏距离(Mahalanobis Distance)

马氏距离与欧氏距离的不同之处在于,马氏距离考虑了各个维度之间的联系(如身高与体重),并且独立于测量尺度(米、千克等不同量纲)。
(1)马氏距离定义
       有M个样本向量X1~Xm,协方差矩阵记为S,均值记为向量μ,则其中样本向量X到u的马氏距离表示为:

       而其中向量Xi与Xj之间的马氏距离定义为:

       若协方差矩阵是单位矩阵(各个样本向量之间独立同分布),则公式就成了:

       也就是欧氏距离了。若协方差矩阵是对角矩阵,公式变成了标准化欧氏距离。
(2)马氏距离的优缺点:量纲无关,排除变量之间的相关性的干扰。

应用场景:

5.夹角余弦(Cosine)
       有没有搞错,又不是学几何,怎么扯到夹角余弦了?各位看官稍安勿躁。几何中夹角余弦可用来衡量两个向量方向的差异,机器学习中借用这一概念来衡量样本向量之间的差异。
(1)在二维空间中向量A(x1,y1)与向量B(x2,y2)的夹角余弦公式:

(2) 两个n维样本点a(x11,x12,…,x1n)和b(x21,x22,…,x2n)的夹角余弦
       类似的,对于两个n维样本点a(x11,x12,…,x1n)和b(x21,x22,…,x2n),可以使用类似于夹角余弦的概念来衡量它们间的相似程度。

  即:

       夹角余弦取值范围为[-1,1]。夹角余弦越大表示两个向量的夹角越小,夹角余弦越小表示两向量的夹角越大。当两个向量的方向重合时夹角余弦取最大值1,当两个向量的方向完全相反夹角余弦取最小值-1。

应用场景,如文本分类时,两文本之间距离计算。

6、汉明距离(Hamming distance)
(1)汉明距离的定义
       两个等长字符串s1与s2之间的汉明距离定义为将其中一个变为另外一个所需要作的最小替换次数。例如字符串“1111”与“1001”之间的汉明距离为2。
       应用:信息编码(为了增强容错性,应使得编码间的最小汉明距离尽可能大)。
(2)Matlab计算汉明距离
  Matlab中2个向量之间的汉明距离的定义为2个向量不同的分量所占的百分比。
       例子:计算向量(0,0)、(1,0)、(0,2)两两间的汉明距离

X = [0 0 ; 1 0 ; 0 2];
D = PDIST(X, 'hamming')
结果:
D =
    0.5000    0.5000    1.0000

应用场景:用于计算之间的相似度。应用场景如钓鱼网站与正规网站之间相似程度、两作文是否作弊等。

7、Pearson距离

Pearson是推荐时最常用的一种距离,对于评分、喜好等用户评判标准不一样的时候特别有用。可以化为两向量规范化后的乘积,其本质是两个向量是否同升同降。
Pearson相关系数:
r = \frac{1}{n-1} \sum ^n _{i=1} \left( \frac{X_i - \bar{X}}{\sigma_X} \right) \left( \frac{Y_i - \bar{Y}}{\sigma_Y} \right)

应用场景:Pearson是推荐时最常用的一种距离,对于评分、喜好等用户评判标准不一样的时候特别有用。可以化为两向量规范化后的乘积,其本质是两个向量是否同升同降。


8、杰卡德相似系数(Jaccard similarity coefficient)
(1) 杰卡德相似系数
       两个集合A和B的交集元素在A,B的并集中所占的比例,称为两个集合的杰卡德相似系数,用符号J(A,B)表示。

  杰卡德相似系数是衡量两个集合的相似度一种指标。
(2) 杰卡德距离
       与杰卡德相似系数相反的概念是杰卡德距离(Jaccard distance)。杰卡德距离可用如下公式表示:

  杰卡德距离用两个集合中不同元素占所有元素的比例来衡量两个集合的区分度。
(3) 杰卡德相似系数与杰卡德距离的应用
       可将杰卡德相似系数用在衡量样本的相似度上。
  样本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的维度的个数

那么样本A与B的杰卡德相似系数可以表示为:
这里p+q+r可理解为A与B的并集的元素个数,而p是A与B的交集的元素个数。
而样本A与B的杰卡德距离表示为:

(4)Matlab 计算杰卡德距离
Matlab的pdist函数定义的杰卡德距离跟我这里的定义有一些差别,Matlab中将其定义为不同的维度的个数占“非全零维度”的比例。
例子:计算(1,1,0)、(1,-1,0)、(-1,1,0)两两之间的杰卡德距离
X = [1 1 0; 1 -1 0; -1 1 0]
D = pdist( X , 'jaccard')
结果
D =
0.5000    0.5000    1.0000

应用场景:杰卡德距离在求两个集合的相交程度时比较有用,一般应用于布尔类型的向量中。应用场景,如两首音乐的被共同喜欢的程度、两个人性格的相似程度等

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值