Visualisation de données multidimensionnelles (LSI) en 2D


11

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.


Pourquoi avez-vous besoin de réduire la dimensionnalité? Pour construire le graphique que vous voulez, vous n'avez besoin que de bords dont la longueur est proportionnelle à la distance entre les documents. Vous l'avez déjà, à partir de la métrique utilisée pour votre clustering k-means.
Aman

@Aman qui ne fonctionne pas pour afficher la similitude entre> 2 documents sur un plan 2D (graphique). bien sûr, je peux tracer les points A et B avec une séparation basée sur la distance k-moyennes. mais quand j'ai besoin de tracer le point C, en fonction des distances à A et B, il n'y a généralement pas de point dans l'espace 2D qui satisfasse toutes les relations par paires.
Jeff

Réponses:


7

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=XXSM=VΛV=XXX=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.


1
Je pense que LDA serait mieux pour cela. L'ACP - au fur et à mesure que vous passez par SVD - ne conservera aucune information discriminante de cluster (classe), ce que recherche l'OP.
Zhubarb

0

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).

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.