Zmienne „normalizujące” dla SVD / PCA


17

Załóżmy, że mamy mierzalnych zmiennych, , wykonujemy liczbę pomiarów, a następnie chcemy przeprowadzić rozkład wyników w liczbie pojedynczej na wynikach, aby znaleźć osie największej wariancji dla punktów w przestrzeni wymiarowej. ( Uwaga: załóżmy, że środki zostały już odjęte, więc dla wszystkich .)N.(za1,za2),,zaN.)M.>N.M.N.zajazaja=0ja

Załóżmy teraz, że jedna (lub więcej) zmiennych ma znacznie inną charakterystyczną wielkość niż pozostałe. Np. może mieć wartości w zakresie podczas gdy reszta może wynosić około . To bardzo przekrzywi oś największej wariancji w kierunku osi .za110-1000,1-1za1

Różnica wielkości może być po prostu spowodowana niefortunnym wyborem jednostki miary (jeśli mówimy o danych fizycznych, np. Kilometrach vs metrach), ale w rzeczywistości różne zmienne mogą mieć zupełnie inne wymiary (np. Waga vs objętość), więc może nie być żadnego oczywistego sposobu wyboru dla nich „porównywalnych” jednostek.

Pytanie: Chciałbym wiedzieć, czy istnieją jakieś standardowe / powszechne sposoby normalizacji danych w celu uniknięcia tego problemu. Bardziej interesują mnie standardowe techniki, które wytwarzają porównywalne wielkości dla w tym celu, niż wymyślanie czegoś nowego.za1-zaN.

EDYCJA: Jedną z możliwości jest znormalizowanie każdej zmiennej o jej standardowe odchylenie lub coś podobnego. Pojawia się jednak następujący problem: interpretujmy dane jako chmurę punktów w przestrzeni wymiarowej. Tę chmurę punktów można obracać, a ten typ normalizacji da różne wyniki końcowe (po SVD) w zależności od obrotu. (Np. W najbardziej ekstremalnym przypadku wyobraź sobie, że dokładnie obracasz dane, aby wyrównać główne osie z głównymi osiami.)N.

Spodziewam się, że nie będzie tego niezmiennego sposobu rotacji, ale byłbym wdzięczny, gdyby ktoś mógł skierować mnie do dyskusji na ten temat w literaturze, szczególnie w odniesieniu do zastrzeżeń w interpretacji wyników.


4
Sam problem zwykle nie jest niezmienny w rotacji, ponieważ każda ze zmiennych jest rejestrowana za pomocą odpowiedniej dla niej konwencjonalnej jednostki miary. Np. może być w stopach, w mikronach, w litrach itp. Nawet jeśli wszystkie jednostki są takie same, jeśli zmienne mierzą różne rodzaje rzeczy, wielkości, o które się różnią, prawdopodobnie będą różnić się w sposób charakterystyczny dla tych zmiennych : po raz kolejny nie jest to niezmienna rotacja. Dlatego należy porzucić niezmienność rotacji jako zasadę przewodnią lub uwagę. a 2 a 3za1za2)za3)
whuber

Odpowiedzi:


11

Trzy popularne normalizacje to centrowanie, skalowanie i standaryzacja.

Niech będzie zmienną losową.X

Centrowanie to

xja=xja-x¯.

Wynikowa będzie miała ¯ x = 0 .xx¯=0

Skalowanie wynosi

xja=xja(jaxja2)).

Wynikowa będzie miała i x i 2 = 1 .xjaxja2)=1

Standaryzacja to wyśrodkowanie, a następnie skalowanie. Wynikowa będzie miała ¯ x = 0 i i x i 2 = 1 .xx¯=0jaxja2)=1


Czy możesz zdefiniować „SS”?
Szabolcs

Suma kwadratów. Suma kwadratu Xi.
ttnphns

Powodem ustawienia sumy kwadratów na 1, a nie wariancji, jest to, że wówczas liczby osobliwe będą odpowiadały odchyleniom standardowym wzdłuż głównych osi (chyba że się mylę)?
Szabolcs

Zobacz także moją edycję pytania.
Szabolcs

@Szabolcs, właściwie mogę przegapić punkt twojej edycji. Ale PCA (lub SVD) to po prostu sam obrót (specjalny przypadek ortogonalnego obrotu osi). Wszelkie translacje (takie jak centrowanie) lub zmniejszanie / rozszerzanie (jak skalowanie) chmury powinny wpływać na wyniki tego obrotu.
ttnphns

7

Masz całkowitą rację, że posiadanie poszczególnych zmiennych o bardzo różnych wariancjach może być problematyczne dla PCA, szczególnie jeśli różnica ta wynika z różnych jednostek lub różnych wymiarów fizycznych. Z tego powodu, chyba że wszystkie zmienne są porównywalne (ta sama wielkość fizyczna, te same jednostki), zaleca się wykonanie PCA na macierzy korelacji zamiast macierzy kowariancji. Spójrz tutaj:

Wykonanie PCA na macierzy korelacji jest równoznaczne ze standaryzacją wszystkich zmiennych przed analizą (a następnie wykonanie PCA na macierzy kowariancji). Standaryzacja oznacza wyśrodkowanie, a następnie podzielenie każdej zmiennej przez jej odchylenie standardowe, tak aby wszystkie stały się zmienne jednostkowo. Można to postrzegać jako wygodną „zmianę jednostek”, aby wszystkie jednostki były porównywalne.

Można zapytać, czy czasem może istnieć lepszy sposób „normalizacji” zmiennych; np. można wybrać podział według pewnego rzetelnego oszacowania wariancji zamiast wariancji surowej. Zostało to zadane w następującym wątku i zobacz następującą dyskusję (chociaż nie podano tam jednoznacznej odpowiedzi):

Wreszcie martwiłeś się, że normalizacja przez odchylenie standardowe (lub coś podobnego) nie jest niezmienna rotacja. Cóż, tak nie jest. Ale, jak zauważył @whuber w powyższym komentarzu, nie ma sposobu, aby to zrobić w sposób niezmienny: zmiana jednostek poszczególnych zmiennych nie jest operacją niezmienną w rotacji ! Tutaj nie ma się czym martwić.


Dostaję to na PCA. Ale czy zaleca się również przeprowadzenie jakiejkolwiek normalizacji przed uruchomieniem dekompozycji pojedynczej wartości?
hipoglucido

4

Powszechną techniką przed zastosowaniem PCA jest odjęcie średniej z próbek. Jeśli tego nie zrobisz, pierwszy wektor własny będzie środkiem. Nie jestem pewien, czy to zrobiłeś, ale pozwól mi o tym porozmawiać. Jeśli mówimy w kodzie MATLAB: tak jest

clear, clf
clc
%% Let us draw a line
scale = 1;
x = scale .* (1:0.25:5);
y = 1/2*x + 1;

%% and add some noise
y = y + rand(size(y));

%% plot and see
subplot(1,2,1), plot(x, y, '*k')
axis equal

%% Put the data in columns and see what SVD gives
A = [x;y];
[U, S, V] = svd(A);

hold on
plot([mean(x)-U(1,1)*S(1,1) mean(x)+U(1,1)*S(1,1)], ...
     [mean(y)-U(2,1)*S(1,1) mean(y)+U(2,1)*S(1,1)], ...
     ':k');
plot([mean(x)-U(1,2)*S(2,2) mean(x)+U(1,2)*S(2,2)], ...
     [mean(y)-U(2,2)*S(2,2) mean(y)+U(2,2)*S(2,2)], ...
     '-.k');
title('The left singular vectors found directly')

%% Now, subtract the mean and see its effect
A(1,:) = A(1,:) - mean(A(1,:));
A(2,:) = A(2,:) - mean(A(2,:));

[U, S, V] = svd(A);

subplot(1,2,2)
plot(x, y, '*k')
axis equal
hold on
plot([mean(x)-U(1,1)*S(1,1) mean(x)+U(1,1)*S(1,1)], ...
     [mean(y)-U(2,1)*S(1,1) mean(y)+U(2,1)*S(1,1)], ...
     ':k');
plot([mean(x)-U(1,2)*S(2,2) mean(x)+U(1,2)*S(2,2)], ...
     [mean(y)-U(2,2)*S(2,2) mean(y)+U(2,2)*S(2,2)], ...
     '-.k');
title('The left singular vectors found after subtracting mean')

Jak widać na rysunku, myślę, że powinieneś odjąć średnią od danych, jeśli chcesz lepiej przeanalizować (ko) wariancję. Wtedy wartości nie będą pomiędzy 10-100 a 0,1-1, ale ich średnia będzie wynosić zero. Wariancje zostaną znalezione jako wartości własne (lub kwadrat wartości pojedynczych). Na znalezione wektory własne nie ma wpływu skala wymiaru dla przypadku, gdy odejmujemy średnią tak bardzo, jak w przypadku, gdy tego nie robimy. Na przykład przetestowałem i zaobserwowałem następujące informacje, które odejmują średnią, która może mieć znaczenie dla twojej sprawy. Problem może wynikać nie z wariancji, ale z różnicy w tłumaczeniu.

% scale = 0.5, without subtracting mean
U =

-0.5504   -0.8349
-0.8349    0.5504


% scale = 0.5, with subtracting mean
U =

-0.8311   -0.5561
-0.5561    0.8311


% scale = 1, without subtracting mean
U =

-0.7327   -0.6806
-0.6806    0.7327

% scale = 1, with subtracting mean
U =

-0.8464   -0.5325
-0.5325    0.8464


% scale = 100, without subtracting mean
U =

-0.8930   -0.4501
-0.4501    0.8930


% scale = 100, with subtracting mean
U =

-0.8943   -0.4474
-0.4474    0.8943

wprowadź opis zdjęcia tutaj


1
Powinienem wspomnieć w pytaniu, że średnia została już odjęta. Zmienię to odpowiednio.
Szabolcs

1
N.N.

1
Zdaję sobie sprawę, że może to nie być niezmienny sposób na zrobienie tego, ale chciałbym przynajmniej przeczytać trochę dyskusji na te tematy ... wszelkie wskazówki są mile widziane. Uwaga: Nie mam szkolenia w zakresie statystyki stosowanej (tylko matematyki, takie jak linalg, teoria prob), więc uczę się tego w trakcie pracy.
Szabolcs

1
Kiedy nie wyśrodkowujesz próbek (odejmując średnie z kolumn), pierwszy wektor własny zwykle nie jest wektorem średnich.
whuber

-1 Zagłosowano, ponieważ ta odpowiedź dotyczy tylko centrowania, podczas gdy pytanie dotyczy skalowania. Jak twierdził @whuber, twierdzenie, że pierwszy wektor własny jest koniecznie wektorem środków, jest błędne.
ameba mówi Przywróć Monikę

-5

Do normalizacji danych dla PCA zastosowano również następujący wzór

SC=100X-min(X)max(X)-min(X)

XdotX


7
Kto powiedział coś o krajach lub latach?
Nick Stauner
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.