您的位置:首页 > 其它

[推荐系统]mahout中实现的几种相似度计算方法

2015-08-13 23:38 567 查看
1, pearson correlation similarity



有以下缺点:
1,如果2个人有200个common item,尽管ratings并不总是一样,但她们的相似度 可能没2个只有2 commen item的人的相似度好。看下图User1 和User5的相似度还不及User1和User4的,这好像不太科学



2,如果2 users只有一个common item,无法计算相似度。当数据量小或者矩阵非常稀疏的时候,这可能是个问题。但也可以看做 他们俩就是不怎么相似
3,如果一个人对所有的 item评分都一样,也无法计算相似度。所以pearson correlation用于boolean preference类型的推荐不太好用
这些都是可以通过公式看出来的。

2, 欧拉相似度
公式:1 / ( 1 + d ) 。 其中d就是空间中两个点的欧拉距离
两个user的欧拉距离越小, 欧拉相似度越趋近于1,说明他们俩越相似,反之亦然;
取值范围在0~1
这里不存在Pearson不能计算相似度的问题。但也存在一个问题。User1 和User4的相似度依然好于 User1和User5.



3, 余弦相似度
mahout如何把 余弦相似度 和 pearsonCorrelation 相似度实现的一致的?

均值为0,那么 sum(x)就是0,pearsonCorrelation 的公式里面,所有sum(x) * sum(y)的项全都去掉了。所以PearsonCorrelation变得跟余弦相似度一样

那么PearsonCorrelationSimilarity有的弱点,余弦相似度也有咯,

4,Spearman 相似度
慢,慢,太慢

5,Tanimoto coefficient or Jaccard ...

公式:Intersection / Union (看不懂就看下图)
好理解:两个人“共同的爱好” 占“两个人爱好总数”的比例越高,两个人越相似



< mahout in action > 的作者反复提醒说:
“只有在你没有评分数据的情况下,你才会考虑用这种相似度矩阵。
在任何你有评分数据的情况下,除非你能证明不用评分比用评分能得到更好的结果,否则都要用评分,因为他会得到更好的结果”

6,Log-likelihood-based similarity
<mahout in action > 没有给出公式,不过从向亮博士那本《推荐系统实践》中找到了答案



这公式用在 user-based,就是惩罚热门产品,用在item-based,就是惩罚活跃用户

以 item-base为例,用户越活跃(浏览记录多)N(u)越大,那么参考上面公式的分子部分,该用户对分子的贡献越小。这有利于挖掘长尾产品

7,inferring preferences
推测评分,就是把已评分的 average 加入到 未评分的item里面
然而,实战上并没有什么卵用
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: