Brak normalizacji danych przed PCA daje lepiej wyjaśniony współczynnik wariancji


19

Znormalizowałem mój zestaw danych, a następnie uruchomiłem 3-składnikowy PCA, aby uzyskać małe wyjaśnione współczynniki wariancji ([0,50, 0,1, 0,05]).

Kiedy nie znormalizowałem, ale wybieliłem mój zestaw danych, a następnie uruchomiłem 3-składnikowy PCA, otrzymałem wysokie wyjaśnione współczynniki wariancji ([0,86, 0,06,0,01]).

Ponieważ chcę zachować tyle danych w 3 komponentach, czy NIE powinienem normalizować danych? Z mojego zrozumienia zawsze powinniśmy normalizować się przed PCA.

Poprzez normalizację: ustawienie oznacza wartość 0 i posiadanie wariancji jednostkowej.

pca 

3
Chociaż nie jest jasne, co rozumiesz przez „normalizację” danych (znam co najmniej cztery standardowe sposoby wykonania tego w PCA i prawdopodobnie jest ich więcej), wygląda na to, że materiał na stronie stats.stackexchange.com/questions/53 może rozjaśnić.
whuber

Cześć Whubber: Mam na myśli normalizację każdej obserwacji do normy jednostkowej

1
Dzięki. Typowym terminem na to jest „standaryzacja”. Kiedy to robisz, wykonujesz PCA w oparciu o korelacje: dlatego myślę, że link, który podałem, może już odpowiedzieć na twoje pytanie. Widzę jednak, że żadna z odpowiedzi nie wyjaśnia, dlaczego lub w jaki sposób uzyskasz różne wyniki (być może dlatego, że jest on złożony, a efekt normalizacji może być trudny do przewidzenia).
whuber

1
Czy wybielanie przed PCA jest typowe? Jaki jest cel tego?
shadowtalker

2
Jeśli na przykład pracujesz z obrazami, norma obrazów odpowiada jasności. Wysoka wyjaśniona wariancja nienormalizowanych danych oznacza, że ​​wiele danych można wyjaśnić zmianami jasności. Jeśli jasność nie jest dla Ciebie ważna, ponieważ często nie jest przetwarzana, wtedy najpierw ustaw normę dla wszystkich jednostek obrazów. Pomyślałem nawet, że wyjaśniona wariancja komponentów pca będzie niższa, lepiej odzwierciedla to, co cię interesuje.
Aaron

Odpowiedzi:


37

Zależy od celu Twojej analizy. Niektóre typowe praktyki, z których niektóre są wymienione w linku Whubera:

  1. Standaryzacja jest zwykle wykonywana, gdy zmienne, na których wykonywane jest PCA, nie są mierzone w tej samej skali. Zauważ, że standaryzacja oznacza przypisanie jednakowej wagi wszystkim zmiennym.
  2. Jeśli nie są one mierzone w tej samej skali, a ty decydujesz się na pracę ze zmiennymi niestandardowymi, często zdarza się, że każdy komputer jest zdominowany przez jedną zmienną i po prostu dostajesz rodzaj uporządkowania zmiennych według ich wariancji. (Jedno z ładowań każdego (wczesnego) komponentu będzie bliskie +1 lub -1.)
  3. Te dwie metody często prowadzą do różnych wyników, jak zauważyłeś.

Intuicyjny przykład:

Załóżmy, że masz dwie zmienne: wysokość drzewa i obwód tego samego drzewa. Przekształcimy objętość na czynnik: drzewo będzie miało dużą objętość, jeśli jego objętość będzie większa niż 20 stóp sześciennych, a w przeciwnym razie będzie miała małą objętość. Użyjemy zestawu danych drzew, który jest wstępnie załadowany w R.

>data(trees)
>tree.girth<-trees[,1]
>tree.height<-trees[,2]
>tree.vol<-as.factor(ifelse(trees[,3]>20,"high","low"))

Załóżmy teraz, że wysokość została zmierzona w milach zamiast w stopach.

>tree.height<-tree.height/5280
>tree<-cbind(tree.height,tree.girth)
>
>#do the PCA
>tree.pca<-princomp(tree)
>summary(tree.pca)
Importance of components:
                      Comp.1       Comp.2
Standard deviation     3.0871086 1.014551e-03
Proportion of Variance 0.9999999 1.080050e-07
Cumulative Proportion  0.9999999 1.000000e+00

Pierwszy składnik wyjaśnia prawie 100% zmienności danych. Ładunki:

> loadings(tree.pca)

Loadings:
            Comp.1 Comp.2
tree.height        -1    
tree.girth   1           

Ocena graficzna:

>biplot(tree.pca,xlabs=tree.vol,col=c("grey","red"))

Biplot pierwszej metody

Widzimy, że drzewa o dużej objętości mają zwykle wysoki obwód, ale wysokość trzech nie podaje żadnych informacji na temat objętości drzewa. Jest to prawdopodobnie niewłaściwe i jest konsekwencją dwóch różnych miar jednostkowych.

Możemy użyć tych samych jednostek lub znormalizować zmienne. Oczekuję, że oba doprowadzą do bardziej zrównoważonego obrazu zmienności. Oczywiście w tym przypadku można argumentować, że zmienne powinny mieć tę samą jednostkę, ale nie powinny być standaryzowane, co może być poprawnym argumentem, gdyby nie to, że mierzymy dwie różne rzeczy. (Gdy mierzymy ciężar drzewa i obwód drzewa, skala, na której oba powinny być mierzone, nie jest już bardzo jasna. W tym przypadku mamy jasny argument, aby popracować nad znormalizowanymi zmiennymi.)

>tree.height<-tree.height*5280
>tree<-cbind(tree.height,tree.girth)
>
>#do the PCA
>tree.pca<-princomp(tree)
> summary(tree.pca)
Importance of components:
                          Comp.1    Comp.2
Standard deviation     6.5088696 2.5407042
Proportion of Variance 0.8677775 0.1322225
Cumulative Proportion  0.8677775 1.0000000
> loadings(tree.pca)

Loadings:
            Comp.1 Comp.2
tree.height -0.956  0.293
tree.girth  -0.293 -0.956

>biplot(tree.pca,xlabs=tree.vol,col=c("grey","red"))

Biplot drugiej metody

Widzimy teraz, że drzewa, które są wysokie i mają duży obwód, mają dużą objętość (lewy dolny róg), w porównaniu do niskiego obwodu i niskiej wysokości dla drzew o małej objętości (prawy górny róg). To intuicyjnie ma sens.

Jeśli jednak uważnie się przyjrzymy, zauważymy, że kontrast między wysokim / niskim poziomem głośności jest najsilniejszy w kierunku obwodu, a nie w kierunku wysokości. Zobaczmy, co się stanie, gdy ustandaryzujemy:

>tree<-scale(tree,center=F,scale=T)
>tree.pca<-princomp(tree)
> summary(tree.pca)
Importance of components:
                          Comp.1     Comp.2
Standard deviation     0.2275561 0.06779544
Proportion of Variance 0.9184749 0.08152510
Cumulative Proportion  0.9184749 1.00000000
> loadings(tree.pca)

Loadings:
            Comp.1 Comp.2
tree.height  0.203 -0.979
tree.girth   0.979  0.203
>biplot(tree.pca,xlabs=tree.vol,col=c("grey","red"))

Biplot trzeciej metody

Rzeczywiście, obwód wyjaśnia teraz większość różnic w drzewach o wysokiej i niskiej objętości! (Długość strzałki w dwupłatku wskazuje na wariancję oryginalnej zmiennej.) Więc nawet jeśli rzeczy są mierzone w tej samej skali, użyteczne może być standaryzowanie. Nie zaleca się standaryzacji, gdy porównujemy na przykład długość różnych gatunków drzew, ponieważ jest to dokładnie ten sam pomiar.


2
(+1) Bardzo ładna odpowiedź, faktycznie przewyższająca wszystkie podane w popularnym wątku na temat PCA o kowariancji vs. korelacji.
ameba mówi Przywróć Monikę
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.