Mahout中相似度计算方法介绍

在现实中广泛使用的推荐系统一般都是基于协同过滤算法的,这类算法通常都需要计算用户与用户或者项目与项目之间的相似度,对于数据量以及数据类型不 同的数据源,需要不同的相似度计算方法来提高推荐性能,在mahout提供了大量用于计算相似度的组件,这些组件分别实现了不同的相似度计算方法。下图用 于实现相似度计算的组件之间的关系:

图1、项目相似度计算组件

图2、用户相似度计算组件

下面就几个重点相似度计算方法做介绍:

皮尔森相关度

类名:PearsonCorrelationSimilarity

原理:用来反映两个变量线性相关程度的统计量

范围:[-1,1],绝对值越大,说明相关性越强,负相关对于推荐的意义小。

说明:1、 不考虑重叠的数量;2、 如果只有一项重叠,无法计算相似性(计算过程被除数有n-1);3、 如果重叠的值都相等,也无法计算相似性(标准差为0,做除数)。

该相似度并不是最好的选择,也不是最坏的选择,只是因为其容易理解,在早期研究中经常被提起。使用Pearson线性相关系数必须假设数据是成对地从正态 分布中取得的,并且数据至少在逻辑范畴内必须是等间距的数据。Mahout中,为皮尔森相关计算提供了一个扩展,通过增加一个枚举类型 (Weighting)的参数来使得重叠数也成为计算相似度的影响因子。

欧式距离相似度

类名:EuclideanDistanceSimilarity

原理:利用欧式距离d定义的相似度s,s=1 / (1+d)。

范围:[0,1],值越大,说明d越小,也就是距离越近,则相似度越大。

说明:同皮尔森相似度一样,该相似度也没有考虑重叠数对结果的影响,同样地,Mahout通过增加一个枚举类型(Weighting)的参数来使得重叠数也成为计算相似度的影响因子。

余弦相似度

类名:PearsonCorrelationSimilarity和UncenteredCosineSimilarity

原理:多维空间两点与所设定的点形成夹角的余弦值。

范围:[-1,1],值越大,说明夹角越大,两点相距就越远,相似度就越小。

说明:在数学表达中,如果对两个项的属性进行了数据中心化,计算出来的余弦相似度和皮尔森相似度是一样的,在 mahout中,实现了数据中心化的过程,所以皮尔森相似度值也是数据中心化后的余弦相似度。另外在新版本中,Mahout提供了 UncenteredCosineSimilarity类作为计算非中心化数据的余弦相似度。

Spearman秩相关系数

类名:SpearmanCorrelationSimilarity

原理:Spearman秩相关系数通常被认为是排列后的变量之间的Pearson线性相关系数。

范围:{-1.0,1.0},当一致时为1.0,不一致时为-1.0。

说明:计算非常慢,有大量排序。针对推荐系统中的数据集来讲,用Spearman秩相关系数作为相似度量是不合适的。

曼哈顿距离

类名:CityBlockSimilarity

原理:曼哈顿距离的实现,同欧式距离相似,都是用于多维数据空间距离的测度

范围:[0,1],同欧式距离一致,值越小,说明距离值越大,相似度越大。

说明:比欧式距离计算量少,性能相对高。

Tanimoto系数

类名:TanimotoCoefficientSimilarity

原理:又名广义Jaccard系数,是对Jaccard系数的扩展,等式为

范围:[0,1],完全重叠时为1,无重叠项时为0,越接近1说明越相似。

说明:处理无打分的偏好数据。

对数似然相似度

类名:LogLikelihoodSimilarity

原理:重叠的个数,不重叠的个数,都没有的个数

范围:具体可去百度文库中查找论文《Accurate Methods for the Statistics of Surprise and Coincidence》

说明:处理无打分的偏好数据,比Tanimoto系数的计算方法更为智能。

时间: 2024-10-11 21:52:25

Mahout中相似度计算方法介绍的相关文章

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

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

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

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

mahout in Action2.2-聚类介绍-K-means聚类算法

聚类介绍 本章包括 1 实战操作了解聚类 2.了解相似性概念 3 使用mahout运行一个简单的聚类实例 4.用于聚类的各种不同的距离测算方法 作为人类,我们倾向于与志同道合的人合作-"鸟的羽毛聚集在一起.我们能够发现重复的模式通过联系在我们的记忆中的我们看到的.听到的.问道的.尝到的东 西. 例如,相比较盐 ,糖能够是我们更多地想起蜜.所以我们把糖和蜜的味道结合起来叫他们甜蜜.甚至我们不知道甜蜜的味道,但是知道他跟世界上所有的含糖的东西是相似的,是同 一类的.我们还知道它与盐是不同类的东西.无

mahout中map-reduce版的itembased推荐算法思想

最近想写一个map-reduce版的userbased,于是先研究mahout中已实现的itembased算法.itembased看起来简单,但是深入到实现细节还是有点复杂的,用map-reduce实现就更复杂了. itembased的本质: 预测某用户user对某物品item的打分, 看看该用户对其他item的打分,如果其他item跟该item越相似,则权重越高. 最后加权平均. itembased核心步骤: 1 计算item相似度矩阵(利用两个矩阵相乘) 2 user打分矩阵 乘以 item

ArcGIS Engine中的重点类库介绍

转自原文ArcGIS Engine中的重点类库介绍 System类库 System类库是ArcGIS体系结构中最底层的类库.System类库包含给构成ArcGIS的其他类库提供服务的组件.System类库中定义了大量开发者可以实现的接口.AoInitializer对象就是在System类库中定义的,所有的开发者必须使用这个对象来初始化ArcGISEngine和解除ArcGIS Engine的初始化.开发者不能扩展这个类库,但可以通过实现这个类库中包含的接口来扩展ArcGIS系统. SystemU

SVD综述和Mahout中实现

基本介绍 伴随的电商业务蓬勃发展,推荐系统也受到了格外重视,在通常电商系统中都是采用基于CF(Collaborative filtering)算法原型来做的.该算法是基于这样基本假设:people who agreed in the past will agree in the future . 说到SVD算法不能不说到Netflix举办的推荐大赛,这次比赛对推荐系统工业界产生了很大影响,伴随着提出了很多算法思路,所以本文也是以这次比赛为主线,参考其中相关的两篇经典论文,两篇文章会上传. CF算

苹果电脑中FaceTime怎么设置介绍

不少Mac用户对这款FaceTime工具都是有一定了解的,不过还是有很多Mac用户们不知道怎么轻松对FaceTime进行设置,其实方法还是比较简单易操作,下面我们就一起来苹果电脑中FaceTime怎么设置介绍中瞧瞧吧,希望这款苹果电脑中FaceTime怎么设置介绍可以给Mac用户们带来有效的帮助. 苹果电脑中FaceTime怎么设置介绍: 1.在 Mac 上打开 FaceTime 以后,请先用我们自己的 Apple ID 来登录 FaceTime 应用,如图所示 2.接下来系统会显示与我们的 A

va_list中的_vsntprintf使用介绍

相信大家都用过sprintf这个函数,就是下面这样: int sprintf( char *buffer, const char *format [, argument] ... ); 在之前看到了用va_list实现的几个处理字符串的函数,基本都是这种形式的,感到非常好用,今天来谈一下 va_list 的使用问题. va_list的用法和原理网上一大堆,我都懒得抄了,大概介绍一下它的用法就好: 第一步:定义一个 va_list变量 . 第二步:使用  va_start  函数初始化这个变量.

BEGINNING SHAREPOINT® 2013 DEVELOPMENT 第10章节--SP2013中OAuth概览 OAuth介绍

BEGINNING SHAREPOINT? 2013 DEVELOPMENT 第10章节--SP2013中OAuth概览  OAuth介绍 OAuth是一个开放的标准,由Internet Engineering Task Force管理,被设计允许应用程序以Web友好的方式代表应用程序或用户访问服务.