Dans la pratique, que font les gens avec les valeurs manquantes de la matrice de recommandation, quel est l'intérêt de faire le calcul? Je suppose qu'en lisant le billet de blog de Simon, il utilise UNIQUEMENT les termes non manquants pour construire un modèle.
C'est vrai - c'est le but de lui et de votre modèle, de prédire les termes manquants, non? C'est un point crucial que beaucoup oublient. Ils pensent qu'ils peuvent simplement "supposer" de pré-assigner une constante aux données manquantes sans souci dans le monde, et les choses fonctionneront comme par magie avec un SVD. Déchets dedans, déchets: c'est réel, et vous feriez mieux de le regarder. Vous feriez mieux de ne pas envoyer de données indésirables à un modèle si vous voulez que quelque chose d'utile en résulte.
Il n'est certainement pas "préférable de déduire des valeurs manquantes" sur un jeu de données à majorité clairsemée, puis d'exécuter SVD dessus avec un certain espoir de vous imputer des valeurs (que vous avez déjà imputées avant d'exécuter SVD, non?). Que pensez-vous, un modèle est magique? Il n'y a pas de magie ni de technologie pour surmonter les données de la majorité des déchets. Vous ne pouvez pas mentir à un modèle selon lequel les données sont de vraies données quand elles ne sont pas réelles du tout, mais vraiment juste des ordures que vous venez de faire avec de l'air.
SVD fait d'autres choses utiles, donc je ne dis certainement pas que SVD ne vaut rien du tout. Allez-y et utilisez SVD uniquement sur des ensembles de données complets, peut-être que vous avez intelligemment imputé des valeurs manquantes en utilisant déjà un modèle d'apprentissage automatique en accordant toute l'attention nécessaire aux erreurs de biais et aux erreurs de variance pendant son développement.
L'apprentissage automatique est la voie. Donc, si vous voulez toujours savoir comment imputer des valeurs à l'aide d'une conception de factorisation matricielle, il existe certainement de bonnes façons de faire exactement cela en utilisant l'apprentissage automatique, et surtout, ils ne fournissent pas de données indésirables à un modèle pour tenter inutilement d'apprendre.
Exactement un tel modèle de factorisation de matrice d'apprentissage automatique est assez bien présenté par les instructeurs du cours en ligne Stanford Mining Massive Data Sets, dans le module 5. Ils vous montrent les mathématiques et expliquent le modèle. Mais ils ne le codent pas pour vous.
C'est OK parce que vous pouvez le coder vous-même, si vous comprenez l'apprentissage automatique de base. Savez-vous ce qu'est une fonction de perte et une fonction de coût? Régularisation? Descente graduelle? Êtes-vous d'accord avec la multiplication et l'ajout de matrice? Erreur de biais et erreur de variance? Si oui, alors vous êtes bon. Sinon, vous devriez envisager de suivre le cours en ligne Machine Learning d' Andrew Ng à Coursera, qui est l'un des nombreux bons points de départ. Ensuite, allez également suivre le cours en ligne Mining Massive Data Sets qui parle exactement de la factorisation matricielle et de l'apprentissage automatique pour créer des modèles de recommandation.
Il suffit de dire que vous pouvez complètement concevoir et coder votre propre modèle de factorisation qui gère très bien les données manquantes, tout comme Simon Funk l'a fait, et vous pouvez le faire à partir de zéro, mais ce n'est plus difficile du tout comme s'il était de retour à son époque, car maintenant vous pouvez utiliser un outil comme TensorFlow ou Microsoft CNTK qui fait beaucoup pour vous. Définissez une fonction de perte et une fonction de coût, choisissez un optimiseur, partitionnez votre jeu de données en formation, dev, testez à partir des données réellement disponibles (données étiquetées) et laissez-le s'exécuter. Sérieusement, cela fonctionne. Ce n'est pas facile de déboguer TF et ses erreurs de construction de graphes, mais cela peut très bien fonctionner au final et prend moins d'une page de code.
Plus précisément, une façon de ne pas fournir de fausses données à un modèle d'apprentissage automatique de factorisation matricielle consiste à ignorer les éléments de matrice des données manquantes dans vos fonctions de perte et de coût .