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=∣Ru∣∑i∈Rup(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=∣Ru∣∑i∈Ru(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=∣Ru∣∣Cu∩Ru∣
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=∣Cu∣∣Cu∩Ru∣
其中, 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\} Ru∩Cu={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=∣Ru∣∣Cu∣
在上面的例子中, C T R = 6 10 = 60 % CTR=\frac6{10}=60\% CTR=106=60%.
就是说有60%的推荐被选择了.
在机器学习中,一般用“混淆矩阵”来计算precision和recall,我试了试,结果是一样的.
YES | NO | |
---|---|---|
YES | TP (18) | FN (4) |
NO | FP (3) | TN (5) |
假设如上,即 R u = { 1 − 18 , E x t r a 1 ( 3 ) } R_u=\{1-18,{Extra}_1(3)\} Ru={1−18,Extra1(3)}, C u = { 1 − 18 , E x t r a 2 ( 4 ) } C_u=\{1-18,Extra_2(4)\} Cu={1−18,Extra2(4)}, R u ∩ C u = { 1 − 18 } R_u\cap C_u=\{1-18\} Ru∩Cu={1−18}.
∣ 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,∣Ru∩Cu∣=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=∣Ru∣∣Ru∩Cu∣
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=∣Cu∣∣Ru∩Cu∣
可以看出和上面的算法是一样的。
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=1∑∣Ru∣2a−1j−1max(r(i,j)−d,0)
a a a:半衰期衰减值, r ( i , j ) r(i,j) r(i,j): 这里综述有点问题,先不管了
2.Novelty
待续^_^