In pratica, cosa fanno le persone con i valori mancanti dalla matrice delle raccomandazioni, che è il punto centrale del calcolo? La mia ipotesi dalla lettura del post sul blog di Simon è che usa SOLO i termini non mancanti per costruire un modello.
Esatto - questo è il punto del suo e del tuo modello, prevedere i termini mancanti, giusto? È un punto cruciale che molti dimenticano davvero. Pensano di poter semplicemente "presumere" di pre-assegnare una costante ai dati mancanti senza preoccuparsi del mondo, e le cose funzioneranno magicamente abbastanza bene da un SVD. Immondizia, immondizia: è reale, e faresti meglio a guardarla. Faresti meglio a non inviare dati spazzatura a un modello se desideri ottenere risultati utili.
NON è certamente "meglio dedurre alcun valore mancante" sul set di dati sparse di maggioranza e quindi eseguire SVD su quello con qualche speranza di imputare i valori per te (cosa che hai già imputato prima di eseguire SVD, giusto?). Cosa ne pensi, un modello è magico? Non esiste magia né tecnologia per superare la maggior parte dei dati sui rifiuti. Non puoi mentire a un modello secondo cui i dati sono dati reali quando non sono affatto reali, ma in realtà solo una spazzatura che hai semplicemente inventato dal nulla.
SVD fa altre cose utili, quindi sicuramente non sto dicendo che SVD non abbia alcun valore. Vai avanti e usa SVD solo su set di dati completi, forse sui quali hai imputato in modo intelligente valori mancanti sull'utilizzo già di un modello di apprendimento automatico con tutta la dovuta attenzione all'errore di polarizzazione e all'errore di varianza durante il suo sviluppo.
L'apprendimento automatico è la strada. Quindi, se vuoi ancora sapere come imputare i valori usando un design di fattorizzazione a matrice, ci sono certamente buoni modi per fare esattamente questo usando l'apprendimento automatico, e, soprattutto, non forniscono dati spazzatura a un modello da cui tentare inutilmente di imparare.
Esattamente un tale modello di fattorizzazione a matrice di apprendimento automatico è presentato abbastanza bene dagli istruttori del corso online di Stanford Mining Massive Data Set, nel modulo 5. Ti mostrano la matematica e spiegano il modello. Tuttavia non ti codificano.
Va bene perché puoi codificarlo tu stesso, se capisci l'apprendimento automatico di base. Sai cosa sono una funzione di perdita e una funzione di costo? Regolarizzazione? Discesa gradiente? Stai bene con la moltiplicazione e l'aggiunta di matrici? Errore di polarizzazione ed errore di varianza? Se è così, allora sei bravo. Altrimenti dovresti prendere in considerazione l'idea di frequentare il corso online Machine Learning di Andrew Ng a Coursera, che è uno dei tanti buoni posti di partenza. Poi vai anche al corso online Mining Massive Data Set che parla esattamente della fattorizzazione a matrice e dell'apprendimento automatico per creare modelli di raccomandazione.
Basti dire che puoi progettare completamente e codificare il tuo modello di fattorizzazione che gestisce molto bene i dati mancanti, proprio come ha fatto Simon Funk, e puoi farlo da zero ma non è affatto difficile come se fosse tornato ai suoi tempi, perché ora puoi usare uno strumento come TensorFlow o Microsoft CNTK che fa molto per te. Definire una funzione di perdita e una funzione di costo, scegliere un ottimizzatore, partizionare il set di dati in formazione, sviluppo, testare dai dati effettivamente disponibili (dati etichettati) e lasciarlo funzionare. Seriamente, funziona. Non è facile eseguire il debug di TF e dei suoi errori di creazione dei grafici, ma alla fine può funzionare alla grande e richiede meno di una pagina di codice.
In particolare, un modo per non inviare dati falsi a un modello di apprendimento automatico della fattorizzazione a matrice è quello di saltare gli elementi della matrice dei dati mancanti nelle funzioni di perdita e costo .