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?
fuente
Respuestas:
Creo que este es un problema estándar de filtrado colaborativo . Una búsqueda en google da miles de resultados.
fuente
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
randomForest
paquete R , busque larfImpute
funció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