推荐系统评价指标综述笔记

How good your recommender system is? 阅读笔记

介绍推荐系统的评价指标

从历史上看,评估可以在在线和离线的实验中进行。在线实验包括发布推荐后询问用户评价,在线实验可以从用户那里得到精确的结果,但是花费比较多(costly). 所以研究者们比较倾向于离线实验,可以理解为划分训练集与测试集的方法,不需要真实用户。

因此,基于精确度的指标被广泛使用,但是这些指标忽略了用户对新颖性和多样性的追求,所以,考虑这些因素,自然诞生了许多其他指标。

本文详细解释以下六种指标:utility、novelty、diversity、unexpected、serendipity、coverage.

1.Utility

推荐系统手册:utility 代表用户在得到的推荐中接受的程度的指标

Utility可以被视作一种相关性、有用性,所以这个指标可以用错误率相关来表示.

1.1 Error metrics

u t i l ( R u ) = M A E = ∑ i ∈ R u p ( i ) − r ( i ) ∣ R u ∣ util(R_u)=MAE=\frac{\sum_{i\in R_u}p(i)-r(i)}{|R_u|} util(Ru)=MAE=RuiRup(i)r(i)

其实就是L1范数,这个叫平均绝对误差,预测值和真实值之差的绝对值的平均值。

u t i l ( R u ) = R M S E = ∑ i ∈ R u ( p ( i ) − r ( i ) ) 2 ∣ R u ∣ util(R_u)=RMSE=\sqrt\frac{\sum_{i\in R_u}(p(i)-r(i))^2}{|R_u|} util(Ru)=RMSE=RuiRu(p(i)r(i))2

这个叫均方根误差,预测值和真实值之差的平方的平均值。

这两个指标都用来描述预测值和真实值之间的误差情况,RMSE更注重离散程度。

1.2 Precision and Recall

u t i l ( R u ) = p r e c i s i o n = ∣ C u ∩ R u ∣ ∣ R u ∣ util(R_u)=precision=\frac{|C_u\cap R_u|}{|R_u|} util(Ru)=precision=RuCuRu

u t i l ( R u ) = r e c a l l = ∣ C u ∩ R u ∣ ∣ C u ∣ util(R_u)=recall=\frac{|C_u\cap R_u|}{|C_u|} util(Ru)=recall=CuCuRu

其中, R u R_u Ru是推荐列表, C u C_u Cu是用户的购买列表.

举个例子:

R u = { 1 , 3 , 5 , 7 , 9 , 11 , 13 , 15 , 17 , 19 } R_u=\{1,3,5,7,9,11,13,15,17,19\} Ru={1,3,5,7,9,11,13,15,17,19} 推荐列表

C u = { 1 , 3 , 4 , 5 , 6 , 10 } C_u=\{1,3,4,5,6,10\} Cu={1,3,4,5,6,10} 购买列表

R u ∩ C u = { 1 , 3 , 5 } R_u\cap C_u=\{1,3,5\} RuCu={1,3,5} 推荐且购买

p r e c i s i o n = 3 10 = 30 % precision=\frac3{10}=30\% precision=103=30%

r e c a l l = 3 6 = 50 % recall=\frac36=50\% recall=63=50%

此外,还有一个在工业中运用比较广泛的指标:点击率(CTR).

u t i l ( R u ) = C T R = ∣ C u ∣ ∣ R u ∣ util(R_u)=CTR=\frac{|C_u|}{|R_u|} util(Ru)=CTR=RuCu

在上面的例子中, C T R = 6 10 = 60 % CTR=\frac6{10}=60\% CTR=106=60%.

就是说有60%的推荐被选择了.

在机器学习中,一般用“混淆矩阵”来计算precision和recall,我试了试,结果是一样的.

YESNO
YESTP (18)FN (4)
NOFP (3)TN (5)

假设如上,即 R u = { 1 − 18 , E x t r a 1 ( 3 ) } R_u=\{1-18,{Extra}_1(3)\} Ru={118,Extra1(3)}, C u = { 1 − 18 , E x t r a 2 ( 4 ) } C_u=\{1-18,Extra_2(4)\} Cu={118,Extra2(4)}, R u ∩ C u = { 1 − 18 } R_u\cap C_u=\{1-18\} RuCu={118}.

∣ R u ∣ = 21 , ∣ C u ∣ = 22 , ∣ R u ∩ C u ∣ = 18 |R_u|=21,|C_u|=22,|R_u\cap C_u|=18 Ru=21,Cu=22,RuCu=18

所以

p r e c i s i o n = T P T P + F P = 18 21 = ∣ R u ∩ C u ∣ ∣ R u ∣ precision=\frac{TP}{TP+FP}=\frac{18}{21}=\frac{|R_u\cap C_u|}{|R_u|} precision=TP+FPTP=2118=RuRuCu

r e c a l l = T P T P + T N = 18 22 = ∣ R u ∩ C u ∣ ∣ C u ∣ recall=\frac{TP}{TP+TN}=\frac{18}{22}=\frac{|R_u\cap C_u|}{|C_u|} recall=TP+TNTP=2218=CuRuCu

可以看出和上面的算法是一样的。

1.3 Ranking score

用户很难浏览所有项目,所以根据评分,排名靠前的就更有推荐的价值。

u t i l ( R u ) = r a n k ( R u ) = ∑ j = 1 ∣ R u ∣ m a x ( r ( i , j ) − d , 0 ) 2 j − 1 a − 1 util(R_u)=rank(R_u)=\sum_{j=1}^{|R_u|}\frac{max(r(i,j)-d,0)}{2^{\frac{j-1}{a-1}}} util(Ru)=rank(Ru)=j=1Ru2a1j1max(r(i,j)d,0)

a a a:半衰期衰减值, r ( i , j ) r(i,j) r(i,j): 这里综述有点问题,先不管了

2.Novelty


待续^_^

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值