Jak mogę zinterpretować to, co otrzymuję z PCA?

14

W ramach pracy na uniwersytecie muszę przeprowadzić wstępne przetwarzanie danych na dość dużym, wielowymiarowym (> 10) surowym zbiorze danych. Nie jestem statystykiem w żadnym znaczeniu tego słowa, więc jestem trochę zdezorientowany, co się dzieje. Z góry przepraszam za to, co jest prawdopodobnie śmiesznie prostym pytaniem - moja głowa wiruje po spojrzeniu na różne odpowiedzi i próbie przebrnięcia przez statystyki.

Przeczytałem to:

  • PCA pozwala mi zmniejszyć wymiarowość moich danych
  • Odbywa się to poprzez łączenie / usuwanie atrybutów / wymiarów, które są bardzo skorelowane (a zatem są trochę niepotrzebne)
  • Czyni to, znajdując wektory własne w danych kowariancji (dzięki fajnemu samouczkowi, którego się nauczyłem)

Który jest świetny.

Jednak naprawdę trudno mi zobaczyć, jak mogę to zastosować praktycznie do moich danych. Na przykład ( nie jest to zestaw danych, którego będę używał, ale próba przyzwoitego przykładu, z którym ludzie mogą pracować), gdybym miał zestaw danych z czymś takim jak ...

PersonID     Sex     Age Range    Hours Studied     Hours Spent on TV      Test Score     Coursework Score 
1            1       2            5                 7                      60             75
2            1       3            8                 2                      70             85 
3            2       2            6                 6                      50             77
...          ...     ...          ...               ...                    ...            ...

Nie jestem pewien, jak interpretowałbym jakiekolwiek wyniki.

Większość samouczków, które widziałem online, daje mi bardzo matematyczny obraz PCA. Przeprowadziłem kilka badań i podążałem za nimi - ale wciąż nie jestem do końca pewien, co to oznacza dla mnie, który po prostu próbuje wydobyć jakieś znaczenie z tego zbioru danych, które mam przed sobą.

Po prostu wykonanie PCA na moich danych (przy użyciu pakietu statystyk) wyrzuca macierz liczb NxN (gdzie N jest liczbą oryginalnych wymiarów), która jest dla mnie całkowicie grecka.

Jak mogę zrobić PCA i wziąć to, co otrzymam, w sposób, który mogę następnie wyrazić prostym językiem angielskim pod względem oryginalnych wymiarów?

nitsua
źródło
3
Twoje przykładowe dane pokazują mieszankę typów danych: płeć jest dychotomiczna, wiek jest porządkowy, pozostałe 3 to przedziały (i te są w różnych jednostkach). Wykonanie liniowego PCA jest odpowiednie dla danych przedziałowych (ale najpierw musisz standaryzować te zmienne ze względu na jednostki). Można dyskutować, czy PCA jest odpowiednie dla danych binarnych czy dychotomicznych . Nie należy używać danych porządkowych w liniowym PCA. Ale główne pytanie z przykładowymi danymi: dlaczego w ogóle robić z nim PCA; jaki sens ma to w tym przypadku?
ttnphns,
Ten plik pdf jest przydatny do zastosowania PCA . Inne posty tutaj wykonują dobrą robotę, opisując „znaczenie” wyników PCA.
AMS
(Proszę, popraw mnie, jeśli się mylę). Uważam, że PCA jest / może być bardzo przydatny w pomaganiu w znajdowaniu trendów w danych i ustalaniu, które atrybuty mogą się odnosić do których (jak sądzę, ostatecznie doprowadziłoby to do ustalenia wzory i tym podobne). Szczegóły mojego zadania, że ​​mam ten olbrzymi zestaw danych, muszę po prostu zastosować klastrowanie i klasyfikatory, a jednym z kroków, które uważa za istotne dla wstępnego przetwarzania, jest PCA. Czy pomogłoby to, gdybym próbował wyodrębnić niektóre atrybuty drugiego rzędu z zestawu danych, muszę spróbować uzyskać je wszystkie w danych przedziałowych?
nitsua
3
Mogę teraz jedynie polecić Ci przeczytanie więcej na PCA (także na tej stronie). Wiele niepewności na pewno zniknie.
ttnphns,
Wiele świetnych linków powyżej, oto krótki przykład, który „może” dać ci dobry pogląd na temat PCA pod względem regresji, z praktycznym przykładem i bardzo nielicznymi, jeśli w ogóle, warunkami technicznymi. sites.stat.psu.edu/~ajw13/stat505/fa06/16_princomp/…
leviathan

Odpowiedzi:

15

Strony 13–20 zamieszczonego przez ciebie samouczka zawierają bardzo intuicyjne geometryczne wyjaśnienie, w jaki sposób PCA służy do zmniejszania wymiarów.

Wspomniana macierz 13x13 jest prawdopodobnie macierzą „ładowania” lub „rotacji” (domyślam się, że twoje oryginalne dane miały 13 zmiennych?), Które można interpretować na jeden z dwóch (równoważnych) sposobów:

  1. (Wartości bezwzględne) kolumn macierzy ładowania opisują, w jakim stopniu każda zmienna proporcjonalnie „przyczynia się” do każdego komponentu.

  2. Macierz rotacji obraca dane na podstawie określonej przez macierz rotacji. Jeśli więc masz dane 2D i pomnożysz dane przez macierz obrotu, nowa oś X będzie pierwszym głównym składnikiem, a nowa oś Y będzie drugim głównym składnikiem.

EDYCJA: To pytanie jest często zadawane, więc przedstawię szczegółowe wizualne wyjaśnienie tego, co się dzieje, gdy używamy PCA do redukcji wymiarów.

Rozważ próbkę 50 punktów wygenerowanych z y = x + szum. Pierwszy główny składnik będzie leżał wzdłuż linii y = x, a drugi składnik będzie leżał wzdłuż linii y = -x, jak pokazano poniżej.

wprowadź opis zdjęcia tutaj

Współczynnik proporcji trochę to popsuł, ale uwierz mi na słowo, że komponenty są ortogonalne. Zastosowanie PCA spowoduje obrót naszych danych, dzięki czemu komponenty staną się osiami xiy:

wprowadź opis zdjęcia tutaj

Dane przed transformacją są okręgami, dane po nich są krzyżami. W tym konkretnym przykładzie dane nie zostały obrócone tak bardzo, jak zostały odwrócone wzdłuż linii y = -2x, ale moglibyśmy równie łatwo odwrócić oś y, aby zrobić to naprawdę obrót bez utraty ogólności, jak opisano tutaj .

Większość wariancji, tj. Informacji w danych, rozłożona jest wzdłuż pierwszego głównego składnika (który jest reprezentowany przez oś x po przekształceniu danych). Druga część (obecnie oś y) ma niewielką wariancję, ale możemy ją całkowicie upuścić bez znaczącej utraty informacji . Aby więc zwinąć to z dwóch wymiarów do 1, pozwalamy rzutowaniu danych na pierwszy główny składnik całkowicie opisywać nasze dane.

wprowadź opis zdjęcia tutaj

Możemy częściowo odzyskać nasze oryginalne dane, obracając je (ok, rzutując) z powrotem na oryginalne osie.

wprowadź opis zdjęcia tutaj

Ciemnoniebieskie punkty to „odzyskane” dane, natomiast puste punkty to dane oryginalne. Jak widać, straciliśmy część informacji z oryginalnych danych, w szczególności wariancję w kierunku drugiego głównego komponentu. Ale dla wielu celów ten skompresowany opis (wykorzystujący rzut wzdłuż pierwszego głównego komponentu) może odpowiadać naszym potrzebom.

Oto kod, którego użyłem do wygenerowania tego przykładu na wypadek, gdybyś chciał go sam odtworzyć. Jeśli zmniejszysz wariancję komponentu szumu w drugiej linii, ilość danych utraconych przez transformację PCA również się zmniejszy, ponieważ dane zbiegną się w pierwszy główny komponent:

set.seed(123)
y2 = x + rnorm(n,0,.2)
mydata = cbind(x,y2)
m2 = colMeans(mydata)

p2 = prcomp(mydata, center=F, scale=F)
reduced2= cbind(p2$x[,1], rep(0, nrow(p2$x)))
recovered = reduced2 %*% p2$rotation

plot(mydata, xlim=c(-1.5,1.5), ylim=c(-1.5,1.5), main='Data with principal component vectors')
arrows(x0=m2[1], y0=m2[2]
       ,x1=m2[1]+abs(p2$rotation[1,1])
       ,y1=m2[2]+abs(p2$rotation[2,1])
       , col='red')
arrows(x0=m2[1], y0=m2[2]
       ,x1=m2[1]+p2$rotation[1,2]
       ,y1=m2[2]+p2$rotation[2,2]
       , col='blue')

plot(mydata, xlim=c(-1.5,1.5), ylim=c(-1.5,1.5), main='Data after PCA transformation')
points(p2$x, col='black', pch=3)
arrows(x0=m2[1], y0=m2[2]
       ,x1=m2[1]+abs(p2$rotation[1,1])
       ,y1=m2[2]+abs(p2$rotation[2,1])
       , col='red')
arrows(x0=m2[1], y0=m2[2]
       ,x1=m2[1]+p2$rotation[1,2]
       ,y1=m2[2]+p2$rotation[2,2]
       , col='blue')
arrows(x0=mean(p2$x[,1])
      ,y0=0
      ,x1=mean(p2$x[,1])
      ,y1=1
      ,col='blue'
       )
arrows(x0=mean(p2$x[,1])
       ,y0=0
       ,x1=-1.5
       ,y1=0
       ,col='red'
)
lines(x=c(-1,1), y=c(2,-2), lty=2)


plot(p2$x, xlim=c(-1.5,1.5), ylim=c(-1.5,1.5), main='PCA dimensionality reduction')
points(reduced2, pch=20, col="blue")
for(i in 1:n){
  lines(rbind(reduced2[i,], p2$x[i,]), col='blue')
}

plot(mydata, xlim=c(-1.5,1.5), ylim=c(-1.5,1.5), main='Lossy data recovery after PCA transformation')
arrows(x0=m2[1], y0=m2[2]
       ,x1=m2[1]+abs(p2$rotation[1,1])
       ,y1=m2[2]+abs(p2$rotation[2,1])
       , col='red')
arrows(x0=m2[1], y0=m2[2]
       ,x1=m2[1]+p2$rotation[1,2]
       ,y1=m2[2]+p2$rotation[2,2]
       , col='blue')
for(i in 1:n){
  lines(rbind(recovered[i,], mydata[i,]), col='blue')
}
points(recovered, col='blue', pch=20)
David Marks
źródło
5
David, proszę, nie używaj zamiennie terminów „matryca rotacyjna” (inaczej wektory własne) i „matryca ładująca”. Dla czystości i aby nie wprowadzać ludzi w błąd. Ładunki w PCA są wektorami własnymi po normalizacji według ich wartości własnych. Dziękuję Ci.
ttnphns,
3
@ttphns Myślę, że to całkowicie zależy od używanego pakietu. Często warunki te są całkowicie zamienne. Rozważ użycie „ ładowań ” tutaj: utdallas.edu/~herve/abdi-awPCA2010.pdf . Odwołaj się również do funkcji R, prcompgdzie macierz ładunków jest tylko macierzą, której kolumny są wektorami wektorowymi. Myślę, że jesteś niepotrzebnie techniczny, aw większości przypadków uważam, że te terminy są używane zamiennie.
David Marx,
4
Przepraszam, ale nie zgodziłbym się. Powód: pamiętaj, że obciążenia mają zarówno znaczenie (i w tym samym sensie!) Dla PCA, jak i analizy czynnikowej. Obciążenia są bezpośrednio porównywalne z korelacjami / kowariancjami. Wektory własne to cosinusy rotacyjne. W analizie czynnikowej wiele metod nie zajmuje się rotacją ( w fazie ekstrakcji). Tak więc mieszanie tych dwóch terminów rzeczywiście wprowadza uczniów w błąd i należy ich unikać.
ttnphns,
Mniejszy punkt: poprawna pisownia jest zawsze i tylko „główna”, a nie „zasada”. Zredagowałem odpowiednio, ale jednego obrazu nie mogę edytować.
Nick Cox,
1
Kolejne wizualne można znaleźć tutaj setosa.io/ev/principal-component-analysis
SIslam,
2

Powiedziałbym, że twoje pytanie jest kwalifikowanym pytaniem nie tylko w, cross validatedale także w stack overflow, w którym dowiesz się, jak zaimplementować redukcję wymiarów w R (... itd.), Aby skutecznie pomóc Ci zidentyfikować, która kolumna / zmienna przyczynia się lepiej do wariancji cały zestaw danych.

PCA (Principal Component Analysis) ma taką samą funkcjonalność jak SVD (Singular Value Decomposition) i są w rzeczywistości dokładnie tym samym procesem po zastosowaniu scale/ transformacji z do zestawu danych.

Oto niektóre zasoby, z którymi możesz przejść w ciągu pół godziny, aby lepiej zrozumieć.

Nie jestem w stanie podać jaskrawego rozwiązania do kodowania, które pomogłoby ci zrozumieć, jak wdrożyć svd i co robi każdy składnik, ale ludzie są niesamowici, oto kilka bardzo pouczających postów, których użyłem, aby nadrobić zaległości w aplikacji SVD, nawet jeśli umie ręcznie obliczyć problem SVD 3by3 .. :)

  1. Coursera Data Analysis Klasa Jeffa Leka: wykład wideo / notatki z zajęć
  2. Bardzo pouczające stanowisko studenckie
  3. Post z American Mathematical Society.
B.Mr.W.
źródło
Klasa Jeffa Leka jest bardzo dobra do uzyskania poczucia, co możesz zrobić z PCA. Dobrą rzeczą jest to, że nie zagłębia się ona w skomplikowane dane matematyczne / statystyczne (które można znaleźć w wielu innych miejscach), ale zapewnia praktyczne podejście pokazujące, jak naprawdę wykorzystać to w danych.
nico,
1

W PCA chcesz opisać dane w mniejszej liczbie zmiennych. Możesz uzyskać te same informacje w mniejszej liczbie zmiennych niż we wszystkich zmiennych. Na przykład godziny studiowane i wynik testu mogą być skorelowane i nie musimy uwzględniać obu tych wartości.

W twoim przykładzie powiedzmy, że Twoim celem jest zmierzenie, jak „dobry” jest uczeń / osoba. Patrząc na wszystkie te zmienne, może być mylące, aby zobaczyć, jak to zrobić. PCA pozwala nam wyraźnie zobaczyć, którzy studenci są dobrzy / źli.

Jeśli pierwszy główny składnik wyjaśnia większość odmian danych, to wszystko, czego potrzebujemy. Znalazłbyś korelację między tym składnikiem a wszystkimi zmiennymi. „Duże” korelacje oznaczają ważne zmienne. Na przykład pierwszy składnik może być silnie skorelowany z badanymi godzinami i wynikiem testu. Tak wysokie wartości pierwszego składnika wskazują na wysokie wartości czasu badania i wyniku testu.

pcaguy
źródło