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

来自:http://blog.csdn.net/samxx8/article/details/7691868

相似距离(距离越小值越大) 优点 缺点 取值范围

PearsonCorrelation

类似于计算两个矩阵的协方差


不受用户评分偏高

或者偏低习惯影响的影响


1. 如果两个item相似个数小于2时

无法计算相似距离.

[可以使用item相似个数门限来解决.]

没有考虑两个用户之间的交集大小[使用weight参数来解决]

2. 无法计算两个完全相同的items

[-1, 1]

EuclideanDistanceSimilarity

计算欧氏距离, 使用1/(1+d)


使用与评分大小较

重要的场合


如果评分不重要则需要归一化,

计算量大

同时每次有数据更新时麻烦

[-1, 1] 

CosineMeasureSimilarity

计算角度

与PearsonCorrelation一致 [-1, 1]

SpearmanCorrelationSimilarity

使用ranking来取代评分的

PearsonCorrelation

完全依赖评分和完全放弃评分之间的平衡
计算rank消耗时间过大

不利于数据更新

[-1, 1]

CacheUserSimilarity

保存了一些tag, reference

缓存经常查询的user-similarity 额外的内存开销

TanimotoCoefficientSimilarity

统计两个向量的交集占并集的比例

同时并集个数越多, 越相近.


适合只有相关性

而没有评分的情况

没有考虑评分,信息丢失了 [-1,1]

LogLikeLihoodSimilarity

是TanimoteCoefficientSimilarity

的一种基于概率论改进


计算两者重合的偶然性

考虑了两个item相邻的独特性

计算复杂 [-1,1]

在现实中广泛使用的推荐系统一般都是基于协同过滤算法的,这类算法通常都需要计算用户与用户或者项目与项目之间的相似度,对于数据量以及数据类型不 同的数据源,需要不同的相似度计算方法来提高推荐性能,在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-11-10 16:00:40

hadoop Mahout中相似度计算方法介绍(转)的相关文章

Mahout中相似度计算方法介绍

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

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

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

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

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

利用LDA进行文本聚类(hadoop, mahout)

项目原理概述 利用sqoop将数据从MySQL导入到HDFS中,利用mahout的LDA的cvb实现对输入数据进行聚类,并将结果更新到数据库中.数据流向图如下 mahout算法分析 输入数据格式为<IntegerWritable, VectorWritable>的matrix矩阵,key为待聚类文本的数字编号,value为待聚类文本的单词向量Vector, Vector的index为单词在字典中的编号, value为TFIDF值. 算法相关参数详解(不包含hadoop运行参数)项目中所有参数设

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

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

Hadoop 2.4.0新特性介绍

在2014年4月7日,Apache发布了Hadoop 2.4.0 .相比于hadoop 2.3.0,这个版本有了一定的改进,突出的变化可以总结为下列几点(官方文档说明): 1 支持HDFS访问控制列表(ACL,Access Control Lists) 这个特性解决了在一定情况下,文件权限访问的权限问题.其机制是基于Linux文件访问权限的特征,如果你熟悉Linux的文件访问机制,你就不用再去理解HDFS文件访问的特性了. 有了ACL特性后,对HDFS文件系统就具有了良性的扩展特性.HDFS-4

Hadoop开发过程中所遇到的那些坑

核心内容: 1.Hadoop开发过程中常见问题即解决方案 在Hadoop开发的过程中,我们总是遇到各种各样的问题,今天就整理总结一下: 万能的解决方案:6个检查+具体日志 在Hadoop开发的过程中如果遇到各种异常,首先使用jps命令查看节点的启动是否正常,然后在去查看相关的日志文件,但是在查看相关日志之前,你可以先检查一下面几点: 1.防火墙原因:检查各个节点的防火墙是否关闭成功.(重点是检查NameNode) [root@hadoop11 ~]# service iptables statu

【源】从零自学Hadoop(12):Hadoop命令中

阅读目录 序 HDFS Commands User Commands Administration Commands Debug Commands 引用 系列索引 本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作. 文章是哥(mephisto)写的,SourceLink 序 上一篇,我们对Hadoop命令进行了简略的列举,但是Hadoop命令特多,还有一部分没有列举完,官网基本都是英文的,所以只能拙略的翻译下,妄大家见谅. 下面,我们就开始对Hadoo

Hadoop Mahout数据挖掘实战视频教程

深入浅出Hadoop Mahout数据挖掘实战(算法分析.项目实战.中文分词技术) 适合人群:高级 课时数量:17课时 用到技术:MapReduce并行分词程序 Mahout 涉及项目:Hadoop综合实战-文本挖掘项目 Mahout数据挖掘工具 咨询QQ:1840215592 课程介绍 本课程主要涉及以下内容的讲解: 1.Mahout数据挖掘工具 2.Hadoop实现推荐系统的综合实战,涉及到MapReduce.Pig和Mahout的综合实战 课程针对人群 1.本课程适合于有一定java基础知