`

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

阅读更多

 

欧几里德相似度(Euclidean Distance

最初用于计算欧几里德空间中两个点的距离,以两个用户xy为例子,看成是n维空间的两个向量xy,  xi表示用户xitemi的喜好值,yi表示用户yitemi的喜好值,他们之前的欧几里德距离是

对应的欧几里德相似度,一般采用以下公式进行转换:距离越小 ,相似度越大


 

taste里,计算user之间和item之前欧几里德相似度的类是EuclideanDistanceSimilarity

 

 

皮尔逊相似度(Pearson Correlation Coefficient

皮尔逊相关系数一般用于计算两个定距变量间线性相关的紧密程度,它的取值在[-1,+1]之间。当取值大于0时表示两个变量是正相关的,即一个变量的值越大,另一个变量的值也会越大;当取值小于0时表示两个变量是负相关的,即一个变量的值越大,另一个变量的值反而会越小。其计算公式如下

<!--[endif]--><!--[endif]-->

其中sxsy是样品的标准偏差

 

 

taste里, PearsonCorrelationSimilarity的实现方式不是采用上述公式,而是采用3的实现。

 

Cosine相似度Cosine Similarity

就是两个向量的夹角余弦,被广泛应用于计算文档数据的相似度

 

taste里, 实现Cosine相似度的类是PearsonCorrelationSimilarity 另外一个类UncenteredCosineSimilarity的实现了形式化以后的cosine向量夹角,如下公式

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

 

Tanimoto 相似度

Tanimoto系数也称Jaccard系数,是Cosine相似度的扩展,也多用于计算文档相似度。计算公式如下:

其中x表示用户x所喜好的所有item的集合, y表示用户y所喜好的所有item的集合。

taste里,实现Tanimoto 相似度的类是TanimotoCoefficientSimilarity,可以看出这种计算方法适用于用户对item的喜好是01那种情况。

 

City Block(或者曼哈顿)相似度

出租车几何或曼哈顿距离(Manhattan Distance)是由十九世纪的赫尔曼·闵可夫斯基所创词汇 ,是种使用在几何度量空间的几何学用语,用以标明两个点上在标准坐标系上的绝对轴距总和。图中红线代表曼哈顿距离,绿色代表欧氏距离,也就是直线距离,而蓝色和黄色代表等价的曼哈顿距离。

 

计算公式是:

 

转换后的相似度为:


 


tasete里的实现类CityBlockSimilarity采用了简化的计算方式,比较适用于用户的喜欢数据时0或者1的情况

 

LogLikelihood(对数似然相似度)相似度

公式比较复杂,实现类为LogLikelihoodSimilarity,比较适用于用户的喜欢数据时0或者1的情况

 

Spearman(斯皮尔曼)相似度

斯皮尔曼相关性可以理解为是排列后(Rank)用户喜好值之间的Pearson相关度。《Mahout in Action》中有这样的解释:假设对于每个用户,我们找到他最不喜欢的物品,重写他的评分值为“1”;然后找到下一个最不喜欢的物品,重写评分值为“2”,依此类推。然后我们对这些转换后的值求Pearson相关系数,这就是Spearman相关系数。

 

斯皮尔曼相关度的计算舍弃了一些重要信息,即真实的评分值。但它保留了用户喜好值的本质特性——排序(ordering),它是建立在排序(或等级,Rank)的基础上计算的。

 

因为斯皮尔曼相关性的计算需要花时间计算并存储喜好值的一个排序(Ranks),具体时间取决于数据的数量级大小。正因为这样,斯皮尔曼相关系数一般用于学术研究或者是小规模的计算。

 

taste里的实现类为SpearmanCorrelationSimilarity

 

  • 大小: 1.6 KB
  • 大小: 1 KB
  • 大小: 2.6 KB
  • 大小: 1.6 KB
  • 大小: 2 KB
  • 大小: 1.3 KB
  • 大小: 13.8 KB
  • 大小: 1.2 KB
分享到:
评论
1 楼 lliulangdaocao 2013-11-01  
[i][/i]
引用
[img][/img][/size][color=orange][/color][size=small][align=right][/align]

相关推荐

    如何成功运行Apache Mahout的Taste Webapp-Mahout推荐教程-Maven3.0.5-JDK1.6-Mahout0.5

    根据给定的文件信息,我们可以提炼出以下几个与Apache Mahout及其Taste Webapp相关的知识点: 1. Apache Mahout简介 Apache Mahout是一个开源项目,隶属于Apache软件基金会(ASF),专门提供可扩展的机器学习算法...

    mahout 实例

    Mahout提供了多种相似度度量方法,如余弦相似度和Jaccard相似度。例如,协同过滤推荐系统中,用户之间的兴趣相似度就是通过这些度量计算得出的。通过理解这些相似度计算方法,初学者能学会如何评估用户或项目之间的...

    相似度计算

    以下是几种常见的相似度计算方法的详细说明: 1. **皮尔逊相关系数**(Pearson Correlation Coefficient): 皮尔逊相关系数衡量的是两个变量间的线性关系强度,其值介于-1到1之间,1表示完全正相关,-1表示完全负...

    Mahout机器学习领域分布式计算框架

    ### Mahout机器学习领域分布式计算框架 #### 一、引言 随着大数据时代的到来,如何高效地处理和分析海量数据成为了一个重要的课题。Apache Mahout作为一款基于Hadoop的机器学习库,为解决这一问题提供了强大的工具...

    mahout 简介,中文

    Mahout提供了这些相似度度量的实现,使得开发人员能够灵活选择最适合其应用场景的方法。 ### 集群 集群是无监督学习的一种形式,其目的是将一组对象分为几个类别或“集群”,使得同一集群内的对象彼此相似,而不同...

    基于协同过滤算法的电影推荐系统方案.doc

    本资源摘要信息将详细介绍基于协同过滤算法的电影推荐系统方案,包括协同过滤算法的概念、Taste 引擎的介绍、相似度计算方法等。 一、协同过滤算法 协同过滤算法是一种基于用户行为和偏好信息的推荐算法。该算法...

    elasticsearch-taste:基于Mahout Taste的Elasticsearch建议

    Elasticsearch Taste插件概述Elasticsearch Taste插件是基于的协作过滤实现。 该插件提供了Elasticsearch上推荐引擎的以下功能: 用户/项目/首选项的数据管理。 基于项目的推荐人。 基于用户的推荐器。 相似的用户/...

    Mahout之Item-based应用使用

    Mahout提供了几种不同的相似度度量方法,如皮尔逊相关系数、余弦相似度等。例如,我们可以使用余弦相似度来衡量两个项目向量之间的角度,值越接近1表示相似度越高。 2. **邻近项集的构建**:基于计算出的相似度,...

    mahout 0.5

    Mahout提供了基础的数学和统计函数,如向量运算、矩阵运算,以及距离度量(如欧氏距离、余弦相似度)等。这些工具为构建复杂的机器学习模型提供了基础。 **6. 官方文档:** 使用Mahout 0.5时,官方文档是重要的参考...

    mahout聚类算法

    距离计算方法是 Mahout 聚类算法中的一种重要计算方法,它可以计算数据点之间的距离。常见的距离计算方法有欧几里得距离(Euclidean distance)、马氏距离(Mahalanobis distance)、闵可夫斯基距离(Minkowsk ...

    人工智能-推荐系统-新闻推荐-基于Mahout的新闻推荐系统

    选择不同的用户相似度度量方法,这里选择了基于谷本系数、基于对数似然和基于曼哈顿距离 基于内容的推荐 对新闻文本进行分词 调用Deeplearning4j中构建paragraphvector的方法,通过doc2vec构建VSM 用Gensim会更方便...

    Net协同过滤推荐引擎-移植自java版的apache mahout taste+源代码+文档说明

    - 不懂运行,下载完可以私聊问,可远程教学 该资源内项目源码是个人的毕设,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! &lt;项目介绍&gt; 1、该资源内项目代码都经过测试运行成功,...

    mahout所需jar包

    Mahout提供了多种初始化方法,如“++”法(K-Means++)以改善这个问题。 - 调优是关键:需要根据数据特性和需求调整K值、迭代次数、距离度量等参数。 - 处理大数据时,内存限制可能会影响性能。如果遇到“Out of ...

    基于Java+Mahout的协同过滤推荐算法图书推荐系统源码+项目说明.zip

    3. 计算用户相似度:利用Mahout库提供的相似度计算方法(如皮尔逊相关系数)确定用户之间的相似性。 4. 生成推荐列表:根据用户相似度,为每个用户推荐他们可能感兴趣的未评分图书。 5. 用户界面展示:将推荐结果以...

    mahout的基于用户的推荐Demo

    使用Mahout的`UserSimilarity`类计算用户之间的相似度,常见的相似度度量有皮尔逊相关系数(Pearson Correlation Coefficient)和余弦相似度(Cosine Similarity)。 ```java UserSimilarity similarity = new ...

    mahout各种学习包

    它提供了用户-物品相似度计算、基于用户的协同过滤和基于物品的协同过滤等多种推荐算法。虽然现在Taste已经被其他模块替代,但是了解它的原理和用法,对于理解Mahout的推荐系统部分非常有帮助。 总的来说,这个...

    mahout-core-0.9.jar+mahout-core-0.8.jar+mahout-core-0.1.jar

    随着版本的更新,Mahout的API可能会发生变化,比如引入新的接口,移除过时的方法,或者改变现有方法的行为。开发者在使用不同版本时需要注意API的兼容性问题。 5. **机器学习流程**: 在Mahout中,机器学习流程...

    [Mahout] Windows下Mahout单机安装

    由于Mahout是基于Hadoop设计的,因此对于大数据处理和分布式计算有很好的支持,但在Windows单机环境下,其性能可能受限于硬件资源。在实际项目中,往往会在Linux集群上部署和运行Mahout,以充分利用分布式计算的优势...

Global site tag (gtag.js) - Google Analytics