Używam ukrytej analizy semantycznej do reprezentowania zbioru dokumentów w przestrzeni o niższych wymiarach. Chcę zgrupować te dokumenty w dwie grupy za pomocą k-średnich.
Kilka lat temu zrobiłem to, używając gensim Pythona i pisząc własny algorytm k-średnich. Określiłem centroidy gromadowe na podstawie odległości euklidesowej, ale następnie zgrupowałem każdy dokument na podstawie podobieństwa cosinus do centroidu. Wydawało się, że działa całkiem dobrze.
Teraz próbuję to zrobić na znacznie większym zbiorze dokumentów. Środki K nie są zbieżne i zastanawiam się, czy to błąd w moim kodzie. Niedawno czytałem, że nie należy grupować za pomocą podobieństwa kosinusowego, ponieważ k-znaczy działa tylko na odległości euklidesowej. Chociaż, jak wspomniałem, w moim mniejszym przypadku testowym działało dobrze.
Teraz natrafiam na to na stronie Wikipedii LSA :
Dokumenty i reprezentacje wektorów terminowych można grupować za pomocą tradycyjnych algorytmów grupowania, takich jak k-średnie, stosując miary podobieństwa, takie jak cosinus.
Więc co to jest? Czy mogę użyć podobieństwa cosinusowego czy nie?
I then assigned each document to a cluster based on cosine similarity
- Cosinus między doktorem a centroidem? Po przypisaniu wszystkich dokumentów aktualizujesz centroidy w zwykły (euklidesowy) sposób, ponieważ znane są współrzędne dokumentów w przestrzeni. Czy tak jest