Il existe de nombreuses façons de prédire les valeurs manquantes, mais la SVD classique n'en fait pas partie. Ce qui est bien, c'est que l'apprentissage automatique offre désormais de nombreuses façons de le faire, dont certaines sont basées sur la factorisation matricielle, d'autres complètement différentes de la factorisation matricielle. Vous pouvez choisir et créer un modèle entièrement personnalisé, et cela se fait couramment maintenant parce que les outils sont assez puissants aujourd'hui. La factorisation matricielle est certainement un bon moyen de prédire les valeurs manquantes dans les données rares, mais la SVD elle-même ne l'est pas.
La réponse acceptée ici, a apparemment conseillé au questionneur de choisir simplement une valeur constante telle que 0 ou 99 ou -3 ou autre, à assigner aux valeurs manquantes à l'avance, puis d'exécuter SVD sur cela. C'est une mauvaise réponse si l'objectif est de prédire sur des ensembles de données clairsemés. Mais si le but de l'OP est simplement d'exécuter SVD, alors la pré-affectation de toute valeur constante fonctionnera correctement, alors choisissez n'importe quelle valeur puis exécutez SVD si les résultats n'ont pas d'importance pour l'OP. J'ai dit que SVD est une mauvaise solution pour prédire les valeurs manquantes, car en supposant une valeur constante dans tous les emplacements clairsemés, vous pourriez finir par introduire littéralement plus de points de bruit que de bons points de données connus.
Quel est l'intérêt d'apprendre le bruit? Et pourquoi suggéreriez-vous même que les valeurs manquantes sont en fait la même valeur constante, alors que le but de l'exercice est de prédire ce qu'elles sont? Vous ne vous attendez pas à ce que les valeurs manquantes soient vraiment les mêmes, non? Cela va sous-estimer le nombre de composants principaux qui résultent s'il y a des données constantes si omniprésentes dans votre ensemble de données, pour une chose. C'est également un problème de prédiction très facile. Vous n'avez pas besoin d'un algorithme d'apprentissage ou même d'un algorithme de factorisation. Vous venez de dire que les valeurs manquantes sont une constante connue. Pas besoin d'imputer! Vous l'avez déjà fait, manuellement, en devinant simplement l'ancienne méthode.
Vous pouvez devenir plus amateur de SVD et pré-imputer les valeurs manquantes en utilisant une distribution aléatoire dérivée empiriquement en utilisant la moyenne et l'écart-type des données connues (non manquantes). Mais il y a ensuite un caractère aléatoire au lieu de modèles dans les données et vous vous attendez probablement à une factorisation matricielle et à une réduction de la dimensionnalité inhérentes à cette technique pour trouver les modèles que vous attendez. Cependant, vous ne découvrirez pas de nombreux modèles utiles dans le bruit aléatoire, donc cela n'aide pas non plus à utiliser de cette façon.
L'essentiel est que la sortie de SVD - ou de tout autre algorithme - sera en grande partie une ordure chaque fois qu'il y aura une quantité écrasante de données indésirables fournies par l'investigateur. Aucun algorithme ne peut apprendre un bon modèle à partir de données indésirables majoritaires. Dites simplement non à toute cette «approche».
Il semble probable que l'objectif du PO est de prédire et d'utiliser une conception de factorisation matricielle dans le cadre de l'algorithme d'apprentissage. Dans ce cas, la bonne chose est que vous pouvez écrire votre propre fonction de coût, ce qui omet de manière cruciale du coût toutes les prédictions faites contre les valeurs manquantes. Aucune donnée indésirable n'est transmise à l'algorithme d'apprentissage de cette façon.Utilisez un bon optimiseur basé sur la descente de gradient, comme Adam (il y en a d'autres). Vous pouvez obtenir une solution qui est mesurablement précise à n'importe quel degré sur la formation, le développement et le jeu de données de test, à condition de suivre une bonne méthodologie de projet d'apprentissage automatique. N'hésitez pas à ajouter des termes et de la complexité à votre modèle comme le biais utilisateur, le biais d'élément, le biais global, la régularisation ou tout ce dont vous avez besoin pour contrôler l'erreur de biais et l'erreur de variance selon les exigences de votre projet et les ensembles de données disponibles.
Un package de développement d'apprentissage automatique moderne en fait une approche pratique maintenant. TensorFlow par exemple (ou Microsoft CNTK et al) peut vous aider à faire exactement ce que j'ai décrit sur un jeu de données clairsemé en utilisant un modèle de factorisation matricielle.