Probabilité que quelqu'un aime l'image

11

J'ai le problème suivant:
- Nous avons défini N personnes
- Nous avons défini K images
- Chaque personne évalue un certain nombre d'images. Une personne peut aimer ou ne pas aimer une image (ce sont les deux seules possibilités). - Le problème est de savoir comment calculer la probabilité qu'une personne aime une image particulière.

Je vais donner un exemple présentant mon intuition.
N = 4
K = 5
+ signifie que la personne aime l'image
- signifie que la personne n'aime pas l'image
0 signifie que la personne n'a pas été interrogée sur l'image, et que la valeur doit être prédite

x 1 2 3 4 5    
1 + - 0 0 +   
2 + - + 0 +  
3 - - + + 0  
4 - 0 - - -

La personne 1 aimera probablement l'image 3 parce que la personne 2 a des préférences similaires et la personne 2 aime l'image 3. La
personne 4 n'aimera probablement pas l'image 2 parce que personne d'autre ne l'aime et en plus la personne 4 n'aime pas la plupart des images.

Existe-t-il une méthode bien connue, qui peut être utilisée pour calculer une telle probabilité?

Tomek Tarczynski
la source
Étant donné mon expérience limitée, je ne peux pas donner de réponse exacte. Cependant, je pense que vous pouvez utiliser une approche de données de panel (car vous considérez dans votre exemple les variations au sein des individus et entre les individus) avec logit. Peut-être que d'autres peuvent développer cela ...
teucer
Votre petit exemple est très utile, mais je suppose que votre véritable ensemble de données est plus grand. Combien sont plus gros, c'est-à-dire (à peu près) quelle est la taille de vos vrais N et k ?
onestop
N et k peuvent être énormes, mais la puissance de calcul n'est pas un problème.
Tomek Tarczynski

Réponses:

6

Je crois que c'est un problème standard de filtrage collaboratif . Une recherche Google donne des milliers de résultats.

shabbychef
la source
1
ou biclustering (+1).
chl
6

Cela ressemble à un bon problème pour l'apprentissage automatique, je vais donc me concentrer sur ce groupe de méthodes.

L'idée première et la plus évidente est l'algorithme kNN. Là, vous calculez d'abord la similitude entre les téléspectateurs, puis prédisez les votes manquants avec le vote moyen sur cette image exprimée par des utilisateurs similaires. Pour plus de détails, voir Wikipedia .

Une autre idée consiste à développer une forêt aléatoire non supervisée sur ces données (de toute façon, avec des attributs dans des images ou des personnes, quoi de mieux) et à imputer des données manquantes en fonction de la structure de la forêt; toute la méthode est implémentée et décrite dans le randomForestpackage R , recherchez la rfImputefonction.

Enfin, vous pouvez restructurer le problème en une tâche de classification simple, par exemple faire un objet de chaque zéro dans la matrice et essayer de penser à des descripteurs raisonnables (comme le vote moyen du spectateur, le vote moyen de l'image, le vote du plus, le deuxième plus, .. visionneuse similaire, même avec l'image, éventuellement quelques données externes (teinte moyenne de l'image, âge de l'électeur, etc.) Et puis essayez différents classificateurs sur ces données (SVM, RF, NB, ...).

Il existe également des possibilités plus complexes; pour un aperçu, vous pouvez rechercher des solutions de défi de prix Netflix (qui était un problème similaire).


la source