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 .