Mahout推荐系统中有许多相似度实现,这些组件实现了计算不能User之间或Item之间的相似度。对于数据量以及数据类型不同的数据源,需要不同的 相似度计算方法来提高推荐性能,在mahout提供了大量用于计算相似度的组件,这些组件分别实现了不同的相似度计算方。
User 相似度:
Item 相似度:
皮尔森相关度
类名: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系数的计算方法更为智能。
相关推荐
《Apache Mahout:开启机器学习之旅》 Apache Mahout,作为一个开源项目,是大数据时代下机器学习领域的杰出代表。这个项目的核心目标是提供一系列可扩展的机器学习算法,以简化开发人员构建智能应用的过程。在...
"mahout-0.3.tar.gz"是Mahout项目的一个早期版本,包含了一系列用于开发和执行机器学习任务的源代码、库文件和其他相关资源。在这个版本中,用户可以找到各种算法,如分类、聚类和协同过滤,这些都是大数据分析和...
- **User Similarity**:计算不同用户间的相似度,这是推荐系统的关键步骤之一。 - **User Neighborhood**:确定每个用户的邻居集合,进一步细化推荐逻辑。 - **Recommender**:将以上组件组合起来,为用户生成具体...
在这个"mahout各种学习包"中,我们可以期待找到一系列与Mahout相关的学习资料,包括文档、代码示例、教程等,帮助我们深入理解和应用这个强大的工具。 首先,让我们来了解一下Mahout的核心功能。Mahout提供了多种...
Mahout是一个开源项目,专注于为开发者提供一系列用于构建高度可伸缩的大数据推荐引擎、聚类分析以及分类算法库。其核心算法包括协同过滤、聚类分析及分类算法,广泛应用于电子商务、社交网络等多个领域。 #### ...
根据提供的文件信息,本次将围绕“Mahout实战”这一主题展开深入探讨,涵盖Mahout的基本概念、应用场景以及如何在实际项目中应用Mahout进行数据挖掘和机器学习。 ### Mahout概述 Apache Mahout是一个分布式线性...
Mahout是基于Java的机器学习库,它提供了一系列预构建的机器学习算法,包括分类、聚类和协同过滤等。这些算法对于处理大规模数据集特别有效,因为它们设计时考虑了可扩展性和分布式计算。通过使用Hadoop作为底层计算...
它提供了一系列用于数据分析的算法,主要聚焦于三大领域:协同过滤(推荐系统)、聚类分析以及分类。Mahout的设计初衷是为了处理大规模的数据集,特别是那些单个计算机难以处理的大数据量。 - **协同过滤/推荐引擎*...
Mahout中的K-Means算法是典型的聚类方法之一。该算法通过迭代的方式将数据集划分为多个簇,每个簇内的数据具有较高的相似性。此外,Mahout还支持Canopy聚类等高效算法,能够处理非常大的数据集。 #### 分类算法 在...
在 Mahout 中,推荐算法是其核心功能之一,用于构建个性化的推荐系统。本篇文章将详细探讨 Mahout 的推荐算法 API,特别是 `Recommender` 接口及其相关的实现。 1. **Recommender 接口**: `Recommender` 是 ...
Apache Mahout是一个用于大规模机器学习的库,它提供了一系列预定义的机器学习算法,如协同过滤、聚类和分类。在推荐系统中,Mahout常常被用来实现以下功能: 1. **协同过滤**:这是推荐系统中最常见的方法,通过...
Apache Mahout 是一个开源机器学习库,它提供了一系列的算法,用于实现数据挖掘中的聚类、分类和推荐系统。Canopy 算法是 Mahout 中的一种快速聚类方法,适用于大数据集。Canopy 算法是为了解决层次聚类(如 K-Means...
Apache Mahout是一个用于构建智能应用程序的开源机器学习库,提供了一系列灵活的数据挖掘算法实现。这些算法可以应用于各种场景,包括推荐系统、聚类分析等。Mahout的核心优势在于其高度的可扩展性和灵活性,这使得...
首先,Apache Mahout是一个开源的机器学习库,其核心目的是通过实现一系列的算法来处理数据挖掘和机器学习问题。这些算法包括但不限于协同过滤推荐引擎、聚类分析和分类技术。与传统机器学习库不同,Mahout特别强调...