找到这个你是完全正确的。鉴于代码的相似性,我的猜测是有一个源bug,然后论文复制了糟糕的实现而没有仔细检查。
“akturtle”问题提升者也是完全正确的,我打算给出相同的例子。我不确定“kunhe”是否理解这个论点,当然回想起计算平均精度时的问题。
是的,这个bug会使数字膨胀。我只希望排名列表足够长,并且方法足够合理,以便在排名列表中实现100%的召回,在这种情况下,错误不会影响结果。
不幸的是,审稿人很难抓住这一点,因为通常不会审查论文代码。值得联系作者试图让他们更新代码,用正确的数字更新他们的论文,或者至少不要继续犯错误在他们未来的作品中。如果您打算撰写一篇比较不同方法的论文,您可以指出问题并报告正确的数字(以及可能带有错误的那些只是为苹果比较制作苹果)。
回答你的问题:
MAP @ k是否总是小于为所有排名列表计算的MAP?
不一定,MAP @ k本质上是计算MAP,同时针对潜在的情况进行标准化,在这种情况下,只有k次检索才能做得更好。例如。考虑返回的排名列表与相关性: 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 并假设共有6个相关文件。这里MAP应该略高于50%,而MAP @ 3 = 100%因为你不能比检索1 1 1做得更好。 但这与您发现的错误无关,因为MAP @ k保证至少与真正的MAP @ k一样大。