上下文:我是一名程序员,在单门课程的统计方面有一些(被遗忘的)经验。最近,我偶然发现了http://akinator.com,并花了一些时间尝试使其失败。谁不是?:)
我决定找出它是如何工作的。在查阅并阅读了相关的博客文章并将一些(有限的)知识添加到结果组合中之后,我想到了以下模型(我确定我会使用错误的符号,请不要为此而杀了我):
有主题(S)和问题(Q)。预测器的目的是在给定的问题和答案的情况下,选择具有最大后验概率成为用户正在考虑的主题的主题S。
让游戏G为一系列问题和给出的答案:。
然后,预测变量正在寻找。
主题的先验值()可以是猜测主题的次数除以游戏总数。
假设所有答案都是独立的,给定游戏G,我们可以计算出主题S的可能性,如下所示:
如果我们跟踪当使用了给定主题时给出了哪些问题和答案,我们可以计算:
现在,定义了主题的概率分布,当我们需要选择下一个问题时,我们必须选择一个其分布的熵的预期变化最大的问题:
我试图实现这一点,并且可以正常工作。但是,很明显,作为主体的数量上升,性能会降低,因为需要重新计算在每次移动后,计算更新的分布为问题选择。
我怀疑我只是选择了错误的模型,而受我知识的限制。或者,也许是数学上有错误。请启发我:我应该使自己熟悉什么,或者如何更改预测变量,以便它可以应对数百万个主题和数千个问题?