¿Cuál es la diferencia entre SVD y factorización matricial en el contexto del motor de recomendación?

He visto dos amplios usos de la factorización matricial en los recomendadores. Ambos implican factorizaciones aproximadas de bajo rango. El primero es realmente un enfoque genérico que se puede combinar con muchas factorizaciones: mínimos cuadrados alternos (aquí está mi resumen: recomendaciones grandes y prácticas con mínimos cuadrados alternos), y el segundo es una factorización específica en sí misma, la descomposición del valor singular

Alternar mínimos cuadrados es flexible pero menos preciso. Se refiere a cualquier medio de factorizar [matemática] A \ aprox X_kY_k ^ T [/ matemática], donde [matemática] X_k [/ matemática] y [matemática] Y_k [/ matemática] tienen un rango bajo. “Aproximado” significa minimizar alguna diferencia de error al cuadrado con la entrada A, pero aquí puede personalizar exactamente lo que se considera en la función de pérdida. Por ejemplo, puede ignorar los valores faltantes (crucial) o ponderar diferentes [matemáticas] A_ {ij} [/ matemáticas] de manera diferente. El precio es que no obtienes muchas garantías sobre los dos factores. No son necesariamente ortonormales. En la práctica no ayuda, pero no duele mucho.

La factorización aquí solo implica la resolución alterna de [matemáticas] X_k [/ matemáticas] y [matemáticas] Y_k [/ matemáticas] arreglando el otro. Cuando se soluciona, es un problema que tiene una solución analítica directa, que es completamente paralelizable (también importante). Puede elegir varias descomposiciones para conectar en esta fase; Utilizo una descomposición QR porque es rápida y puede ‘detectar’ cuando el rango solicitado es incluso demasiado bajo.

En contraste, la SVD es una descomposición particular que ofrece más garantías sobre su factorización [matemática] A = U \ Sigma V_k ^ T [/ matemática]. Los dos factores externos son ortorormales, por ejemplo. [math] \ Sigma [/ math] incluso te ayudará a mostrarte cuán grande debe ser k.

El costo es velocidad y flexibilidad. La SVD es relativamente más computacionalmente costosa y más difícil de paralelizar. Tampoco hay una buena manera de lidiar con los valores faltantes o la ponderación; debe suponer que en su escasa entrada, los valores faltantes son iguales a un valor medio 0. (Alguien puede corregirme si estas suposiciones son mitigables).

SVD es solo un tipo de factorización matricial. Depende de qué función de pérdida y qué propiedades desee del resultado.

Utilizamos varios algoritmos de factorización de matriz para el sistema de recomendación en Spotify, ninguno de los cuales es SVD.

Hay una gran diferencia en el contexto de un sistema de recomendación: la matriz de utilidad es una matriz incompleta.

Para que la SVD funcione, necesita una matriz completa y, en un recomendador, comienza con una matriz muy escasa, llenar la matriz con ceros trae algunos problemas nuevos porque los ceros pueden introducir algunos efectos secundarios no deseados. Supongamos que normaliza las calificaciones para tener cero como promedio del usuario, luego, si completa con ceros, está diciendo que la calificación de algunos elementos de la película es el promedio del usuario y eso no es algo que realmente provenga de los datos.

Los algoritmos de factorización matricial utilizados para los sistemas de recomendación intentan encontrar dos matrices: P, Q como P * Q coincide con los valores CONOCIDOS de la matriz de utilidad.

Este principio apareció en el famoso documento SVD ++ “La factorización se encuentra con el vecindario” que desafortunadamente usó el nombre “SVD ++” para un algoritmo que no tiene absolutamente ninguna relación con el SVD.

En mi humilde opinión, son lo mismo. Para exponer el punto, considere lo siguiente.

1) Todas las factorizaciones de matrices provienen de la descomposición de valores singulares de una matriz. Dada una matriz X de rango r, siempre tenemos una descomposición de valor singular tal que X = USV ‘, donde U y V son matrices de columna ortogonales y S es una matriz diagonal con entradas positivas [Descomposición de valores singulares].

Otras factorizaciones matriciales resultan de transformaciones en USV ‘. Con un ligero conflicto de intereses, deseo referirme a la Figura 1 del documento, http://arxiv.org/abs/1209.0430 , donde discutimos esto.

2) Ambas son formas diferentes de aprender una estructura de bajo rango en los problemas de recomendación.

3) Una vez que hay una factorización de matriz de rango fijo, digamos X = UV ‘. Las restricciones adicionales, como la no negatividad, en U y V conducen a tratar otros escenarios problemáticos como el aprendizaje de imágenes de bajo rango [Factorización de matriz no negativa].

La descomposición matricial es una técnica poderosa para encontrar la estructura oculta detrás de los datos. SVD, PCA, NMF, etc., son modelos populares de descomposición. Pueden reformularse como un problema de optimización con una función de pérdida y restricciones, por ejemplo, el NMF impone la no negatividad en las matrices de factores. Cómo elegir la función de pérdida y las restricciones dependen de la propiedad de los datos y la tarea. Creo que es sofisticado y necesita más creatividad. Luego adoptamos el método de optimización para resolverlo. Para una gran fecha, como en el sistema de recomendación, puede ser una clave diseñar un algoritmo paralelo.

La formulación general de la factorización matricial es $ X \ aproximadamente WH $