NDCG

Normalized Discounted Cummulative Gain

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

C G k = ∑ i = 1 k r ( i ) CG_k=\sum_{i=1}^kr(i) CGk​=i=1∑k​r(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=1∑k​log2​(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=1∑k​log2​(i+1)2reli​−1​

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

现在的问题是,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=IDCGu​DCGu​@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:

i r(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)
1 3 1.00 3.00
2 4 1.58 2.53
3 1 2.00 0.50
4 0 2.32 0
5 3 2.58 1.16
6 2 2.80 0.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

i r(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)
1 4 1.00 4.00
2 3 1.58 1.89
3 3 2.00 1.50
4 2 2.32 0.86
5 1 2.58 0.38
6 0 2.80 0

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|) ci​∈C∩T,Ω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​=∣T∣1​i=1∑∣Ω∣​iΩi​∑j=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=∣U∣∑u∈U​APu​​

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=N1​i=1∑N​pi​1​
关注推荐的项目是否靠前

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

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

  1. 推荐系统常用评价指标:NDCG、Recall、Precision、Hit Rate

    评价指标 NDCG Normalized Discounted Cumulative Gain(归一化折损累计增益) NDCG用作排序结果的评价指标,评价排序的准确性. 推荐系统通常为某用户返回一个i ...

  2. 推荐系统实践读书笔记-04利用用户标签数据

    推荐系统实践读书笔记-04利用用户标签数据 推荐系统的目的是联系用户的兴趣和物品,这种联系需要依赖不同的媒介.GroupLens在一篇文章中表示目前流行的推荐系统基本上通过3种方式联系用户兴趣和物品. ...

  3. 推荐系统实践读书笔记-01好的推荐系统

    推荐系统实践读书笔记-01好的推荐系统 在研究如何设计推荐系统前,了解什么是好的推荐系统至关重要.只有了解了优秀推荐系统的特征,我们才能在设计推荐系统时根据实际情况进行取舍.本章分3个步骤来回答这个问 ...

  4. 推荐系统实践读书笔记-08评分预测问题

    推荐系统实践读书笔记-08评分预测问题 本书到目前为止都是在讨论TopN推荐,即给定一个用户,如何给他生成一个长度为N的推荐列表,使该推荐列表能够尽量满足用户的兴趣和需求.本书之所以如此重视TopN推 ...

  5. 推荐系统实践读书笔记-02利用用户行为数据

    推荐系统实践读书笔记-02利用用户行为数据 为了让推荐结果符合用户口味,我们需要深入了解用户.如何才能了解一个人呢?<论语·公冶长>中说"听其言,观其行",也就是说可以 ...

  6. 目标检测的评价指标P,R,mAP

    目标检测的评价指标P,R,mAP 1 基本概念 1.1 IOU(Intersection over Union) 1.2 TP TN FP FN 2. 各种率 2.1 根据IOU计算Precision ...

  7. 推荐系统实践读书笔记-05利用上下文信息

    推荐系统实践读书笔记-05利用上下文信息 本章之前提到的推荐系统算法主要集中研究了如何联系用户兴趣和物品,将最符合用户兴趣的物品推荐给用户,但这些算法都忽略了一点,就是用户所处的上下文(context ...

  8. 推荐系统的评价指标总结

    评价一个推荐系统的好坏的重要性不用多少.本文的总结非常的全面,相信读者通过阅读本文以及本文参考的文献可以对推荐系统的评价指标有比较全面的掌握. 对推荐系统的研究一个重要的环节是如何评价一个推荐算法的好 ...

  9. 推荐系统实践读书笔记-06利用社交网络数据

    推荐系统实践读书笔记-06利用社交网络数据 自从搜索引擎谷歌诞生后,大家都在讨论互联网的下一个金矿是什么.现在,几乎所有的人都认为那就是社交网络.根据尼尔森2010年的报告,用户在互联网上22%的时间 ...

最新文章

  1. Linux机器建立密钥信任
  2. 关于人工智能工程可能不知的7件事
  3. c语言指针实验报告总结,c语言指针实验报告
  4. 计算代码重复率_了解了知网大学生论文查重原理,重复率想高于6%都难!
  5. 淘宝弹性布局方案lib-flexible研究
  6. Android设计模式之——原型模式
  7. 盘点各种程序员常用的框架,看看你是否落伍了?
  8. 《全局光照技术》在摩点网发起众筹活动
  9. 怎么在Linux中安装gcc编译器使用,如何在linux中安装gcc编译器?
  10. java实现视频加密_JAVA实现视频加密
  11. 2018春招-今日头条笔试题-第四题(python)
  12. html设置图片为部分背景颜色,设置HTML的一个部分作为一个不同的背景颜色
  13. python实现最小二乘法进行线性拟合
  14. 蓝牙定位在各行业领域中的应用及蓝牙定位原理浅析-新导智能
  15. leetcode 面试题57 - II. 和为s的连续正数序列
  16. python注释第一行_python第一行注释是什么意思?
  17. Comet OJ - Contest #5 迫真小游戏
  18. c#利用log4记录日志
  19. JVM JDK 和 JRE
  20. Declaration of Interest Statement

热门文章

  1. Android推送通知指南
  2. powermock跳过某方法_PowerMock使用详解
  3. face_recognition人脸检测
  4. 利用python识别图片中的条码及条码图片矫正和增强!
  5. Linux 中的TAB键名字补全使用方法
  6. java中的同步与异步
  7. 【pandas之DataFrame相关函数】loc()函数、iloc函数
  8. matlab中imresize()函数用法
  9. 面向对象与面向过程理解
  10. rua出300道四则运算题