00 内容总览
01 推荐系统的目的
分类目录、搜索引擎和推荐系统是信息过载所采用的不同措施。
为了解决信息过载问题,人们想过很多方案,其中具有代表性的是分类目录和搜索引擎。这两种方案分别催生了雅虎和谷歌的诞生。而随着互联网规模的扩大,分类目录网站只能覆盖到少量热门网站,越来越不能满足大众的需求。而搜索引擎需要用户主动提供准确的关键字来寻找信息,因此当用户无法准确描述自己需求的关键词时,搜索引擎也就无能为力了。而推荐系统正好解决了这一问题,不需要用户提供明确的需求,而是通过分析用户的历史行为给用户的兴趣进行建模,从而主动给用户推荐能够满足他们兴趣和需求的信息。因此,从某种意义上来讲,推荐系统和搜索引擎对于用户来说是两个互补的工具。
推荐系统的目的:
-
让用户更好地获取自己需要的内容;
-
让内容更好地推动到喜欢它的用户手中,更好的发掘物品的长尾;
-
让平台更有效地保留用户资源,同时获得利益最大化。
一个好的推荐系统,应该是让三方共赢,即用户方,内容制作方和平台方满足各自的需求。
02 推荐系统的应用
和搜索引擎不同,个性化推荐系统需要依赖用户的行为数据,因此一般作为一个应用存在于不同的网站之中。个性化推荐系统在这些网站中的主要作用是通过分析大量用户行为日志,给不同的用户提供个性化页面展示,来提高网站的点击率和转化率。
广泛利用推荐系统的领域包括:电子商务、电影和视频、音乐、社交网络、阅读、基于位置的服务、个性化邮件和广告等。尽管不同网站使用的不同的推荐系统技术,但总的来说,几乎所有的推荐系统应用都是由前台的展示页面、后台的日志系统和推荐算法系统三个部分构成。
03 推荐系统的基本思想
- 【知你所想】利用用户和内容的特征信息,给用户推荐那些具有用户喜欢的特征的物品;
- 【物以类聚】利用用户喜欢过的物品,给用户推荐与他喜欢过物品类似的物品;
- 【人以群分】利用和用户相似的其他用户,给用户推荐那些和他们兴趣爱好相似的用户喜欢的物品;
04 推荐系统的分类
基于统计的推荐是指类似于热榜之类的对所有访问量进行排序。而个性化推荐即就是根据不同的用户爱好分别推荐出不同的内容。
基于知识的分类指的是直接使用先验知识,例如程序员喜欢电子设备,女生喜欢化妆品等等,而基于模型的推荐是指使用算法去发现知识,然后再使用这些知识去做推荐。
基于人口统计学的推荐即就是从用户的信息特征出发做出的推荐,基于内容的推荐就是从内容的信息特征出发做出的推荐,基于协同过滤的推荐就是根据用户行为做出的推荐。
05 推荐系统的评测指标
-
用户满意度
作为评测推荐系统最重要的指标,无法通过离线实验计算,只能通过用户调查或者在线实验获得。通过用户调查问卷需要合理的设计问卷才能达到良好的结果。而如果是通过在线系统,则可以通过用户行为进行统计得到。例如电子商务中的推荐商品购买率,反馈按钮,以及点击率、用户停留时间和转化率等多个指标。
-
预测准确度
预测准确度是一个推荐系统预测用户行为的能力。这个指标是最重要的推荐系统离线评测指标。该指标根据不同的研究方向分为评分预测和TopN推荐。
(1)评分指标
预测用户对物品评分的行为称为评分预测。一般通过均方根误差(RMSE)和平均绝对误差(MAE)计算。Netflix认为RMSE加大了对预测不准的用户评分的惩罚,因而对系统的评测更为苛刻。另外,如果评分系统是基于整数建立的,那么对预测结果进行取整会降低MAE的误差。
R M S E = ∑ u , i ∈ T ( r u i − r ^ u i ) 2 ∣ T ∣ (1.1) RMSE = \frac{\sqrt{\sum _{u,i\in T}\left ( r_{ui}-\hat{r}_{ui} \right )^2}}{\left | T \right |}\tag{1.1} \\ RMSE=∣T∣∑u,i∈T(rui−r^ui)2(1.1)M A E = ∑ u , i ∈ T ∣ r u i − r ^ u i ∣ ∣ T ∣ (1.2) MAE = \frac{\sum _{u,i\in T}\left | r_{ui}-\hat{r}_{ui} \right |}{\left | T \right |}\tag{1.2} \\ MAE=∣T∣∑u,i∈T∣rui−r^ui∣(1.2)
(2)TopN推荐
网站在提供推荐服务时,一般是给用户一个个性化的推荐列表,这种推荐叫做TopN推荐。TopN推荐的准确率一般通过准确率(precision)和召回率(recall)度量。
R e c a l l = ∑ u ∈ U ∣ R ( u ) ∩ T ( u ) ∣ ∑ u ∈ U ∣ T ( u ) ∣ (1.3) Recall = \frac{\sum_{u \in U}\left |R\left(u\right)\cap T\left(u\right)\right|}{\sum_{u \in U}\left |T\left(u\right)\right|} \tag{1.3} Recall=∑u∈U∣T(u)∣∑u∈U∣R(u)∩T(u)∣(1.3)P r e c i s i o n = ∑ u ∈ U ∣ R ( u ) ∩ T ( u ) ∣ ∑ u ∈ U ∣ R ( u ) ∣ (1.4) Precision = \frac{\sum_{u \in U}\left |R\left(u\right)\cap T\left(u\right)\right|}{\sum_{u \in U}\left |R\left(u\right)\right|}\tag{1.4} Precision=∑u∈U∣R(u)∣∑u∈U∣R(u)∩T(u)∣(1.4)
-
覆盖率
覆盖率(coverage)描述一个推荐系统对物品长尾的发掘能力。其最简单的定义是推荐系统能够推荐出来的物品占总物品集合的比例。不过这样的定义过于简单,我们可以引入信息论和经济学中的信息熵和基尼指数评价覆盖率。
H = − ∑ i = 1 n p ( i ) log p ( i ) (1.5) H = -\sum_{i=1}^np\left(i\right)\log p\left(i\right)\tag{1.5} H=−i=1∑np(i)logp(i)(1.5)
其中这里的 p ( i ) p(i) p(i) 是物品 i i i的流行度除以所有物品的流行度之和。
G = 1 n − 1 ∑ j = 1 n ( 2 j − n − 1 ) p ( i j ) (1.6) G=\frac{1}{n-1}\sum_{j=1}^n\left(2j-n-1\right)p\left(i_j\right)\tag{1.6} G=n−11j=1∑n(2j−n−1)p(ij)(1.6)
这里的 i j i_j ij是按照物品流行度 p ( ) p() p()从小到大排序的物品列表中的第 j j j个物品。 -
多样性
推荐系统应该能满足用户广泛的兴趣,多样性描述了推荐列表中物品两两之间的不相似性。因此,多样性和相似性是相对的。
-
新颖性
新颖的推荐是指给用户推荐那些他们以前没有听过的物品,实现新颖性的最简单办法就是,把那些用户之前在网站中对其有过行为的物品从推荐列表中过滤掉。但是,有些内容用户可能在其他渠道看过,那么仅仅滤掉有过行为的内容仍然不足以实现新颖性。
O’scar Celma在博士论文Music Recommendation and Discovery in the Long Tail中研究了新颖性的评测,即利用推荐结果的平均流行度。不过困难的是,如何在不牺牲精度的情况下提高多样性和新颖性?
-
惊喜度
惊喜度(serendipity)是近几年推荐系统最热门的话题。根据Guy Shani的论文,如果推荐结果和用户的历史兴趣不相似,却让用户觉得满意,那么说明这个推荐的惊喜度很高,而推荐的新颖性仅仅取决于用户是否知道这个推荐结果。
-
信任度
如同人与人之间一样,用户与推荐系统之间也存在信任度(trust)的问题,如果用户信任推荐系统,就会增加用户与推荐系统之间的互动。
提供信任度主要有两种方法:①增加推荐系统的透明度(transparency),主要方法就是提供推荐解释;②考虑用户的社交网络信息,利用用户的好友信息给用户做推荐,并用好友进行解释。 -
实时性
很多信息具有很强的时效性,所以这些内容会需要推荐系统具有时效性。其中,推荐系统的时效性主要包括两个方面:①实时更新推荐列表满足用户新的行为变化;②推荐系统能够将新加入系统的物品及时推荐给用户。
-
健壮性
健壮性,即鲁棒性(robust)是衡量一个推荐系统抗击作弊行为的能力。提高系统健壮性的方法:①选择健壮性较好的算法;②尽量使用代价比较高的用户行为;③使用数据前,首先进行攻击检测,对数据进行清理。
-
商业目标
根据公司的盈利模式设计不同的商业目标。设计推荐系统需要考虑最终的商业目标,公司使用推荐系统的目的除了满足用户发现内容的需求,也需要利用推荐系统加快实现商业上的指标。
06 推荐系统评测
在推荐系统中,主要有三种评测推荐效果的试验方法,即离线实验(offline experiment)、用户调查(user study)和在线实验(online experiment)。
6.1 离线实验
离线实验的步骤:
- 通过日志系统获取用户行为数据,并按照一定格式生成一个标准的数据集;
- 将数据集安装一定的规则分为训练集和测试集;
- 在训练集上训练用户的兴趣模型,在测试集上进行预测;
- 通过事先定义好的离线指标评测算法在测试集上的预测结果。
优点:①不要有实际系统的控制权;②不需要真是用户的参与;③速度快、可以测试大量算法。
缺点:①无法计算商业上关注的指标;②离线实验的指标和商业指标存在差距
6.2 用户调查
用户调查需要一些真实用户,让他们在需要测试的推荐系统上完成一些任务。在他们完成任务时,我们需要观察和记录其行为,并让他们回答一些问题。最后,我们需要分析他们的行为和答案了解测试系统的性能。
优点:①可以获得离线方法无法获取的指标,例如惊喜度和满意度等指标;
缺点:①调查成本很高;②对测试的用户有一定的分布要求;③需要保证双盲测试。
6.3 在线实验
在完成离线实验和必要的用户调查后,可以将推荐系统上线做AB测试,将他与原有的算法进行比较。
AB测试是一种很常见的在线评测算法的实验方法。通过一定的规则将用户随机分为几组,并在不同组的用户采用不同的算法,然后通过统计不同组用户的各种不同评测指标比较不同算法。
大型网站的AB测试系统的设计是一项复杂的过程。大型网站一般分为前端和后端,从前端展示到后端算法,中间往往要经过很多层,这些层往往由不同团队控制,而且都会做AB测试,那么不同的AB测试之间往往就会有干扰。因此,切分流量是AB测试中的关键,不同的层需要从一个统一的地方获取自己AB测试的流量,而不同层之间的流量应该是正交的。
优点:①可以公平的获取不同算法实际在线时的性能;②可以获取丰富的指标。
缺点:①周期比较长;②实施起来比较复杂。
一般来说,一个新的推荐系统最终上线,需要完成上面所说的3个实验
- 首先,需要通过离线实验证明它在很多离线指标上优于现有的算法;
- 然后,需要通过用户调查确定它的用户满意度不低于现有的算法;
- 最后,通过在线的AB测试确定它在我们关心的指标上优于现有的算法。
※ 评测维度
评测系统中应该还需要考虑评测维度,比如一个推荐系统,虽然整体性性能不好,但可能在某种情况下性能比较好,而增加评测维度的目的就是知道一个算法在什么情况下性能最好,这样为融合不同推荐算法取得最好的整体性能带来参考。
一般来说,评测维度分为三类:
-
用户维度:主要包括用户的人口统计学信息、活跃度以及是不是新用户等。
-
物品维度:包括物品的属性信息、流行度、平均分以及是不是新加入的物品等。
-
时间维度:包括季节、是工作日还是周末,是白天还是晚上等。
如果能够包含不同维度的评测指标,可以让我们全面地了解一个推荐系统的性能,找到一个看上去比较弱的算法的优势以及发现一个强算法的劣势。
参考文献: