我正在使用NDCG评估TOP-K范围查询。给定空间区域和查询关键字,我的顶级K范围查询必须在给定区域中返回与查询关键字相关的文本。
在我的情况下,范围查询通常只能找到一个文档要返回。但是,我必须将此查询与可以在给定区域中找到更多对象的另一个查询进行比较,并使用相同的关键字进行比较。这是可能的,因为我正在测试改进对象描述的方法。
我没有弄清楚如何使用NDCG在这种情况下比较这两个查询。我想使用NDCG@5,NDCG@10比较查询A和B,但是查询A仅找到一个对象。查询A将具有较高的NDCG值,因为其找到更多对象的能力较低(可能是最大值的值)。查询B找到更多的对象(我认为是更好的解决方案),但NDCG值低于查询A。
您可以考虑查看其他度量,例如请回想@10,如果您不在乎应用程序的排名。
ndcg是一种用于Web搜索的度量,您确实想惩罚一个不会以最佳结果返回最佳项目的系统,这就是为什么它具有指数衰减因子。对于导航查询>``stackoverflow''是有意义的,如果您不先返回此网站,您将看起来很糟糕。
听起来您正在构建一些更复杂的东西,用户在乎许多结果。因此,一种更加面向召回的措施(它比排名更关心多件事更正确)可能更有意义。
其找到更多对象的能力较低
我还会仔细检查您对NDCG的实现:无论实际返回哪些是什么,您总是想根据理想的排名来分配理想的排名。听起来您的查询A返回1个正确的对象,但是查询B返回更多正确的对象,但不在高级中?无论哪种方式,您都希望查询A除以完美排名的DCG - 这意味着10、20或数千个"正确"对象。您可能只是没有足够的判断力,因此您的"完美排名"太小了,因此您不够惩罚查询。