Wizualizacja danych wielowymiarowych (LSI) w 2D


11

Korzystam z ukrytego indeksowania semantycznego, aby znaleźć podobieństwa między dokumentami ( dzięki, JMS! )

Po zmniejszeniu wymiaru próbowałem k-średnich grupowania dokumentów w klastry, co działa bardzo dobrze. Chciałbym jednak pójść nieco dalej i wizualizować dokumenty jako zestaw węzłów, w których odległość między dowolnymi dwoma węzłami jest odwrotnie proporcjonalna do ich podobieństwa (bardzo podobne węzły są blisko siebie).

Uderza mnie, że nie mogę dokładnie zredukować macierzy podobieństwa do dwuwymiarowego wykresu, ponieważ moje dane mają> 2 wymiary. Więc moje pierwsze pytanie: czy istnieje standardowy sposób, aby to zrobić?

Czy mogę po prostu zmniejszyć moje dane do dwóch wymiarów, a następnie wykreślić je jako oś X i Y, i czy wystarczyłoby to dla grupy ~ 100-200 dokumentów? Jeśli to jest rozwiązanie, czy lepiej jest zmniejszyć moje dane do 2 wymiarów od samego początku, czy też jest jakiś sposób, aby wybrać dwa „najlepsze” wymiary z moich danych wielowymiarowych?

Używam Pythona i biblioteki gensim, jeśli to robi różnicę.


Dlaczego musisz zmniejszyć wymiarowość? Aby utworzyć żądany wykres, potrzebujesz tylko krawędzi, których długość jest proporcjonalna do odległości między dokumentami. Masz to już na podstawie danych użytych do grupowania k-średnich.
Aman

@ Człowiek, który nie działa w celu wyświetlania podobieństwa między> 2 dokumentami na płaszczyźnie 2D (wykres). jasne, mogę wykreślić punkty A i B z separacją opartą na odległości k-średnich. ale kiedy muszę wykreślić punkt C na podstawie odległości do A i B, zazwyczaj w przestrzeni 2D nie ma punktu, który spełniałby wszystkie relacje parami.
Jeff

Odpowiedzi:


7

Do tego właśnie służy MDS (skalowanie wielowymiarowe). Krótko mówiąc, jeśli otrzymujesz macierz podobieństwa M, chcesz znaleźć najbliższe przybliżenie gdzie ma rangę 2. Można tego dokonać, obliczając SVD dla gdzie . S M = V Λ V = X X X = V Λ 1 / 2S=XXSM=VΛV=XXX=VΛ1/2

Teraz, zakładając, że jest permutowane, więc wartości własne są malejące, pierwsze dwie kolumny są pożądanym osadzeniem w płaszczyźnie.XΛX

Jest dużo kodu dostępnego dla MDS (i byłbym zaskoczony, jeśli scipy nie ma żadnej wersji). W każdym razie, o ile masz dostęp do niektórych procedur SVD w pythonie, jesteś ustawiony.


1
Myślę, że LDA byłoby do tego lepsze. PCA - w przypadku przejścia przez SVD - nie zachowałby żadnych informacji dyskryminujących klastrów (klas), co jest celem OP.
Zhubarb,

0

Istnieje oprogramowanie o nazwie ggobi, które może ci pomóc. Pozwala odkrywać wielowymiarowe pseudo-przestrzenie. Służy głównie do eksploracji danych, ale jego interfejs jest wyjątkowo przyjazny i „po prostu działa”!

Potrzebujesz tylko formatu CSV (w RI zwykle po prostu użyj write.csv z domyślnymi parametrami) lub pliku XML (ten format pozwala na większą kontrolę; zazwyczaj zapisuję tabelę w CSV, a następnie eksportuję ją do XML za pomocą ggobi i edytuję ręcznie na przykład, aby zmienić kolejność niektórych czynników).

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.