根据评测体系来评价一个推荐系统的好坏,由于推荐系统是和实际收益挂钩,所以需要考虑三方(用户,物品提供者和平台)的利益,实现最大化的三方共赢。
接下来从
实
验
方
法
,
评
测
指
标
和
评
测
维
度
\red{实验方法,评测指标和评测维度}
实验方法,评测指标和评测维度进行介绍
1 实验方法
通过实验来获取评价指标,主要有三个:
1.1 离线实验(offline experiment)
在一个离线的数据集上完成,不需要一个实际的系统作为支撑,只需要有一个从日志中提取的数据集即可。
1、步骤
a)通过日志系统获得用户行为数据,并按照一定格式生成一个标准的数据集;
b)将数据集按照一定的规则分成训练集和测试集;
c)在训练集上训练用户兴趣模型,在测试集上进行预测;
d)通过事先定义的离线指标,评测算法在测试集上的预测结果。
2、优点
- 不需要用户参与
- 速度快,可以实验多种算法模型
- 不需要搭建一个完整的推荐系统
3、缺点
- 数据的稀疏性限制了适用范围,如果一个数据集没有包括某用户的历史行为,则无法进行推荐的评价。
- 评价只具有客观性,没法获得客户的主观评价(真实评价更为重要)
- 难以找到离线评价指标和在线真实反馈(点击率、转化率、点击深度、购买客单价、购买商品类别等)之间的关联关系;
1.2 用户调查(User study)
通过一些真实用户,让他们在需要测试的推荐系统上完成一些任务。记录用户的行为,并让他们回答一些问题。最后,我们通过分析他们的行为和答案,了解测试系统的性能。
1、优点
可以获得用户主观感受的指标,出错后容易弥补;
2、缺点
- 招募测试用户代价较大(人工成本高);
- 无法组织大规模的测试用户,统计意义不足;
1.3 在线实验(online experiment)
在完成离线实验和用户调查之后,可以将系统上线做AB测试,将它和旧算法进行比较。
在线实验最常用的评测算法是【A/B测试】,它通过一定的规则将用户随机分成几组,对不同组的用户采用不同的算法,然后通过统计不同组的评测指标,比较不同算法的好坏。
1、A/Btest 核心思想
a) 多个方案并行测试;
b) 每个方案只有一个变量不同;
c) 以某种规则优胜劣汰。
A/B测试必须是单变量,在推荐系统的评价中,唯一变量就是 推荐的算法模型。
2、优点
可以公平获得不同算法实际在线时的性能指标,包括商业上关注的指标;
3、缺点
周期较长,必须进行长期的实验才能得到可靠的结果;
4、切分流量
大型网站做AB测试,可能会因为不同团队同时进行各种测试对结果造成干扰,所以切分流量是AB测试中的关键。
不同的层以及控制这些层的团队,需要从一个统一的地方获得自己AB测试的流量,而不同层之间的流量应该是正交的(不存在线性关系)
1.4 总结
一般来说,一个新的推荐算法最终上线,需要完成上述的3个实验。
- 首先,通过离线实验证明它在很多离线指标上优于现有的算法;
- 其次,通过用户调查确定用户满意度不低于现有的算法;
- 最后,通过在线AB测试确定它在我们关心的指标上优于现有的算法;
2 评测指标
当前推荐系统性能的评测有许多定性和定量的指标
2.1 预测准确度
度量推荐系统预测用户行为的准确度,可以离线实验下获取,对于学术研究有很大的用处,根据研究方向的不同,主要分为预测评分准确度和TopN推荐。
在一个推荐系统中,
r
u
a
r_{ua}
rua是用户u对物品a的真实评分,
r
u
a
′
r_{ua}^{'}
rua′是系统的预测评分,
E
p
E^p
Ep表示测试集。
1) 预测评分准确度
通过预测结果和用户的实际评分的距离来进行度量,所以一般采用最常用的MAE和RMSE。
- 平均绝对误差(MAE)
M A E = 1 ∣ E p ∣ ∑ ( u , a ) ∈ E p ∣ r u , a − r u , a ′ ∣ MAE = \frac{1}{|E^p|}\sum_{(u,a)\in E^p}|r_{u,a}-r_{u,a}^{'}| MAE=∣Ep∣1(u,a)∈Ep∑∣ru,a−ru,a′∣ - 均方根误差(EMSE)
R M S E = 1 ∣ E p ∣ ∑ ( u , a ) ∈ E p ( r u , a − r u , a ′ ) 2 RMSE=\sqrt {\frac{1}{|E^p|}\sum_{(u,a)\in E^p}(r_{u,a}-r_{u,a}^{'})^2} RMSE=∣Ep∣1(u,a)∈Ep∑(ru,a−ru,a′)2
Netflix认为均方根误差加大了对预测错误的用户物品评分的惩罚,所以更加严格,此外,如果一个评测采用整数评分,对预测结果取整数会降低MAE的误差。
2) TopN推荐
给用户推荐一个推荐列表,这就是TopN推荐,这也更符合实际的需求。一般采用准确率和召回率进行评测。T(u)是根据用户在训练集上的行为给用户做出的推荐列表,R(u)是用户在测试集上的行为列表。
- 准确率(precise)
p r e c i s e = T P T P + F P , 在 这 里 是 P = ∑ ∣ R ( u ) ∩ T ( u ) ∣ ∑ ∣ R ( u ) ∣ precise = \frac{TP}{TP+FP},在这里是P = \frac{\sum|R(u)\cap T(u)|}{\sum|R(u)|} precise=TP+FPTP,在这里是P=∑∣R(u)∣∑∣R(u)∩T(u)∣
- 召回率(recall)
R e c a l l = T P T P + T N , h e r e I s , R = ∑ ∣ R ( u ) ∩ T ( u ) ∣ ∑ ∣ T ( u ) ∣ Recall = \frac{TP}{TP+TN},here Is, R = \frac{\sum|R(u)\cap T(u)|}{\sum|T(u)|} Recall=TP+TNTP,hereIs,R=∑∣T(u)∣∑∣R(u)∩T(u)∣
2.2 用户满意度
顾名思义,只能通过用户调查和在线测试进行获取,无法离线实验获取。
-
用户调查:通过调查问卷,充分考虑用户的各方面体验,针对问题进行回答。
-
在线测试:一般情况下,可以采用用户点击率,停留时间,转化率进行度量。
2.3 覆盖率(coverage)
描述一个推荐系统对物品长尾的发掘能力,即是推荐出来的物品张总物品的比例。对于假设系统的用户集合为U,推荐系统给每个用户推荐一个长度为N的物品列表R(u),覆盖率公式为:
c
o
v
e
r
a
g
e
=
∣
∪
R
(
u
)
∣
I
coverage = \frac{|\cup R(u)|}{I}
coverage=I∣∪R(u)∣
覆盖率是内容提供者关心的指标,覆盖率为100%的推荐系统可以将每个物品都推荐给至少一个用户。
除了推荐物品的占比,还可以通过研究物品在推荐列表中出现的次数分布,更好的描述推荐系统的挖掘长尾的能力。如果分布比较平,说明推荐系统的覆盖率很高;如果分布陡峭,说明分布系统的覆盖率较低。
信息论和经济学中有两个著名指标,可以定义覆盖率:
-
信息熵
H = − ∑ i = 1 n p i l o g ( p i ) , p i 是 物 品 i 的 流 行 度 / 所 有 物 品 的 流 行 度 之 和 H = -\sum_{i=1}^{n} p_ilog(p_i), p_i是物品i的流行度/所有物品的流行度之和 H=−i=1∑npilog(pi),pi是物品i的流行度/所有物品的流行度之和 -
基尼指数(Gini index)
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=n−11j=1∑n(2j−n−1)pij
p i j p_{i_j} pij是按照物品流行度p(i)从小到大排序的物品列表中第j个物品
-
评测马太效应
马太效应,是指强者越强,弱者越弱的效应。推荐系统的初衷是希望消除马太效应,使得各物品都能被展示给对它们感兴趣的人群。
但是,很多研究表明,现在的主流推荐算法(协同过滤)是具有马太效应的。评测推荐系统是否具有马太效应可以使用基尼系数。
如,G1是从初始用户行为中计算出的物品流行度的基尼系数,G2是从推荐列表中计算出的物品流行度的基尼系数,那么如果G1<G2,就说明推荐算法具有马太效应。
2.4 多样性
为了满足用户广泛的兴趣,推荐列表需要能够覆盖用户不同兴趣的领域,即需要具有多样性。
多样性描述了推荐列表中物品两两之间的不相似性。假设s(i,j)在[0,1]区间定义了物品i和j之间的相似度,那么用户u的推荐列表R(u)的多样性定义如下:
d i v e r s i t y ( R ( u ) ) = 1 − ∑ s ( i , j ) 1 2 ∣ R ( u ) ∣ ( ∣ R ( u ) ∣ − 1 ) diversity(R(u)) = 1-\frac{\sum s(i,j)}{\frac{1}{2}|R(u)|(|R(u)|-1)} diversity(R(u))=1−21∣R(u)∣(∣R(u)∣−1)∑s(i,j)
推荐系统整体多样性可以定义为所有用户推荐列表多样性的平均值:
D i v e r s i t y = 1 ∣ U ∣ ∑ d i v e r s i t y ( R ( u ) ) Diversity = \frac{1}{|U|}\sum diversity(R(u)) Diversity=∣U∣1∑diversity(R(u))
2.5 新颖性
新颖性也是影响用户体验的重要指标之一。它指的是向用户推荐非热门非流行物品的能力。
评测新颖度最简单的方法,是利用推荐结果的平均流行度,因为越不热门的物品,越可能让用户觉得新颖。
此计算比较粗糙,需要配合用户调查准确统计新颖度。
2.6 惊喜度
推荐结果和用户的历史兴趣不相似,但却让用户满意,这样就是惊喜度很高。
目前惊喜度还没有公认的指标定义方式,最近几年研究的人很多,深入研究可以参考一些论文。
2.7 信任度
如果用户信任推荐系统,就会增加用户和推荐系统的交互。
提高信任度的方式有两种:
-
增加系统透明度
提供推荐解释,让用户了解推荐系统的运行机制。 -
利用社交网络,通过好友信息给用户做推荐
通过好友进行推荐解释
度量信任度的方式,只能通过问卷调查。
2.8 实时性
推荐系统的实时性,包括两方面:
- 实时更新推荐列表满足用户新的行为变化;
- 将新加入系统的物品推荐给用户;
2.9 健壮性
任何能带来利益的算法系统都会被攻击,最典型的案例就是搜索引擎的作弊与反作弊斗争。
健壮性(robust,鲁棒性)衡量了推荐系统抗击作弊的能力。
2011年的推荐系统大会专门有一个推荐系统健壮性的教程,作者总结了很多作弊方法,最著名的是行为注入攻击(profile injection attack)。就是注册很多账号,用这些账号同时购买A和自己的商品。此方法针对亚马逊的一种推荐方法,“购买商品A的用户也经常购买的其他商品”。
评测算法的健壮性,主要利用模拟攻击:
a)给定一个数据集和算法,用算法给数据集中的用户生成推荐列表;
b)用常用的攻击方法向数据集中注入噪声数据;
c)利用算法在有噪声的数据集上再次生成推荐列表;
d)通过比较攻击前后推荐列表的相似度评测算法的健壮性。
提高系统健壮性的方法:
- 选择健壮性高的算法;
- 选择代价较高的用户行为,如购买行为比浏览行为代价高;
- 在使用数据前,进行攻击检测,从而对数据进行清理。
2.10 商业目标
设计推荐系统时,需要考虑最终的商业目标。不同网站具有不同的商业目标,它与网站的盈利模式息息相关。
总结:
对于可以离线优化的指标,在给定覆盖率、多样性、新颖性等限制条件下,应尽量优化预测准确度。
3 评测维度
增加评测维度就是为了知道一个推荐算法在什么时候性能最好,一般评测维度分3种:
- 用户维度
主要包括用户的人口统计学信息、活跃度以及是不是新用户等; - 物品维度
包括物品的属性信息、流行度、平均分以及是不是新加入的物品等; - 时间维度
包括季节,是工作日还是周末,白天还是晚上等;
如果推荐系统的评测报告中,包含了不同维度下的系统评测指标,就能帮我们全面了解系统性能。
上一篇:推荐系统(1)——简介
下一篇:推荐系统(3)——个性化推荐系统架构