机器学习中距离和相似性度量方法.docx

上传人:b****2 文档编号:2534357 上传时间:2023-05-03 格式:DOCX 页数:11 大小:311.08KB
下载 相关 举报
机器学习中距离和相似性度量方法.docx_第1页
第1页 / 共11页
机器学习中距离和相似性度量方法.docx_第2页
第2页 / 共11页
机器学习中距离和相似性度量方法.docx_第3页
第3页 / 共11页
机器学习中距离和相似性度量方法.docx_第4页
第4页 / 共11页
机器学习中距离和相似性度量方法.docx_第5页
第5页 / 共11页
机器学习中距离和相似性度量方法.docx_第6页
第6页 / 共11页
机器学习中距离和相似性度量方法.docx_第7页
第7页 / 共11页
机器学习中距离和相似性度量方法.docx_第8页
第8页 / 共11页
机器学习中距离和相似性度量方法.docx_第9页
第9页 / 共11页
机器学习中距离和相似性度量方法.docx_第10页
第10页 / 共11页
机器学习中距离和相似性度量方法.docx_第11页
第11页 / 共11页
亲,该文档总共11页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

机器学习中距离和相似性度量方法.docx

《机器学习中距离和相似性度量方法.docx》由会员分享,可在线阅读,更多相关《机器学习中距离和相似性度量方法.docx(11页珍藏版)》请在冰点文库上搜索。

机器学习中距离和相似性度量方法.docx

机器学习中距离和相似性度量方法

在机器学习和数据挖掘中,我们经常需要知道个体间差异的大小,进而评价个体的相似性和类别。

最常见的是数据分析中的相关分析,数据挖掘中的分类和聚类算法,如K最近邻(KNN)和K均值(K-Means)等等。

根据数据特性的不同,可以采用不同的度量方法。

一般而言,定义一个距离函数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)  //三角形法则:

(两边之和大于第三边)

这篇博客主要介绍机器学习和数据挖掘中一些常见的距离公式,包括:

1.闵可夫斯基距离

2.欧几里得距离

3.曼哈顿距离

4.切比雪夫距离

5.马氏距离

6.余弦相似度

7.皮尔逊相关系数

8.汉明距离

9.杰卡德相似系数

10.编辑距离

11.DTW距离

12.KL散度

 

1.闵可夫斯基距离

闵可夫斯基距离(Minkowskidistance)是衡量数值点之间距离的一种非常常见的方法,假设数值点P和Q坐标如下:

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

该距离最常用的p是2和1,前者是欧几里得距离(Euclideandistance),后者是曼哈顿距离(Manhattandistance)。

假设在曼哈顿街区乘坐出租车从P点到Q点,白色表示高楼大厦,灰色表示街道:

绿色的斜线表示欧几里得距离,在现实中是不可能的。

其他三条折线表示了曼哈顿距离,这三条折线的长度是相等的。

当p趋近于无穷大时,闵可夫斯基距离转化成切比雪夫距离(Chebyshevdistance):

我们知道平面上到原点欧几里得距离(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)了。

 

2.马氏距离

考虑下面这张图,椭圆表示等高线,从欧几里得的距离来算,绿黑距离大于红黑距离,但是从马氏距离,结果恰好相反:

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

假设样本点(列向量)之间的协方差对称矩阵是 

 ,通过CholeskyDecomposition(实际上是对称矩阵LU分解的一种特殊形式,可参考之前的博客)可以转化为下三角矩阵和上三角矩阵的乘积:

 

 。

消除不同维度之间的相关性和尺度不同,只需要对样本点x做如下处理:

 。

处理之后的欧几里得距离就是原样本的马氏距离:

为了书写方便,这里求马氏距离的平方):

下图蓝色表示原样本点的分布,两颗红星坐标分别是(3,3),(2,-2):

由于x,y方向的尺度不同,不能单纯用欧几里得的方法测量它们到原点的距离。

并且,由于x和y是相关的(大致可以看出斜向右上),也不能简单地在x和y方向上分别减去均值,除以标准差。

最恰当的方法是对原始数据进行Cholesky变换,即求马氏距离(可以看到,右边的红星离原点较近):

将上面两个图的绘制代码和求马氏距离的代码贴在这里,以备以后查阅:

ViewCode

 

马氏距离的变换和PCA分解的白化处理颇有异曲同工之妙,不同之处在于:

就二维来看,PCA是将数据主成分旋转到x轴(正交矩阵的酉变换),再在尺度上缩放(对角矩阵),实现尺度相同。

而马氏距离的L逆矩阵是一个下三角,总体来说是一个仿射变换。

 

3.向量内积

向量内积是线性代数里最为常见的计算,实际上它还是一种有效并且直观的相似性测量手段。

向量内积的定义如下:

直观的解释是:

如果x高的地方y也比较高,x低的地方y也比较低,那么整体的内积是偏大的,也就是说x和y是相似的。

举个例子,在一段长的序列信号A中寻找哪一段与短序列信号a最匹配,只需要将a从A信号开头逐个向后平移,每次平移做一次内积,内积最大的相似度最大。

信号处理中DFT和DCT也是基于这种内积运算计算出不同频域内的信号组分(DFT和DCT是正交标准基,也可以看做投影)。

向量和信号都是离散值,如果是连续的函数值,比如求区间[-1,1] 两个函数之间的相似度,同样也可以得到(系数)组分,这种方法可以应用于多项式逼近连续函数,也可以用到连续函数逼近离散样本点(最小二乘问题,OLScoefficients)中,扯得有点远了--!

向量内积的结果是没有界限的,一种解决办法是除以长度之后再求内积,这就是应用十分广泛的余弦相似度(Cosinesimilarity):

余弦相似度与向量的幅值无关,只与向量的方向相关,在文档相似度(TF-IDF)和图片相似性(histogram)计算上都有它的身影。

需要注意一点的是,余弦相似度受到向量的平移影响,上式如果将x平移到x+1,余弦值就会改变。

怎样才能实现平移不变性?

这就是下面要说的皮尔逊相关系数(Pearsoncorrelation),有时候也直接叫相关系数:

皮尔逊相关系数具有平移不变性和尺度不变性,计算出了两个向量(维度)的相关性。

不过,一般我们在谈论相关系数的时候,将x与y对应位置的两个数值看作一个样本点,皮尔逊系数用来表示这些样本点分布的相关性。

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

 

4.分类数据点间的距离

汉明距离(Hammingdistance)是指,两个等长字符串s1与s2之间的汉明距离定义为将其中一个变为另外一个所需要作的最小替换次数。

举个维基百科上的例子:

还可以用简单的匹配系数来表示两点之间的相似度——匹配字符数/总字符数。

在一些情况下,某些特定的值相等并不能代表什么。

举个例子,用1表示用户看过该电影,用0表示用户没有看过,那么用户看电影的的信息就可用0,1表示成一个序列。

考虑到电影基数非常庞大,用户看过的电影只占其中非常小的一部分,如果两个用户都没有看过某一部电影(两个都是0),并不能说明两者相似。

反而言之,如果两个用户都看过某一部电影(序列中都是1),则说明用户有很大的相似度。

在这个例子中,序列中等于1所占的权重应该远远大于0的权重,这就引出下面要说的杰卡德相似系数(Jaccardsimilarity)。

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

Jaccard相似性系数可以表示为:

Jaccardsimilarity还可以用集合的公式来表达,这里就不多说了。

如果分类数值点是用树形结构来表示的,它们的相似性可以用相同路径的长度来表示,比如,“/product/spot/ballgame/basketball”离“product/spot/ballgame/soccer/shoes”的距离小于到"/product/luxury/handbags"的距离,以为前者相同父节点路径更长。

 

5.序列之间的距离

上一小节我们知道,汉明距离可以度量两个长度相同的字符串之间的相似度,如果要比较两个不同长度的字符串,不仅要进行替换,而且要进行插入与删除的运算,在这种场合下,通常使用更加复杂的编辑距离(Editdistance,Levenshteindistance)等算法。

编辑距离是指两个字串之间,由一个转成另一个所需的最少编辑操作次数。

许可的编辑操作包括将一个字符替换成另一个字符,插入一个字符,删除一个字符。

编辑距离求的是最少编辑次数,这是一个动态规划的问题,有兴趣的同学可以自己研究研究。

时间序列是序列之间距离的另外一个例子。

DTW距离(DynamicTimeWarp)是序列信号在时间或者速度上不匹配的时候一种衡量相似度的方法。

神马意思?

举个例子,两份原本一样声音样本A、B都说了“你好”,A在时间上发生了扭曲,“你”这个音延长了几秒。

最后A:

“你~~好”,B:

“你好”。

DTW正是这样一种可以用来匹配A、B之间的最短距离的算法。

DTW距离在保持信号先后顺序的限制下对时间信号进行“膨胀”或者“收缩”,找到最优的匹配,与编辑距离相似,这其实也是一个动态规划的问题:

实现代码(转自 McKelvin'sBlog ):

ViewCode

 

6.概率分布之间的距离

前面我们谈论的都是两个数值点之间的距离,实际上两个概率分布之间的距离是可以测量的。

在统计学里面经常需要测量两组样本分布之间的距离,进而判断出它们是否出自同一个population,常见的方法有卡方检验(Chi-Square)和 KL散度(KL-Divergence),下面说一说KL散度吧。

先从信息熵说起,假设一篇文章的标题叫做“黑洞到底吃什么”,包含词语分别是{黑洞,到底,吃什么},我们现在要根据一个词语推测这篇文章的类别。

哪个词语给予我们的信息最多?

很容易就知道是“黑洞”,因为“黑洞”这个词语在所有的文档中出现的概率太低啦,一旦出现,就表明这篇文章很可能是在讲科普知识。

而其他两个词语“到底”和“吃什么”出现的概率很高,给予我们的信息反而越少。

如何用一个函数h(x)表示词语给予的信息量呢?

第一,肯定是与p(x)相关,并且是负相关。

第二,假设x和y是独立的(黑洞和宇宙不相互独立,谈到黑洞必然会说宇宙),即p(x,y)=p(x)p(y),那么获得的信息也是叠加的,即h(x,y)=h(x)+h(y)。

满足这两个条件的函数肯定是负对数形式:

对假设一个发送者要将随机变量X产生的一长串随机值传送给接收者,接受者获得的平均信息量就是求它的数学期望:

这就是熵的概念。

另外一个重要特点是,熵的大小与字符平均最短编码长度是一样的(shannon)。

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

 

 

 

待补充的方法:

卡方检验Chi-Square

衡量categoricalattributes相关性的mutualinformation

Spearman'srankcoefficient

二部图中EarthMover'sDistance的SimRank迭代算法等。

 

参考资料:

1.距离和相似性度量

2.MachineLearning:

MeasuringSimilarityandDistance

3.WhatisMahalanobisdistance?

4.Cosinesimilarity,Pearsoncorrelation,andOLScoefficients

5.机器学习中的相似性度量

6.动态时间归整|DTW|DynamicTimeWarping

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 工程科技 > 交通运输

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2