机器学习中的相似度测量

来源:互联网 发布:Android Rx Java是什么 编辑:程序博客网 时间:2024/05/02 01:36

本文参考自 http://www.cnblogs.com/heaad/archive/2011/03/08/1977733.html

     做分类时常常需要估算不同样本之间的相似性度量(Similarity Measurement),这时通常采用的方法就是计算样本间的“距离”(Distance)。采用什么样的方法计算距离是很讲究,甚至关系到分类的正确与否。本文的目的就是对常用的相似性度量作一个总结。

    1)欧氏距离

     欧氏距离源自欧氏空间中两点间的距离公式。

     对二维平面上两点a(x1,y1)与b(x2,y2),欧氏距离为:
     对n维向量的两点a(x11,x12,…,x1n)与 b(x21,x22,…,x2n),欧氏距离为:

    2)曼哈顿距离

     曼哈顿距离也称为城市街区距离(City Block distance)。

     对二维平面上两点a(x1,y1)与b(x2,y2),曼哈顿距离为

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


    3)切比雪夫距离

     国际象棋中从格子(x1,y1)走到格子(x2,y2)最少步数总是max( | x2-x1 | , | y2-y1 | ) 步 。有一种类似的距离度量方法叫切比雪夫距离。

     对二维平面上两点a(x1,y1)与b(x2,y2),切比雪夫距离为      

     对n维向量的两点a(x11,x12,…,x1n)与 b(x21,x22,…,x2n),切比雪夫距离为

  

     4)闵可夫斯基距离 

     闵氏距离不是一种距离,而是一组距离的定义。

     对二维平面上两点a(x1,y1)与b(x2,y2),切比雪夫距离为 


     其中p是一个变参数。当p=1时,就是曼哈顿距离;当p=2时,就是欧氏距离;当p→∞时,就是切比雪夫距离。
    

  闵氏距离,包括曼哈顿距离、欧氏距离和切比雪夫距离都存在明显的缺点

  闵氏距离的缺点主要有两个:(1)将各个分量的量纲(scale),也就是“单位”当作相同的看待了。(2)没有考虑各个分量的分布(期望,方差等)可能是不同的。举个例子:二维样本(身高,体重),其中身高范围是150~190,体重范围是50~60,有三个样本:a(180,50),b(190,50),c(180,60)。那么a与b之间的闵氏距离(无论是曼哈顿距离、欧氏距离或切比雪夫距离)等于a与c之间的闵氏距离,但是身高的10cm真的等价于体重的10kg么?因此用闵氏距离来衡量这些样本间的相似度很有问题。     

     5)马氏距离

     设有M个样本向量X1~Xm,协方差矩阵记为S,均值记为向量μ,则其中样本向量X到u的马氏距离表示为:

                                                                                               

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

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

     与欧氏距离不同的是它考虑到各种特性之间的联系,并且是尺度无关的(scale-invariant) ,即独立于测量尺度。马氏距离不受量纲的影响,两者之间的马氏距离与原始数据的测量单位无关;由标准化数据和中心化数据(即原始数据与均值之差)计算出的二点之间的马氏距离相同。马氏距离还可以排除变量之间的相关性的干扰。但是它的缺点是夸大了变化微小的变量的作用。马氏距离是多维空间中两点相似性的变量,往往作为聚类或者分类算法的基础。

   

    5)夹角距离

      几何中夹角余弦可用来衡量两个向量方向的差异,机器学习中借用这一概念来衡量样本向量之间的差异。

     对二维平面上两个向量a(x1,y1)与b(x2,y2),夹角余弦为:     

     对两个n维向量a(x11,x12,…,x1n)与 b(x21,x22,…,x2n),夹角余弦为:

                                            

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

    

    6)汉明距离

       两个等长字符串s1与s2之间的汉明距离定义为将其中一个变为另外一个所需要作的最小替换次数。例如字符串“1111”

“1001”之间的汉明距离为2。

      应用主要是信息编码,即为了增强容错性,应使得编码间的最小汉明距离尽可能大。


     7)杰卡德相似系数

       两个集合A和B的交集元素在A,B的并集中所占的比例,称为两个集合的杰卡德相似系数,用符号J(A,B)表示。杰卡德相似系数是衡量两个集合的相似度一种指标,可用在衡量样本的相似度:

                                                         

     与杰卡德相似系数相反的概念是杰卡德距离(Jaccard distance)。杰卡德距离可用如下公式表示:

                                                        

     杰卡德距离用两个集合中不同元素占所有元素的比例来衡量两个集合的区分度。

     样本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的交集的元素个数。


     8)相关系数

     相关系数是衡量随机变量X与Y相关程度的一种方法,相关系数的取值范围是[-1,1]。相关系数的绝对值越大,则表明X与Y相关度越高。当X与Y线性相关时,相关系数取值为1(正线性相关)或-1(负线性相关)。
     相关系数的定义:
     相关距离的定义为

0 0