Factoration des matrices d'interaction clairsemées à l'aide de la décomposition en valeurs singulières
Glissez pour afficher le menu
Aperçu de la SVD
La décomposition en valeurs singulières, ou SVD, est une technique mathématique puissante permettant de décomposer une matrice en trois matrices plus simples.
Dans le contexte des systèmes de recommandation, la SVD est souvent utilisée pour analyser et compresser de grandes matrices d'interactions utilisateur-produit, généralement creuses, afin de révéler des schémas et relations cachés.
Explication mathématique
Étant donnée une matrice A (comme une matrice d'interactions utilisateur-produit), la SVD la factorise en trois matrices : U, Σ et V^T. La relation peut être décrite comme suit :
A = U Σ V^T
Uest une matrice dont les colonnes sont les vecteurs singuliers à gauche ;Σ(Sigma) est une matrice diagonale contenant les valeurs singulières ;V^Test la transposée d'une matrice dont les colonnes sont les vecteurs singuliers à droite.
Cette décomposition permet d'approximer la matrice d'origine en utilisant uniquement les valeurs et vecteurs singuliers les plus significatifs, ce qui est particulièrement utile dans des scénarios de données creuses et de grande dimension.
Rôle dans les recommandations
Dans les systèmes de recommandation, les matrices utilisateur-produit sont généralement creuses, avec de nombreuses valeurs manquantes (par exemple, des produits non notés). La SVD permet de découvrir des caractéristiques latentes expliquant les interactions observées. En reconstruisant la matrice avec un nombre réduit de valeurs singulières, il est possible de prédire les valeurs manquantes—c'est-à-dire d'estimer la note qu'un utilisateur pourrait attribuer à un produit avec lequel il n'a pas encore interagi. Cela permet de proposer des recommandations personnalisées basées sur des préférences déduites plutôt que sur les seules données explicites.
Application de la SVD à une matrice utilisateur-produit creuse
Supposons que vous disposiez d'une matrice utilisateur-produit où les lignes représentent les utilisateurs et les colonnes les produits. De nombreuses valeurs sont manquantes (ou fixées à zéro), représentant des préférences utilisateur inconnues. En appliquant la SVD, il est possible de réduire la matrice à ses composantes essentielles et d'utiliser la reconstruction pour estimer les valeurs manquantes, qui pourront ensuite servir à générer des recommandations.
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. Quelle matrice dans la SVD contient les valeurs singulières qui capturent l’importance de chaque caractéristique latente ?
2. Quel est l’objectif principal de l’application de la SVD à une matrice utilisateur-produit dans les systèmes de recommandation ?
Merci pour vos commentaires !
Demandez à l'IA
Demandez à l'IA
Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion