Contexte: Je suis un programmeur avec une expérience (à moitié oubliée) en statistiques de cours uni. Récemment, je suis tombé sur http://akinator.com et j'ai passé un certain temps à essayer de le faire échouer. Et qui ne l'était pas? :)
J'ai décidé de découvrir comment cela pouvait fonctionner. Après avoir googlé et lu des articles de blog connexes et ajouté certaines de mes connaissances (limitées) dans le mix résultant, je trouve le modèle suivant (je suis sûr que j'utiliserai la mauvaise notation, ne me tuez pas pour cela):
Il y a des sujets (S) et des questions (Q). Le but du prédicteur est de sélectionner le sujet S qui a la plus grande probabilité postérieure d'être le sujet auquel l'utilisateur pense, compte tenu des questions et des réponses recueillies jusqu'à présent.
Soit le jeu G un ensemble de questions posées et de réponses données: .
Le prédicteur recherche alors .
Priorité aux sujets ( ) pourrait être juste le nombre de fois que le sujet a été deviné divisé par le nombre total de jeux.
En faisant l'hypothèse que toutes les réponses sont indépendantes, nous pourrions calculer la probabilité du sujet S étant donné le jeu G comme ceci:
Nous pourrions calculer le si nous gardons une trace des questions et des réponses qui ont été données lorsque les utilisateurs ont pensé à un sujet donné:
Maintenant, définit une distribution de probabilité sur les sujets et lorsque nous devons sélectionner la question suivante, nous devons sélectionner celle pour laquelle le changement attendu dans l'entropie de cette distribution est maximal:
J'ai essayé de mettre en œuvre cela et cela fonctionne. Mais, évidemment, à mesure que le nombre de sujets augmente, les performances se dégradent en raison de la nécessité de recalculer le après chaque déplacement et de calculer la distribution mise à jour pour sélection des questions.P ( S | G ∨ { q j , a } )
Je soupçonne que j'ai simplement choisi le mauvais modèle, étant contraint par les limites de mes connaissances. Ou, peut-être, il y a une erreur dans les calculs. Veuillez m'éclairer: à quoi dois-je me familiariser ou comment changer le prédicteur pour qu'il puisse faire face à des millions de sujets et des milliers de questions?