推荐系统有哪些常用的评价标准

  统计/机器学习 推荐系统 模型验证    浏览次数: 2800
18

有多个个性化推荐系统模型,怎么比较它们的好坏?

或者说有哪些常用的评价标准来比较不同模型的推荐精度?

谢谢!

 

机器小白   2017-03-05 12:12



   3个回答 
24

常用的评价标准:

一类是线上的评测,比如通过点击率、网站流量、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面经 问答 实战

高代兄   2017-03-12 10:45

如果是基于评分的推荐系统呢(Netflix,豆瓣音乐)?用哪个评分标准呢? - DeGang   2017-04-24 11:34
可以用常规的回归的评价方法,比如RMSE等等 - 高代兄   2017-04-25 12:18
我已经补充在回答里了。 - 高代兄   2017-04-30 10:24
啊 - 高代兄   2017-04-30 10:25
感觉在工业界最终都是要A/B test,看点击率和流量 - 岛歌   2017-09-09 01:03
15

其实我并不是完全同意,高代兄说的“基于打分的个性化推荐系统是和回归模型的评价方法一样的”。因为推荐系统是有排序的推荐的,并不是完全等价于回归问题。


基于打分的个性推荐系统可以用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可以参考我的另一个回答

怎么理解推荐系统中的NDCG?


SofaSofa数据科学社区 DS面经 问答 实战

abuu   2017-09-28 09:56

3

推荐系统除了精度,当然还有召回啊,参考推荐系统中的召回(recall)是什么意思

此外,如果你是用pairwise ranking的话,任何二元分类的评分方法都可以用来测试你的这个推荐系统,比如roc auc之类。


SofaSofa数据科学社区 DS面经 问答 实战

Arsjun   2018-02-19 14:59



  相关主题

推荐系统中的召回(recall)是什么意思?   1回答

怎么理解推荐系统中的NDCG?   1回答

推荐系统里的ALS是什么意思?   2回答

余弦相似和内积的意义?   1回答

推荐系统算法里的cold start是什么意思?   2回答

推荐系统中常用的表示相似或者距离的方法有哪些?   1回答

两个向量的余弦距离大于1?   1回答

Jaccard相似或者Jaccard距离是怎么计算的?   1回答

协同过滤的数据预处理问题   4回答

关于pairwise ranking数据预处理的问题   0回答

余弦相似的定义是什么?怎么计算?   1回答

python里怎么计算jaccard相似   2回答



回答问题时需要注意什么?

我们谢绝在回答前讲“生动”的故事。

我们谢绝“这么简单,你自己想”、“书上有的,你认真看”这类的回答;如果你认为对方的提问方式或者内容不妥,你可以直接忽略该问题,不用进行任何作答,甚至可以对该问题投反对票。

我们谢绝答非所问。

我们谢绝自己不会、硬要回答。

我们感激每一个用户在编写答案时的努力与付出!