Tanimoto相似度与Bregman距离

之前写过一篇距离与相似性度量的blog,这里添加两个少见的相似性度量方法,并且再扩展一些东西。

之前的blog: http://blog.csdn.net/ice110956/article/details/14143991

Tanimoto 系数

Tanimoto系数由Jaccard系数扩展而来。首先引入Jaccard系数。

Jaccard系数

两个特征向量A,B,如果其值都是0,1的二值数据,那么有一个简单的判定相似性的方法:

F00 = A中为0并且B中也为0的个数

F10 = A1 B0的个数

F01 = A0 B1的个数

F11 = A1 B1 的个数

那么可以定义这么一个similarity:

这叫做(simplematch coefficient)SMC,简单匹配系数。

很多情况下,两个向量中,0的个数会大大多于1的个数,也就很稀疏,类不平衡。这时候不同向量之间的SMC会因为过多出现的0而没有效果。

那么我们可以只考虑F11,得到:

这也就是Jaccard距离。

如果把两个向量看作两个集合,0为此元素不存在,1为此元素存在,那么Jaccard距离就是很好地比较两个集合相似性的度量方法。在集合的相似度计算中,Jaccard距离可以写成:

扩张Jaccard

如果这个时候,还是很稀疏,但是值是非二值的,该怎么办?

一种简单的方法就是用cosine距离:

cosine距离是处理稀疏非二值特征的很好的选择。

但是,我们还想以Jaccard距离的思维来做又要如何?如下:

如果我们的x,y都是二值向量,那么如上公式就会得到Jaccard距离。

分子项,只有两个均非0才会有非0的有用结果,类似于F11,不过这里不是简单的计数,而是用数乘来表示。

分母项,2范数表示大小,也只有非0的项才有贡献,再减去xy即共同的,这个类似

以上是通过观察得出的结论,具体推导不知。

SMC距离在一般的非不平衡二值问题上计算应该比较方便。

Jaccard在文本分类等不平衡二值问题上有所作为

Tanimoto的话,没用过,效果不知道有没有cosine好。应该会得到一个类似cosine的结果。

Bregman 散度距离

(BregmanDivergence)

形式如下:

其中为某个凸函数,表示函数对y求导,<>表示点乘。

我们把y=x^2作为,得到:

即得到欧式距离。

Bregman距离的数学性质及推导不知,wiki上说,其为许多常见距离的一个通式。

wiki http://en.wikipedia.org/wiki/Bregman_divergence

其中包括欧式距离,曼哈顿距离,KL距离等等。水平有限,只能引用到此。

mahalanobis距离

马氏距离:

首先考虑欧式距离,欧式距离有两点明显的缺点:

1.把不同量纲级别的属性同等看待

比如一个特征向量包含人的年龄,收入,那么收入得到的点乘会远远大于年龄,使得年龄没有作用。

一般的做法是归一化属性值。

2.属性间相关性

一个人的体重很多时候正比于身高。如果作为特征中的两个属性,就会重复计算这个值,得到冗余信息。

一种做法是做去相关,降维,特征选择等等。

不同与欧式距离,马氏距离考虑了量纲即属性间相关性。如下:

M(x,y)=(x-y)sigm(x-y)T

其中sigm表示整体特征向量的协方差矩阵。

马氏距离的最大缺点就是计算复杂度要高出很多,具体运用时要考虑这个因素。

补充

补充之前距离没写到的一些信息:

转换 transformation

有时候,我们得到了距离,进而可以用这个距离求相似性。如:

s表示相关性,d表示距离,则有:

s = -d

s=1/(1+d) 这种方法把距离映射到(0-1)的相似性空间中

s=e^-d      这种方法为非线性映射

s = 1-(d-mind)/(maxd-mind)  也是一种把距离映射到(0-1)上的方法,不过这种是线性的。

小结:任意一种递减的函数都可以把d映射为s度量

归一化normalization

像cosine这种,本身就是(-1,1)的数据,可以直接使用。不过很多情况下,如欧式距离,range都无从控制。归一化是必须的。

度量(metric)

满足以下几种性质的量,可以成为度量(metric):

非负性

(a)d(x,y)>=0

(b)d(x,y)=0 if x==y

对称性

d(x,y) = d(y,x) for all x,y

三角性

d(x,z)<= d(x,y) + d(y,z)

metrics对于许多算法是必须的,不过很多情况下,不必满足metrics也可以作为距离度量。

有再看到类似的再更新。

Tanimoto相似度与Bregman距离

时间: 2024-10-25 05:41:22

Tanimoto相似度与Bregman距离的相关文章

算法之常用的距离和相似度度量

在数据分析和数据挖掘的过程中,我们经常需要知道个体间差异的大小,进而评价个体的相似性和类别.最常见的是数据分析中的相关分析,数据挖掘中的分类和聚类算法,如K最近邻(KNN)和K均值(K-Means).当然衡量个体差异的方法有很多,这里整理罗列下. 为了方便下面的解释和举例,先设定我们要比较X个体和Y个体间的差异,它们都包含了N个维的特征,即X=(x1, x2, x3, … xn),Y=(y1, y2, y3, … yn).下面来看看主要可以用哪些方法来衡量两者的差异,主要分为距离度量和相似度度量

相似度度量 距离

在数据分析和数据挖掘的过程中,我们经常需要知道个体间差异的大小,进而评价个体的相似性和类别.最常见的是数据分析中的相关分析,数据挖掘中的分类和聚类算法,如K最近邻(KNN)和K均值(K-Means).当然衡量个体差异的方法有很多,最近查阅了相关的资料,这里整理罗列下. 为了方便下面的解释和举例,先设定我们要比较X个体和Y个体间的差异,它们都包含了N个维的特征,即X=(x1, x2, x3, - xn),Y=(y1, y2, y3, - yn).下面来看看主要可以用哪些方法来衡量两者的差异,主要分

距离和相似度度量

在数据分析和数据挖掘的过程中,我们经常需要知道个体间差异的大小,进而评价个体的相似性和类别.最常见的是数据分析中的相关分析,数据挖掘中的分类和聚类算法,如K最近邻(KNN)和K均值(K-Means).当然衡量个体差异的方法有很多,最近查阅了相关的资料,这里整理罗列下. 为了方便下面的解释和举例,先设定我们要比较X个体和Y个体间的差异,它们都包含了N个维的特征,即X=(x1, x2, x3, - xn),Y=(y1, y2, y3, - yn).下面来看看主要可以用哪些方法来衡量两者的差异,主要分

推荐系统中的相似度度量

相似度计算是数据挖掘,推荐引擎中的最基本问题,例如在推荐系统(Recommender Systems,简称RSs)中计算带推荐物品(Item)相似度,或是用户(User)之间的相似度以期获得兴趣口味(Taste)相似的用户时,均需要使用到相似度计算技术.经常使用的相似度计算方式较多,且各有特点, 以下就列出常用的相似度计算方式,原理,以及其优缺点. 相似度计算和距离计算是类似问题,之前粗略看了下Mahout(apache分布式数据挖掘项目)中的实现对各计算方式进行分析.结合在实际项目中的应用,介

Mahout的taste里的几种相似度计算方法

欧几里德相似度(Euclidean Distance) 最初用于计算欧几里德空间中两个点的距离,以两个用户x和y为例子,看成是n维空间的两个向量x和y,  xi表示用户x对itemi的喜好值,yi表示用户y对itemi的喜好值,他们之前的欧几里德距离是 对应的欧几里德相似度,一般采用以下公式进行转换:距离越小 ,相似度越大 在taste里,计算user之间和item之前欧几里德相似度的类是EuclideanDistanceSimilarity. 皮尔逊相似度(Pearson Correlatio

【NLP】Python实例:基于文本相似度对申报项目进行查重设计

Python实例:申报项目查重系统设计与实现 作者:白宁超 2017年5月18日17:51:37 摘要:关于查重系统很多人并不陌生,无论本科还是硕博毕业都不可避免涉及论文查重问题,这也对学术不正之风起到一定纠正作用.单位主要针对科技项目申报审核,传统的方式人力物力比较大,且伴随季度性的繁重工作,效率不高.基于此,单位觉得开发一款可以达到实用的智能查重系统.遍及网络文献,终未得到有价值的参考资料,这个也是自然.首先类似知网,paperpass这样的商业公司其毕业申报专利并进行保密,其他科研单位因发

图像相似度测量与模板匹配总结

摘要 本文主要总结了进行目标跟踪.检测中经常使用到的图像相似度测量和模板匹配方法,并给出了具体的基于OpenCV的代码实现. 引言 模板匹配是一种在源图像中寻找与图像patch最相似的技术,常常用来进行目标的识别.跟踪与检测.其中最相似肯定是基于某种相似度准则来讲的,也就是需要进行相似度的测量.另外,寻找就需要在图像上进行逐行.逐列的patch窗口扫描,当然也不一定需要逐行逐列的扫描,当几个像素的误差比计算速度来的不重要时就可以设置扫描的行列步进值,以加快扫描和计算的时间消耗.下面就对相似度测量

mysql根据经纬度求两地距离

#1.两点距离(1.4142135623730951) select st_distance(point(0,0),point(1,1)); select st_distance(point (120.10591, 30.30163),point(120.13026,30.25961));mysql 5.6 添加 #2.两点球面距离(157249.0357231545m) select st_distance_sphere(point(0,0),point(1,1)); select st_di

计算两个GPS坐标的距离

场景:已知两个GPS点的经纬度坐标信息.计算两点的距离. 1. 距离/纬度关系 GPS: 22.514519,113.380301 GPS: 22.511962,113.380301 距离: 284.6439379583341   jl_wd=284.6439379583341/(22.51451-22.511962) = 111712.69150641055729984301412873 (米/度) 2. 距离/经度关系 GPS: 22.514866, 113.388444 GPS: 22.5