首先问自己:
我想测量什么?
不要在这里讨论其他提交,但是虽然 mjv 和 Sjoerd 的答案提供了一些似是而非的启发式理由,说明您尝试做的事情可能无法按预期工作;它们没有建设性,因为它们没有解释为什么你的实验有缺陷,以及你可以做些什么来改进它。在解决这些问题中的任何一个之前,您需要做的是定义您希望测量的内容,然后才应该开始尝试设计一个实验。
现在,我不能确定什么是适合您目的的良好指标,但我可以为您提供一些建议。作为起点,您可以尝试使用精确率与召回率图:
http://en.wikipedia.org/wiki/Precision_and_recall
这是一种标准技术,用于评估机器学习和信息检索(即网络搜索)中排名和分类算法的性能。如果您有工程背景,了解精度/召回率概括了精度/准确度的概念可能会有所帮助:
http://en.wikipedia.org/wiki/Accuracy_and_precision
现在让我们假设你的算法做了这样的事情;它将有关用户的一些先前数据作为输入,然后返回用户可能喜欢的其他项目的排名列表。例如,您的算法是网络搜索引擎,而项目是页面;或者您有一个电影推荐者,并且这些项目是书籍。这听起来很接近你现在想要做的,所以让我们继续这个类比。
那么你的算法在前 n 个结果的精确度是用户在你的前 n 个推荐中实际喜欢的项目数:
precision = #(items user actually liked out of top n) / n
召回率是您从项目总数中实际获得的项目数:
recall = #(items correctly marked as liked) / #(items user actually likes)
理想情况下,人们希望最大化这两个数量,但它们在某种意义上是相互竞争的目标。为了说明这一点,请考虑一些极端情况:例如,您可能有一个返回所有内容的推荐器,它具有完美的召回率,但精度非常低。第二种可能性是有一个不返回任何结果或只返回一个肯定命中的推荐器,这将具有(在有限的意义上)完美的精确度,但几乎没有召回。
因此,要了解排名算法的性能,人们通常会查看其精确率与召回率图。这些只是精度与召回率的关系图,因为返回的项目数量是不同的:

图片取自以下教程(值得一读):
http: //nlp.stanford.edu/IR-book/html/htmledition/evaluation-of-ranked-retrieval-results-1.html
现在要为您的算法估算精度与召回率,这是您可以做的。首先,返回一大组说 n,按照您的算法排名的结果。接下来,让用户从这 n 个结果中标记出他们真正喜欢的项目。这为我们提供了足够的信息来计算每个部分文档集 < n 的精度(因为我们知道数字)。我们还可以通过获取整个集合中用户喜欢的项目总数来计算召回率(仅限于这组文档)。这样,我们可以为该数据绘制精确召回曲线。现在有更好的统计技术可以用更少的工作来估计这一点,但我已经写得够多了。有关更多信息,请查看我的答案正文中的链接。