我正在使用NDCG评估top-k范围查询。给定一个空间区域和一个查询关键字,我的top-k范围查询必须返回给定区域中与查询关键字文本相关的k个文档。
在我的场景中,范围查询通常只找到一个要返回的文档。但我必须将这个查询与另一个可以在给定区域找到更多对象的查询进行比较,并使用相同的关键字。这是可能的,因为我正在测试一种改进对象描述的方法。
在这种情况下,我不知道如何使用NDCG来比较这两个查询。我想使用NDCG@5,NDCG@10来比较查询A和B,但查询A只找到一个对象。查询A将具有较高的NDCG值,因为它查找更多对象的能力较低(该值可能是1-最大值)。查询B可以找到更多的对象(在我看来,这是一个更好的解决方案),但比查询A的NDCG值要低。
发布于 2017-12-20 04:48:35
如果你不太关心你的应用程序的排名,你可以考虑看看不同的衡量标准,例如Recall@10。
NDCG是为网络搜索而设计的一种度量,在这种情况下,你真的想惩罚一个没有在最上面的结果中返回最佳项目的系统,这就是为什么它有一个指数衰减因子。这对于像stackoverflow这样的导航查询来说是有意义的,如果你不首先返回这个网站,你会看起来很糟糕。
听起来你正在构建一些更复杂的东西,其中用户关心许多结果。因此,一种更注重回忆的措施(比排名更关心多件事的正确)可能更有意义。
较低的查找更多对象的能力
我还会仔细检查您的NDCG实现:您总是希望除以理想排名,而不管实际返回的是什么。听起来您的查询A返回了1个正确的对象,但是查询B返回了更多正确的对象,但不是在高级别?无论哪种方式,您都希望查询A除以具有完美排名的DCG --这意味着有10、20或数千个“正确”的对象。这可能是因为您没有足够的判断,因此您的“完美排名”太小,因此您没有对查询A进行足够的惩罚。
https://stackoverflow.com/questions/47847292
复制相似问题