nDCG学习笔记

简介: 参考:http://en.wikipedia.org/wiki/Discounted_cumulative_gain Normalized Discounted Cumulative Gain:一种对搜索引擎或相关程序有效性的度量。

参考:http://en.wikipedia.org/wiki/Discounted_cumulative_gain

Normalized Discounted Cumulative Gain:一种对搜索引擎或相关程序有效性的度量。

2个假设:

    1.强相关的文档出现在结果列表越靠前(rank越高)越有用。

    2.强相关文档比弱相关文档有用,比不相关文档有用。

DCG来源于一个更早的、更基础的方法---CG。

CG不考虑结果集中的序信息,单纯把分级相关度相加。位置P处的CG值是:

                   

是搜索结果列表的位置i处结果的分级相关度。

改变搜索结果的位置顺序不会影响p的CG值。也就是说:移动一个相关性高的文档d_{i}到一个评级较高但相关性不大的文档上面不改变CG的值。

DCG取代CG作为一个更准确的测量方法。

 如果一个强相关的文档排名靠后则应该受到惩罚,位置P处的DCG值是:

             

另一个DCG计算公式更加强调相关性

 

若分级相关度只在0和1取二值的话,二公式效果相同

nDCG

根据Query的不同,结果列表的长度也不同,所以这一度量考虑了正规化问题

IDCGp(Ideal DCG)是在一个完美的排序下,p所具有的最大DCG值

这样一来无论Query是什么,nDCG都可以得到一个平均值,因此不同的Query之间的效能就可以做比较了。

完美的排序算法会使DCGp和IDCGp相同,从而使nDCGp为1,nDCG的取值在0到1之间

例:

结果列表中的6篇文档D1,D2,D3,D4,D5,D6,判定了他们的相关度是3,2,3,0,1,2,则:

                    

一个理想的排序应该是:3,3,2,2,1,0,所以

             

nDCG的缺点是:当排序的数很少(比如:只有1-3个),那么任何排序的nDCG值都比较接近,所以可以考虑使用AUC(area under the ROC curve)。

AUC学习参考文章:http://blog.csdn.net/chjjunking/article/details/5933105 

 

目录
相关文章
|
Java 应用服务中间件 数据库
RocketBot 的使用 | 学习笔记
快速学习 RocketBot 的使用
RocketBot 的使用 | 学习笔记
|
Kubernetes Cloud Native Linux
K8S 初识_K8S 初识 | 学习笔记
快速学习 K8S 初识_K8S 初识
138 0
K8S 初识_K8S 初识 | 学习笔记
|
存储 缓存 固态存储
Fatcache学习笔记
Fatcache学习笔记
Fatcache学习笔记
|
自然语言处理 算法 开发者
CJKAnalyzer|学习笔记
快速学习 CJKAnalyzer
145 0
CJKAnalyzer|学习笔记
|
XML SQL 机器学习/深度学习
M-PEG7 | 学习笔记
快速学习 M-PEG7,介绍了 M-PEG7系统机制, 以及在实际应用过程中如何使用。
M-PEG7 | 学习笔记
|
算法 计算机视觉
OpenCV学习笔记--SIFT,SUFT
图像处理两大特征提取算法
143 0
|
分布式计算 前端开发 Java
wildcardQuery|学习笔记
快速学习 wildcardQuery。
390 0
wildcardQuery|学习笔记
|
弹性计算 缓存 Linux
使用 syncthing | 学习笔记
快速学习使用 syncthing,介绍了使用 syncthing 系统机制, 以及在实际应用过程中如何使用。
使用 syncthing | 学习笔记
|
负载均衡 开发者 索引
replicas | 学习笔记
快速学习 replicas
replicas | 学习笔记
|
C++ 开发者 Python