5

J'essaie d'appliquer NMF sur mon ensemble de données, en utilisant python scikit-learn. Mon dataset contient 0 valeurs et des valeurs manquantes. Mais scikit-learn n'autorise pas la valeur NaN dans la matrice de données. Certains messages ont dit que remplacer les valeurs manquantes par des zéros.Comment faire face aux valeurs manquantes dans python scikit NMF

mes questions sont les suivantes:

  • Si je remplace la valeur manquante avec des zéros, comment l'algorithme peut dire aux valeurs et réelles zéro valeurs manquantes?

  • Y a-t-il d'autres implémentations NMF capables de gérer les valeurs manquantes? Ou alors, s'il existe d'autres algorithmes de factorisation de matrice, peut-on faire la prédiction de valeur manquante?

+0

Le remplacement des valeurs manquantes à zéro (ou colonne moyenne, ou une ligne de moyenne ou ...) ne sont pas connues par le classificateur. Il traitera ces chiffres comme n'importe quel autre qui pourrait être acceptable (nous supposons toujours qu'un modèle de rang inférieur existe avec ces méthodes)./En général, je dirais que la prédiction des valeurs manquantes est un problème plus difficile (qui nécessite des hypothèses plus fortes) que la recherche d'une factorisation de bas rang d'une matrice sans valeurs manquantes. Comme alternative: écrire un optimiseur SGD pour un problème nmf commun (et vous pouvez échantillonner à partir des valeurs connues seulement) – sascha

+1

Merci, il semble ignorer les valeurs manquantes lors de l'application de SGD est la solution. –

+0

Face au même problème. Avez-vous écrit votre propre implémentation SGD? Si oui, comment ça fonctionne? Jusqu'à présent, je n'ai pas été en mesure de réaliser quelque chose qui ressemble à NMF. – silentser

Répondre

1

SGD fera le travail ici, mais scikit-learn n'en a pas qui pourrait être appliqué pour la tâche. L'écriture de votre propre fera le travail, mais sera vraiment lent puisque l'on ne peut pas paralléliser directement la factorisation de la matrice SGD. Contrôle Distribué algorithme SGD décrit here. Ce n'est pas si difficile à mettre en place et cela accélère les choses de manière significative.

+0

Bon point, merci :) –