机器学习相似度计算方法选择理论依据

在分类聚类算法,推荐系统中,常要用到两个输入变量(通常是特征向量的形式)距离的计算,即相似性度量.不同相似性度量对于算法的结果,有些时候,差异很大.因此,有必要根据输入数据的特征,选择一种合适的相似性度量方法。

X=(x1,x2,..,xn)T,Y=(y1,y2,...yn)T为两个输入向量,

1.欧几里得距离(Euclidean distance)-EuclideanDistanceMeasure.

?

相当于高维空间内向量说表示的点到点之间的距离。

由于特征向量的各分量的量纲不一致,通常需要先对各分量进行标准化,使其与单位无关,比如对身高(cm)和体重(kg)两个单位不同的指标使用欧式距离可能使结果失效。

优点:简单,应用广泛(如果也算一个优点的话),能够很好体现数值上的差异,kmeans常通过欧氏距离进行计算

缺点:没有考虑分量之间的相关性,体现单一特征的多个分量会干扰结果。


2.马氏距离(Mahalanobis distance)-MahalanobisDistanceMeasure

?

C=E[(X-X平均)(Y-Y平均)]为该类输入向量X的协方差矩阵.(T为转置符号,E取平均时是样本因此为n-1)

适用场合:

1)度量两个服从同一分布并且其协方差矩阵为C的随机变量X与Y的差异程度

2)度量X与某一类的均值向量的差异程度,判别样本的归属。此时,Y为类均值向量.

优点

1)独立于分量量纲

2)排除了样本之间的相关性影响。

缺点:不同的特征不能差别对待,可能夸大弱特征。


3.闵可夫斯基距离(Minkowsk distance)-MinkowskiDistanceMeasure(默认p=3)

?

可看成是欧氏距离的指数推广,还没有见到过很好的应用实例,但通常,推广都是一种进步,特别的,

当p=1,也成做曼哈顿距离,也称绝对距离,曼哈顿距离来源于城市区块距离,是将多个维度上的距离进行求和后的结果。ManhattanDistanceMeasure.

?

当q=∞时,称为切比雪夫距离ChebyshevDistanceMeasure 

切比雪夫距离起源于国际象棋中国王的走法,我们知道国际象棋国王每次只能往周围的8格中走一步,那么如果要从棋盘中A格(x1, y1)走到B格(x2, y2)最少需要走几步?扩展到多维空间,其实切比雪夫距离就是当p趋向于无穷大时的明氏距离:


4.汉明距离(Hamming distance)-Mahout无

在信息论中,两个等长字符串之间的汉明距离是两个字符串对应位置的不同字符的个数。换句话说,它就是将一个字符串变换成另外一个字符串所需要替换的字符个数。

例如:

1011101 与 1001001 之间的汉明距离是 2。

2143896 与 2233796 之间的汉明距离是 3。

"toned" 与 "roses" 之间的汉明距离是 3。


5.Tanimoto系数(又称广义Jaccard系数)-TanimotoDistanceMeasure.

通常应用于X为布尔向量,即各分量只取0或1的时候。此时,表示的是X,Y的公共特征的占X,Y所占有的特征的比例。


5.Jaccard系数

Jaccard系数主要用于计算符号度量或布尔值度量的个体间的相似度,因为个体的特征属性都是由符号度量或者布尔值标识,因此无法衡量差异具体值的大小,只能获得“是否相同”这个结果,所以Jaccard系数只关心个体间共同具有的特征是否一致这个问题。如果比较X与Y的Jaccard相似系数, 只比较xn和yn中相同的个数,公式如下:


7.皮尔逊相关系数(Pearson correlation
coefficient
)-PearsonCorrelationSimilarity

即相关分析中的相关系数r,分别对X和Y基于自身总体标准化后计算空间向量的余弦夹角。公式如下:

?


8.余弦相似度(cosine similarity)-CosineDistanceMeasure

?

就是两个向量之间的夹角的余弦值。

余弦相似度用向量空间中两个向量夹角的余弦值作为衡量两个个体间差异的大小。相比距离度量,余弦相似度更加注重两个向量在方向上的差异,而非距离或长度上。

优点:不受坐标轴旋转,放大缩小的影响。

9.调整余弦相似度-Adjusted Cosine Similarity

虽然余弦相似度对个体间存在的偏见可以进行一定的修正,但是因为只能分辨个体在维之间的差异,没法衡量每个维数值的差异,会导致这样一个情况:比如用户对内容评分,5分制,X和Y两个用户对两个内容的评分分别为(1,2)和(4,5),使用余弦相似度得出的结果是0.98,两者极为相似,但从评分上看X似乎不喜欢这2个内容,而Y比较喜欢,余弦相似度对数值的不敏感导致了结果的误差,需要修正这种不合理性,就出现了调整余弦相似度,即 所有维度上的数值都减去一个均值,比如X和Y的评分均值都是3,那么调整后为(-2,-1)和(1,2),再用余弦相似度计算,得到-0.8,相似度为负
值并且差异不小,但显然更加符合现实。

调整余弦相似度和余弦相似度,皮尔逊相关系数在推荐系统中应用较多。在基于项目的推荐中,GroupLens有篇论文结果表明调整余弦相似度性能要优于后两者。

10.基于权重的距离计算方法:

WeightedDistanceMeasure、WeightedEuclideanDistanceMeasure 、 WeightedManhattanDistanceMeasure

欧氏距离与余弦相似度

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

借助三维坐标系来看下欧氏距离和余弦相似度的区别:

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

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-09-29 03:12:12

机器学习相似度计算方法选择理论依据的相关文章

汇总从代数角度与几何角度理解相似度计算方法(以机器学习Mahout框架为主线)

相似度的计算是数据挖掘与机器学习中的一个永恒的话题,为了能更好地理解与比较各种相似度计算的方法,能灵活运用到各种计算模型中,自己在研究机器学习之Mahout框架时,源代码中也实现了很多相似度计算方法,本文结合机器学习Mahout框架中各种相似度计算方法的实现,并且从代数角度和几何角度来理解相似度的计算方法.并阐述其优缺点,及自己的适用场景.本文通过总结和归纳,一共总结了9中距离测量方法,方法一到方法七是Mahout中完完本本实现了,其中前面是方面名,破折号后是Mahout中各方法实现的类名,本文

Mahout中相似度计算方法介绍

在现实中广泛使用的推荐系统一般都是基于协同过滤算法的,这类算法通常都需要计算用户与用户或者项目与项目之间的相似度,对于数据量以及数据类型不 同的数据源,需要不同的相似度计算方法来提高推荐性能,在mahout提供了大量用于计算相似度的组件,这些组件分别实现了不同的相似度计算方法.下图用 于实现相似度计算的组件之间的关系: 图1.项目相似度计算组件 图2.用户相似度计算组件 下面就几个重点相似度计算方法做介绍: 皮尔森相关度 类名:PearsonCorrelationSimilarity 原理:用来

机器学习、深度学习的理论与实战入门建议整理

引言 拿到这份文档时想必你的脑海中一直萦绕着这么一个问题,"机器学习/深度学习要怎么学呢?(怎么入门,又怎么进一步掌握?)".关于这个问题其实并没有一个标准答案,有的人可能适合自底向上的学,也就是先从理论和数学开始,然后是算法实现,最后再通过一些项目去解决生活中的实际问题:有的人则可能适合自顶向下的学,也就是在弄清楚什么是机器学习及为什么学机器学习后,先确定一个系统性的用机器学习来解决实际问题的程序,然后找到一个合适的工具,接着再在各种数据集上做练习以不断加强自己的实践能力与巩固对算法

hadoop Mahout中相似度计算方法介绍(转)

来自:http://blog.csdn.net/samxx8/article/details/7691868 相似距离(距离越小值越大) 优点 缺点 取值范围 PearsonCorrelation 类似于计算两个矩阵的协方差 不受用户评分偏高 或者偏低习惯影响的影响 1. 如果两个item相似个数小于2时 无法计算相似距离. [可以使用item相似个数门限来解决.] 没有考虑两个用户之间的交集大小[使用weight参数来解决] 2. 无法计算两个完全相同的items [-1, 1] Euclid

机器学习------平台和语言选择

机器学习语言 一.机器学习常用的编程语言有哪些?机器学习(Machine Learning, ML)是一门多领域交叉学科,涉及概率论.统计学.逼近论. 凸分析.算法复杂度理论等多门学科.专门研究计算机怎样模拟或实现人类的学习行为,以 获取新的知识或技能, 重新组织已有的知识结构使之不断改善自身的性能. 它是人工智能的 核心, 是使计算机具有智能的根本途径, 其应用遍及人工智能的各个领域, 它主要使用归纳. 综合而不是演绎. 目前机器学习语言主要有:R 语言,Python,MATLAB.JAVA.

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

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

机器学习——初识及实践选择

作为机器学习基础学习的开篇,记录一下自己对于机器学习基础的认识和实践选择. 参考书目: 机器学习实战 这里也给出电子版本的中英文pdf文件和code:here(azkx)   我不会告诉你Ctrl+A会有其它发现~ 1.基础 对于机器学习的相关方法,最直观的认识是可以将其分为有监督和无监督两大类,可以使用思维导图来直观表示: (使用MindNode来绘制的思维导图,源文件在这里) 其实在实际使用中,分类的方法和回归的方法的分界并不明显,有时还会结合起来使用的. 具体的开发步骤大致有这些过程: ①

贪心算法及其理论依据——拟阵

贪心算法主要采用局部最优的解决问题的策略,但是在很多时候都不能达到全局最优的效果,那么什么时候使用贪心算法能够得到全局最优呢?就此引出拟阵的概念. 贪心算法的一般步骤 确定待解问题的最优子结构 设计递归求解方式 证明在递归的任一阶段,最优选择之一总是贪心的(那么贪心选择是最适合的) 证明通过做贪心选择,所有的子问题都为空(除一个以外) 设计实现贪心策略的递归算法 将设计好的递归算法转换成迭代算法 贪心选择 贪心算法中,我们所做的总是当前看似最佳的选择,然后在解决经过贪心选择之后所出现的子问题.其

几种用户相似度计算方法及其优缺点

进行用户协同过滤时,一个关键问题是如何计算用户之间的相似性.比较常见的计算用户相似度的算法有余弦相似性.皮尔森系数.调整余弦相似性三种. 这三种相似性都是基于一个称为用户-项目矩阵的数据结构来进行计算的.该数据结构如下: 余弦相似性:把用户评分看作是n维项目空间上的向量,通过计算两个向量之间的夹角余弦来度量两个用户之间的相似性. 皮尔森系数:又称相关相似性,通过Peason相关系数来度量两个用户的相似性.计算时,首先找到两个用户共同评分过的项目集,然后计算这两个向量的相关系数.    调整余弦相