Prowadzę kmeans, aby zidentyfikować klastry klientów. Mam około 100 zmiennych do identyfikacji klastrów. Każda z tych zmiennych reprezentuje% wydatków klienta na kategorię. Tak więc, jeśli mam 100 kategorii, mam te 100 zmiennych, więc suma tych zmiennych wynosi 100% dla każdego klienta. Teraz te zmienne są ściśle ze sobą skorelowane. Czy muszę rzucić niektóre z nich, aby usunąć kolinearność przed uruchomieniem kmeans?
Oto przykładowe dane. W rzeczywistości mam 100 zmiennych i 10 milionów klientów.
Customer CatA CatB CatC
1 10% 70% 20%
2 15% 60% 25%
Odpowiedzi:
Nie upuszczaj żadnych zmiennych, ale rozważ użycie PCA. Dlatego.
Po pierwsze, jak wskazał Anony-mus, na k-średnich nie ma poważnego wpływu kolinearność / korelacje. Z tego powodu nie musisz wyrzucać informacji.
Po drugie, jeśli upuścisz zmienne w niewłaściwy sposób, sztucznie zbliżysz niektóre próbki do siebie. Przykład:
(Usunąłem notację% i po prostu umieściłem wartości od 0 do 1, ograniczone, więc wszystkie sumują się do 1)
Odległość euklidesowa między każdym z tych klientów w ich naturalnej przestrzeni 3d wynosi(1−0)2+(0−1)2+(0−0)2−−−−−−−−−−−−−−−−−−−−−−−√=2–√
Powiedzmy teraz, że upuszczasz CatC.
Teraz odległość między klientami 1 i 2 jest nadal , ale między klientami 1 i 3 oraz 2 i 3, to tylko . Sztucznie uczyniłeś klienta 3 bardziej podobnym do 1 i 2, w taki sposób, że surowe dane nie obsługują.2–√ (1−0)2+(0−0)2−−−−−−−−−−−−−−−√=1
Po trzecie, kolinerarność / korelacje nie stanowią problemu. Twoja wymiarowość jest. 100 zmiennych jest wystarczająco dużych, że nawet przy 10 milionach punktów danych martwię się, że k-średnie mogą znaleźć fałszywe wzorce w danych i pasować do tego. Zamiast tego pomyśl o użyciu PCA do skompresowania go do łatwiejszej do opanowania liczby wymiarów - powiedzmy 10 lub 12 na początek (być może znacznie wyższej, może znacznie niższej - będziesz musiał spojrzeć na wariancję wzdłuż każdego komponentu i bawić się trochę, aby znaleźć prawidłowy numer). Tak, sztucznie zbliżysz niektóre próbki, robiąc to, ale zrobisz to w sposób, który powinien zachować większość wariancji w danych i który preferencyjnie usunie korelacje.
~~~~~
EDYTOWAĆ:
Re, komentarze poniżej na temat PCA. Tak, absolutnie ma patologie. Ale jest dość szybki i łatwy do wypróbowania, więc nadal nie wydaje mi się złym założeniem, jeśli chcesz zmniejszyć wymiar problemu.
Przy tej notatce próbowałem jednak szybko wrzucić kilka zestawów 100-wymiarowych danych syntetycznych do algorytmu k-średnich, aby zobaczyć, co wymyślili. Chociaż szacunki położenia centrum klastra nie były tak dokładne, członkostwo w klastrze (tj. Czy dwie próbki zostały przypisane do tego samego klastra, czy nie, co wydaje się być tym, czym zainteresowany jest OP) było znacznie lepsze, niż się spodziewałem. Więc moje przeczucie wcześniej było całkiem prawdopodobne - k-znaczy migth działa dobrze na surowych danych.
źródło
Na przykładzie zabawki w 2d lub 3d nie powinno to mieć większego znaczenia, po prostu dodaje pewnej redundancji do twoich danych: wszystkie twoje punkty znajdują się na nieparzystej, (d-1) hiperpłaszczyźnie. Podobnie są środki w klastrze. Odległość w tej (płaszczyźnie d-1) wymiarowej jest wielokrotnością liniową tej samej odległości, więc nic nie zmienia.
Jeśli sztucznie konstruujesz takie dane, np. Wykonując wówczas zniekształcasz przestrzeń i podkreślasz wpływ i . Jeśli zrobisz to dla wszystkich zmiennych, nie ma to znaczenia; ale w ten sposób możesz łatwo zmieniać wagi. Ujawnia to znany fakt, że normalizowanie i ważenie zmiennych jest niezbędne . Jeśli masz korelacje w swoich danych, jest to ważniejsze niż kiedykolwiek.x y(x,y)↦(x,y,x+y) x y
Spójrzmy na najprostszy przykład: zduplikowane zmienne.
Jeśli uruchomisz PCA na swoim zestawie danych i powielisz zmienną, oznacza to skutecznie przypisanie tej zmiennej zmiennej. PCA opiera się na założeniu, że wariancja we wszystkich kierunkach jest równie ważna - dlatego powinieneś dokładnie wyważyć zmienne (biorąc pod uwagę korelacje, również wykonać inne niezbędne przetwarzanie wstępne) przed wykonaniem PCA.
źródło
Wskazane jest usuwanie zmiennych, jeśli są one wysoce skorelowane .
Niezależnie od algorytmu grupowania lub metody łączenia, jedną z rzeczy, które zazwyczaj stosujesz, jest znalezienie odległości między punktami. Utrzymywanie zmiennych, które są wysoce skorelowane, daje im więcej, podwajając wagę przy obliczaniu odległości między dwoma punktami (ponieważ wszystkie zmienne są znormalizowane, efekt będzie zwykle podwójny).
W skrócie, siła zmiennych wpływających na tworzenie klastrów wzrasta, jeśli ma wysoką korelację z dowolną inną zmienną.
źródło