有多个个性化推荐系统模型,怎么比较它们的好坏?
或者说有哪些常用的评价标准来比较不同模型的推荐精度?
谢谢!
4个回答
常用的评价标准:
一类是线上的评测,比如通过点击率、网站流量、A/B test等判断。这类评价标准在这里就不细说了,因为它们并不能参与到线下训练模型和选择模型的过程当中。
第二类是线下评测。评测标准很多,我挑几个常用的。我就拿给用户推荐阅读相关链接来举例好了。
1. 精度Precision:P(k)
$$P(k) = \frac{c}{k}$$
我们给某个用户推荐了k个链接,他/她点击了其中的c个链接,那么精度就是c/k。
2. 平均精度Average Precision: ap@n
$$ap@n=\sum_{k=1}^n \frac{P(k)}{\min(m,n)}$$
n是被预测的链接的总数,m是用户点击的链接的总数。
例子(1): 我们一共推荐了10个链接,用户实际上点击了我们推荐当中的第1个和第4个链接,以及另外两个其他的链接,那么对于这个用户,
$ap@10=(1/1+2/4)/4\approx 0.38$
例子(2): 我们一共推荐了10个链接,用户实际上点击了我们推荐当中的第2个,第3个和第5个链接,以及另外三个其他的链接,那么对于这个用户,
$ap@10=(1/2+2/3+3/5)/6\approx 0.29$
例子(3): 我们一共推荐了10个链接,用户实际上点击了我们推荐当中的第2个,第7个,此外没有点击其他联系,那么对于这个用户,
$ap@10=(1/2+2/7)/2\approx 0.39$
例子(4): 我们一共推荐了5个链接,用户实际上点击了我们推荐当中的第1个,第2个和第4个,以及另外6个其他链接,那么对于这个用户,
$ap@5=(1/1+2/2+3/4)/5\approx 0.55$
3. 平均精度均值Mean Average Precision: MAP@n
MAP计算的是N个用户的平均精度的均值。
$$MAP@n=\sum_{i=1}^N\frac{(ap@n)_i}{N}$$
这个$N$是用户数量。
比如说我们三个用户甲、乙、丙分别推荐了10个链接,
甲点击了我们推荐当中的第1个和第4个链接,以及另外两个其他的链接,那么$(ap@10)_1=(1/1+2/4)/4\approx 0.38.$
乙点击了我们推荐当中的第3个链接,以及另外一个其他的链接,那么$(ap@10)_2=(1/3)/2\approx 0.17.$
丙点击了我们推荐当中的第1个链接,第7个链接,以及另外三个其他的链接,那么$(ap@10)_3=(1/1+2/7)/5\approx 0.26.$
那么这个模型的平均精度均值
$$MAP@10=\frac{0.38+0.17+0.26}{3}\approx 0.27$$
--------------------补充一下,4月30号--------------------
有朋友在评论中问到如果是基于打分的个性化推荐系统,怎么来评判推荐的结果。其实这个就等同于一个回归问题了。
具体可以参考回归模型的评价方法。
SofaSofa数据科学社区DS面试题库 DS面经其实我并不是完全同意,高代兄说的“基于打分的个性化推荐系统是和回归模型的评价方法一样的”。因为推荐系统是有排序的推荐的,并不是完全等价于回归问题。
基于打分的个性推荐系统可以用CG(cumulative gain),累计增益。假设我们推荐$k$个物品,这个推荐列表的$CG_k$计算公式如下:
$$CG_k=\sum_{i=1}^k \text{rel}_i.$$
$\text{rel}_i$表示第$k$个物品的相关性。假设我们共推荐$k$个电影,$rel_i$可以是用户对第$i$部电影的评分。
比如豆瓣给用户推荐了五部电影,
$M_1$,$M_2$,$M_3$,$M_4$,$M_5$,
该用户对这五部电影的评分分别是
5, 3, 2, 1, 2
那么这个推荐列表的CG等于$$CG_5=5+3+2+1+2=13.$$
CG没有考虑推荐的次序,在此基础之后我们引入对物品顺序的考虑,就有了DCG(discounted CG),折扣累积增益。公式如下:
$$DCG_k=\sum_{i=1}^k \frac{2^{\text{rel}_i}-1}{\log_2(i+1)}.$$
比如豆瓣给用户推荐了五部电影,
$M_1$,$M_2$,$M_3$,$M_4$,$M_5$,
该用户对这五部电影的评分分别是
5, 3, 2, 1, 2
那么这个推荐列表的DCG等于$$DCG_5=\frac{2^5-1}{\log_2 2}+\frac{2^3-1}{\log_2 3}+\frac{2^2-1}{\log_2 4}+\frac{2^1-1}{\log_2 5}+\frac{2^2-1}{\log_2 6}=31+4.4+1.5+0.4+1.2=38.5$$
------------更新-------------
关于ndcg可以参考我的另一个回答
本文为项亮《推荐系统实践》一书的学习笔记
1. 用户满意度(在线)
用户满意度没有办法离线计算,只能通过用户调查或者在线实验获得。
用户调查获得用户满意度主要是通过调查问卷的形式。
2. 预测准确度(离线)
这个指标是最重要的推荐系统离线评测指标。
2.1 评分预测
评分预测的预测准确度一般通过均方根误差(RMSE)和平均绝对误差(MAE)计算。
对于测试集中的一个用户u和物品i,令是用户u对物品i的实际评分,而是推荐算法给出的预测评分
RMSE的定义为:
MAE采用绝对值计算预测误差,它的定义为:
2.2 TopN推荐
网站在提供推荐服务时,一般是给童虎一个个性化的推荐列表,这种推荐叫TopN推荐。TopN推荐的预测准确率一般通过准确率(precision)和召回率(recall)度量。
令R(u)是根据用户在训练集上的行为给用户做出的推荐列表,而T(u)是用户在测试集上的行为列表。
推荐系统的准确率定义为:
推荐系统的召回率定义为:
比如有一个训练集为(苹果,香蕉,橘子,草莓,哈密瓜,西红柿,黄瓜),用户选中其中几样,以此训练,
测试集为(梨子,菠萝,龙眼,黑莓,白菜,冬瓜)
根据用户在训练集上的行为:
给用户做出的推荐列表为R(u) =(梨子,菠萝,龙眼),用户在测试集上的实际行为列表T(u) =(梨子,黑莓,白菜,冬瓜)
那么R(u)和T(u)的交集为1,R(u)=3,T(u)=4,故准确率为1/3,召回率为1/4
3. 覆盖率
覆盖率(Coverage)描述一个推荐系统对物品长尾的发掘能力。最简单的定义为推荐系统能够推荐出来的物品占总物品集合的比例。
假设系统的用户集合为U,总物品集合为I ,推荐系统给每个用户推荐一个长度为N的物品列表R(u):
可以通过研究物品在推荐列表中出现的次数的分布描述推荐系统挖掘长尾的能力。如果这个分布比较平,那么说明推荐系统的覆盖率比较高,而如果这个分布比较陡峭,说明这个推荐系统的覆盖率比较低。在信息论和经济学中有两个著名的指标可以用来定义覆盖率。
第一个是信息熵:
这里p(i)是物品i的流行度除以所有物品流行度之和。
第二个指标是基尼系数(Gini Index):
这里,是按照物品流行度p从小到大排序的物品列表中的第j个物品。
评测推荐系统是否具有马太效应的简单办法就是使用基尼系数。
4. 多样性
用户的兴趣是广泛的,一个经常看动漫的用户也可以喜欢其他类型的视频。为了满足用户广泛的兴趣,推荐列表需要能够覆盖用户不同的兴趣领域,即推荐结果需要具有多样性。
多样性描述了推荐列表中物品两两之间的不相似性。假设定义了物品i和物品j之间的相似度,那么用户u的推荐列表R(u)的多样性定义为:
而推荐系统的整体多样性可以定义为所有用户推荐列表多样性的平均值:
5. 新颖性
新颖的推荐是指给用户推荐那些他们以前没有听说过的物品。
评测新颖度最简单的方法是利用推荐结果的平均流行度,因为越不热门的物品越可能让用户觉得新颖。
6.惊喜度
惊喜度是指出乎用户意料的,推荐用户认知范围外的物品给用户且令用户满意。
目前没有什么公认的惊喜度的指标定义方式。
7.信任度
两个不同的信任系统,尽管推荐结果可能相同,但是用户可能会选择更让他信任的那个。比如京东和淘宝推荐同样的物品给用户,假如用户更多在淘宝上消费的话,用户可能会更倾向于使用淘宝推荐的物品。
8.实时性
在新闻类网站上,例如今日头条和微博,物品具有很强的实时性。比如一条新闻,系统需要第一时间推送给用户。推荐昨天的新闻显然不如推荐今天的新闻。
推荐系统的实时性包括两个方面。首先,推荐系统需要实时的更新推荐列表来满足用户新的行为变化。第二个方面是推荐系统需要能够将新加入系统的物品推荐给用户。
9. 健壮性
推荐系统会面对各种各样的作弊行为,针对推荐系统的规则来设计一些作弊行为,以此来攻击推荐系统。而健壮性是指衡量一个推荐系统抗击作弊的能力。
算法健壮性的评测主要利用模拟攻击。
在实际的系统中,提高系统的健壮性,除了选择健壮性高的算法,还有以下方法。
1. 设计推荐系统时尽量使用代价比较高的用户行为。如在用户的购买行为和浏览行为中,显然购买行为的代价更高。
2. 在使用数据时,进行攻击检测,从而对数据进行清理。
SofaSofa数据科学社区DS面试题库 DS面经推荐系统除了精度,当然还有召回啊,参考推荐系统中的召回(recall)是什么意思
此外,如果你是用pairwise ranking的话,任何二元分类的评分方法都可以用来测试你的这个推荐系统,比如roc auc之类。
SofaSofa数据科学社区DS面试题库 DS面经