Probabilidad de que a alguien le guste la imagen

11

Tengo el siguiente problema:
- Tenemos un conjunto de N personas
- Tenemos un conjunto de imágenes K
- Cada persona califica cierto número de imágenes. A una persona le puede gustar o no una imagen (estas son las dos únicas posibilidades). - El problema es cómo calcular la probabilidad de que a una persona le guste una imagen en particular.

Daré un ejemplo presentando mi intuición.
N = 4
K = 5
+ significa que a la persona le gusta la imagen
- significa que a la persona no le gusta la imagen
0 significa que a esa persona no se le ha preguntado sobre la imagen, y ese valor debe predecirse

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

A la persona 1 probablemente le gustará la imagen 3 porque a la persona 2 le gustan las preferencias similares y a la persona 2 le gusta la imagen 3. A la
persona 4 probablemente no le gustará la imagen 2 porque a nadie más le gusta y, además, a la persona 4 no le gustan la mayoría de las imágenes.

¿Existe algún método bien conocido que pueda usarse para calcular tal probabilidad?

Tomek Tarczynski
fuente
Dada mi experiencia limitada, no puedo dar una respuesta exacta. Sin embargo, creo que puede usar un enfoque de datos de panel (porque considera en su ejemplo variaciones dentro de individuos y entre individuos) con logit. Tal vez otros puedan dar más detalles sobre esto ...
teucer
Su pequeño ejemplo es muy útil, pero supongo que su conjunto de datos real es más grande. ¿Cuánto más grande, es decir (aproximadamente) qué tan grandes son sus N y k reales ?
parada el
N y k pueden ser enormes, pero el poder computacional no es un problema.
Tomek Tarczynski

Respuestas:

6

Creo que este es un problema estándar de filtrado colaborativo . Una búsqueda en google da miles de resultados.

shabbychef
fuente
1
o biclustering (+1).
chl
6

Esto parece un buen problema para el aprendizaje automático, por lo que me concentraré en este grupo de métodos.

La primera y la idea más obvia es el algoritmo kNN. Allí primero calcula la similitud entre los espectadores y luego predice los votos faltantes con el voto promedio en esta imagen emitida por usuarios similares. Para más detalles ver Wikipedia .

Otra idea es cultivar bosques aleatorios sin supervisión en estos datos (de cualquier manera, con atributos en imágenes o personas, lo que sea mejor) e imputar los datos faltantes en función de la estructura del bosque; todo el método se implementa y se describe en el randomForestpaquete R , busque la rfImputefunción.

Finalmente, puede reestructurar el problema a una tarea de clasificación simple, digamos hacer un objeto de cada cero en la matriz e intentar pensar en algunos descriptores razonables (como el voto promedio del espectador, el voto promedio de la imagen, el voto de la mayoría, el segundo más, ... visor similar, igual con la imagen, posiblemente algunos datos externos (tono medio de la imagen, edad del votante, etc.) Y luego intente varios clasificadores en estos datos (SVM, RF, NB, ...).

También hay algunas posibilidades más complejas; para obtener una descripción general, puede buscar soluciones de desafío de premios de Netflix (que era un problema similar).


fuente