Factoring Sparse Interaction Matrices Using Singular Value Decomposition
Desliza para mostrar el menú
Visión general de SVD
Descomposición en valores singulares, o SVD por sus siglas en inglés, es una técnica matemática poderosa para descomponer una matriz en tres matrices más simples.
En el contexto de los sistemas de recomendación, SVD se utiliza frecuentemente para analizar y comprimir grandes matrices de interacción usuario-artículo que son dispersas, revelando patrones y relaciones ocultas.
Explicación matemática
Dada una matriz A (como una matriz de interacción usuario-artículo), SVD la factoriza en tres matrices: U, Σ y V^T. La relación se puede describir como:
A = U Σ V^T
Ues una matriz cuyas columnas son los vectores singulares izquierdos;Σ(Sigma) es una matriz diagonal que contiene los valores singulares;V^Tes la transpuesta de una matriz cuyas columnas son los vectores singulares derechos.
Esta descomposición permite aproximar la matriz original utilizando solo los valores y vectores singulares más significativos, lo cual es especialmente útil en escenarios de datos dispersos y de alta dimensión.
Papel en las recomendaciones
En los sistemas de recomendación, las matrices usuario-artículo suelen ser dispersas, con muchas entradas faltantes (por ejemplo, productos no valorados). SVD ayuda a descubrir características latentes que explican las interacciones observadas. Al reconstruir la matriz con un número reducido de valores singulares, se pueden predecir los valores faltantes—esencialmente estimando cómo un usuario podría calificar un artículo con el que aún no ha interactuado. Esto permite recomendaciones personalizadas basadas en preferencias inferidas en lugar de solo datos explícitos.
Aplicación de SVD a una matriz usuario-artículo dispersa
Suponga que tiene una matriz usuario-artículo donde las filas representan usuarios y las columnas representan artículos. Muchas entradas están ausentes (o establecidas en cero), lo que representa preferencias de usuario desconocidas. Al aplicar SVD, puede reducir la matriz a sus componentes esenciales y utilizar la reconstrucción para estimar los valores faltantes, que luego pueden usarse para generar recomendaciones.
123456789101112131415161718192021222324252627282930import numpy as np # Example sparse user-item matrix (0 indicates missing/unknown rating) user_item_matrix = np.array([ [5, 3, 0, 1], [4, 0, 0, 1], [1, 1, 0, 5], [0, 0, 5, 4], [0, 1, 5, 4], ]) # Filling missing values (0) with the mean of non-zero elements for SVD mean_value = user_item_matrix[user_item_matrix != 0].mean() filled_matrix = np.where(user_item_matrix == 0, mean_value, user_item_matrix) # Performing SVD U, sigma, VT = np.linalg.svd(filled_matrix, full_matrices=False) # Keeping only top 2 singular values for dimensionality reduction k = 2 U_k = U[:, :k] sigma_k = np.diag(sigma[:k]) VT_k = VT[:k, :] # Reconstructing the matrix using only top k components approx_matrix = np.dot(np.dot(U_k, sigma_k), VT_k) print('Original matrix with missing values filled:') print(np.round(filled_matrix, 2)) print('\nApproximated matrix (using top 2 singular values):') print(np.round(approx_matrix, 2))
1. ¿Qué matriz en SVD contiene los valores singulares que capturan la importancia de cada característica latente?
2. ¿Cuál es el propósito principal de aplicar SVD a una matriz usuario-item en sistemas de recomendación?
¡Gracias por tus comentarios!
Pregunte a AI
Pregunte a AI
Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla