在许多应用排名算法(例如谷歌搜索、亚马逊产品推荐)的情况下,您会得到成百上千的结果。用户只想在前 20 名左右观看。所以其余的完全无关紧要。
明确地说:只有前个元素是相关的k
如果这对您的应用程序来说是正确的,那么这对指标有直接影响:
- 您只需要查看的项目和 ground truth 排名的前项目。kk
- 这些潜在的项的顺序可能相关或不相关 - 但可以肯定所有其他项的顺序无关紧要。2k
三个相关指标是 top-k 准确率、precision@k 和recall@k。取决于您的应用程序。对于所有这些,对于您评估的排名查询,相关项目的总数应高于。kk
排名前 k 的分类准确率
对于基本事实,可能很难定义顺序。而如果你只区分相关/不相关,那么你实际上是在一个分类案例中!
Top-n准确度是分类的指标。请参阅Top-n 准确度的定义是什么?.
top-k accuracy=how often was at least one relevant element within the top-k of a ranking query?ranking queries
所以你让排名算法预测个元素,看看它是否包含至少一个相关项目。k
我非常喜欢这个,因为它很容易解释。来自业务需求(可能是),那么您可以说用户多久会感到高兴。kk∈[5,20]
这样做的缺点:如果您仍然关心项中的顺序,则必须找到另一个指标。k
精度@k
Precision@k=number of relevant items within the top-kk∈[0,1], higher is better
它告诉你什么:
- 如果它很高 -> 您向用户展示的大部分内容都与他们相关
- 如果它很低 -> 你浪费了你的用户时间。您向他们展示的大部分内容与他们无关
召回@k
Recall@k=number of relevant items within the top-ktotal number of relevant items∈[0,1], higher is better
这是什么意思:
- 如果它很高:你展示你所拥有的!你给他们所有相关的项目。
- 如果低:与相关项的总数相比,k 小/top k 内的相关项小。因此,单独的recall@k 可能没有那么有意义。如果它与高精度@k 相结合,那么增加 k 可能是有意义的。