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ę.
Odpowiedzi:
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=XX⊤ S M=VΛV⊤=XX⊤ X=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.
źródło
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).
źródło