推荐系统---(一)推荐系统评测

学习一下推荐系统相关的知识,记录项亮《推荐系统实践》中的重要内容。


一个完整的推荐系统一般需要用户、物品提供者和提供推荐系统的网站三个参与方。
预测准确度是推荐系统领域的重要质变,但是准确的预测并不代表好的推荐(因为用户可能不管你推不推荐都会购买,失去了推荐的意义)。

1、推荐系统实验方法

(1)离线实验offline experiment

通过日志系统获得用户行为数据,然后进行训练和测试。

  • 优点:不需要有对实际系统的控制权;不需要用户参与实验;速度快、可以测试大量算法。

  • 缺点:无法计算商业上敢信的指标(如点击率、转化率等);离线实验的指标和商业指标存在差距。

(2)用户调查user study

在上线测试前,需要一些真实用户在需要测试的推荐系统上完成一些任务,观察和记录他们的行为,并让他们回答一些问题。

  • 优点:可以获得与用户主观感受有关的指标;相对在线实验风险低。

  • 缺点:成本很高;双盲实验的设计很困难;测试环境和真实环境下的行为可能有差异。

(3)在线实验online experiment

AB测试。优点:可以公平获得不同算法实际在线时的性能指标;缺点:周期很长。

2、评测指标

离线实验的优化目标:最大化预测准确度,使得覆盖率>A,多样性>B,新颖性>C,其中A、B、C的取值应该视不同的应用而定。

(1)用户满意度

通过用户调查或在线实验获得。

在线系统中,用户满意度主要通过一些对用户行为的统计得到,如购买率、点击率、转换率、反馈收集。

(2)预测准确度(最重要的推荐系统离线评测指标)

可以通过离线实验计算。实际操作过程中,推荐系统可能更偏向于对用户进行TopN的推荐。

① 评分预测

根据用户对物品的历史评分学习用户的兴趣模型,并预测用户在将来看到一个物品的评分。

评分预测的预测准确度一般通过均方根误差RMSE和平均绝对误差MAE计算。

对于测试集中的一个用户u和物品i,令rui是用户u对物品i的实际评分,那么 r u i ^ \hat{r_{ui}} rui^是推荐算法给出的预测评分,那么:

R M S E = ∑ u , i ∈ T ( r u i − r u i ^ ) ∣ T ∣ RMSE = \frac{\sqrt{\sum_{u,i∈T}{(r_{ui} - \hat{r_{ui}})}}}{|T|} RMSE=Tu,iT(ruirui^)

M A E = ∑ u , i ∈ T ∣ r u i − r u i ^ ∣ ∣ T ∣ MAE = \frac{\sum_{u,i∈T}{|r_{ui} - \hat{r_{ui}}|}}{|T|} MAE=Tu,iTruirui^

优缺点:RMSE加大了对预测不准的用户物品评分的惩罚(平方的惩罚),因而对系统的评测更加苛刻。如果评分系统是基于整数建立的,那么对预测结果取整会降低MAE的误差。

② TopN推荐

TopN的预测准确率一般通过准确率(precision)/召回率(recall)度量。

令R(u)是根据用户在训练集上的行为给用户做出的推荐列表,而T(u)是用户在测试集上的行为列表。那么推荐结果的召回率定义为:

R e c a l l = ∑ u ∈ U ∣ R ( u ) ∩ T ( u ) ∣ ∑ u ∈ U T ( u ) Recall = \frac{\sum_{u∈U}{|R(u)∩T(u)|}}{\sum_{u∈U}{T(u)}} Recall=uUT(u)uUR(u)T(u)

推荐结果的准确率定义为:

P r e c i s i o n = ∑ u ∈ U ∣ R ( u ) ∩ T ( u ) ∣ ∑ u ∈ U R ( u ) Precision = \frac{\sum_{u∈U}{|R(u)∩T(u)|}}{\sum_{u∈U}{R(u)}} Precision=uUR(u)uUR(u)T(u)

一般会选取不同推荐列表的长度N,计算出一组准确率/召回率,然后画出准确率/召回率曲线。

(3)覆盖率

覆盖率描述一个推荐系统对物品长尾(非主流物品)的发掘能力。

  • 定义1:假设用户集合为U,推荐系统给每个用户推荐一个长度为N的物品列表R(u),总物品集合为I,那么推荐系统的覆盖率为:
    C o v e r a g e = ∣ ∪ u ∈ U R ( u ) ∣ ∣ I ∣ Coverage = \frac{|∪_{u∈U}R(u)|}{|I|} Coverage=IuUR(u)
  • 定义2:信息熵 H = − ∑ i = 1 n p ( i ) l o g p ( i ) H = -\sum_{i=1}^{n}{p(i)logp(i)} H=i=1np(i)logp(i),其中p(i)是物品i的流行度处于所有物品流行度之和。基尼系数 G = 1 n − 1 ∑ j = 1 n ( 2 j − n − 1 ) p ( i j ) G = \frac{1}{n-1} \sum_{j=1}^{n}{(2j-n-1)p(i_j)} G=n11j=1n(2jn1)p(ij),其中 i j i_j ij是按照物品流行度p()从小到大排序的物品列表中的第j个物品。
    马太效应: 一个系统是否会增加热门物品和非热门物品的流行差距。很多主流的推荐算法(如协同过滤)是具有马太效应的。检测的方法:如果G1是从初始用户行为中计算出的物品流行度的基尼系数,G2是从推荐列表中计算出的物品流行度的基尼系数,如果G2>G1,该算法就具有马太效应。

(4)多样性

多样性描述了推荐列表中物品两类之间的不相似性。假设s(i,j)∈[0,1]定义了物品i和j之间的相似度,那么用户u的推荐列表R(u)的多样性定义为:
D i v e r s i t y = 1 − ∑ i , j ∈ R ( u ) , i ≠ j s ( i , j ) 1 2 ∣ R ( u ) ∣ ( R ( u ) ∣ − 1 ) Diversity = 1 - \frac{\sum_{i,j∈R(u),i≠j}{}s(i,j)}{\frac{1}{2}|R(u)|(R(u)|-1)} Diversity=121R(u)(R(u)1)i,jR(u),i=js(i,j)

而推荐系统的整体多样性可以定义为所有用户推荐列表多样性的平均值:

D i v e r s i t y = 1 ∣ U ∣ ∑ u ∈ U D i v e r s i t y ( R ( u ) ) Diversity = \frac{1}{|U|}\sum_{u∈U}{Diversity(R(u))} Diversity=U1uUDiversity(R(u))
一般认为推荐的内容要符合用户偏好多样性分布。

(5)新颖性

评测新颖性最简单的方法是利用推荐结果的平均流行度,但是要准确地统计还需要做用户调查。

(6)惊喜度

如果推荐结果和用户的历史兴趣不相似,但却让用户觉得满意,那么惊喜度很高;而推荐的新颖性仅仅取决于用户是否听说过这个推荐结果。
参考论文:
Yuan Cao Zhang、Diarmuid Ó Séaghdha、Daniele Quercia和 Tamas Jambor的“Auralist: introducing serendipity into music recommendation.”。
Tomoko Murakami、Koichiro. Mori和Ryohei Orihara的“ Metrics for evaluating the serendipity of recommendation lists”。

(7)信任度

度量推荐系统的信任度只能通过问卷调查方式。提高推荐系统的信任度有两种方法:①增加推荐系统的透明度,即提供推荐解释;②考虑用户的社交网络信息,利用用户的好友信息给用户做推荐。

(8)实时性

需要实时地更新推荐列表来满足用户新的行为变化;能够将新加入系统的物品推荐给用户(推荐系统处理物品冷启动的能力)。

(9)健壮性

衡量一个推荐系统抗击作弊的能力。主要利用模拟攻击,向数据集注入噪声,对比注入噪声前后的推荐列表的差别。在实际系统中,提高系统健壮性的方法:①选择健壮性高的算法;②设计推荐系统时尽量使用代价较高的用户行为;③在使用数据前,进行攻击检测,对数据进行清理。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
如今大数据已经成了各大互联网公司工作的重点方向,而推荐系统可以说就是大数据最好的落地应用之一,已经为企业带来了可观的用户流量和销售额。特别是对于电商,好的推荐系统可以大大提升电商企业的销售业绩。国内外的知名电商,如亚马逊、淘宝、京东等公司,都在推荐系统领域投入了大量研发力量,也在大量招收相关的专业人才。打造的电商推荐系统项目,就是以经过修改的中文亚马逊电商数据集作为依托,并以某电商网站真实的业务架构作为基础来实现的,其中包含了离线推荐与实时推荐体系,综合利用了协同过滤算法以及基于内容的推荐方法来提供混合推荐。具体实现的模块主要有:基于统计的离线推荐、基于隐语义模型的离线推荐、基于自定义模型的实时推荐,以及基于内容的、和基于Item-CF的离线相似推荐。整个项目具有很强的实操性和综合性,对已有的大数据和机器学习相关知识是一个系统性的梳理和整合,通过学习,同学们可以深入了解推荐系统在电商企业中的实际应用,可以为有志于增加大数据项目经验的开发人员、特别是对电商业务领域感兴趣的求职人员,提供更好的学习平台。适合人群:1.有一定的 Java、Scala 基础,希望了解大数据应用方向的编程人员2.有 Java、Scala 开发经验,了解大数据相关知识,希望增加项目经验的开发人员3.有电商领域开发经验,希望拓展电商业务场景、丰富经验的开发人员4.有较好的数学基础,希望学br习机器学习和推荐系统相关算法的求职人员

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值