gpt4 book ai didi

algorithm - 如何检查用户选择算法

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:04:06 25 4
gpt4 key购买 nike

我有一个算法可以选择符合用户喜好的项目列表。
由于保密问题,我将跳过算法的细节......

现在,我正在想办法用一组人来统计检查它。
我现在检查它的方式是:

  1. 算法为每位用户带来最佳结果。
  2. 将前 5 个结果与最低的 5 个结果打乱顺序。
  3. 让人们按顺序列出他喜欢的结果(0 = 最喜欢,9 = 不喜欢)
  4. 将用户结果与算法结果进行比较。

我这样做是因为我认为要表明算法选择了好的结果,我需要输入一些不好的结果并表明算法也知道它是不好的结果。

所以,我要问的是:

用低结果洗牌是个好主意吗?

如果没有,您是否知道如何获得关于算法与用户偏好匹配程度的良好统计数据(我们有可以选择内容的用户)?

最佳答案

首先问问自己:

What am I trying to measure?

我不想对这里的其他提交进行评论,但是虽然 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

现在要为您的算法估算准确率与召回率,您可以执行以下操作。首先,返回一大组 say n,按照你的算法排名的结果。接下来,让用户从这 n 个结果中标记出他们真正喜欢的项目。这简单地为我们提供了足够的信息来计算每个部分文档集的精度 < n(因为我们知道这个数字)。我们还可以通过获取整个集合中用户喜欢的项目总数来计算召回率(仅限于这组文档)。这样,我们可以为这些数据绘制一条精确召回曲线。现在有更先进的统计技术可以用更少的工作来估计这个,但我已经写得够多了。有关更多信息,请查看我的回答正文中的链接。

关于algorithm - 如何检查用户选择算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6479801/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com