基础算法(零)---距离和相似性度量

来源:互联网 发布:windows打开网络发现 编辑:程序博客网 时间:2024/06/03 09:24

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

  1. 数据分析中的相关分析
  2. 数据挖掘中的分类和聚类算法,如 K 最近邻和 K 均值等等

根据数据特性的不同,可以采用不同的度量方法,定义一个距离函数 d(x,y), 需要满足下面几个准则:

d(x,x) = 0 // 到自己的距离为0

d(x,y) >= 0 // 距离非负

d(x,y) = d(y,x) // 对称性: 如果 A 到 B 距离是 a,那么 B 到 A 的距离也应该是 a

d(x,k)+ d(k,y) >= d(x,y) // 三角形法则: (两边之和大于第三边)

主要的距离公式包括如下:

1. 闵可夫斯基距离:是2,3,4距离的综合体
这里写图片描述
其中p是一个变参数。
当p=1时,就是曼哈顿距离
当p=2时,就是欧氏距离
当p→∞时,就是切比雪夫距离
根据变参数的不同,闵氏距离可以表示一类的距离。

2. 曼哈顿距离
这里写图片描述

3. 欧几里得距离
这里写图片描述

4. 切比雪夫距离
这里写图片描述

这里写图片描述

1,2,3,4(即闵氏距离)存在明显的缺点:

1、将各个分量的量纲(scale),也就是“单位”当作相同的看待了
2、没有考虑各个分量的分布(期望,方差等)可能是不同的

举个例子:

二维样本(身高,体重),其中身高范围是150~190,体重范围是50~60,有三个样本:a(180,50),b(190,50),c(180,60)。那么a与b之间的闵氏距离(无论是曼哈顿距离、欧氏距离或切比雪夫距离)等于a与c之间的闵氏距离,但是身高的10cm真的等价于体重的10kg么?因此用闵氏距离来衡量这些样本间的相似度很有问题。

标准化欧氏距离:是针对简单欧氏距离的缺点作的改进。

标准欧氏距离的思路:既然数据各维分量的分布不一样,那就先把各个分量都“标准化”到均值、方差相等。假设样本集X的均值(mean)为m,标准差(standard deviation)为s,那么X的标准化量表示为如下。
这里写图片描述

标准化后的值 = ( 标准化前的值 - 分量的均值 ) /分量的标准差
所以标准化欧氏距离公式:
这里写图片描述
 如果将方差的倒数看成是一个权重,这个公式可以看成是一种加权欧氏距离
 
5. 马氏距离
有M个样本向量X1~Xm,协方差矩阵记为S,均值记为向量μ
则其中样本向量X到u的马氏距离表示为:
这里写图片描述
而其中向量Xi与Xj之间的马氏距离定义为:
这里写图片描述
若协方差矩阵是单位矩阵(各个样本向量之间独立同分布),则公式就成了欧氏距离:
这里写图片描述

马氏距离的优缺点:量纲无关,排除变量之间的相关性的干扰。

6. 余弦相似度:几何中夹角余弦可用来衡量两个向量方向的差异,机器学习中借用这一概念来衡量样本向量之间的差异
这里写图片描述

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

余弦相似度和欧氏距离的对比:

余弦距离使用两个向量夹角的余弦值作为衡量两个个体间差异的大小。相比欧氏距离,余弦距离更加注重两个向量在方向上的差异。

欧氏距离衡量的是空间各点的绝对距离,跟各个点所在的位置坐标直接相关;而余弦距离衡量的是空间向量的夹角,更加体现在方向上的差异,而不是位置。如果保持A点位置不变,B点朝原方向远离坐标轴原点,那么这个时候余弦距离是保持不变的(因为夹角没有发生变化),而A、B两点的距离显然在发生改变,这就是欧氏距离和余弦距离之间的不同之处。

欧氏距离和余弦距离各自有不同的计算方式和衡量特征,因此它们适用于不同的数据分析模型:

  1. 欧氏距离能够体现个体数值特征的绝对差异,所以更多的用于需要从维度的数值大小中体现差异的分析,如使用用户行为指标分析用户价值的相似度或差异。
  2. 余弦距离更多的是从方向上区分差异,而对绝对的数值不敏感,更多的用于使用用户对内容评分来区分兴趣的相似度和差异,同时修正了用户间可能存在的度量标准不统一的问题(因为余弦距离对绝对数值不敏感)。

调整余弦相似度:
余弦相似度更多的是从方向上区分差异,而对绝对的数值不敏感,因此没法衡量每个维度上数值的差异,会导致这样一种情况:

用户对内容评分,按5分制,X和Y两个用户对两个内容的评分分别为(1,2)和(4,5),使用余弦相似度得到的结果是0.98,两者极为相似。但从评分上看X似乎不喜欢2这个内容,而Y则比较喜欢,余弦相似度对数值的不敏感导致了结果的误差,需要修正这种不合理性就出现了调整余弦相似度,即所有维度上的数值都减去一个均值,比如X和Y的评分均值都是3,那么调整后为(-2,-1)和(1,2),再用余弦相似度计算,得到-0.8,相似度为负值并且差异不小,但显然更加符合现实。

那么是否可以在(用户-商品-行为数值)矩阵的基础上使用调整余弦相似度计算呢?从算法原理分析,复杂度虽然增加了,但是应该比普通余弦夹角算法要强。

7. 汉明距离

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

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

8. 编辑距离

编辑距离,又称Levenshtein距离,是指两个字串之间,由一个转成另一个所需的最少编辑操作次数。许可的编辑操作包括将一个字符替换成另一个字符,插入一个字符,删除一个字符。

例如,kitten与sitting之间的编辑距离为3。
应用: DNA分析、拼字检查、语音辨识、抄袭侦测。

汉明距离和编辑距离:

汉明距离更多的是强调向量,即每一位的值都有相应的实际意义。而编辑距离强调更多的是一个字符串转化为另外一个的最快速度,没有考虑不同位的含义。

比如说,有两个对象A=”909”,B=”090”。A与B的汉明距离H(A, B) = 3,编辑距离ED(A, B) =2。

9. 杰卡德相似系数: 杰卡德相似系数是衡量两个集合的相似度一种指标。

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

这里写图片描述

杰卡德距离:杰卡德距离用两个集合中不同元素占所有元素的比例来衡量两个集合的区分度
这里写图片描述

10. DTW 距离

假定一个孤立字(词)语音识别系统,利用模板匹配法进行识别。这时一般是把整个单词作为识别单元。在训练阶段,用户将词汇表中的每一个单词说一遍,提取特征后作为一个模板,存入模板库。在识别阶段,对一个新来的需要识别的词,也同样提取特征,然后采用DTW算法和模板库中的每一个模板进行匹配,计算距离。求出最短距离也就是最相似的那个就是识别出来的字了。

11.皮尔逊相关系数:相关系数是衡量随机变量X与Y相关程度的一种方法
这里写图片描述
相关系数的取值范围是[-1,1]。相关系数的绝对值越大,则表明X与Y相关度越高。当X与Y线性相关时,相关系数取值为1(正线性相关)或-1(负线性相关)。

相关距离这里写图片描述

12.SimRank:一种基于图的拓扑结构信息来衡量任意两个对象间相似程度的模型

SimRank相似度的核心思想为:如果两个对象和被其相似的对象所引用(即它们有相似的入邻边结构),那么这两个对象也相似。

近年来已在信息检索领域引起广泛关注,成功应用于网页排名、协同过滤、孤立点检测、网络图聚类、近似查询处理等。

这里写图片描述

0 0
原创粉丝点击