原文地址: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的),我们增加整体的多样性同样可以提高精度。
分享到:
相关推荐
基于UserCF和ItemCF协同过滤算法的电影推荐系统python实现源码含项目使用说明.zip基于UserCF和ItemCF协同过滤算法的电影推荐系统python实现源码含项目使用说明.zip基于UserCF和ItemCF协同过滤算法的电影推荐系统...
在这个“推荐系统教程 第2周 最流行的推荐系统:itemCF和userCF.rar”压缩包中,包含了丰富的视频教程(RS02d.avi、RS02e.avi、RS02c.avi、RS02a.mp4、RS02b.mp4)和一份PDF文档(RS02.pdf),主要探讨了两种经典的...
协同过滤推荐系统中的ItemCF和UserCF算法 协同过滤(Collaborative Filtering,CF)是当前推荐系统中应用最为成熟的一个推荐算法系类。协同过滤算法的基本思想是基于兴趣相投、拥有共同经验的群体的喜好来推荐使用...
本项目重点介绍了Mahout中的User-Based Collaborative Filtering(用户基协同过滤,UserCF)、Item-Based Collaborative Filtering(物品基协同过滤,ItemCF)以及Slope One算法的实现。 1. **User-Based ...
- 不懂运行,下载完可以私聊问,可远程教学 该资源内项目源码是个人的毕设,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! <项目介绍> 1、该资源内项目代码都经过测试运行成功,...
- 不懂运行,下载完可以私聊问,可远程教学 该资源内项目源码是个人的毕设,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! <项目介绍> 1、该资源内项目代码都经过测试运行成功,...
MovieRecommendation 基于Python3,实现电影推荐系统,数据集是MovieLens官方数据集【见data.txt】 基于用户的协同过滤算法UserCF,UserCF的思想见博客: 基于项目的协同过滤算法ItemCF 关于推荐系统的介绍见博客:
例如,可以先用逻辑回归预测用户可能的评分,再通过UserCF和ItemCF找出高分电影中的潜在热门,最后综合考虑多种因素进行推荐。项目中的"ahao111"文件可能包含了实现这三种算法的代码、数据集或者结果分析,进一步的...
毕业设计 基于Python+Django的UserCF和ItemCF协同过滤的电影推荐系统源码+详细文档+全部数据资料 优秀项目 【备注】 1、该项目是高分毕业设计项目源码,已获导师指导认可通过,答辩评审分达到95分 2、该资源内项目...
在Python中实现UserCF,我们需要依赖一些数据处理和机器学习库,如pandas用于数据处理,numpy进行数值计算。以下是一个简化的实现框架: ```python import pandas as pd from scipy.spatial.distance import cosine...
程序以matlab语言编写,包括了Pearson相似度、UserCF、ItemCF、slopeone算法
在实施UserCF之前,我们需要处理和格式化原始数据。数据通常包含用户ID、项目ID和评分三个字段。例如,`user_id, item_id, rating`。可以使用R的数据处理函数,如`read.csv`读取数据,然后使用`dplyr`等包进行清洗和...
毕业设计 基于Python+Django+itemCF和userCF算法音乐推荐系统源码+详细文档+全部数据资料 高分项目 【备注】 1、该项目是高分毕业设计项目源码,已获导师指导认可通过,答辩评审分达到95分 2、该资源内项目代码都...
在IT领域,协同过滤(Collaborative Filtering,简称CF)是一种广泛应用的推荐系统算法,它主要分为用户CF(User-Based ...而“itemCF运行结果输出”则代表了这一过程的最终产物,是评估和理解推荐系统性能的重要依据。
- 不懂运行,下载完可以私聊问,可远程教学 该资源内项目源码是个人的毕设,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! <项目介绍> 1、该资源内项目代码都经过测试运行成功,...
结合开源数据集进行电影推荐。推荐算法有:逻辑回归;UserCF_;_ItemCF_MovieRecommend
该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过严格测试运行成功才上传的,请放心下载使用...
该项目是一个简单的推荐系统评估工具,采用Python和Shell语言实现,包含35个文件,包括基础代码、测试文件、数据文件...该系统集成了SLIM、LFM、ItemCF和UserCF等多种推荐算法,旨在为用户提供全面的推荐系统性能评估。
该项目聚焦于个性化推荐系统,利用Python编程语言和Jupyter Notebook环境进行实现,主要涉及四种推荐算法:User-Based Collaborative Filtering(用户基协同过滤)、Item-Based Collaborative Filtering(物品基协同...
matlab算法,毕设、课设程序,全部源码均已进行严格测试,可以直接运行! matlab算法,毕设、课设程序,全部源码均已进行严格测试,可以直接运行! matlab算法,毕设、课设程序,全部源码均已进行严格测试,可以直接...