Cómo utilizar Spark mllib para explicar el algoritmo ALS
Para el conjunto de datos de calificación usuario-producto-calificación, ALS estableció una matriz m*n usuario*producto
, donde m es el número de usuarios y n es el número de productos.
p>
Pero en este conjunto de datos, no todos los usuarios han calificado cada producto, por lo que esta matriz suele ser escasa y la calificación del producto j por parte del usuario i suele estar vacía
Lo que ALS tiene que hacer es llenar esta matriz dispersa a través de ciertas reglas. De esta manera, podemos obtener la calificación de cualquier usuario para cualquier producto de la matriz, y los elementos de calificación completados por ALS también se denominan calificación del usuario i. Producto j. Puntuación de predicción
Por lo tanto, el núcleo del algoritmo ALS es llenar (predecir) esta matriz dispersa de una manera aparentemente regular.
Hace esto:
Supongamos que la matriz de calificación m*n R se puede descomponer aproximadamente en U*(V)T
U es la matriz vectorial de características del usuario de m*d
V es la Característica del producto de la matriz vectorial n*d ((V)T representa la transposición de V. Perdóneme por no ingresar el símbolo de transposición).
d es el número de valores característicos de usuarios/productos
Acerca de la comprensión del valor d, se puede entender aproximadamente de la siguiente manera
Para cada producto, se puede entender desde d. Se puede evaluar desde cuatro perspectivas. Tomando como ejemplo una película, se puede evaluar desde cuatro perspectivas: protagonista, director, efectos especiales y trama. p>
Se puede considerar que cada película tiene sus propias características desde estas cuatro perspectivas. Hay un valor de puntuación de referencia fijo.
Por ejemplo, la película "Armageddon" es un vector de características compuesto por. producto de los valores propios
d=4, hay 4 valores de funciones, respectivamente, son protagonista, director, efectos especiales y trama.
La puntuación de referencia de cada valor de función es (puntuación completa 1.0.8
Trama: 0.6
La matriz V consta de n productos*d valores propios
Para la matriz U, suponiendo que para cualquier usuario A, existe un cierta relación lineal entre la calificación integral de la película por parte del usuario y los valores propios de la película, es decir, la calificación integral de la película = (a1*d1+a2*d2+a3*d3+a4*d4)
Entre ellos, a1-4 es el valor de característica del usuario A, d1-4 es el valor de característica de la película. Como se mencionó anteriormente
Referencias:
Investigación en matriz algoritmo de descomposición en filtrado colaborativo
Entonces, para esta suposición hecha por el algoritmo ALS anterior
m * n, la matriz de calificación R se puede descomponer aproximadamente en U * (V) T
es válida. La calificación del producto por parte del usuario puede determinarse mediante una determinada fila de la matriz U y la relación entre la matriz V. Una determinada columna se multiplica (transpone)
Entonces la pregunta ahora es: cómo determinar los valores característicos de usuarios y productos (el ejemplo anterior fue solo un ejemplo, de hecho, ambas son variables desconocidas)
Usando el método de mínimos cuadrados alternos
En la fórmula anterior, a representa la calificación real del producto j por parte del usuario i en el conjunto de datos de calificación, y la otra parte representa el vector de características (transpuesto) del usuario i * del producto j. Vector de características (aquí puede obtener la predicción calificación de i para j)
En la fórmula anterior, a representa la calificación real del producto j por parte del usuario i en el conjunto de datos de calificación, y la otra parte representa el vector de características del usuario i (convertido (conjunto )*Vector de características del producto j (aquí puede obtener la puntuación prevista de i para j)
Resta la puntuación prevista de la puntuación real, luego eleva al cuadrado y realícela en el siguiente usuario y en el siguiente producto. El mismo cálculo y sumar todos los resultados (donde la solución de datos es mirar solo los elementos con calificaciones conocidas)
Referencia:
Implementación de ALS en Spark MLlib
Pero el problema aquí todavía existe, es decir, los vectores de características de los usuarios y productos son desconocidos, y hay dos variables desconocidas en esta ecuación
La solución es el método de mínimos cuadrados alternos
Primero, para La ecuación anterior, su forma es la siguiente:
Para evitar el sobreajuste, se agrega un parámetro de regularización
Primero inicialice V con un número aleatorio menor que 1
p >Encuentre U según la fórmula (4)
En este momento, puede obtener la matriz UV inicial y calcular la suma de diferencias al cuadrado como se describe arriba.
Según la cálculo A partir de U y la fórmula (5), recalcule y cubra V, calcule la suma de diferencias al cuadrado
Repita los dos pasos anteriores hasta que la suma de diferencias al cuadrado sea menor que el número predeterminado o el número de iteraciones cumple con los requisitos, luego deténgase
Obtenga la última matriz UV
En este momento, la matriz dispersa original R puede representarse como R = U (V)T
La captura de pantalla de la fórmula anterior proviene de:
Algoritmo de filtrado colaborativo basado en la descomposición matricial
Resumen:
El núcleo del algoritmo ALS es descomponer la matriz de calificación dispersa en el producto de la matriz de vectores de características del usuario y la matriz de vectores de características del producto.
El producto de la matriz de vectores de características del producto
O utilice el método de mínimos cuadrados para calcular gradualmente el vector de características de usuario/producto, minimizando así la suma de diferencias al cuadrado
Predecir un producto específico mediante la matriz vectorial de características usuario/producto Calificaciones de usuarios para productos específicos
No sé si lo entendí correctamente
Hay algunas preguntas que me gustaría hacer ~
(1) ) en el Capítulo ¿Qué significa agregar un parámetro de regularización a una fórmula? ¿Por qué esta forma?
(2) Fija una matriz U y después de encontrar la derivada parcial, puedes obtener la fórmula para resolver V. ¿Por qué?