原文地址:http://www.douban.com/note/205755213/
之前一直觉得user-based和item-based差别不大,算法的差异小的我每次和别人说起都解释一下。后来慢慢的才发现丢脸了,其实从物理意义上2者差别大着呢,想想自己以前一直喜欢从物理角度给别人解说算法我就脸红。
UserCF和ItemCF是协同过滤中最为古老的两种算法,早在20多年前就有学着提出来,由于简单,很多网站都应用。以我现在的阅读论文经验来说,youtobe等各大网站应用的算法,概括点说就是在数据清洗阶段不同,数据组织成矩阵存储之后,差不多都是有user-based和item-based的影子。我忘了和谁聊天了,似乎是面试官还是朋友说,数据挖掘,推荐引擎什么的其实也就那样,只不过外行的看起来很高深而已,做了才知道,弄来弄去不过如此。EMC一个博士在面试我的时候也提及了类似的观点,我实现的观点也觉得,只要把如果计算相似度的逻辑搞清楚了,其余剩下的没什么难度。User-
based认为一个人会喜欢和他有相同爱好的人喜欢的东西,即人以群分,我在豆瓣上关注的人都是我喜欢的人,他们喜欢的东西我也喜欢,而Item-based认为一个人会喜欢和他以前喜欢的东西相似的东西,我喜欢文艺片,豆瓣会给我推荐文艺片。这两个假设都有其合理性。在网上看网友的博客指出,根据网友的测试,用UserCF和ItemCF做出的推荐列表中,只有50%是一样的,还有50%完全不同。但是这两个算法确有相似的精度。所以说,这两个算法是很互补的。这句话在很多书中也见过,但是没有做过测试检验。一下是网友的见解,粘贴过来:我一直认为这两个算法是推荐系统的根本,因为无论我们是用矩阵,还是用概率模型,我们都非常的依赖于前面说的两种假设。如果用户的行为不符合那两种假设,推荐系统就没必要存在了。因此我一直希望能够找出这两种算法的本质区别。他们有相似的精度,但是coverage相差很大,ItemCF
coverage很大而UserCF很小。我还测试了很多其他指标,不过要从这些表象的指标差异找出这两个算法的本质区别还是非常困难。不过上周我基本发现了这两个算法推荐机理的本质区别。我们做如下假设。每个用户兴趣爱好都是广泛的,他们可能喜欢好几个领域的东西。不过每个用户肯定也有一个主要的领域,对这个领域会比其他领域更加关心。给定一个用户,假设他喜欢3个领域A,B,C,同时A是他喜欢的主要领域。这个时候我们来看UserCF和ItemCF倾向于做出什么推荐。结果如下,如果用UserCF, 它会将A,B,C三个领域中比较热门的东西推荐给用户【这个可以理解,算法会寻找同是喜欢这3个领域的用户,然后将这3个领域中最相似的物品进行推荐】。而如果用ItemCF,它会基本上只推荐A领域的东西给用户【A领域在用户偏好中占大部分,对应item-item相似度占比率大,被推荐概率大】。因为UserCF只推荐热门的,所以UserCF在推荐长尾上能力不足。而ItemCF只推荐A领域给用户,这样他有限的推荐列表中就可能包含了一定数量的不热门item,所以ItemCF推荐长尾的能力比较强。不过ItemCF的推荐对某一个用户而言,显然多样性不足。但是对整个系统而言,因为不同的用户的主要兴趣点不同,所以系统的coverage会很大。【终于明白了覆盖率大的含义】显然上面的两种推荐都有其合理性,但都不是最好的选择,因此他们的精度也会有损失。最好的选择是,如果我们给这个用户推荐30个item,我们既不是每个领域挑选10个最热门的给他,也不是推荐30个A领域的给他,而是比如推荐15个A领域的给他,剩下的15个从B,C中选择。【这个在实际应用中就不是很容易做到了,如何将用户兴趣分类?使用图论,连接矩阵将用户兴趣偏好识别?与其这样,还不如先将数据进行社区聚类,将数据根据图划分为几个小团体,针对小团体做推荐,这样就比如将只有上面提及的3中兴趣爱好的人组成的社区里面进行推荐。至于算法,小团体里大家都差不多,对应偏好矩阵稠密度较高,2个算法差距应该不大吧,具体有待考究】认识到这一点,可以给我们设计高精度的算法指明一个方向。就是当一个系统对个人推荐的多样性不足时,我们增加个人推荐的多样性可以提高精度。而当一个系统的整体多样性不足(比如只推荐popular的),我们增加整体的多样性同样可以提高精度。
分享到:
相关推荐
推荐系统教程 第2周 最流行的推荐系统:itemCF和userCF.rar
内容推荐系统,协同过滤,ItemC,UserCF,SlopeOne
MovieRecommendation 基于Python3,实现电影推荐系统,数据集是MovieLens官方数据集【见data.txt】 基于用户的协同过滤算法UserCF,UserCF的思想见博客: 基于项目的协同过滤算法ItemCF 关于推荐系统的介绍见博客:
结合开源数据集进行电影推荐。推荐算法有:逻辑回归;UserCF ; ItemCF
用web的形式实现了mahout中的三种基本算法,前参考博客:http://blog.csdn.net/zeqblog/article/details/16809223
一个关于个性化推荐的项目(UserCF,itemCF,LFM,PersonalRank)_Python_Jupyter.zip
- 不懂运行,下载完可以私聊问,可远程教学 该资源内项目源码是个人的毕设,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! <项目介绍> 1、该资源内项目代码都经过测试运行成功,...
matlab算法,毕设、课设程序,全部源码均已进行严格测试,可以直接运行! matlab算法,毕设、课设程序,全部源码均已进行严格测试,可以直接运行! matlab算法,毕设、课设程序,全部源码均已进行严格测试,可以直接...
- 不懂运行,下载完可以私聊问,可远程教学 该资源内项目源码是个人的毕设,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! <项目介绍> 1、该资源内项目代码都经过测试运行成功,...
推荐算法分类: 按数据使用划分: 协同过滤算法:UserCF, ItemCF, ModelCF 基于内容的推荐: 用户内容属性和物品内容属性 社会化过滤:基于用户的社会网络关系 按模型划分: 最近邻模型:基于距离的协同过滤算法 ...
包括了Pearson相似度算法,基于用户的UserCF算法,基于物品的ItemCF算法,slope one算法,TopN推荐,MAE,RMSE,topN推荐准确度,覆盖率计算等常用算法 实验代码有些是两年前写的,编写有些不太规范,且个别程序时间...
UserCF 和 ItemCF 的综合比较。 实验结果表明,K值和算法的各项评测指标也不完全成正相关或负相关,选择合适的K值获得最高精准度是非常重要的。 关键词:推荐系统;协同过滤;用户相似度; UserCF; ItemCF
recommen system ,dataset ,itemCF,userCF related code and small dataset see: https://github.com/JulseJiang/Recommend_System
内容推荐系统,协同过滤,ItemCF,UserCF,SlopeOne
推荐算法协同userCF,itemCF以及权重推荐三种推荐方式推荐商品给用户 http://localhost:8082/login.html http://localhost:8082/index.html 用户介绍 普通用户 管理员 模块介绍 普通用户 登录模块 注册模块 ...
UserCF(使用sklearn 版本和 不使用sklearn版本) LFM Graph—Based Spark 实现 特征工程 ItemCF 计划项(恩 就是挖坑的意思) 推荐算实现 基于用户行为数据的推荐算法 关联规则 LFM Graph ALS 利用用户标签数据推荐...
推荐算法协同userCF,itemCF以及权重推荐三种推荐方式推荐商品给用户 http://localhost:8082/login.html http://localhost:8082/index.html 用户介绍 普通用户 qqq 123456 管理员 admin 123456 模块介绍 普通用户...
推荐算法协同userCF,itemCF以及权重推荐三种推荐方式推荐商品给用户 http://localhost:8082/login.html http://localhost:8082/index.html 用户介绍 普通用户 qqq 123456 管理员 admin 123456 模块介绍 普通用户...
推荐系统 利用MovieLens数据,Pearson相似度,分别基于User和Item构建一个简单的kNN推荐系统,并进行RMSE评价
初学者学起来容易迷茫,因此我基于Movielens 1M数据集分别实现了User Based Collaborative Filtering(以下简称UserCF)和Item Based Collaborative Filtering(以下简称ItemCF)两个算法,包含“切分训练集与测试集...