【发布时间】:2016-01-19 06:37:09
【问题描述】:
有两个广泛使用的公式(在互联网上的大多数信息检索讲座幻灯片中找到,例如at Stanford)用于计算折扣累积增益。其中之一是,对于等级 p 的 DCG:
其实是这样的:
因为log_2(2) = 1。这意味着所谓的“打折”CG其实在三级之前是不打折的!
因此,DCG 使用此公式无法区分以下排名:(10,5,1,2,...) 和 (5,10,1,2,...)。
我猜测公式不正确,应该是:
请注意,另一个非常常见的公式(请参阅wikipedia)有这个分母。
我不会问我是否在我在互联网上找到的几乎所有讲座中,甚至在我自己在伦敦大学学院的讲座中都没有看到过这个公式。难道没有错吗?令人难以置信的是,一个错误从 Wikipedia 传播出来,却没有被教授们发现……那我错了吗?
【问题讨论】:
-
最好使用另一个函数 \sum (2^rel_i - 1)/log(i+1)... 可以做的另一件事是改变对数的底(比如说 e.. 自然对数).. 然而,在所有实际情况下,原始公式都可以工作,因为两个列表(比如大小为 1000)更有可能在 2 之外的等级上有所不同而不是在 2 之内....
-
同意,但这不是争论。两个列表(例如大小为 1000)也更有可能在 3 之外的排名不同,而不是在 3 之内,那么为什么不只从排名 3 开始打折呢?
-
另外,我不知道使用另一个公式是否“更好”,毕竟它们是两个不同的公式,你提出的那个对于 rel 之间的关系很有意义0 和 1。我的 rel 分数介于 0 和无穷大之间,因此操纵 2^rel 真的不切实际。
-
rel 分数不能(实际上)是无限的......它必须是一个有限的数字(而且通常很小,比如从 0 到 4)
-
我的 rel 分数范围从 0 到 Infinity,这并不意味着它们中的任何一个实际上是 Infinity,而是它们没有上限。在实践中,它们很少超过 1000。但是 2^1024=我的编程语言中的 Inf!
标签: search-engine metrics information-retrieval