Czy należy usunąć wysoce skorelowane zmienne przed wykonaniem PCA?

111

Czytam artykuł, w którym autor odrzuca kilka zmiennych ze względu na wysoką korelację z innymi zmiennymi przed wykonaniem PCA. Łączna liczba zmiennych wynosi około 20.

Czy to daje jakieś korzyści? Wygląda mi to na ogólne obciążenie, ponieważ PCA powinna sobie z tym poradzić automatycznie.

type2
źródło
26
Tylko wskazówka. Pomyśl, w jaki sposób zmienią się wyniki PCA, jeśli dodasz coraz więcej kopii (lub bliskich kopii) jednej ze zmiennych.
ttnphns
@ type2 czy możesz podać nazwę czytanego artykułu?
Amatya

Odpowiedzi:

123

Wyjaśnia to wnikliwą wskazówkę zawartą w komentarzu @ttnphns.

Przyłączenie prawie skorelowanych zmiennych zwiększa udział ich wspólnego podstawowego czynnika w PCA. Widzimy to geometrycznie. Rozważ te dane w płaszczyźnie XY, pokazane jako chmura punktów:

Wykres punktowy

Istnieje niewielka korelacja, w przybliżeniu jednakowa kowariancja, a dane są wyśrodkowane: PCA (bez względu na sposób przeprowadzania) zgłosi dwa w przybliżeniu równe składniki.

Dodajmy teraz trzecią zmienną równą plus niewielki błąd losowy. Macierz korelacji z pokazuje to przy małych współczynnikach off-diagonalnych, z wyjątkiem między drugim a trzecim rzędem i kolumną ( i ):Y ( X , Y , Z ) Y ZZY(X,Y,Z)YZ

(1.0.03440180.0460760.03440181.0.9418290.0460760.9418291.)

Geometrycznie przesunęliśmy wszystkie oryginalne punkty prawie pionowo, podnosząc poprzednie zdjęcie z płaszczyzny strony. Ta pseudo-chmura 3D próbuje zilustrować podnoszenie za pomocą bocznego widoku perspektywicznego (na podstawie innego zestawu danych, aczkolwiek wygenerowanego w taki sam sposób jak poprzednio):

Działka 3D

Punkty początkowo leżą na niebieskiej płaszczyźnie i są podnoszone do czerwonych kropek. Oryginalna oś wskazuje w prawo. Wynikowe przechylenie rozciąga również punkty wzdłuż kierunków YZ, podwajając w ten sposób ich udział w wariancji. W związku z tym PCA tych nowych danych nadal identyfikowałby dwa główne główne elementy, ale teraz jeden z nich będzie miał podwójną wariancję w stosunku do drugiego.Y

To geometryczne oczekiwanie potwierdza niektóre symulacje R. W tym celu powtórzyłem procedurę „podnoszenia”, tworząc kopie drugiej zmiennej prawie drugi, trzeci, czwarty i piąty, nazywając je od do . Oto macierz wykresu rozrzutu pokazująca, jak te ostatnie cztery zmienne są dobrze skorelowane:X 5X2X5

Matryca punktowa

PCA odbywa się za pomocą korelacji (chociaż tak naprawdę nie ma to znaczenia dla tych danych), przy użyciu dwóch pierwszych zmiennych, a następnie trzech, ... i wreszcie pięciu. Pokazuję wyniki za pomocą wykresów udziału głównych składników w całkowitej wariancji.

Wyniki PCA

Początkowo, przy dwóch prawie nieskorelowanych zmiennych, wkłady są prawie równe (lewy górny róg). Po dodaniu jednej zmiennej skorelowanej z drugą - dokładnie tak jak na ilustracji geometrycznej - nadal istnieją tylko dwa główne komponenty, jeden teraz dwa razy większy od drugiego. (Trzeci komponent odzwierciedla brak idealnej korelacji; mierzy „grubość” chmury podobnej do naleśnika w wykresie rozrzutu 3D.) Po dodaniu innej skorelowanej zmiennej ( ), pierwszy komponent stanowi teraz około trzech czwartych całości ; po dodaniu piątej pierwszy składnik stanowi prawie cztery piąte całości. We wszystkich czterech przypadkach składniki po drugim byłyby prawdopodobnie uznane za nieistotne przez większość procedur diagnostycznych PCA; w ostatnim przypadku to „X4jeden główny element warty rozważenia.

Widzimy teraz, że warto odrzucić zmienne uważane za pomiar tego samego podstawowego (ale „ukrytego”) aspektu zbioru zmiennych , ponieważ uwzględnienie prawie nadmiarowych zmiennych może spowodować, że PCA nadmiernie zaakcentuje swój wkład. W takiej procedurze nie ma nic matematycznie poprawnego (lub złego); jest to wezwanie do oceny oparte na celach analitycznych i znajomości danych. Ale powinno być całkowicie jasne, że odłożenie zmiennych, o których wiadomo, że są silnie skorelowane z innymi, może mieć znaczący wpływ na wyniki PCA.


Oto Rkod.

n.cases <- 240               # Number of points.
n.vars <- 4                  # Number of mutually correlated variables.
set.seed(26)                 # Make these results reproducible.
eps <- rnorm(n.vars, 0, 1/4) # Make "1/4" smaller to *increase* the correlations.
x <- matrix(rnorm(n.cases * (n.vars+2)), nrow=n.cases)
beta <- rbind(c(1,rep(0, n.vars)), c(0,rep(1, n.vars)), cbind(rep(0,n.vars), diag(eps)))
y <- x%*%beta                # The variables.
cor(y)                       # Verify their correlations are as intended.
plot(data.frame(y))          # Show the scatterplot matrix.

# Perform PCA on the first 2, 3, 4, ..., n.vars+1 variables.
p <- lapply(2:dim(beta)[2], function(k) prcomp(y[, 1:k], scale=TRUE))

# Print summaries and display plots.
tmp <- lapply(p, summary)
par(mfrow=c(2,2))
tmp <- lapply(p, plot)
Whuber
źródło
5
+1, piękne postacie. Czego użyłeś do pierwszej 2? Pierwsza wygląda na ręcznie rysowaną.
gung
14
@gung Użyłem wariantu kodu na mathematica.stackexchange.com/questions/11350/xkcd-style-graphs dla pierwszej cyfry. Od dawna wiadomo, że dodanie przypadkowego drżenia do tekstu lub obrazu może sprawić, że będzie cieplejszy i bardziej dostępny. ( został pierwotnie zbudowany na Metafont , który Donald Knuth zaprojektował po dogłębnym przestudiowaniu typografii; zawarł taką wbudowaną odmianę.) W przypadku niektórych grafik, takich jak pseudo-trójwymiarowy wykres rozproszenia na drugiej figurze, technika drżenia dodaje niewiele lub rozprasza, więc nie użyłem go tam. TEX
whuber
2
To bardzo pouczające, kurwa. Nauczyłem się czegoś nowego.
Spacey
7
@whuber jest jak najmodniejszy statystyk - używając wykresów XKCD jak profesjonalista.
Cam.Davidson.Pilon
2
@logan Innymi słowy, nie. Pozwólcie, że zwrócę uwagę na zdanie w dalszej części tego postu: „Nie ma nic matematycznie poprawnego (lub złego) w takiej procedurze; jest to wezwanie do oceny oparte na celach analitycznych i znajomości danych”.
whuber
42

Będę dalej ilustrują ten sam proces i pomysł jak @whuber zrobił, ale z działek załadunkowych, - ponieważ obciążenia są Esencją PCA wyniki.

Oto trzy 3 analizy. W pierwszej mamy dwie zmienne, i (w tym przykładzie nie korelują). W drugim dodaliśmy który jest prawie kopią i dlatego silnie się z nim koreluje. W trzecim dodaliśmy jeszcze dwa kolejne „kopie”: i .X 2 X 3 X 2 X 4 X 5X1X2X3X2X4X5

Następnie zaczynają się wykresy obciążeń pierwszych 2 głównych komponentów. Czerwone wartości szczytowe na wykresach informują o korelacjach między zmiennymi, tak że w grupie kilku wartości szczytowych znajduje się grupa ściśle ściśle skorelowanych zmiennych. Składnikami są szare linie; względna „siła” komponentu (jego względna wartość wartości własnej) jest podana na podstawie masy linii.

wprowadź opis zdjęcia tutaj

Można zaobserwować dwa efekty dodania „kopii”:

  1. Komponent 1 staje się coraz silniejszy, a Komponent 2 coraz słabszy.
  2. Zmiana orientacji komponentów: na początku Komponent 1 znalazł się pośrodku między a ; gdy dodaliśmy do komponent 1 natychmiast orientację, aby podążać za pojawiającą się grupą zmiennych; i możesz być pewien, że po tym, jak dodaliśmy jeszcze dwie zmienne do grupy, przywiązanie Komponentu 1 do tej grupy ściśle skorelowanych zmiennych stało się bardziej niepodważalne.X 2 X 3 X 2X1X2X3X2

Nie powrócę do moralności, ponieważ @whuber już to zrobił.


Dodatek . Poniżej kilka zdjęć w odpowiedzi na komentarze @ whuber. Chodzi o rozróżnienie między „przestrzenią zmienną” a „przestrzenią tematyczną” i tym, jak komponenty orientują się tu i tam. Przedstawiono trzy dwuwymiarowe PCA: analizy pierwszego rzędu , analizy drugiego rzędu , a trzeciego rzędu . Lewa kolumna to wykresy rozrzutu (standardowych danych), a prawa kolumna ładuje wykresy.r = 0,62 r = 0,77r=0r=0.62r=0.77

Na wykresie rozrzutu korelacja między i jest renderowana jako podłużność chmury. Kąt (jego cosinus) między linią składową i linią zmienną jest odpowiednim elementem wektorów własnych . Wektory własne są identyczne we wszystkich trzech analizach (więc kąty na wszystkich 3 wykresach są takie same). [Ale prawdą jest, że przy dokładnie wektory własne (i stąd kąty) są teoretycznie dowolne; ponieważ chmura jest idealnie „okrągła”, każda para linii ortogonalnych przechodzących przez początek może służyć jako dwa składniki, nawet iX 2 r = 0 X 1 X 2X1X2r=0 X1X2same linie mogą być wybrane jako komponenty.] Współrzędne punktów danych (200 podmiotów) na komponencie są wynikami komponentu, a ich suma kwadratów podzielona przez 200-1 jest wartością własną komponentu .

Na wykresie ładowania punkty (wektory) są zmiennymi; rozkładają przestrzeń, która jest dwuwymiarowa (ponieważ mamy 2 punkty + początek), ale w rzeczywistości jest zmniejszoną 200-wymiarową (liczbą podmiotów) „przestrzenią tematyczną”. Tutaj kąt (cosinus) między wektorami czerwonymi wynosi . Wektory mają równą długość jednostkową, ponieważ dane zostały znormalizowane. Pierwszy element to taka oś wymiarowa w tej przestrzeni, która pędzi w kierunku nadmiernej akumulacji punktów; w przypadku tylko 2 zmiennych jest to zawsze bisektor między aX 1 X 2rX1X2(ale dodanie trzeciej zmiennej może i tak ją odchylić). Kąt (cosinus) między wektorem zmiennym a linią składową jest korelacją między nimi, a ponieważ wektory mają długość jednostkową, a komponenty są ortogonalne, nie jest to nic innego jak współrzędne, obciążenie . Suma kwadratowych obciążeń na komponencie jest jego wartością własną (komponent po prostu orientuje się w tej przestrzeni tematycznej, aby go zmaksymalizować)

wprowadź opis zdjęcia tutaj


Dodawanie 2. W Dodawanie wyżej ja mówienia o „zmiennym powierzchni” i „miejsca”, z zastrzeżeniem, jeżeli są one niezgodne ze sobą, jak woda i olej. Musiałem to przemyśleć i mogę powiedzieć, że - przynajmniej kiedy mówimy o PCA - obie przestrzenie są na końcu izomorficzne i dzięki tej cnocie możemy poprawnie wyświetlić wszystkie szczegóły PCA - punkty danych, osie zmiennych, osie komponentów, zmienne jako punkty, - na jednym niezniekształconym biplocie.

Poniżej znajduje się wykres rozproszenia (przestrzeń zmienna) i wykres ładowania (przestrzeń komponentu, która jest przestrzenią przedmiotową ze względu na swoje pochodzenie genetyczne). Wszystko, co można pokazać na jednym, można również pokazać na drugim. Zdjęcia są identyczne , obrócone tylko o 45 stopni (i odbite, w tym konkretnym przypadku) względem siebie. To był PCA zmiennych V1 i V2 (standaryzowany, co było R , który był analizowany). Czarne linie na zdjęciach są zmiennymi jako osie; zielone / żółte linie są komponentami jako osie; niebieskie punkty to chmura danych (podmioty); czerwone punkty to zmienne wyświetlane jako punkty (wektory).

wprowadź opis zdjęcia tutaj

ttnphns
źródło
1
+1 interesująca ilustracja. BTW, twoja druga obserwacja jest artefaktem danych: orientacja zmieniła się, ponieważ w pierwszym przypadku korelacja była idealna, dając dwuwymiarową przestrzeń własną. (Jest to niezwykle rzadkie w rzeczywistych danych; zwykle oznacza to, że popełniono błąd bazy danych, a jedna zmienna jest liniowym ponownym wyrażeniem innej.) Oprogramowanie mogło dowolnie wybierać dowolne podstawy ortogonalne dla tej przestrzeni. Tylko najmniejsza korelacja usunęłaby tę degenerację. Myślę zatem, że nadmiernie interpretujesz to zjawisko reorientacji.
whuber
@ whuber, Może cię nie rozumiem. Jaka „idealna” korelacja? r mc X1 i X2 wynosiło 0,003; i może to być dowolny, na przykład .503. To byłoby cos kąta mc dwóch czerwonych wektorów na działce. Niezależnie od r , 1. PC jest zawsze dwusieczny, podczas gdy analizowane są tylko 2 zmienne. Wydaje mi się, że twoja notatka The software was free to choose any orthogonal basis for that space, arbitrarilydotyczy okrągłej chmury w przestrzeni zmiennych (tj. Wykresu rozrzutu danych, takiego jak 1. obrazek w twojej odpowiedzi), ale wykres ładowania to przestrzeń tematyczna, w której zmienne, a nie przypadki, są punktami (wektorami).
ttnphns
1
Przepraszam; Miałem na myśli doskonały brak korelacji. Czy w swoich analizach stosowałeś kowariancję lub korelację, czy w inny sposób ujednoliciłeś wiersze lub kolumny danych? (Być może źle rozumiem, ale nie uważam, aby wasze rozróżnienie między przestrzeniami „podmiotowymi” i „zmiennymi” miało znaczenie w tym kontekście: zarówno oryginalne wektory podstawowe, jak i dane są elementami, powiedzmy, ; ładowanie wykresu ”to rzut na podprzestrzeń wygenerowany przez pierwsze dwa komputery. Wierzę, że większość ludzi zajęłaby przestrzeń„ podmiotu ”, aby uzyskać 240 wymiarów w mojej symulacji: nie zilustrowałem tego za pomocą R5
wykresu
Użyłem korelacji (zwróć uwagę na macierz i fakt, że wektory czerwone są zasadniczo tej samej długości). Tak, przestrzeń tematyczna to wykres punktowy tupsy-torvey z n osiami (przedmiotami) i punktami p (zmiennymi). Oczywiście wszystkie wymiary np są zbędne i każdy zestaw zmiennych p może być wykreślony w p-wymiarowej przestrzeni przedmiotowej, ale to nie zmienia go w przestrzeń zmienną! Dodam zdjęcie do mojej odpowiedzi.
ttnphns
5
+1, dziękuję za dodatkowy wkład, @ttnphns. Zmienia się to z tego, co pierwotnie uważałem za dość proste pytanie, w bajecznie pouczający wątek.
gung
4

Bez szczegółów z twojego artykułu przypuszczam, że to odrzucenie wysoce skorelowanych zmiennych zostało dokonane jedynie w celu zaoszczędzenia na mocy obliczeniowej lub obciążeniu pracą. Nie widzę powodu, dla którego PCA miałaby „pękać” w przypadku wysoce skorelowanych zmiennych. Rzutowanie danych z powrotem na bazy znalezione przez PCA powoduje wybielenie danych (lub ich korelację). To jest cały punkt za PCA.

Spacey
źródło
4
Czy czytałeś podpowiedź @ttnphns? PCA zwraca uwagę nie tylko na wektory własne (które omawiasz), ale także na wartości własne (które ignorujesz). Ma to kluczowe znaczenie, ponieważ wartości własne są używane do określania, które składniki należy zachować, a które upuścić.
whuber
2
@ whuber Tak ... tak Myślę, że teraz to rozumiem. Zasadniczo więc bardziej skorelowane zmienne nadmiernie zaakcentują poszczególne wektory własne (kierunki), a jeśli istnieje wiele zmiennych skorelowanych, byłoby o wiele więcej nadmiernie podkreślonych „fałszywych” kierunków, które zagłuszałyby „oryginalny” wektor własny / kierunki, które mogłyby były inaczej widoczne. Czy rozumiem cię, prawda?
Spacey,
2
To całkiem blisko, Mohammad. Rzeczywistość jest taka, że ​​zestaw skorelowanych zmiennych może „ładować się” do kilku głównych składników (wektorów własnych), więc włączenie wielu zmiennych z takiego zbioru będzie różnicowo różnicować kilka wektorów własnych, a tym samym zmieni również kierunki wszystkich wektorów własnych.
whuber
1

Z mojego zrozumienia skorelowane zmienne są w porządku, ponieważ PCA generuje wektory, które są ortogonalne.

Wiele
źródło
5
Masz rację, ale czy mógłbyś wyjaśnić, dlaczego ortogonalność ma jakiś wpływ na to, czy z góry odrzucać zmienne?
whuber
-1

To zależy od twojego algorytmu. Silnie skorelowane zmienne mogą oznaczać źle uwarunkowaną macierz. Jeśli użyjesz wrażliwego algorytmu, może to mieć sens. Ale odważę się powiedzieć, że większość współczesnych algorytmów wykorzystywanych do tworzenia wartości własnych i wektorów własnych jest do tego odporna. Spróbuj usunąć wysoce skorelowane zmienne. Czy wartości własne i wektory własne zmieniają się znacznie? Jeśli tak, to złe warunkowanie może być odpowiedzią. Ponieważ wysoce skorelowane zmienne nie dodają informacji, rozkład PCA nie powinien ulec zmianie

Juancentro
źródło
4
Niestety PCA się zmienia: jest prawie gwarantowana.
whuber
1
@ Whuber Wow, ogromna liczba odpowiedzi i bardzo pouczające. Przepraszam za mój komentarz, to było całkowicie błędne. Mój błąd. Bardzo pouczająca odpowiedź BTW
Juancentro
4
Uczę się najwięcej od całkowicie błędnych odpowiedzi, Juancentro - szczególnie moich własnych, które na szczęście rzadko pojawiają się publicznie :-). Miałem myśli podobne do twoich, dopóki @ttnphns nie zostawił komentarza.
whuber
-1

Zależy od tego, jakiej metody wyboru podstawowego składnika używasz, prawda?

Zazwyczaj używam dowolnego elementu podstawowego o wartości własnej> 1. Więc to by mnie nie dotyczyło.

I z powyższych przykładów nawet metoda piargowa zwykle wybrałaby właściwą. JEŚLI UTRZYMASZ WSZYSTKO PRZED ŁOKCIEM. Jeśli jednak po prostu wybierzesz główny składnik z „dominującą” wartością własną, popełnisz błąd. Ale to nie jest właściwy sposób na użycie piargi!

Chris Howden
źródło
5
Witaj na stronie, Chris. Niestety, żadna z tych procedur ad hoc nie jest szczególnie uzasadniona. Zauważ, że w pierwszym przypadku nie można w ogóle zmienić kształtu danych i przejść od wyboru wszystkich do wyboru żadnego (tylko przez pomnożenie wszystkiego przez stałą).
kardynał