SVD de una matriz con valores faltantes


12

Supongamos que tengo una matriz de recomendaciones al estilo de Netflix, y quiero construir un modelo que prediga posibles clasificaciones de películas futuras para un usuario determinado. Usando el enfoque de Simon Funk, se usaría el descenso de gradiente estocástico para minimizar la norma de Frobenius entre la matriz completa y la matriz de usuario por usuario * ítem por ítem * combinada con un término de regularización L2.

En la práctica, ¿qué hacen las personas con los valores faltantes de la matriz de recomendaciones, que es el objetivo de hacer el cálculo? Supongo que al leer la publicación del blog de Simon es que SOLO usa los términos no faltantes (que consisten en (digamos) ~ 1% de la matriz de recomendaciones) para construir un modelo (con alguna elección juiciosa de hiperparámetros y regularización) para predecir el otro 99% de la matriz?

En la práctica, ¿realmente omites todos esos valores? ¿O infieres tanto como sea posible ANTES de hacer un descenso de gradiente estocástico? ¿Cuáles son algunas de las mejores prácticas estándar para tratar con los valores faltantes?


1
Parece una misma pregunta para esto . Respondí la pregunta allí.
d_ijk_stra

2
Yo también respondí .
Stumpy Joe Pete

2
@d_ijk_stra "respondió" lo expresa un poco generosamente para lo que equivale a un enlace a un PDF
ali_m

Respuestas:


6

Sí, en la práctica se omiten esos valores. En su descripción en términos de una norma de Frobenius, esto corresponde a minimizar los componentes de la norma que pueden medirse, es decir, aquellos que tienen clasificaciones conocidas. El término de regularización puede verse como un Bayesiano anterior en los componentes de los vectores de características, con el SVD calculando el estimador de máxima verosimilitud, sujeto a este valor anterior y los valores conocidos.

Probablemente sea mejor pensar en la SVD como un método para inferir los valores faltantes. Si ya tiene una mejor manera de hacerlo, ¿por qué necesita el SVD? Si no lo hace, entonces el SVD felizmente llenará los vacíos por usted.


1
¿Cómo se usa la SVD para inferir esos valores faltantes? ¿Has probado otros métodos para inferir los valores faltantes, por ejemplo, usando los valores no faltantes para entrenar un clasificador de bosques aleatorios, que luego podría usarse para adivinar tus valores faltantes? ¿Obtiene mejores resultados o depende realmente de los problemas?
Vishal

1
Inferir los valores faltantes de la misma manera que predeciría valores futuros, utilizando los componentes relevantes de la descomposición SVD. Predecir calificaciones futuras es exactamente el mismo problema que inferir valores perdidos. Si tiene una buena manera de inferir los valores perdidos, simplemente utilícelo para predecir calificaciones futuras. Si no lo hace, entonces para eso está SVD.
Martin O'Leary

"Probablemente sea mejor pensar en la SVD como un método para inferir los valores faltantes". Ah, no, en realidad SVD depende del usuario para predecir previamente todos los valores faltantes de alguna otra manera, antes de ejecutar un SVD. SVD no imputa nada en absoluto.
Geoffrey Anderson

1

En la práctica, ¿qué hacen las personas con los valores faltantes de la matriz de recomendaciones, que es el objetivo de hacer el cálculo? Supongo que al leer la publicación del blog de Simon es que SÓLO usa los términos que no faltan para construir un modelo.

Así es, ese es el objetivo de él y su modelo, para predecir los términos que faltan, ¿verdad? Es un punto crucial que muchos realmente olvidan. Piensan que pueden simplemente "suponer" preasignar una constante a los datos faltantes sin preocuparse por nada en el mundo, y las cosas funcionarán mágicamente lo suficientemente bien desde un SVD. Basura adentro, basura afuera: es real, y será mejor que lo veas. Es mejor que no alimente datos basura a un modelo si desea que resulte algo útil.

Ciertamente NO es "mejor inferir ningún valor faltante" en el conjunto de datos dispersos de la mayoría y luego ejecutar SVD sobre eso con alguna esperanza de imputar valores por usted (que ya imputó antes de ejecutar SVD, ¿verdad?). ¿Qué opinas, una modelo es mágica? No hay magia ni tecnología para superar la mayoría de los datos basura. No puede mentirle a un modelo que los datos son datos reales cuando no lo son en absoluto, sino que realmente son algunos datos basura que simplemente creó de la nada.

SVD hace otras cosas útiles, así que ciertamente no estoy diciendo que SVD no valga para nada. Siga adelante y use SVD solo en conjuntos de datos completos, tal vez en los que haya imputado de manera inteligente los valores faltantes al usar un modelo de aprendizaje automático con toda la atención debida al error de sesgo y al error de varianza durante su desarrollo.

El aprendizaje automático es el camino. Entonces, si aún desea saber cómo imputar valores usando un diseño de factorización matricial, ciertamente hay buenas maneras de hacer exactamente esto mediante el aprendizaje automático, y lo más importante es que no alimentan ningún dato basura a un modelo para intentar aprender sin sentido.

Los instructores del curso en línea de Mining Massive Data Sets, en el módulo 5, presentan bastante bien el modelo de factorización de la matriz de aprendizaje automático en el módulo 5. Le muestran las matemáticas y explican el modelo. Sin embargo, no lo codifican para ti.

Está bien porque puede codificarlo usted mismo, si comprende el aprendizaje automático básico. ¿Sabes qué son una función de pérdida y una función de costo? Regularización? ¿Descenso de gradiente? ¿Está bien con la multiplicación y suma de matrices? Error de sesgo y error de varianza? Si es así, entonces eres bueno. Si no, entonces debería considerar tomar el curso en línea de Andrew Ng Machine Learning en Coursera, que es uno de los muchos buenos puntos de partida. Luego, también tome el curso en línea Mining Massive Data Sets que habla exactamente sobre la factorización matricial y el aprendizaje automático para hacer modelos de recomendación.

Baste decir que puede diseñar y codificar completamente su propio modelo de factorización que maneja muy bien los datos faltantes, tal como lo hizo Simon Funk, y puede hacerlo desde cero, pero ya no es tan difícil como si hubiera vuelto en su día, porque ahora puedes usar una herramienta como TensorFlow o Microsoft CNTK que hace mucho por ti. Defina una función de pérdida y una función de costo, elija un optimizador, particione su conjunto de datos en capacitación, desarrollo, realice pruebas a partir de los datos que están realmente disponibles (datos etiquetados) y déjelo funcionar. En serio, funciona. No es fácil depurar TF y sus errores de creación de gráficos, pero al final puede funcionar muy bien y ocupa menos de una página de código.

Específicamente, una forma de no alimentar datos falsos a un modelo de aprendizaje automático de factorización matricial es omitir los elementos matriciales de los datos faltantes en sus funciones de pérdida y costo .


1

Existe una tesis que revisa muchos sistemas de recomendación y los compara, pero no habla sobre el seguimiento a largo plazo de los elementos faltantes, por ejemplo, para probar las predicciones. Esa es parte de tu pregunta? ¿Usando el componente de tiempo de esa manera? Entre los muchos documentos y métodos que revisa la tesis se encuentran los sistemas sensibles al tiempo, como la investigación en los documentos de Rendle. Si su pregunta también es sobre el manejo de la escasez de datos, eso también se discute en detalle a lo largo de la tesis y existen muchos métodos. matrices dispersas e imputación con ceros o factorización matricial que agrega una matriz de agrupación de agrupación de usuarios (usuarios que califican elementos de manera similar) o una matriz de agrupación de agrupación de elementos.

El título de la tesis es "Modelos de bajo rango para sistemas de recomendación con información de preferencia limitada" por Evgeny Frolov https://www.skoltech.ru/app/data/uploads/2018/09/Frolov_Dissertation_Final1.pdf

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.