Modelo de factorización matricial para sistemas de recomendación ¿cómo determinar el número de características latentes?

8

Estoy tratando de diseñar una técnica de factorización matricial para un simple sistema de recomendación de calificación de elementos de usuario. Tengo 2 preguntas sobre esto.

Primero, en una implementación simple que vi de la técnica de factorización matricial para la recomendación de películas, el autor acaba de inicializar las dimensiones de las características latentes, llamémoslas K de las dos matrices de Usuario y Elemento de características latentes, a algunas K constantes, digamos 2 y, por lo tanto, cada de sus matrices de características latentes P y Q fueron NXK y MXK, donde R es la matriz de calificación de elementos de usuario original que estamos tratando de aproximar con dimensiones NXM (N usuarios y elementos M). Entonces, mi pregunta es ¿cómo puedo determinar la 'K' óptima (número de características latentes) en este caso en lugar de establecerla en una constante?

También hay alguna forma de incorporar información de usuario o elemento que ya tengo en mi conjunto de datos, como la calificación promedio de un usuario en particular, el sexo del usuario, la ubicación del usuario, etc. en este resultado de la factorización de la matriz al hacer mi recomendación final (supongo ¿tal vez funcionaría un modelo de combinación con la información del usuario y del elemento representada en algún otro modelo de filtrado basado en contenido junto con mi modelo de factorización matricial?).

1> Mi primera pregunta es cómo determinar el número óptimo de características latentes. K 2> ¿alguien sabe de literatura reciente que implemente un modelo combinado de factorización matricial y filtrado basado en contenido (porque supongo que esa sería la única forma de representar información demográfica de usuarios y elementos en un espacio de características comunes).

user1009091
fuente

Respuestas:

3

En respuesta a su primera pregunta, la validación cruzada es un enfoque ampliamente utilizado. Un posible esquema es el siguiente.

Para cada valor de K dentro de un rango preseleccionado, utilice la validación cruzada para estimar el rendimiento del modelo (por ejemplo, precisión de predicción). Esto proporcionará una métrica de rendimiento del modelo estimado por valor k. Luego, seleccione la k que corresponda al rendimiento más alto.

En respuesta a su segunda pregunta, vería ejemplos de un 'enfoque híbrido', por ejemplo, en http://www.stanford.edu/~abhijeet/papers/cs345areport.pdf

joel38237
fuente
0

Para responder a su primera pregunta, haría una validación cruzada, y para la segunda pregunta, diría que debería considerar la factorización de tensor. Si tiene una representación de datos multidimensionales, definitivamente puede considerar la factorización de tensor que le permite jugar con algunos datos adicionales como otras dimensiones.

Puede consultar el siguiente enlace para ello.

https://github.com/kuleshov/tensor-factorization
mgokhanbakal
fuente