推荐系统的评价指标笔记(NDCG、MAP、AUC、HR、MRR)

NDCG

Normalized Discounted Cummulative Gain

累积增益CG,CG表示每个推荐结果相关性的分数的累加,

C G k = ∑ i = 1 k r ( i ) CG_k=\sum_{i=1}^kr(i) CGk=i=1kr(i)

其中 r e l i rel_i reli是位置 i i i的推荐结果的相关性, k k k是推荐列表的大小.

如果我们考虑到位置对推荐的影响,比如,相关性高的应该尽量排在推荐列表的前面。这里引入DCG,考虑位置的影响因素:

D C G k = ∑ i = 1 k r ( i ) log ⁡ 2 ( i + 1 ) DCG_k=\sum_{i=1}^{k}\frac{{r(i)}}{\log_2(i+1)} DCGk=i=1klog2(i+1)r(i)

如果 r ( i ) r(i) r(i)的取值是 { 0 , 1 } \{0,1\} {0,1},那么可以这样计算:

D C G k = ∑ i = 1 k 2 r e l i − 1 log ⁡ 2 ( i + 1 ) DCG_k=\sum_{i=1}^{k}\frac{2^{rel_i}-1}{\log_2(i+1)} DCGk=i=1klog2(i+1)2reli1

即:位置越靠后,缩小的比例就越大

现在的问题是,DCG仅仅是针对一个用户的推荐列表进行评估,但是每个用户的推荐列表长度不是全都一样,那么要在所有用户之间横向比较的话需要将数据归一化,即引入NDCG.

N D C G u @ K = D C G u @ K I D C G u NDCG_u@K=\frac{DCG_u@K}{IDCG_u} NDCGu@K=IDCGuDCGu@K

其中,IDCG是理想化状态的DCG,即已经按相关性大小完成排序.

举个例子,假设用户u得到一个长度为6的推荐列表,其相关性数组为 { 3 , 4 , 1 , 0 , 3 , 2 } \{3,4,1,0,3,2\} {3,4,1,0,3,2},得到CG=3+4+1+0+3+2=13.

现在计算DCG:

ir(i) log ⁡ 2 ( i + 1 ) \log_2(i+1) log2(i+1) r ( i ) / log ⁡ 2 ( i + 1 ) r(i)/\log_2(i+1) r(i)/log2(i+1)
131.003.00
241.582.53
312.000.50
402.320
532.581.16
622.800.71

DCG = 3+2.53+0.5+0+1.16+0.71 = 7.9

理想状况的推荐列表 { 4 , 3 , 3 , 2 , 1 , 0 } \{4,3,3,2,1,0\} {4,3,3,2,1,0},计算IDCG

ir(i) log ⁡ 2 ( i + 1 ) \log_2(i+1) log2(i+1) r ( i ) / log ⁡ 2 ( i + 1 ) r(i)/\log_2(i+1) r(i)/log2(i+1)
141.004.00
231.581.89
332.001.50
422.320.86
512.580.38
602.800

IDCG = 8.63

N D C G u @ 6 = 7.9 / 8.63 = 92.61 % NDCG_u@6=7.9/8.63 = 92.61\% NDCGu@6=7.9/8.63=92.61%

可见,NDCG的值是介于(0,1]的.

MAP

Mean Average Precision

对于该指标的解释,就是希望用户选择的物品排在推荐列表的越前面越好.
参考:https://makarandtapaswi.wordpress.com/2012/07/02/intuition-behind-average-precision-and-map/

假设我们收到一个推荐 C = { 1 , 2 , 3 , 4 , 5 , 6 } \mathbf C=\{1,2,3,4,5,6\} C={1,2,3,4,5,6},我们的购买列表是 T = { 1 , 4 , 5 , 6 } \mathbf T=\{1,4,5,6\} T={1,4,5,6},那么我们可以得到一个集合 Ω = { 1 , 0 , 0 , 1 , 1 , 1 } \Omega=\{1,0,0,1,1,1\} Ω={1,0,0,1,1,1},其中 ∣ Ω ∣ = ∣ C ∣ |\Omega|=|\mathbf C| Ω=C,
if c i ∈ C ∩ T , Ω i = 1 , o t h e r w i s e , Ω i = 0. ( i = 1 , 2 , . . . , ∣ C ∣ ) c_i\in\mathbf C\cap\mathbf T,\Omega_i=1,\mathrm {otherwise},\Omega_i=0. (i=1,2,...,|\mathbf C|) ciCT,Ωi=1,otherwise,Ωi=0.(i=1,2,...,C)
可以有一个和 Ω \Omega Ω一样长的的集合来表示位置i(包括i)之前有多少比例的物品被购买了,即 { 1 , 0 , 0 , 2 4 , 3 5 , 4 6 } \{1,0,0,\frac24,\frac35,\frac46\} {1,0,0,42,53,64}
所以公式就可以表示为:
A P u = 1 ∣ T ∣ ∑ i = 1 ∣ Ω ∣ Ω i ∑ j = 1 i Ω j i AP_u=\frac1{|\mathbf T|}\sum_{i=1}^{|\Omega|}\frac{\Omega_i\sum_{j=1}^{i}\Omega_j}{i} APu=T1i=1ΩiΩij=1iΩj

其中 u u u代表用户 u u u,对每个用户求得AP,再求平均即为MAP.
M A P = ∑ u ∈ U A P u ∣ U ∣ MAP=\frac{\sum_{u\in \mathbf U}AP_u}{|\mathbf U|} MAP=UuUAPu

AUC

Area Under Curve

这里的curve指ROC曲线,AUC就是曲线下的面积

ROC曲线是一系列threshold下的(FPR,TPR)数值点的连线。此时的threshold的取值分别为测试数据集中各样本的预测概率,但取各个概率的顺序是从大到小的,ROC图中,横坐标是FPR伪阳率,FPR=FP/(FP+TN),纵坐标是TPR,真阳率,TPR=TP/(TP+FN)

推荐系统评价指标综述笔记_pocket_eight的博客-CSDN博客的例子,FPR=3/(3+5)=0.38,TPR=18/(22)=0.82

那么如何标记这么多点呢?在真假例的二分类判断中,有一个预测为真的阈值,例如预测率超过80%就判定为真,这个0.8就是阈值,将阈值从0到1不断调整,可以得到n组FPR、TPR的值对,将这些值在坐标系中描出来,就得到了ROC曲线。

AUC值越大的分类器,正确率越高。

HR

Hit Ratio

H R @ K = N u m b e r O f H i t s @ K G T HR@K=\frac{NumberOfHits@K}{GT} HR@K=GTNumberOfHits@K

分母是所有测试集合,分子表示每个用户top-K列表中属于测试集合个数的和

举例:有3个用户,三个用户在测试集中的商品个数为6,8,10,得到的top5商品在测试集中的商品个数分别为2,3,4,那么

H R @ 5 = 2 + 3 + 4 6 + 8 + 10 = 0.375 HR@5=\frac{2+3+4}{6+8+10}=0.375 HR@5=6+8+102+3+4=0.375

MRR

平均倒数排名(Mean Reciprocal Rank,MRR)
M R R = 1 N ∑ i = 1 N 1 p i MRR=\frac 1N\sum_{i=1}^N\frac 1{p_i} MRR=N1i=1Npi1
关注推荐的项目是否靠前

N N N:真实点击总数
p i p_i pi:item_i在推荐列表中出现的位置,如果没有出现就是 p i → ∞ p_i\rarr\infty pi

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是对评价指标NDCGAUC、ACC、Precision和Recall的简要介绍: 1. NDCG (Normalized Discounted Cumulative Gain):NDCG是用于衡量排序算法性能的指标,常用于评估推荐系统的排序质量。它考虑了推荐列表每个项目的相关性和排序位置,通过对相关性进行折扣和累加来计算得分,然后将得分标准化,使得评估结果在0到1之间,越接近1表示排序质量越好。 2. AUC (Area Under the ROC Curve):AUC是用于衡量分类算法性能的指标,常用于评估二分类问题的预测准确性。ROC曲线是以真正例率(True Positive Rate)为纵轴,假正例率(False Positive Rate)为横轴绘制的曲线,AUC则是ROC曲线下的面积。AUC越接近1表示分类器性能越好。 3. ACC (Accuracy):ACC是用于衡量分类算法性能的指标,表示分类器正确预测的样本占总样本数的比例。ACC通常用于评估多分类问题分类器的准确性,取值范围为0到1,越接近1表示分类器性能越好。 4. Precision (精确率):Precision是用于衡量分类算法性能的指标,表示分类器在预测为正例的样本,真正例的比例。精确率主要关注分类器的预测准确性,计算公式为真正例数除以真正例数加上假正例数。 5. Recall (召回率):Recall是用于衡量分类算法性能的指标,表示分类器成功预测为正例的样本占所有真正例的比例。召回率主要关注分类器对正例的全面性,计算公式为真正例数除以真正例数加上假负例数。 这些评价指标在不同的任务和场景有不同的应用,可以帮助评估模型的性能和效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值