Supposons que j'ai une matrice de recommandations de style Netflix et que je souhaite créer un modèle qui prédit les futures classifications de films potentielles pour un utilisateur donné. En utilisant l'approche de Simon Funk, on utiliserait la descente de gradient stochastique pour minimiser la norme Frobenius entre la matrice complète et la matrice élément par élément * utilisateur par utilisateur combinée avec un terme de régularisation L2.
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 (qui comprennent (disons) ~ 1% de la matrice de recommandation) pour construire un modèle (avec un choix judicieux d'hyper-paramètres et de régularisation) pour prédire les 99% restants de la matrice?
En pratique, sautez-vous vraiment toutes ces valeurs? Ou déduisez-vous autant que possible AVANT de faire une descente de gradient stochastique? Quelles sont les meilleures pratiques standard pour traiter les valeurs manquantes?
la source
Réponses:
Oui, en pratique, ces valeurs sont ignorées. Dans votre description en termes de norme Frobenius, cela correspond à minimiser les composantes de la norme qui peuvent être mesurées, c'est-à-dire celles qui ont des notations connues. Le terme de régularisation peut être considéré comme un a priori bayésien sur les composantes des vecteurs de caractéristiques, le SVD calculant l'estimateur du maximum de vraisemblance, sous réserve de cet a priori et des valeurs connues.
Il est probablement préférable de considérer le SVD comme une méthode pour déduire les valeurs manquantes. Si vous avez déjà une meilleure façon de procéder, pourquoi avez-vous besoin du SVD? Si vous ne le faites pas, le SVD comblera volontiers les lacunes pour vous.
la source
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 .
la source
Il existe une thèse qui examine de nombreux systèmes de recommandation et les compare, mais ne parle pas de suivi à long terme des éléments manquants, par exemple, pour tester les prédictions. Cela fait partie de votre question? Vous utilisez la composante temps de cette manière? Parmi les nombreux articles et méthodes de la revue de thèse figurent des systèmes sensibles au temps / sensibles, comme la recherche dans les articles Rendle. Si votre question concerne également la gestion de la rareté des données, elle est également discutée en détail tout au long de la thèse et il existe de nombreuses méthodes. matrices clairsemées et imputation avec des zéros ou factorisation matricielle qui ajoute une matrice de liaison de regroupement d'utilisateurs (utilisateurs qui évaluent les articles de la même manière) ou une matrice de liaison de regroupement d'articles.
Le titre de la thèse est "Modèles de bas rang pour les systèmes de recommandation avec des informations de préférence limitées" par Evgeny Frolov https://www.skoltech.ru/app/data/uploads/2018/09/Frolov_Dissertation_Final1.pdf
la source