L'intuition humaine derrière la SVD en cas de système de recommandation
Cela ne répond pas à ma question. J'ai eu beaucoup de mal à comprendre la SVD d'un point de vue de l'algèbre linéaire. Mais dans certains cas, je n'ai pas réussi à connecter les points. Alors, j'ai commencé à voir toutes les applications de SVD. Comme le système de recommandation de films, le système de classement des pages Google, etc.
Maintenant, dans le cas du système de recommandation de films, ce que j'avais comme image mentale est ...
Le SVD est une technique qui relève du filtrage collaboratif. Et ce que fait le SVD est de factoriser une matrice de Big Data en deux matrices plus petites. Et comme entrée du SVD, nous donnons une matrice de données incomplète. Et SVD nous donne une matrice de données complète probable. Ici, dans le cas d'un système de recommandation de films, nous essayons de prédire les notes des utilisateurs. Une matrice de données d'entrée incomplète signifie que certains utilisateurs n'ont pas donné de notes à certains films. Ainsi, le SVD aidera à prédire les notes des utilisateurs. Je ne sais toujours pas comment le SVD décompose une grande matrice en morceaux plus petits. Je ne sais pas comment le SVD détermine les dimensions des plus petites matrices.
Il serait utile que quelqu'un puisse juger de ma compréhension. Et j'apprécierai beaucoup toutes les ressources qui peuvent m'aider à comprendre le SVD à partir de zéro jusqu'à son application aux systèmes de recommandation Netflix. Également pour le système de classement des pages Google ou pour d'autres applications.
J'ai hâte de voir une explication plus du niveau de l'intuition humaine et du point de vue de l'algèbre linéaire. Parce que je suis intéressé par l'utilisation de cet algorithme dans mes recherches, je dois comprendre le plus tôt possible: comment le SVD fonctionne-t-il au plus profond du cœur?
Réponses
Vous confondez le SVD avec un algorithme de complétion de matrice. Le SVD prend un$(m \times n)$ matrice de données $M$ et le factorise en $M = U \Sigma V^\text{T}$, alors qu'un algorithme de complétion de matrice prend une matrice avec des entrées manquantes et les remplit selon un certain critère. En particulier, le SVD n'est pas une technique de filtrage collaborative pour les systèmes de recommandation comme vous parlez, et il factorise n'importe quelle matrice en trois matrices, pas deux, et il ne peut pas accepter une matrice avec des entrées manquantes en entrée.
Si vous voulez vraiment une certaine intuition sur les algorithmes de complétion de matrice, vous devez comprendre que l'hypothèse clé derrière eux est que le $(m \times n)$ matrice $M$ a un rang bas, ce qui signifie que $\text{rank}(M) < \min(m, n)$. Dans le cas du problème Netflix, nous supposons que tous les clients Netflix appartiennent à l'un des nombreux groupes qui évaluent tous les films à peu près de la même manière. Si nous n'avons que 5 films à l'étude et 6 clients, vous pourriez avoir une matrice de notation comme celle-ci$$ \left[ \begin{matrix} 1 & 1 & 5 & 5 & 5 & 2\\ 2 & 2 & 1 & 1 & 1 & 1\\ 5 & 5 & 5 & 5 & 5 & 3\\ 5 & 5 & 4 & 4 & 4 & 4\\ 3 & 3 & 2 & 2 & 2 & 4 \end{matrix} \right] $$où chaque ligne correspond à un film et chaque colonne correspond à un client. Les clients appartiennent à trois groupes différents, les clients 1 et 2 ayant des notes identiques pour les 5 films, les clients 3, 4 et 5 ayant des notes identiques pour les 5 films et le client 6 ayant un groupe avec eux-mêmes uniquement. Cela fait que la matrice a$\text{rank}(M) = 3$, car il n'y a que trois colonnes linéairement indépendantes. Si ce sont les vraies notes que chaque client donnerait s'il voyait et notait les 5 films, alors si nous effaçions une entrée pour créer une matrice$$ \left[ \begin{matrix} 1 & 1 & 5 & 5 & 5 & 2\\ 2 & 2 & 1 & 1 & 1 & 1\\ 5 & 5 & 5 & * & 5 & 3\\ 5 & 5 & 4 & 4 & 4 & 4\\ 3 & 3 & 2 & 2 & 2 & 4 \end{matrix} \right] $$ où $*$ désigne une entrée inconnue ou effacée, sachant que $\text{rank}(M) = 3$ est suffisamment d'informations pour remplir l'entrée manquante car s'il s'agissait d'autre chose qu'un 5, le rang de la matrice serait alors 4 et non 3.
Pour comprendre intuitivement comment le SVD est lié à la résolution de ce problème, vous devez également comprendre que les entrées de la matrice $\Sigma$ (appelées les valeurs singulières de la matrice $M$) vous renseignent également sur le rang de $M$. Pour être précis,$\text{rank}(M) = \text{(the number of non-zero singular values)}$. Les algorithmes de complétion de matrice sont plus compliqués en réalité, mais l'idée est essentiellement la même que dans cet exemple simple avec une entrée effacée.
Pour apprendre ce dont vous avez besoin pour comprendre les algorithmes de complétion de matrice, vous allez devoir apprendre une bonne quantité d'algèbre linéaire. Un manuel peut être le meilleur point de départ, mais vous pouvez essayer d'apprendre ces sujets dans l'ordre:
- Le rang d'une matrice
- La décomposition en valeur propre d'une matrice (précurseur du SVD)
- Le SVD
- Achèvement de la matrice