コンテキスト:私は、uniコースの統計で(半分忘れられた)経験があるプログラマーです。最近、私はhttp://akinator.comにつまずき、それを失敗させようといくつかの時間を費やしました。そして、誰がそうではなかったのですか?:)
私はそれがどのように機能するかを調べることにしました。グーグルで関連するブログ投稿を読んで、結果のミックスに私の(限られた)知識の一部を追加した後、次のモデルを思いつきます(間違った表記法を使用することを確信しています。そのために私を殺さないでください):
サブジェクト(S)と質問(Q)があります。予測子の目標は、これまでに収集された質問と回答が与えられると、ユーザーが考えている主題である最大の事後確率を持つ主題Sを選択することです。
ゲームGを質問と回答のセットとします:。
次に、予測子はP (S | G )= P (G | S )∗ P (S )を探します。
被験者の事前確率()は、被験者が推測された回数をゲームの総数で割ったものになります。
すべての回答が独立しているという仮定を立てると、ゲームGが与えられた場合に被験者Sの尤度を次のように計算できます。
使用者が与えられた主題を持っているときにどの質問と回答が与えられたかを追跡すれば、計算できます。
ここで、は被験者の確率分布を定義し、次の質問を選択する必要がある場合、この分布のエントロピーの予想される変化が最大になるものを選択する必要があります。
私はこれを実装しようとしましたが、動作します。しかし、明らかに、被験者の数が上がると、パフォーマンスは低下による再計算する必要があるためそれぞれの動きと計算更新配信後P (S | G ∨ { のq jを、} )質問選択のための。
私は単に間違ったモデルを選択し、自分の知識の限界に縛られているのではないかと疑っています。または、おそらく、数学に誤りがあります。私を啓発してください:何百万もの主題と何千もの質問に対処できるように、私は何に慣れるか、または予測子をどのように変更するべきですか?