Apache Mahout的协同过滤算法分析

Apache Mahout协同过滤中,构建UserSimilarity接口使用到的方法如下:



一、基于皮尔逊相关系数算法

皮尔逊相关系数是一个介于1和-1之间的数,它度量两个一一对应的数列之间的线性相关程度。也就是说,它表示两个数列中对应数字一起增长或一起减小的可能性。它度量数字一起按比例改变的倾向性,也就是说两个数列中的数字存在一个大致的线性关系。当该倾向性强时,相关值趋于1.当相关性弱时,相关值趋向0,在负相关的情况下(一个序列的值高而一个序列的值低),相关值趋向于-1。

数学上,皮尔逊相关性系数是两个序列协方差与二者方差乘积的比值。协方差计算的是两个序列变化趋势一致的绝对值。当两个序列相对于各自的均值点向同一方向移动得越远,协方差纸就越大。除以方差是为了对这一变化进行归一化


二、基于欧氏(欧几里德)距离算法

这一实现基于用户之间的距离。你需要将用户想象成多维空间中的点(维数等于总的物品数),偏好值是坐标。这种相似性度量计算两个用户点之间的欧式距离d。这个值本身并不代表相似度,因为该值越大表示距离越远,也就是说两个用户越不相似。用户越相似,这个值应该越小。因此,实际应用中取1/(1+d)为相似度


三、余弦相似度

余弦相似度也将用户偏好值视为空间中的点,并基于此进行相似性度量。你需要将用户偏好值视为n维空间中的点。现在,假设有两条从原点出发,分别到这两个点的射线。两条射线之间的夹角的余弦代表相似度值


四、斯皮尔曼相关系数算法

斯皮尔曼相关系数是皮尔逊相关系数的一个有趣的变体。该相关系数并非基于原始的偏好值,而是基于偏好值的相对排名来计算。这个为实现非常慢。


五、谷本系数算法

谷本系数是指两个用户各自表达过偏好的两个物品集合的交集与并集大小的比值。换句话说:它是两个偏好物品集合的交集大小与并集大小的比值。


六、对数似然比

这一相似性度量试图判断两个用户口味不相似的不可能性有多大;不可能性越大,两个用户的相似度越高。基于对数似然比的相似度往往优于基于谷本系数的相似度,他是一个更智能的度量标准。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值