全面总结7种距离、相似度方法
距离(distance,差异程度)、相似度(similarity,相似程度)方法可以看作是以某种的距离函数计算元素间的距离,这些方法作为机器学习的基础概念,广泛应用于如:Kmeans聚类、协同过滤推荐算法、相似度算法、MSE损失函数、正则化范数等等。本文对常用的距离计算方法进行归纳以及解析,分为以下几类展开:
一、闵氏距离(Minkowski Distance)类
字符串长度公式二、相似度(Similarity)
三、字符串距离(Distance of Strings)
四、集合距离 (Distance of Sets)
五、信息论距离 (Information Theory measures)
六、时间系列、图结构的距离
七、度量学习(Metric Learning)
附、常用的度量方法汇总
一、闵氏距离(Distance)类
闵氏距离(Minkowski Distance)
对于点x=() 与点y=() , 闵氏距离可以用下式表示:
闵氏距离是对多个距离度量公式的概括性的表述,p=1退化为曼哈顿距离;p=2退化为欧氏距离;切比雪夫距离是闵氏距离取极限的形式。
曼哈顿距离(Manhattan Distance)VS  欧几里得距离(Euclidean Distance)
曼哈顿距离 公式:
欧几里得距离公式:
如下图蓝线的距离即是曼哈顿距离(想象你在曼哈顿要从一个十字路口开车到另外一个十字路口实际驾驶距离就是这个“曼哈顿距离”,此即曼哈顿距离名称的来源,也称为城市街区距离),红线为欧几里得距离:
切比雪夫距离(Chebyshev Distance)
切比雪夫距离起源于国际象棋中国王的走法,国际象棋中国王每次只能往周围的8格中走一步,那么如果要从棋盘中A格(x1,y1)走到B格(x2,y2)最少需要走几步?你会发现最少步数总是max(|x2-x1|,|y2-y1|)步。有一种类似的一种距离度量方法叫切比雪夫距离。
切比雪夫距离就是当p趋向于无穷大时的闵氏距离:
闵氏距离的相关知识
距离度量的定义
距离函数并不一定是距离度量,当距离函数要作为距离度量,需要满足:
由此可见,闵氏距离可以作为距离度量,而大部分的相似度并不能作为距离度量。
Lp范数
向量的范数可以简单形象的理解为向量的长度,或者向量到零点的距离,或者相应的两个点之间的距离。
闵氏距离也是Lp范数(如p==2为常用L2范数正则化)的一般化定义。下图给出了一个Lp球( ||X||p = 1 )的形状随着P的减少的可视化图:
维度灾难的问题
距离度量随着空间的维度d的不断增加,计算量复杂也逐增,另外在高维空间下,在维度越高的情况下,任意样本之间的距离越趋于相等(样本间最大与最小欧氏距离之间的相对差距就趋近于0),也就是维度灾难的问题,如下式结论:
对于维度灾难的问题,常用的有PCA方法进行降维计算。
量纲差异问题
假设各样本有年龄、工资两个变量,计算欧氏距离(p=2)的时候,(年龄1-年龄2)² 的值要远小于(工资1-工资2)² ,这意味着在不使用特征缩放的情况下,距离会被工资变量(大的数值)主导, 特别当p越大,单一维度的差值对整体的影响就越大。因此,我们需要使用特征缩放来将全部的数值统一到一个量级上来解决此问题。基本的解决方法可以对数据进行“标准化”和“归一化”。
另外可以使用马氏距离(协方差距离),与欧式距离不同其考虑到各种特性之间的联系是(量纲)尺度无关 (Scale Invariant) 的,可以排除变量之间的相关性的干扰,缺点是夸大了变化微小的变量的作用。马氏距离定义为:
马氏距离原理是使用矩阵对两两向量进行投影后,再通过常规的欧几里得距离度量两对象间的距离。当协方差矩阵为单位矩阵,马氏距离就简化为欧氏距离;如果协方差矩阵为对角阵,其也可称为正规化的欧氏距离。
二、相似度(Similarity)
余弦相似度 (Cosine Similarity)
根据向量x,y的点积公式:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。