Czy muszę usunąć zmienne, które są skorelowane / współliniowe przed uruchomieniem kmeans?


14

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%

1
Czy próbowałeś analizy PCA w celu dekorelacji swoich danych?
Miroslav Sabo

2
„Collinear” to nie to samo, co „correleted”. Więc twoje pytanie pozostaje niejasne
ttnphns

Odpowiedzi:


10

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:

Customer CatA CatB CatC
1        1    0    0
2        0    1    0
3        0    0    1

(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(10)2+(01)2+(00)2=2

Powiedzmy teraz, że upuszczasz CatC.

Customer CatA CatB 
1        1    0    
2        0    1    
3        0    0    

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(10)2+(00)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.


1
Wydaje mi się, że przy eliminowaniu zmiennych przez PCA należy zachować szczególną ostrożność. Przede wszystkim wariancje muszą zostać znormalizowane przed taką eliminacją, ponieważ można niepoprawnie wyeliminować zmienne tylko dlatego, że mają różną skalę ze względu na swoje jednostki. Po drugie, wyeliminowałbym tylko te wymiary, które mają niewielką zmienność, ponieważ ponieważ PCA przyjmuje podstawę ortogonalną, jeśli masz zmianę w kierunku nieortogonalnym, zostanie to uchwycone przez k-średnie, ale wyeliminowane przez PCA.
Cagdas Ozgenc

1
Bardziej fundamentalną obawą jest to, że PCA na zmiennych niezależnych nie daje żadnych informacji na temat zmiennej zależnej. Łatwo jest skonstruować przykłady, w których to podejście PCA wyeliminuje każdą zmienną, która ma znaczenie, i zachowa tylko te, które nie! Aby zobaczyć, co się dzieje, pozwól mieć dwuwymiarowy Rozkład normalny z wariancjami i korelacją i ustaw . PCA na danych z zidentyfikuje jako główny składnik i wyeliminuje . Ponowne zarejestrowanie na będzie nieistotne. 1 ρ > 0 Y = X 1 - X 2 ( X 1 , X 2 ) X 1 + X 2 X 1 - X 2 Y X 1 + X 2(X1,X2)1ρ>0Y=X1X2(X1,X2)X1+X2X1X2YX1+X2
Whuber

1
Dyskusja w otoczeniu bez nadzoru jest nieistotna. W przypadku ustawienia nadzorowanego tak PCA nie dba o związek ze zmienną docelową. Jeśli kierunek zależności zmierza w kierunku niskiej wariancji, pech.
Cagdas Ozgenc

2

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)xy

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.


1
W świetle mojej analizy na stats.stackexchange.com/a/50583 to rozumowanie wydaje się nieprawidłowe.
whuber

Znacząco poprawiłem swoją odpowiedź, była ona zbyt duża w oparciu o dane przykładowe zabawki.
Ma ZAKOŃCZENIE - Anony-Mousse

1

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ą.

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.