[推荐系统]mahout中实现的几种相似度计算方法
来源:互联网 发布:sql server insert语句 编辑:程序博客网 时间:2024/05/22 06:40
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里面
然而,实战上并没有什么卵用
0 0
- [推荐系统]mahout中实现的几种相似度计算方法
- [推荐系统]Mahout中相似度计算方法介绍
- 推荐系统中常见的几种相似度计算方法和其适用数据
- Mahout的taste里的几种相似度计算方法
- Mahout的taste里的几种相似度计算方法
- Mahout的taste里的几种相似度计算方法
- Mahout的taste里的几种相似度计算方法
- Mahout的taste里的几种相似度计算方法
- Mahout中相似度计算方法介绍
- Mahout中相似度计算方法介绍
- Mahout中相似度计算方法介绍
- Mahout中相似度计算方法介绍
- Mahout中相似度计算方法介绍
- Mahout中相似度计算方法介绍
- Mahout中相似度距离计算方法总结
- 推荐系统:常用相似度计算方法
- 推荐系统的几种相似度计算
- 推荐系统中的相似度计算方法总结及实现代码(python)
- 2015-08-13NOIP模拟赛
- 黑马程序员———集合及其collection接口及其子类的简单介绍
- js基础
- 【经典面试题】有关指针、内存空间如何申请调用的问题
- Eclipse下的SVN插件中暂时没有提供更改用户名和密码的功能
- [推荐系统]mahout中实现的几种相似度计算方法
- 《Objective-C基础教程》第11章 属性
- i = i++为什么会是i原来的值??
- OpenCV进阶之路:神经网络识别车牌字符
- [2015-08-13] python023
- 通配符和正则表达式
- iOS 审核加急 可以用中文了 。。
- Unity 翻书效果
- HDOJ2041 超级楼梯(dp & 打表)