2.1 推荐系统概述
2.1.1 推荐系统基础
目前被普遍接受的推荐系统的定义是Resnick和Varian提出的:利用电子商务网站向用户提供商品信息和建议,帮助用户决定应该购买什么产品,模拟销售人员帮助用户完成购买过程。推荐系统主要由三部分构成:用户行为数据、用户兴趣模型、推荐算法。通用的推荐系统基础架构如图2.1所示。
图2.1 推荐系统基础架构
(1)用户行为数据
个性化推荐算法基于对用户行为数据的分析。从商业角度来说,用户的行为并不是随机的,而是蕴含着某种规律或模式的。在个性化推荐系统出现之前,基于用户行为数据的应用就已经以各种排行榜的形式出现在互联网中了。这些排行榜只是用户行为数据的简单统计,针对的是所有互联网用户,还不属于个性化推荐的范畴。个性化推荐算法对用户行为数据进行深入的分析,通过构建用户兴趣模型,产生一对一的个性化推荐,提升用户体验。
用户行为数据在个性化推荐系统中主要分为两种——显式用户行为数据与隐式用户行为数据。显式用户行为数据定义为用户对项目有明确偏好的数据,其形式主要表现为用户对项目的显式评分。很多网站都使用五分评分制让用户表达对项目的明确偏好,5分为最喜欢,1分为最不喜欢。也有网站直接使用喜欢、不喜欢两挡评分系统来获得用户的反馈数据。比如,YouTube最早使用五分评分系统,但研究人员通过统计不同评分项的频度发现,用户最常用的评分是5分和1分,其他评分很少出现,因此,YouTube放弃了五分评分系统,开始采用两挡评分系统。需要说明的是,采用五分评分系统还是两挡评分系统,需要结合业务性质进行实际分析。YouTube的案例并不能说明两挡评分系统优于五分评分系统,这是因为YouTube是单一的视频网站,用户在观看视频后,只有在特别喜欢或特别不喜欢时才会进行评分,两挡评分系统更合适。对于商品评论网站,用户更关注评论的内容,多挡评分就是必要的。
隐式用户行为数据是指那些不能明确表达用户偏好的数据,其主要表现形式为用户页面浏览数据。相比显式数据,隐式用户行为数据表达不明确,难以处理,但是数目量大。很多网站只有用户的隐式反馈数据,比如淘宝网,在不涉及用户隐私的情况下,只能通过网络日志获得用户浏览商品的历史数据。表2.1给出了不同种类网站的显式与隐式用户行为数据。
表2.1 显式与隐式用户行为数据实例
(2)用户兴趣模型
用户兴趣模型对推荐系统能否为用户提供个性化的、准确的、多样的推荐有着至关重要的作用。用户兴趣模型以定量的形式描述用户的兴趣偏好,通过推理学习对用户进行识别和分类,帮助推荐系统更好地表示、存储用户的特征和类别,理解用户的个性化需求,从而更准确、高效地向用户推荐信息。用户兴趣模型的建模过程如图2.2所示。
图2.2 用户兴趣模型的建模过程
图2.2中的“获取用户信息”实际上是输入推荐系统的数据,常用的输入数据类型如表2.2所示。
表2.2 用户兴趣模型的输入数据类型
用户兴趣模型的建模方法主要有遗传算法、基于机器学习的方法,例如决策树归纳、神经网络、TF-IDF、自动聚类以及贝叶斯分类器等。
用户兴趣模型的输出可以有多种表示方法,常用的方法如表2.3所示。
表2.3 用户兴趣模型的输出方法
(3)推荐算法
推荐算法是推荐系统最重要的一部分,其本质是设计一种方式将用户和商品联系起来,而不同的推荐系统采用不同的方式。常用的联系用户和商品的方式包括好友关系、用户的历史兴趣记录以及用户的注册信息等。推荐算法主要分为四类,除协同过滤推荐算法和基于网络结构的推荐算法外,还包括基于内容的推荐算法和组合推荐算法。
从功能模块角度来看,推荐系统分为三大功能模块:输入模块、推荐算法模块与输出模块,如图2.3所示。
图2.3 推荐系统的功能模块
三个功能模块详细介绍如下。
1)输入模块
该模块用于输入数据集,例如用户浏览记录、用户历史购买记录、用户对产品或者服务的历史评分、用户给产品或者服务贴的标签等,一般以特征向量的形式表示信息。
2)推荐算法模块
这是推荐系统的核心部分,也是个性化推荐技术领域研究的重点,用于处理输入信息并形成推荐信息,具体分为基于关联规则的推荐、基于内容的推荐、协同过滤推荐、组合推荐等几类。
3)输出模块
该模块输出个性化推荐系统产生的推荐结果,主要形式包括:建议,根据客户的个性化偏好向用户推荐最可能喜欢的Top-N件产品;预测,根据客户的个性化偏好预测当前用户会不会喜欢当前项目;个体评分,根据历史记录预测当前用户对给定项目的可能评分。
2.1.2 推荐系统主要算法类型
基于内容的推荐算法:侧重用户和项目的内容信息分析,收入、职业、年龄、学历等个人信息会隐含用户的偏好,商品的属性如色彩、种类、价格等会暗示面向的消费群体。基于内容的推荐算法根据用户已经评价或选择过的项目,从候选项目集中选择与其特征属性相似的项目作为推荐对象。这一算法的策略是首先提取用户已评价项目集元素的内容特征属性,然后与用户兴趣模型中的用户兴趣偏好相匹配,相似度较高的项目就可作为推荐对象向目标用户推荐。但存在的问题是项目的特征属性难以提取,尤其是对多媒体资源如视频、图像、音乐等,这就限制了算法的适用范围。因此,基于内容的推荐算法比较适合纯文本对象(如新闻网页等)的推荐。
组合推荐算法:不同的推荐算法有各自的优缺点,针对具体问题,在实际应用时可以组合不同的推荐算法进行推荐,即组合推荐。组合推荐是通过组合不同的推荐策略,取长补短,使推荐结果更符合目标用户的需求。推荐组合在理论上可以有很多种,但目前研究和应用最多的是基于内容的推荐算法和协同过滤推荐算法的组合。组合推荐算法容易提高算法的复杂度,降低推荐的实时性,而且难以解决组合推荐的最优参数问题。
推荐算法的性能直接影响了用户对推荐系统的使用体验,而不同的推荐算法适用于不同的推荐系统,采用何种推荐算法要综合考虑用户、项目等多种因素。协同过滤推荐是常见的方法,下面对协同过滤推荐进行简要介绍。
2.1.3 协同过滤推荐
协同过滤(Collaborative Filtering,CF)推荐算法主要解决“怎样为目标用户提供他们可能感兴趣的内容”这一问题,基于这样的一个基本假设:先找到和目标用户的兴趣爱好有较大相似度的其他用户,然后将其他用户感兴趣的内容推荐给目标用户。
国外研究学者对于CF技术比较经典的定义是:CF推荐算法的运作原理就是将口碑效应的过程自动化,推荐系统对于目标用户给出的推荐由其他“口味”与之相似的其他用户之喜好决定。CF算法做推荐时需要将用户-项目评分矩阵输入,作为系统的输入数据,用户所给出的评分数据可以是0或1这样的二值型,也可以是0~5之内的实数,不同的数值大小代表了用户对项目的偏好程度的高低。
在这里需要指出的是,推荐系统的输入数据,即用户-项目的评分数据分为显式数据(Explicit Rating)和隐式数据(Implicit Rating)两种。显式数据就是目标用户在系统中明确给出的具体评分数值,这一数值可以“明显”地反映出目标用户喜欢这个物品,数值越大,就表示越喜欢。相反,隐式数据是系统通过追踪记录用户在电子商务网站的浏览、点击等行为,具体分析之后,结合社会行为科学、心理学的最新研究成果来评判目标用户对于某一项目的偏好程度,最终做出推荐。需要强调的是,在某些情况下,基于隐式数据的推荐更能准确反映用户的内在偏好。但由于隐式数据难以获取和准确使用,因此隐式数据的预处理工作至关重要。
具体推荐流程如图2.4所示。
图2.4 CF算法推荐流程图
CF推荐算法在实际应用场景中被分为两类,它们各自为:基于内存的CF推荐算法和基于模型的CF推荐算法。首先得到系统中有哪些用户在兴趣爱好方面比较相似,然后根据最近邻在系统中的评分行为预测出目标用户对于某一项目的评分值,最后将推荐列表呈现给目标用户。这是基于内存的CF推荐算法的具体算法思想。基于内存的CF推荐算法主要基于系统中的用户-项目评分数据进行预测,进一步被分为基于用户的CF推荐算法(User-Based Collaborative Filtering,UBCF)和基于项目的CF推荐算法(Item-Based Collaborative Filtering,IBCF)。通常所提到的协同过滤算法都是指UBCF算法,IBCF算法是对UBCF算法的一种改进。
在典型的电子商务环境中,项目之间的关系相对来说比较稳定,所以利用项目之间的相似度,IBCF算法可以花费较少的在线计算时间来得到与基于用户的协同过滤系统准确性相近的预测结果。这种方法在某种程度上解决了基于用户的协同过滤系统中存在的可扩展性问题。
在基于模型的CF推荐算法中广泛采用的技术包括聚类技术、贝叶斯网络、机器学习方法,还有与“购物篮”类似的关联规则推荐等。
基于模型的CF推荐算法大多数利用数学和概率的方法对用户评分过程进行分析,并基于此进行数学建模,这个过程实际上就是机器学习的过程。通过对目前用户历史评分数据(历史行为)进行学习,提取用户相关特征,完成对系统复杂模式的识别、建立项目评分预测模型,后期对模型不断训练优化,最终使用这个模型进行预测。
针对数据稀疏问题,基于模型的CF推荐,例如概率矩阵分解模型、马尔科夫决策模型、贝叶斯网络模型等,比基于内存的CF推荐效果更加准确。基于模型的CF推荐算法通常需要线下对训练数据学习,然后获得预测模型,不能在线实时训练,因为训练时间通常较长,但是模型一旦训练完成,一般就可以进行在线实时预测了。
随着电子商务的迅猛发展,电子商务系统规模不断扩大,用户和项目的数量也不可避免地急剧增加。然而,当电子商务系统中用户和项目的数量达到不小的规模时,对于系统的有效控制就会比较难以做到,进而产生各种各样的问题:
(1)找到目标用户的最近邻居集的困难度会很高,而且也会浪费大量的精力与时间,复杂度较高,即系统的扩展性不佳的问题。
(2)对于系统中新加入的那些项目,在最开始的时候很可能根本没有人对它们评分,这样一来,这个项目就很难被推荐给网站用户了,即产生了冷启动问题。
(3)很多时候用户不愿意花费时间和精力对其体验过的项目给出自己的评分。这样一来,用户间共同给过评分的项目数量较少,这就是我们经常提到的数据稀疏性的问题。
以上描述的几个问题假如在系统中出现的次数太多,便会不可避免地造成网站中的用户对系统持一种怀疑或者不信任的态度,最后严重影响用户体验,导致网站用户失望离开。鉴于以上情况,研究人员针对具体问题提出了多种不同的解决方案。例如,矩阵填充技术可以在一定程度上解决数据稀疏性问题,矩阵降维技术能够相对降低系统计算的复杂度等。
2.1.4 推荐算法评价指标
推荐算法性能的优劣直接影响推荐效果的好坏。对推荐算法做出客观而合理的评价在本质上并不简单,有各方面的指标。这是因为:(1)不同的算法适用于不同的数据集及场景。比如有些算法适用于没有显式评分的数据集,只要用户收藏商品就认为用户对此商品感兴趣。(2)从实际应用角度来说,推荐算法必须考虑时间与空间复杂度。尽管有些算法能够获得很好的推荐效果,但通常以高复杂度为代价。一个良好的推荐系统不应该仅满足推荐结果的要求,还应满足实时性的要求。(3)不同指标侧重点不同,有不同的意义,难以综合评价。
推荐算法的优劣往往采用准确度来度量。但是仅采用准确度并不能全面而综合地度量推荐算法。比如,一个图书推荐系统向用户推荐的都是用户已经阅读过的书籍,毫无疑问此推荐系统的准确度达到了100%,但是推荐的内容没有任何意义。推荐系统应能向用户推荐多种类型的商品。如果推荐系统向所有用户推荐相同或雷同的商品,那么此推荐系统的个性化程度将有待提高。好的推荐系统不仅能够准确预测用户的行为,而且能够扩展用户的视野,帮助用户发现可能会感兴趣但却不容易发现的信息。研究表明,推荐系统的多样性和用户满意度之间存在正相关关系,推荐列表的多样性对用户感知系统有用性和易用性有着积极和重要的影响。常见的推荐算法评价指标有:准确度、覆盖率、多样性、新颖性和惊喜度、用户满意度等。其中,有的是可以通过开展离线实验直接计算得出的,如预测结果准确度、多样性等;有的则难以直接计算,需要使用问卷调查的方式来搜集,如用户满意度、惊喜度、信任度等。下面对常用的度量方法进行简要介绍。
(1)准确度
推荐准确度是推荐领域的重要指标,其优点在于通过离线方式能够容易地计算出来,方便快速评价和选择推荐算法。在计算时,将数据集分成训练集和测试集,在训练集上建立用户的行为和兴趣模型预测用户在测试集上的行为,并计算预测行为和测试集上实际行为的重合度作为预测准确度。常用的准确度度量方法有平均绝对误差MAE(Mean Absolute Error)、均方根误差RMSE(Root Mean Squared Error)、召回率RE(Recall Enhancement)和精确度P(Precision)等。
1)平均绝对误差
它的含义如下:在得到系统经过计算给出的对于目标用户的预测评分之后,计算其相应的项目实际评分之间的平均绝对误差。这样可以通过误差的大小,直接度量推荐算法预测准确与否。因此,平均绝对误差越小,推荐效果就越好。
其中,n为参与预测的项目数,pi是系统预测的目标用户的评分,ri是目标用户实际评分。研究表明,如果评分系统是整数评分系统(用户的评分都是整数),那么预测结果取整会减小MAE。
2)均方根误差
定义如下:
其中,n为参与预测的项目数,pi是系统预测的目标用户的评分,ri是目标用户实际评分。
3)召回率和精确度
召回率和精确度是广泛用于信息检索和统计学分类领域的两个度量值,用来评价结果的质量。对于任意一个用户j,假设在测试集中用户j感兴趣的项目集合长度为Dj(通常评分在3分以上,5分为最高),全部评分项目集合长度为Tj,成功推荐项目数为Pj,那么召回率与精确度的计算方法分别为:
召回率的设定基于这样一个假设:如果用户感兴趣的项目成功地出现在了最终的推荐列表中,就认为推荐系统对于此项目的推荐是成功的。所以说,召回率衡量的就是系统成功推荐的项目数量与兴趣项目总数的比率。
为了全面测评召回率和精确度,一般会选取多个推荐列表长度,计算出一组召回率和精确度。早期推荐算法研究绝大多数采用MAE作为评价推荐算法准确度的标准。对此,2009年,亚马逊前科学家Greg Linden在Communications of the ACM上发表的一篇文章中指出:推荐的目的是找到用户更有可能感兴趣的商品,而不是预测用户会对商品评多少分。比如,可能用户看了一部电影之后会给很高的评分,但他看这部电影的概率很小,如果不看,就谈不上对其进行评分了。因此,对于网站来说,预测用户会不会看一部电影,比预测用户看电影后会评分多少更重要。
由于不同系统的任务是不一样的,而且评价指标缺乏标准化,因此很难对不同系统的推荐算法进行比较。针对不同的系统,已有的准确度指标有:预测准确度、分类准确度、排序准确度、预测打分关联、距离标准化指标和半衰期效用指标。
排序准确度指标用于度量推荐算法得出的列表符合用户对产品排序的程度,适用于评价对产品序列敏感的推荐系统,因为用户浏览全部推荐项目的可能性较小,通常情况下,用户只关注排在推荐列表前面的几个项目。
周涛等提出平均排序分度量推荐系统的排序准确度,具体定义如下:
其中,N为训练集中用户未选择的产品个数,Li为预测集中待预测产品,i为在推荐列表中的位置。
(2)覆盖率C(Cover)
覆盖率为推荐系统推荐项目占总项目集合的比率。假设系统的用户集合为U,项目集合为I,推荐列表R(u)长度为L,则覆盖率的计算公式为:
从公式定义中可以看出,信息生产者更关心推荐算法的覆盖率。以图书推荐为例,出版社更关心他们的书有没有被推荐给用户。100%覆盖率的推荐算法会将每件商品至少推荐给一位用户。热门排行榜的推荐覆盖率较低,因为只有明星项目被推荐,明星项目在总项目集合中的占比较小。
(3)多样性
多样性反映针对不同用户的推荐列表的个性化程度。一个好的推荐系统应该是个性化的,通过构建用户兴趣模型,能向不同的用户推荐不一样的商品。假设R(u)为用户u的推荐列表,s(i,j)为项目i和项目j之间的相似度,则用户u的推荐列表多样性定义为:
推荐系统的整体多样性定义为:
其中,U为用户的集合。
推荐系统领域的顶级国际会议——ACM会议的组织者曾提出的一个观点得到了大家的认同:增加推荐结果的多样性不可避免地会降低推荐结果的准确度,如何两者兼顾是学术研究需要重点关注的问题。
(4)新颖性和惊喜度
新颖性是指向用户推荐没有接触过的项目。目前为止,还没有被普遍认可的新颖性度量方法。Celma认为最简单的评测新颖性的方法是计算推荐项目的平均流行度,因为冷门的物品更有可能让用户感觉新颖。如果推荐列表项目的平均流行度较低,那么此推荐列表的新颖性可能较高。但是不同用户的认知程度不同,因此要准确地计算新颖性,还需要做用户调查。
对于惊喜度,目前还没有统一的定义,但是普遍认为令人惊喜的推荐应该是和用户历史上喜欢的物品不相似,但是让用户感到满意的推荐。比如从某位用户的电影观看历史来看,该用户偏好惊悚类电影,但如果推荐系统向该用户推荐了一部喜剧类电影,并且获得了该用户较高的评价,那么认为此推荐的惊喜度较高。因此,提高推荐的惊喜度应该提高用户的满意度,同时降低推荐列表与用户历史数据的相似度。
(5)信任度
用以衡量用户对推荐系统推荐项目的信任程度。如果推荐系统向用户推荐他们熟悉的产品或项目,则用户满意度较高。虽然推荐系统并没有给用户任何全新的信息,但是这些用户熟悉的产品或项目增加了用户对推荐系统的信心。如果用户信任推荐系统,那么用户与推荐系统的交互就会增加。在电子商务推荐系统中,用户是否信任推荐结果非常重要,在一定程度上能够影响用户的购买决策。推荐系统信任度的度量可以使用用户问卷调查的方式。