J'utilise l'indexation sémantique latente pour trouver des similitudes entre les documents ( merci JMS! )
Après la réduction des dimensions, j'ai essayé le clustering k-means pour regrouper les documents en clusters, ce qui fonctionne très bien. Mais j'aimerais aller un peu plus loin et visualiser les documents comme un ensemble de nœuds, où la distance entre deux nœuds est inversement proportionnelle à leur similitude (les nœuds qui sont très similaires sont proches les uns des autres).
Il me semble que je ne peux pas réduire avec précision une matrice de similitude à un graphique à 2 dimensions, car mes données sont> 2 dimensions. Donc, ma première question: existe-t-il une façon standard de procéder?
Puis-je simplement réduire mes données à deux dimensions, puis les tracer sur les axes X et Y, et cela suffirait-il pour un groupe de ~ 100-200 documents? Si c'est la solution, est-il préférable de réduire mes données à 2 dimensions dès le départ, ou est-il possible de choisir les deux "meilleures" dimensions à partir de mes données multidimensionnelles?
J'utilise Python et la bibliothèque gensim si cela fait une différence.
Réponses:
C'est pour cela que MDS (mise à l'échelle multidimensionnelle) est conçu. En bref, si on vous donne une matrice de similarité M, vous voulez trouver l'approximation la plus proche où a le rang 2. Cela peut être fait en calculant la SVD de où . SS=XX⊤ S M=VΛV⊤=XX⊤ X=VΛ1/2
Maintenant, en supposant que est permuté de sorte que les valeurs propres soient dans l'ordre décroissant, les deux premières colonnes de sont votre intégration souhaitée dans le plan.Λ X
Il y a beaucoup de code disponible pour MDS (et je serais surpris si scipy n'en a pas de version). Dans tous les cas, tant que vous avez accès à une routine SVD en python, vous êtes défini.
la source
Il existe un logiciel appelé ggobi qui peut vous aider. Il vous permet d'explorer des pseudo-espaces multidimensionnels. C'est principalement pour l'exploration de données, mais son interface est extrêmement conviviale et «ça marche»!
Vous avez juste besoin d'un format CSV (dans RI, utilisez simplement write.csv avec les paramètres par défaut) ou d'un fichier XML (ce format vous permet plus de contrôle; j'enregistre généralement ma table en CSV puis l'exporte en XML avec ggobi et la modifie manuellement par exemple pour changer l'ordre de certains facteurs).
la source