Analiza głównych składowych

Z Wikipedii, wolnej encyklopedii
Skocz do: nawigacji, wyszukiwania

Analiza głównych składowych (ang. Principal Component Analysis, PCA) – jedna ze statystycznych metod analizy czynnikowej. Zbiór danych składający się z N obserwacji, z których każda obejmuje K zmiennych, można interpretować jako chmurę N punktów w przestrzeni K-wymiarowej. Celem PCA jest taki obrót układu współrzędnych, aby maksymalizować w pierwszej kolejności wariancję pierwszej współrzędnej, następnie wariancję drugiej współrzędnej, itd.. Tak przekształcone wartości współrzędnych nazywane są ładunkami wygenerowanych czynników (składowych głównych). W ten sposób konstruowana jest nowa przestrzeń obserwacji, w której najwięcej zmienności wyjaśniają początkowe czynniki.

PCA jest często używana do zmniejszania rozmiaru zbioru danych statystycznych, poprzez odrzucenie ostatnich czynników. Można też poszukać merytorycznej interpretacji czynników, zależnej od rodzaju danych, co pozwala lepiej zrozumieć naturę danych, choć bywa trudne przy większej liczbie badanych zmiennych. W przetwarzaniu sygnałów PCA jest używana np. do kompresji sygnału.

PCA może być oparte albo na macierzy korelacji, albo macierzy kowariancji utworzonej ze zbioru wejściowego. Algorytm w obydwu wersjach jest poza tym identyczny, jednak różne są uzyskane wyniki. W przypadku użycia macierzy kowariancji, zmienne w zbiorze wejściowym o największej wariancji mają największy wpływ na wynik, co może być wskazane, jeśli zmienne reprezentują porównywalne wielkości, np. procentowe zmiany kursów różnych akcji. Użycie macierzy korelacji natomiast odpowiada wstępnej normalizacji zbioru wejściowego tak, aby każda zmienna miała na wejściu identyczną wariancję, co może być wskazane, jeśli wartości zmiennych nie są porównywalne.

Algorytm[edytuj | edytuj kod]

Jako dane wejściowe podawana jest macierz zawierająca kolejne obserwacje, na podstawie których będą wyznaczane główne składowe (wektory bazowe nowej przestrzeni). Są one zwracane również jako jedna macierz. Algorytm PCA składa się z następujących kroków:

Wyznaczenie średnich dla wierszy[edytuj | edytuj kod]

Jest to pierwsza czynność konieczna do stworzenia macierzy kowariancji macierzy wejściowej. Matematycznie można ten krok zapisać jako:

u[m]=\frac{1}{N} \sum\limits_{n=1}^N X[m,n]

Kolejne pozycje wektora średnich u przechowują wiec średnie odpowiadających wierszy. Obliczane są więc średnie wartości kolejnych cech dla wszystkich obserwacji.

Wyliczanie macierzy odchyleń[edytuj | edytuj kod]

Krok ten polega na odjęciu od macierzy wejściowej średnich wyliczonych w punkcie I . Od każdego elementu macierzy odejmujemy średnią dla wiersza, w którym się znajduje:

 X'[i,j] =\frac{}{} X[i,j]-u[i]

Wyznaczenie macierzy kowariancji[edytuj | edytuj kod]

W ogólnym przypadku macierz kowariancji wylicza się ze wzoru:

\mathbf{C} = \mathbb{ E } \left[ \mathbf{B} \otimes \mathbf{B} \right] = \mathbb{ E } \left[ \mathbf{B} \cdot \mathbf{B}^{*} \right] = { 1 \over N } \mathbf{B} \cdot \mathbf{B}^{*}

gdzie E to wartość oczekiwana a B to macierz odchyleń. W przypadku, gdy wartości macierzy B są rzeczywiste, użyte we wzorze sprzężenie hermitowskie (*) jest tożsame ze zwykłą transpozycją.

Obliczenie wartości własnych macierzy kowariancji[edytuj | edytuj kod]

Wyliczenie macierzy V wektorów własnych, która spełnia:

\mathbf{V}^{-1} \mathbf{C} \mathbf{V} = \mathbf{D}

gdzie D jest macierzą przekątniową wartości własnych C.

Wybór wartości własnych[edytuj | edytuj kod]

Na tym etapie można dokonać zawężenia wymiaru przestrzeni. Z otrzymanych wartości własnych wybieramy te największe, co ma na celu minimalizację straty informacji podczas rzutowania danych na mniejszą liczbę wymiarów. Im wyższa wartość własna tym odpowiadający jej wektor własny jest słabiej skorelowany z pozostałymi.

Wyznaczenie wektorów własnych[edytuj | edytuj kod]

Po wyliczeniu i wybraniu podzbioru wartości własnych można wyznaczyć wektory własne. Wyznaczenie wektorów własnych macierzy gdy znamy wartości własne sprowadza się do rozwiązania układu równań liniowych:

\begin{bmatrix} a_{11}-\lambda & a_{12} \cdots & a_{1n} \\ a_{21} & a_{22}-\lambda \cdots & a_{2n}\\ \vdots & \ddots & \vdots \\ a_{n1} & \cdots & a_{nn}-\lambda\end{bmatrix} \cdot \begin{bmatrix} x_1 \\ x_2 \\  \vdots  \\ x_n \end{bmatrix}=0

Najprościej jest zastosować algorytm eliminacji Gaussa.

Rzutowanie na wektory własne[edytuj | edytuj kod]

Po wyznaczeniu wektorów własnych można dokonać na nie projekcji. Wyznaczenie punktu w nowej przestrzeni odpowiadającego danemu wektorowi obserwacji polega na zwykłym mnożeniu macierzy:

y=\begin{bmatrix} y_0 \\ y_1 \\  \vdots  \\ y_{n-1} \end{bmatrix}=V^T \cdot x =\begin{bmatrix} v_0^T \\ v_1^T \\  \vdots  \\ v_{n-1}^T \end{bmatrix} \cdot x

gdzie:

V to macierz wektorów własnych
x to wektor rzutowany
y to wektor w nowej przestrzeni
N to liczba wektorów własnych

Wektory są tutaj oczywiście zapisywane w kolumnach. Wektor y to reprezentacja wektora x w przestrzeni głównych składowych.

Przykład[edytuj | edytuj kod]

Mając zbiór danych zawierający 100 przypadków (100 osób) charakteryzowanych przez 5 zmiennych (np. wzrost, waga, wiek, dochód, powierzchnia mieszkania) można przypuszczać, że zmienne "wzrost" i "waga" będą ze sobą silnie dodatnio skorelowane (gdyż im ktoś wyższy, tym więcej waży). Po to żeby uzyskać większą przejrzystość danych lub uniknąć powielania się danych (np. przy segmentacji klientów) czasami warto jest zastąpić dwie zmienne jedną zmienną - tak zwaną składową, którą można nazwać na przykład "wielkość". Podobnie skorelowane będą ze sobą zmienne "dochód" i "powierzchnia mieszkania", które być może można zastąpić czynnikiem "zamożność".

Należy stworzyć macierz korelacji (5*5) i wyznaczyć jej wartości własne oraz wektory własne. Szeregujemy wartości własne od największej do najmniejszej i jeżeli np. 3 pierwsze wartości własne stanowią odpowiednio duży udział w sumie wszystkich pięciu wartości własnych (np. powyżej 70%) to oznacza to, że możemy rozpatrywać model 3-czynnikowy. Tworzymy więc macierz gamma (o wymiarach 5*3 - bierzemy 3 "kolumny-wektory własne" odpowiadające odpowiednio uszeregowanym wartościom własnym) i mnożymy macierz danych wejściowych (100*5) przez macierz gamma (5*3) dostając macierz 100*3. Otrzymana macierz zawiera wartości poszczególnych składowych dla poszczególnych przypadków.

Teraz należy zbadać korelacje poszczególnych składowych (mamy ich 3) ze zmiennymi wejściowymi (mieliśmy ich 5). Załóżmy, że pierwsza składowa jest mocno skorelowana z "wagą" i "wzrostem", druga z "wiekiem", a trzecia z "dochodem" i "powierzchnią mieszkania". Przeanalizujmy zatem pierwszy wiersz otrzymanej macierzy:

Jeżeli element (1,1) tej macierzy ma dużą wartość, to oznacza to, że dana osoba jest duża (ma prawdopodobnie duży wzrost i dużą wagę). Jeśli element (1,2) jest duży, oznacza to, że dana osoba jest stara. Jeśli element (1,3) ma dużą wartość, to znaczy że osoba ta jest zamożna (czyli najprawdopodobniej ma duży dochód i duże mieszkanie).

Bibliografia[edytuj | edytuj kod]

Zobacz też[edytuj | edytuj kod]