Una técnica de filtrado colaborativo que utiliza la factorización matricial es la técnica de factorización matricial probabilística que fue uno de los primeros líderes durante la competencia del Premio Netflix:
http://www.cs.utoronto.ca/~amnih…
Para resumir, si tengo N usuarios y M películas, podemos representar las calificaciones de esos usuarios en esas películas como una matriz NxM observada parcialmente. Para cualquier matriz de predicciones NxM, podemos definir nuestra función de error como la suma de los errores al cuadrado cuando los elementos de la matriz parcialmente observada se comparan con las predicciones correspondientes.
Ahora, si elegimos algún número D, con suerte podremos encontrar una matriz NxD y una matriz DxM que se multipliquen para producir una matriz NxM de predicciones que tenga un pequeño valor de error. Podemos hacer esto ejecutando un descenso de gradiente estocástico en las dos matrices tratando de minimizar la función de error en las predicciones. Esta optimización debería llevar un tiempo lineal en el número de observaciones que tenemos.
Básicamente, estamos encontrando un vector de características latentes de longitud D para cada película y para cada usuario. Cuando toma el producto punto del vector de características de un usuario y el vector de características de una película, obtiene una calificación prevista.
- Álgebra lineal: ¿cómo puedo encontrar una ecuación de verificación de paridad?
- Con respecto a las matrices, ¿cómo puede probar que si A tiene un inverso que A al cuadrado también tiene un inverso?
- ¿Cómo instalo la biblioteca Ruby linalg en Mac?
- ¿Cómo puedo abordar la selección de vectores efectivos usando la descomposición del valor singular?
- ¿Qué artículos han sido los más interesantes en la factorización matricial en 2011?
Además de predecir las calificaciones de los usuarios en varios tipos de medios, esta y sus variantes se pueden usar para cosas como predecir los puntajes de los juegos deportivos: http://www.cs.toronto.edu/~rpa/s…
En este caso, su matriz tendría en la fila n, columna m, el número de puntos que anotó el equipo n cuando jugaron en el equipo m. Esto significaría que el vector de características de la enésima fila serían las características latentes de la ofensiva del equipo n, y el vector de características de la columna enésima serían las características latentes de la defensa del equipo m.
Aquí hay una variante completamente bayesiana: http://www.cs.utoronto.ca/~amnih…
y algo de código de Python: http://blog.smellthedata.com/200…