Wolna encyklopedia
| Niektóre informacje zawarte w artykule wymagają weryfikacji. Zajrzyj na stronę dyskusji, by dowiedzieć się, jakie informacje budzą wątpliwości. |
Analiza głównych składowych (ang. Principal Component Analysis, PCA) – eksploracyjna technika (metoda statystyczna) umożliwiająca wnioskowanie o obiektach opisanych wieloma zmiennymi. Metoda służy do badania związków zachodzących pomiędzy dwoma wielowymiarowymi zestawami zmiennych. Metoda ta dopasowuje do chmury punktów w przestrzeni wektorowej tworzonej przez N przypadków opisywanych każdy przez K zmiennych (obserwacje opisywane przez oryginalne zmienne) nowe wzajemnie prostopadłe osie. Wartość na osiach określa tzw. ładunek wygenerowanych nowych czynników (składowych głównych). Czynniki generowane są kolejno, tak aby wyjaśnić jak najwięcej zmienności obserwowanych w zbiorze danych oraz tak aby być jak najmniej skorelowane z innymi wygenerowanymi czynnikami (metoda "poszukuje" diagonalnej macierzy korelacji dla czynników). Ponieważ wygenerowanych czynników jest najczęściej mniej niż oryginalnych zmiennych (co najwyżej tyle samo), metoda ta umożliwia redukcję liczby zmiennych opisujących obserwacje, ułatwiając np. określenie podobieństw między przypadkami. Niedogodnością używania tej metody są problemy z interpretacją ładunków czynnikowych (określających położenie punktów w nowo wygenerowanym układzie współrzędnych) przy większej liczbie pierwotnych zmiennych. Czynniki tworzone tą metodą są liniową kombinacją tych zmiennych pierwotnych, które są skorelowane najmocniej z powstałym czynnikiem. Między innymi stąd im więcej zmiennych pierwotnych, tym trudniejsza interpretacja "ładunków czynnikowych".
Metoda PCA jest używana np. do kompresji sygnałów.
Algorytm
2 . Wyliczanie macierzy odchyleń
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:
![a[i,j] =\frac{}{} a[i,j]-u[i]](http://upload.wikimedia.org/math/d/3/3/d335fa0ba59b8a96e55265c547637114.png)
Macierz uzyskana w ten sposób będzie dalej oznaczana jako X' .
3 . Wyznaczenie macierzy kowariancji
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}^{*}](http://upload.wikimedia.org/math/5/d/7/5d799134e511a494447178b8128021c6.png)
gdzie E to wartość oczekiwana a B to macierz odchyleń. W przypadku, gdy wartości macierzy B są rzeczywiste użyta we wzorze transpozycja hermitowska (*) jest tożsama ze zwykła transpozycją.
4 . Obliczenie wartości własnych macierzy kowariancji
Istnieje wiele metod wyliczania wektorów własnych macierzy.Często można wykorzystać gotowe rozwiązania(np. w mathlabie,kesh'u). Można również wykorzystać rozkład QR. Algorytm ten dla zadanej macierzy A wygląda następująco[3]:
A1 ← A
for k=1 to M do
rozkład Ak=QkRk
Ak+1 ← QkRk
end do
W przypadku macierzy symetrycznej o różnych niezerowych wartościach własnych algorytm ten po kilku iteracjach daje dobrze przybliżeniach wartości własnych. Znajdują się one na przekątnej macierzy Ak. Wartość M determinuje dokładność. Dla macierzy kowariancji wystarcza 10-20 iteracji. Opiera się on na obserwacji, że macierze budowane w powyższy sposób kolejne macierze Ak mają takie same wartości własne, co wynika wprost z definicji:

5 . Wybór wartości własnych
Na tym etapie dokonuje się 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ą ilość wymiarów. Im wyższa wartość własna tym odpowiadający jej wektor własny jest słabiej skorelowany z pozostałymi.
6 . Wyznaczenie wektorów własnych
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:

Najprościej jest zastosować algorytm eliminacji Gaussa.
7 . Rzutowanie na wektory własne
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:

, gdzie V to macierz wektorów własnych
x to wektor rzutowany
y to wektor w nowej przestrzeni
N to ilość 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
Przykładowo, jeśli mamy zbiór danych zawierający 100 przypadków (100 osób) charakteryzowanych przez 5 zmiennych (np. wzrost, waga, wiek, dochód, powierzchnia mieszkania) to można przypuszczać, że zmienne "wzrost" i "waga" będą ze sobą silnie dodatnio skorelowane (no bo 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 najprawdopobniej ma duży dochód i duże mieszkanie).
![u[m]=\frac{1}{N} \sum\limits_{n=1}^N X[m,n]](http://upload.wikimedia.org/math/5/5/d/55df1e333eaf8ca8dada862abb751a79.png)