一、推荐系统产生的背景
随着WEB2.0和移动互联网的快速发展,我们已经进入了一个数据爆炸的大数据时代。人们想要找到自己想要的信息也变得越来越难,这就是所谓的信息超载(information overload)问题。解决信息超载问题的常见办法就是搜索引擎和推荐系统。搜索引擎是在用户有相对明确的需求时,通过search的方式找到自己需要的数据。但是在很多情况下,用户其实并不明确自己的需要,或者他们需要更加符合他们个人口味和偏好的结果,因此,就出现了推荐系统Recommendation .
和搜索引擎相比推荐系统通过对用户的历史行为进行挖掘,对用户兴趣进行建模,并对用户未来的行为进行预测,从而建立了用户和内容的关系。一个好的推荐系统不仅能为用户提供个性化的服务,还能和用户之间建立密切关系,让用户对推荐产生依赖。
最著名的电子商务推荐系统应属亚马逊网络书店,顾客选择一本自己感兴趣的书籍,马上会在底下看到一行“Customer Who Bought This Item Also Bought”,亚马逊是在“对同样一本书有兴趣的读者们兴趣在某种程度上相近”的假设前提下提供这样的推荐,此举也成为亚马逊网络书店为人所津津乐道的一项服务,各网络书店也跟进做这样的推荐服务。
二、常见的几种推荐方法
常见的推荐方法有:基于内容的推荐、协同过滤推荐、基于关联规则的推荐、基于效用的推荐、基于知识的推荐、组合推荐等。其中,在电商领域最常用的就是协同过滤推荐。
协同过滤推荐(Collaborative Filtering Recommendation)技术是推荐系统中应用最早和最为成功的技术之一。它一般采用最近邻技术,利用用户的历史喜好信息计算用户之间的距离,然后利用目标用户的最近邻居用户对商品评价的加权评价值来预测目标用户对特定商品的喜好程度,系统从而根据这一喜好程度来对目标用户进行推荐。协同过滤最大优点是对推荐对象没有特殊的要求,能处理非结构化的复杂对象,如音乐、电影。
协同过滤是基于这样的假设:为一用户找到他真正感兴趣的内容的好方法是首先找到与此用户有相似兴趣的其他用户,然后将他们感兴趣的内容推荐给此用户。其基本思想非常易于理解,在日常生活中,我们往往会利用好朋友的推荐来进行一些选择。协同过滤正是把这一思想运用到电子商务推荐系统中来,基于其他用户对某一内容的评价来向目标用户进行推荐。
以下重点介绍基于用户的协同过滤和基于物品的协同过滤两种方法。
三、基于用户的协同过滤原理与算法
基于user的协同过滤(user-based CF)是通过不同用户对item的评分来评测用户之间的相似性,基于用户之间的相似性来做出推荐。基于用户的协同过滤算法主要有两步:
1)找到和目标用户兴趣相似的用户集合
2) 找到这个集合中的用户喜欢的,且目标用户没有听说过的物品推荐给目标用户。
其基本原理如下图所示:
上图示意出基于用户的协同过滤推荐机制的基本原理,假设用户 A 喜欢物品 A,物品 C,用户 B 喜欢物品 B,用户 C 喜欢物品 A ,物品 C 和物品 D;从这些用户的历史喜好信息中,我们可以发现用户 A 和用户 C 的口味和偏好是比较类似的,同时用户 C 还喜欢物品 D,那么我们可以推断用户 A 可能也喜欢物品 D,因此可以将物品 D 推荐给用户 A。
算法实现:将一个用户对所有物品的偏好作为一个向量(Vector)来计算用户之间的相似性,找到K-邻居后,根据邻居的相似度权重以及他们对物品的喜好,为目标用户生成一个排序的物品列表作为推荐,列表里面都是目标用户为涉及的物品。
四、基于物品的协同过滤原理与算法
基于item的协同过滤(item-based CF)是通过用户对不同item的评分来评测item之间的相似性,基于item之间的相似性做出推荐。基于物品的协同过滤算法也可分为两步:
1)计算物品之间的相似度
2)根据物品的相似度和用户的历史行为给用户生成推荐列表
其基本原理如下图:
假设用户A喜欢物品A和物品C,用户B喜欢物品A、物品B和物品C,用户C喜欢物品A,从这些用户的历史喜好可以分析出物品A和物品C是比较类似的,喜欢物品A的人都喜欢物品C,基于这个数据可以推断用户C 很有可能也喜欢物品C,所以系统会将物品C推荐给用户C。
算法实现:将所有用户对某一个物品的喜好作为一个向量来计算物品之间的相似度,得到物品的相似物品后,根据用户历史的喜好预测目标用户还没有涉及的物品,计算得到一个排序的物品列表作为推荐。
五、基于用户与基于物品的协同过滤的比较
基于以上分析可以看出,UserCF是推荐用户所在兴趣小组中的热点,更注重社会化,而ItemCF则是根据用户历史行为推荐相似物品,更注重个性化。而Item CF适合长尾物品丰富,用户个性化需求强烈的领域,如图书、电影等。所以UserCF一般用在新闻类网站中,如Digg、yahoo新闻等,而Item CF则用在电商类网站中,如Amazon,Netflix、Youtube、hulu等等。通常购物网站会采用Item CF,因为物品相对于用户数更少,更容易计算。
实际中一般推荐系统较多是混用多种算法,所以有以Item CF为基础,辅以User CF,或是content-based等多种方法进行融合。