Algorytmy grupowania na podstawie odległości mogą obsłużyć dane kategorialne
Wystarczy wybrać odpowiednią funkcję odległości, taką jak odległość Gowera , która łączy atrybuty według potrzeb na jedną odległość. Następnie możesz uruchomić Hierarchical Clustering, DBSCAN, OPTICS i wiele innych.
Brzmi dobrze, ale to tylko część historii - wybór funkcji odległości ma ogromny wpływ na wynikach.
Wyniki prawdopodobnie nigdy nie będą „prawidłowe” z danymi kategorycznymi
Niemniej jednak grupowanie może nigdy nie działać dobrze na takich danych. Rozważmy opis z Wikipedii:
Analiza klastrów lub grupowanie to zadanie grupowania zestawu obiektów w taki sposób, aby obiekty w tej samej grupie (zwanej klastrem) były bardziej podobne (w sens lub inny) do siebie nawzajem niż do tych z innych grup (klastrów).
Tak więc do grupowania potrzebujesz jakościowego podobieństwa , aby algorytm wiedział, kiedy obiekty są „bardziej podobne” niż inne.
Dlatego wiele algorytmów używa jakiejś formy odległości: bliżej = bardziej do siebie. Jest to bardzo intuicyjny sposób określania podobieństwa.
W przypadku zmiennych ciągłych wystarczające jest prawidłowe znormalizowanie danych. Większość ludzi albo ignoruje normalizację danych, normalizuje do $ [0; 1] $ albo standaryzuje do $ \ mu = 0 $, $ \ sigma = 1 $. W przypadku danych wielowymiarowych ludzie czasami również wykonują PCA (ale najczęściej używają ich w absurdalny sposób, bez uwzględnienia wpływu, jaki ma to na ich dane). Dobrą rzeczą w przypadku zmiennych ciągłych jest to, że mogą być całkiem „wybaczające”. Jeśli skalowanie / ważenie trochę się nie zgadza, wyniki mogą nadal być dobre . Podobnie, jeśli w danych jest mały błąd, ma to tylko niewielki wpływ na odległość.
Niestety, nie dotyczy to zmiennych dyskretnych, likertowych ani kategorialnych. Istnieje wiele stosowanych podejść, takich jak kodowanie na gorąco (każda kategoria staje się własnym atrybutem), kodowanie binarne (pierwsza kategoria to 0,0; druga to 0,1, trzecia to 1,0, czwarta to 1,1) które efektywnie odwzorowują twoje dane w $ \ mathbb {R} ^ {d} $ przestrzeni, gdzie możesz użyć k-średnich i tak dalej. Ale te podejścia są bardzo kruche. Zwykle działają, jeśli masz tylko kategorie binarne, chyba że różnią się zbytnio częstotliwością. Problem w tym, że masz niską zdolność rozróżnialności . Możesz mieć 0 obiektów w odległości 0 (byłyby to duplikaty), potem nic przez chwilę, a potem setki obiektów w odległości 2. Ale nic pomiędzy . Więc niezależnie od używanego algorytmu, będzie musiał połączyć wszystkie te obiekty naraz, ponieważ mają dokładnie to samo podobieństwo. W najgorszym przypadku Twoje dane mogą z tego powodu przejść od duplikatów do wszystkiego, co jest jednym klastrem.Teraz gdybyś przyłożył inną wagę do każdego atrybutu, będzie to nieco lepsze (nadal będziesz używać wielu par obiektów, które różnią się tylko tym jednym atrybutem, a więc mają taką samą odległość), ale jak dobierasz wagi atrybutów ? Nie wydaje się, aby statystycznie wiarygodny sposób bez nadzoru .
Podsumowując, uważam, że dane kategorialne nie skupiają się w sposób, w jaki powszechnie definiuje się grupowanie ponieważ dyskretna natura powoduje zbyt małą dyskryminację / ranking podobieństw. Może mieć częste wzorce , jak wykryto, np. według Apriori, ale to zupełnie inna definicja. Nie jest oczywiste, jak połączyć te dwa elementy, dlatego w przypadku danych kategorycznych zalecam częste wzorce . Mają o wiele więcej sensu niż „klastry”.