Визуализация многомерных данных (БИС) в 2D


11

Я использую скрытое семантическое индексирование, чтобы найти сходство между документами ( спасибо, JMS! )

После уменьшения размеров я попытался использовать кластеризацию k-средних для группировки документов в кластеры, что очень хорошо работает. Но я хотел бы пойти немного дальше и визуализировать документы как набор узлов, где расстояние между любыми двумя узлами обратно пропорционально их сходству (очень похожие узлы расположены близко друг к другу).

Меня поражает, что я не могу точно уменьшить матрицу подобия для двумерного графа, так как мои данные> 2 измерения. Итак, мой первый вопрос: есть ли стандартный способ сделать это?

Могу ли я просто уменьшить свои данные до двух измерений и затем отобразить их как оси X и Y, и этого будет достаточно для группы из ~ 100-200 документов? Если это решение, лучше ли с самого начала сократить мои данные до двух измерений, или есть ли способ выбрать два «лучших» измерения из моих многомерных данных?

Я использую Python и библиотеку Gensim, если это имеет значение.


Зачем вам нужно уменьшать размерность? Чтобы построить нужный график, вам нужны только ребра, длина ребра которых пропорциональна расстоянию между документами. Это уже есть из метрики, используемой для вашей кластеризации k-средних.
Аман

@ Человек, который не работает для отображения сходства между> 2 документами на двухмерной плоскости (график). Конечно, я могу построить точки A и B с разнесением на основе k-средних расстояний. но затем, когда мне нужно построить точку C на основе расстояний до A и B, обычно в 2D-пространстве нет точки, которая удовлетворяла бы всем парным отношениям.
Джефф

Ответы:


7

Это то, для чего предназначен MDS (многомерное масштабирование). Короче говоря, если вам дана матрица подобия M, вы хотите найти ближайшее приближение где имеет ранг 2. Это можно сделать, вычислив SVD где .S=XXSM=VΛV=XXX=VΛ1/2

Теперь, предполагая, что переставлен, так что собственные значения находятся в порядке убывания, первые два столбца - это желаемое вложение в плоскость.ΛX

Для MDS доступно много кода (и я был бы удивлен, если бы у scipy не было его версии). В любом случае, если у вас есть доступ к некоторой подпрограмме SVD в Python, вы настроены.


1
Я думаю, что LDA будет лучше для этого. PCA, как вы получаете через SVD, не будет сохранять какую-либо кластерную (классовую) дискриминационную информацию, за которой следует OP.
Жубарб

0

Существует программное обеспечение под названием ggobi, которое может вам помочь. Это позволяет вам исследовать многомерные псевдопространства. Это в основном для исследования данных, но его интерфейс очень дружелюбный и «просто работает»!

Вам просто нужен формат CSV (в RI обычно просто используйте write.csv с параметрами по умолчанию) или файл XML (этот формат дает вам больше контроля; я обычно сохраняю свою таблицу в CSV, затем экспортирую ее в XML с помощью ggobi и редактирую вручную например, чтобы изменить порядок некоторых факторов).

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.