这两天读的一本叫《Web信息架构》的书中经常提及“协同过滤”这个字眼,我后来突然发现,原来协同过滤在现在的Web2.0网站中被应用得如此普遍,尤其是在社会化音乐网站中更是被发挥到了极致。
其中最典型的应用比如:全球最大的B2C电子商务网站Amazon,网页资源的挖掘机Digg和StumbleUpon,社会化音乐服务Last.fm和iLike等。
下面便是这几天对协同过滤这个概念的学习笔记。主要参考维基百科中文和英文两个词条。
什么时协同过滤
协同过滤在我看来让大众用户难以理解的并非它背后复杂的过滤算法和推荐算法,而是它一些相对晦涩的概念和原理。
简单来说协同过滤是:推荐系统把与你臭味相投之用户喜欢的东西推荐给你。
比如说豆瓣用户登陆后在首页看到的那些由豆瓣推荐给你的电影、图书、音乐、评论、活动。
豆瓣网通过你以前在豆瓣上的记录(对音乐、图书这类资源所打的星级等)来找出豆瓣上其它与你有着相似爱好和相似经验(豆瓣活动)的豆友,并把它们喜欢的东西推荐给你。
协同过滤便是基于这样的假设:在一组兴趣相似的用户中,那么协同过滤便认为用户既然在一部事物(系统数据库中已经存在的记录)上有共同兴趣,那么这一组用户中一个用户的感兴趣的东西很可能也会被另一个用户青睐。
协同过滤的简单工作原理
协同过滤深谙臭味相投的道理。假设这里有由用户A和用户B构成的用户组,系统已经采集到(知道)这两个用户的兴趣,其中用户A对1,2,3,4非常感兴趣,而用户B对1,2,3,5亦有很大兴趣。其中1,2,3是两个用户共同的爱好。那么协同过滤就认为4和5有可能是用户B和用户A感兴趣的,于是将4推荐给用户B,把5推荐给用户A。
当然这是一个绝对简单化了的流程。事实上协同过滤要复杂得多,首先一个系统内就不仅仅存在两个用户,而且用户的喜好也是极其复杂的。
在完成对用户的推荐之前,协同过滤系统需要完成对用户兴趣的采集、近邻搜索、最终完成推荐。而协同过滤主要又分为基于用户、基于项目和基于模型三大类。