协同过滤简单来说是利用某
兴趣相投、拥有共同经验之群体的喜好来推荐用户感兴趣的
信息,个人通过合作的机制给予信息相当程度的回应(如评分)并记录下来以达到过滤的目的进而帮助别人
筛选信息,回应不一定局限于特别感兴趣的,特别不感兴趣信息的纪录也相当重要。
发展简史
以下就“协同过滤”发展历史上几个重要的
里程碑做相关阐述:
Tapestry(1992)
这是最早应用协同过滤
系统的设计,主要是解决Xerox公司在Palo Alto的研究中心
资讯过载的问题。这个研究中心的员工每天会收到非常多的电子邮件却无从
筛选分类,于是研究中心便发展这项实验性的邮件系统来帮助员工解决这项问题。 其
运作机制大致如下:
个人决定自己的感兴趣的
邮件类型;个人旋即随机发出一项资讯
需求,可预测的结果是会收到非常多相关的文件;从这些文件中个人选出至少三笔
资料是其认为有用、会想要看的;系统便将之记录起来成为个人邮件系统内的
过滤器,从此以后经过过滤的文件会最先送达信箱;以上是协同过滤最早的应用,接下来的里程碑为GroupLens。
GroupLens(1994)
这个系统主要是应用在新闻的
筛选上,帮助新闻的阅听者过滤其感
兴趣的新闻内容,阅听者看过内容后给一个评比的分数,系统会将
分数记录起来以备未来参考之用,假设前提是阅听者以前感
兴趣的东西在未来也会有兴趣阅听,若阅听者不愿揭露自己的身分也可以匿名进行评分。 和Tapestry不同之处有两点,首先,Tapestry专指一个点(如一个网站内、一个系统内)的过滤
机制;GroupLens则是跨点跨系统的新闻过滤
机制。再来,Tapestry不会将同一笔资料的评比总和起来;GroupLens会将同一笔
资料从不同使用者得到的评比加总。
GroupLens具有以下特点:开放性:所有的新闻阅听者皆可使用,虽然系统委托Better Bit Bureau设计给分的系统,但若有不同的
评分机制也适用于GroupLens。方便性:给分并不是一件困难的事情且沟通上非常方便,评分结果容易诠释。
规模性:有可能发展成大规模的系统,一旦发展成大规模,储存空间与计算成本问题显得相当棘手。隐密性:如果使用者不想让别人知道他是谁,别人就不会知道。由此可以看出,现今网络各个推荐系统的雏形已然形成,在GroupLens之后还有性质相近的
MovieLens,电影推荐系统;Ringo,音乐推荐系统;Video Recommender,影音推荐系统;以及Jster,笑话推荐系统等等。乃至于YouTube、aNobii皆是相似性值得网络推荐平台,较不同的是经过
时间推移,网络越来越发达,使用者越来越多,系统也发展得越来越严密。
电子商务的推荐系统
最著名的电子商务推荐系统应属
亚马逊网络书店,顾客选择一本自己感兴趣的书籍,马上会在底下看到一行“Customer Who Bought This Item Also Bought”,亚马逊是在“对同样一本书有兴趣的读者们兴趣在某种程度上相近”的假设前提下提供这样的推荐,此举也成为亚马逊网络书店为人所津津乐道的一项服务,各网络书店也跟进做这样的推荐服务如台湾的博客来网络书店。 另外一个著名的例子是
Facebook的广告,系统根据个人资料、周遭朋友感兴趣的广告等等对个人提供广告推销,也是一项协同过滤重要的里程碑,和前二者Tapestry、GroupLens不同的是在这里虽然商业气息浓厚同时还是带给使用者很大的方便。 以上为三项协同过滤发展上重要的里程碑,从早期单一系统内的邮件、
文件过滤,到跨系统的新闻、电影、音乐过滤,乃至于横行
互联网的电子商务,虽然目的不太相同,但带给使用者的方便是大家都不能否定的。
优缺点
优点
以用户的角度来推荐的协同过滤系统有下列优点:
能够过滤机器难以自动内容分析的信息,如
艺术品,音乐等。
共用其他人的
经验,避免了内容分析的不完全或不精确,并且能够基于一些复杂的,难以表述的
概念(如信息质量、个人品味)进行过滤。
有推荐新信息的能力。可以发现内容上完全不相似的
信息,用户对推荐信息的
内容事先是预料不到的。可以发现用户潜在的但自己尚未发现的
兴趣偏好。
推荐个性化、自动化程度高、能够有效的利用其他相似用户的
回馈信息、加快
个性化学习的速度。
缺点
虽然协同过滤作为一推荐机制有其相当的
应用,但协同过滤仍有许多的问题需要解决。整体而言,最典型的问题有
新用户问题(New User Problem) 系统开始时推荐
质量较差;
新项目问题(New Item Problem) 质量取决于历史数据集;
系统延伸性问题(Scalability)。
算法介绍
协同过滤推荐(Collaborative Filtering recommendation)是在信息过滤和
信息系统中正迅速成为一项很受欢迎的技术。与传统的基于内容过滤直接分析内容进行推荐不同,协同过滤分析用户
兴趣,在用户群中找到指定用户的相似(兴趣)用户,综合这些相似用户对某一信息的评价,形成系统对该指定用户对此信息的喜好程度预测。
(1)能够过滤难以进行机器自动基于内容分析的信息。如艺术品、音乐;
(2)能够基于一些复杂的,难以表达的
概念(信息质量、品位)进行过滤;
(3)推荐的新颖性。
正因为如此,协同过滤在
商业应用上也取得了不错的成绩。
Amazon,CDNow,MovieFinder,都采用了协同过滤的技术来提高服务质量。
缺点是:
(1)用户对商品的评价非常
稀疏,这样基于用户的评价所得到的用户间的相似性可能不准确(即稀疏性问题);
(2)随着用户和商品的增多,系统的性能会越来越低;
(3)如果从来没有用户对某一商品加以评价,则这个商品就不可能被推荐(即最初评价问题)。
因此,电子商务
推荐系统都采用了几种技术相结合的推荐技术。
案例: AMAZON
个性化推荐系统先驱 (基于协同过滤)
AMAZON是一个虚拟的
网上书店,它没有自己的店面,而是在网上进行在线销售。它提供了高质量的综合节目数据库和检索系统,
用户可以在网上查询有关图书的信息。如果用户需要购买的话,可以把选择的书放在虚拟购书篮中,最后查看购书篮中的商品,选择合适的服务方式并且
提交订单,这样读者所选购的书在几天后就可以送到家。
AMAZON书店还提供先进的个性化
推荐功能,能为不同兴趣偏好的用户自动推荐尽量符合其兴趣需要的书籍。 AMAZON使用推荐软件对读者曾经购买过的书以及该读者对其他书的评价进行分析后,将向读者推荐他可能喜欢的新书,只要
鼠标点一下,就可以买到该书;AMAZON能对
顾客购买过的东西进行自动分析,然后因人而异的提出合适的建议。读者的信息将被再次保存,这样顾客下次来时就能更容易的买到想要的书。此外,完善的售后服务也是AMAZON的优势,读者可以在拿到书籍的30天内,将完好无损的书和音乐光盘退回AMAZON,AMAZON将原价退款。当然AMAZON的成功还不止于此,如果一位顾客在AMAZON购买一本书,下次他再次访问时,映入眼帘的首先是这位顾客的名字和欢迎的
字样。
算法细分
以用户为基础(User-based)的协同过滤
用相似统计的方法得到具有相似爱好或者兴趣的相邻
用户,所以称之为以用户为基础(User-based)的协同过滤或基于
邻居的协同过滤(Neighbor-based Collaborative Filtering)。 方法步骤:
1.收集用户信息
收集可以代表用户兴趣的信息。一般的网站系统使用评分的方式或是给予
评价,这种方式被称为“主动评分”。另外一种是“被动评分”,是根据用户的行为模式由
系统代替用户完成评价,不需要用户直接打分或输入评价数据。电子商务网站在被动评分的
数据获取上有其优势,用户购买的商品记录是相当有用的
数据。
2.最近邻搜索(Nearest neighbor search, NNS)
以用户为基础(User-based)的协同
过滤的出发点是与用户兴趣爱好相同的另一组用户,就是计算两个用户的相似度。例如:查找n个和A有相似兴趣用户,把他们对M的评分作为A对M的评分预测。一般会根据数据的不同选择不同的算法,较多使用的相似度
算法有Pearson Correlation Coefficient、Cosine-based Similarity、Adjusted Cosine Similarity。
有了最近邻集合,就可以对目标用户的兴趣进行预测,产生推荐结果。依据推荐目的的不同进行不同
形式的推荐,较常见的推荐结果有Top-N 推荐和关系
推荐。Top-N 推荐是针对个体用户产生,对每个人产生不一样的结果,例如:通过对A用户的最近邻用户进行统计,选择出现频率高且在A用户的评分项目中不存在的,作为推荐结果。关系推荐是对最近邻用户的记录进行关系规则(association rules)
挖掘。
以项目为基础(Item-based)的协同过滤
以用户为基础的协同推荐算法随着用户
数量的增多,计算的时间就会变长,所以在2001年Sarwar提出了基于项目的协同过滤推荐
算法(Item-based Collaborative Filtering Algorithms)。以
项目为基础的协同过滤方法有一个基本的假设“能够引起用户兴趣的项目,必定与其之前评分高的项目相似”,通过计算项目之间的相似性来代替用户之间的相似性。 方法步骤:
1.收集用户信息
同以用户为基础(User-based)的协同过滤。
先计算已评价项目和待预测项目的
相似度,并以相似度作为
权重,加权各已评价项目的分数,得到待预测项目的
预测值。例如:要对项目 A 和项目 B 进行相似性计算,要先找出同时对 A 和 B 打过分的组合,对这些组合进行相似度计算,常用的算法同以用户为基础(User-based)的
协同过滤。
3.产生推荐结果
以项目为基础的协同过滤不用考虑用户间的差别,所以
精度比较差。但是却不需要用户的历史数据,或是进行用户识别。对于
项目来讲,它们之间的相似性要稳定很多,因此可以离线完成工作量最大的相似性计算步骤,从而降低了在线计算量,提高推荐效率,尤其是在用户多于项目的情形下尤为
显著。
以模型为基础(Model- based)的协同过滤
以用户为基础(User-based)的协同过滤和以项目为基础(Item-based)的协同过滤统称为以记忆为基础(Memory based)的协同
过滤技术,他们共有的缺点是数据
稀疏,难以处理大数据量影响即时
结果,因此发展出以模型为基础的协同过滤技术。 以模型为基础的协同过滤(Model-based Collaborative Filtering)是先用历史数据得到一个模型,再用此模型进行
预测。以模型为基础的协同过滤广泛使用的技术包括Latent Semantic Indexing、Bayesian Networks…等,根据对一个样本的分析得到模型。
未来发展
Item-based的推荐算法能解决User-based协同过滤的一些
问题,但其仍有许多问题需要
解决,最典型的有稀疏问题(Sparsity)和冷引导问题(Cold-start),冷引导时
效果较差。此外还有新用户问题和算法健壮性等问题。协同过滤作为一种典型的推荐技术有相当的
应用,很多技术都是围绕协同过滤而展开研究的。在信息种类、表达方式越来越多的时代,旧式的信息分类过滤系统无法
满足的地方,期许未来能用协同过滤的方法来解决。