Intuizione umana dietro SVD in caso di sistema di raccomandazione

Aug 20 2020

Questo non risponde alla mia domanda. Ho faticato molto a capire l'SVD dal punto di vista dell'algebra lineare. Ma in alcuni casi non sono riuscito a collegare i punti. Quindi, ho iniziato a vedere tutte le applicazioni di SVD. Come il sistema di consigli sui film, il sistema di posizionamento delle pagine di Google, ecc.

Ora, nel caso del sistema di raccomandazione sui film, quello che avevo come immagine mentale è ...

L'SVD è una tecnica che rientra nel filtraggio collaborativo. E ciò che fa l'SVD è fattore di una matrice di big data in due matrici più piccole. E come input per SVD diamo una matrice di dati incompleta. E SVD ci fornisce una probabile matrice di dati completa. In questo caso, nel caso di un sistema di consigli sui film, proviamo a prevedere le valutazioni degli utenti. Matrice di dati di input incompleta significa che alcuni utenti non hanno assegnato valutazioni a determinati film. Quindi l'SVD aiuterà a prevedere le valutazioni degli utenti. Non so ancora come l'SVD scomponga una grande matrice in pezzi più piccoli. Non so come l'SVD determina le dimensioni delle matrici più piccole.

Sarebbe utile se qualcuno potesse giudicare la mia comprensione. E apprezzerò molto tutte le risorse che possono aiutarmi a comprendere l'SVD da zero alla sua applicazione ai sistemi di raccomandazione di Netflix. Anche per il sistema di ranking delle pagine di Google o per altre applicazioni.

Non vedo l'ora di vedere una spiegazione più dal livello dell'intuizione umana e dal punto di vista dell'algebra lineare. Poiché sono interessato a utilizzare questo algoritmo nella mia ricerca, ho bisogno di capire il prima possibile: come funziona l'SVD in profondità dal nucleo?

Risposte

3 EricPerkerson Aug 20 2020 at 18:53

Stai confondendo l'SVD con un algoritmo di completamento della matrice. L'SVD prende un file$(m \times n)$ matrice di dati $M$ e lo prende in considerazione $M = U \Sigma V^\text{T}$, mentre un algoritmo di completamento della matrice prende una matrice con voci mancanti e le riempie secondo un criterio. In particolare, l'SVD non è una tecnica di filtraggio collaborativo per i sistemi di raccomandazione come stai parlando, e suddivide qualsiasi matrice in tre matrici, non due, e non può accettare una matrice con voci mancanti come input.

Se quello che vuoi veramente è un po 'di intuizione sugli algoritmi di completamento della matrice, devi capire che l'assunto chiave dietro di loro è che il dato $(m \times n)$ matrice $M$ ha un rango basso, il che significa che $\text{rank}(M) < \min(m, n)$. Nel caso del problema Netflix, supponiamo che tutti i clienti Netflix rientrino in uno dei diversi gruppi che valutano tutti i film all'incirca allo stesso modo. Se abbiamo solo 5 film che vengono presi in considerazione e 6 clienti, potresti avere una matrice di valutazioni come questa$$ \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] $$dove ogni riga corrisponde a un film e ogni colonna corrisponde a un cliente. I clienti si dividono in tre gruppi diversi, con i clienti 1 e 2 che hanno valutazioni identiche per tutti e 5 i film, i clienti 3, 4 e 5 che hanno valutazioni identiche per tutti e 5 i film e il cliente 6 ha un gruppo con solo se stessi. Questo fa sì che la matrice abbia$\text{rank}(M) = 3$, perché ci sono solo tre colonne linearmente indipendenti. Se questa è la vera valutazione che ogni cliente darebbe se vedesse e classificasse tutti e 5 i film, se cancellassimo una voce per creare una 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] $$ dove $*$ denota una voce sconosciuta o cancellata, sapendolo $\text{rank}(M) = 3$ sono sufficienti informazioni per riempire la voce mancante perché se fosse qualcosa di diverso da 5 il rango della matrice sarebbe quindi 4 e non 3.

Per capire intuitivamente come l'SVD si relaziona alla risoluzione di questo problema, è necessario comprendere anche che le voci della matrice $\Sigma$ (chiamati i valori singolari della matrice $M$) ti parlano anche del grado di $M$. Essere specifici,$\text{rank}(M) = \text{(the number of non-zero singular values)}$. Gli algoritmi di completamento della matrice sono più complicati in realtà, ma l'idea è essenzialmente la stessa di questo semplice esempio con una voce cancellata.

Per imparare ciò di cui hai bisogno per comprendere gli algoritmi di completamento della matrice, dovrai imparare una buona dose di algebra lineare. Un libro di testo potrebbe essere il posto migliore per iniziare, ma potresti provare a imparare questi argomenti in sequenza:

  1. Il grado di una matrice
  2. La scomposizione degli autovalori di una matrice (precursore della SVD)
  3. L'SVD
  4. Completamento della matrice