`
小野bupt
  • 浏览: 13921 次
  • 性别: Icon_minigender_1
文章分类
社区版块
存档分类
最新评论

UserCF和ItemCF的联系和区别

 
阅读更多

原文地址: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的),我们增加整体的多样性同样可以提高精度。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics