算法:值不确定时的二分搜索

机器算法验证 算法
2022-03-02 04:09:02

当每一步的测试可能给出错误的结果时,我需要一种算法来进行二进制搜索。

背景: 我需要将学生置于 12 个难度级别中最合适的一个。目前的方法是蛮力的,提出 60 个 4 答案多项选择题,难度增加,三个错误后停止,并将学生置于以下水平:floor((score - 1) / 5) + 1至少 1。

我们担心客户在实际使用该程序之前面临多达 60 个问题的测试时会被关闭,因此我们希望尽量减少测试中提出的问题数量。我们还担心客户会跳过分班考试(因为它看起来很长)然后因为它看起来太容易而放弃该计划。

中间位置实际上是在第 2 级,所以 50+% 的学生得分 <11(即回答 < 14 个问题)。有趣的是,这可能是因为他们感到无聊并且不再认真对待问题(他们是年幼的孩子)。

建议的解决方案: 将测试实施为对十二个项目的二分搜索,从难度级别为 6/7 的问题开始,并根据他们是否正确或错误地继续进行。理论上,这可以在 3-4 个问题中找到适合他们的难度级别。

问题: 正如您可能从现有的测试中猜到的那样,仅在三个错误答案后结束并使用 60 个问题在 12 个级别之间进行选择,我们希望允许学生侥幸正确答案(他们应该在 25% 的时间里做)或意外给出不正确的答案(胖手指、误读问题等)。这对于二分搜索更为重要,因为在第一个问题上侥幸获得正确答案可能会使您处于难度级别的上半部分,即使您将所有其他问题都弄错了。

那么是否有一种公认的二分搜索算法,您不能保证单个测试是准确的?

天真地,我可能会在每一步尝试最好的 3 或 5 个问题,并且由于早期问题对最终结果的影响比后面的问题更大,因此可能只将这些附加问题添加到早期步骤而不是后面的步骤。还有比这更多的吗?

1个回答

将问题视为贝叶斯概率数组;最初,假设孩子有 1/13 的机会低于每个级别,并且为了完整起见,他们有 1/13 的机会不在顶部。然后: 1) 找到你的数组的中间水平,即高于它的概率最接近 50% 的水平 2) 从那个水平问孩子一个问题。3) 使用贝叶斯规则更新每个单元格的概率,假设错误率为 25%。当一个单元格达到足够高的概率时终止并返回最有可能的级别,或者我猜当您在某个级别上用完问题时。

对这个算法更严格的处理是here我建议在实施之前阅读它。