05 · Bez nadzoru · 4 min czytania · Interaktywne · aktualizacja
Na czym polega analiza głównych składowych (PCA) i do czego służy?
W skrócie
PCA obraca układ współrzędnych tak, by pierwsze osie łapały jak najwięcej zmienności danych. Pozwala zastąpić wiele skorelowanych cech kilkoma nowymi.
Co to jest
Analiza głównych składowych (Principal Component Analysis, PCA) to metoda redukcji wymiaru, która zastępuje oryginalne, często skorelowane cechy nowymi osiami — głównymi składowymi. Pierwsza składowa to kierunek, wzdłuż którego dane są najbardziej rozrzucone; każda następna to kierunek o największym rozrzucie spośród prostopadłych do poprzednich. Zostawiając kilka pierwszych składowych, tracisz możliwie mało informacji o zmienności danych.
Intuicja: chmura punktów w kształcie spłaszczonego cygara w trzech wymiarach. Najwięcej mówi oś wzdłuż cygara, trochę oś jego szerokości, prawie nic — grubość. PCA znajduje te osie automatycznie, a potem pozwala „zapomnieć” o grubości. Każda składowa jest ważoną sumą oryginalnych cech, a wagi (ładunki, loadings) mówią, co dana oś mierzy.
Mechanizm — dlaczego tak działa
Rzut danych na kierunek opisany wektorem jednostkowym w ma wariancję wᵀΣw, gdzie Σ to macierz kowariancji (po wycentrowaniu danych). Szukamy w, które tę wariancję maksymalizuje. Rozwiązaniem jest wektor własny Σ o największej wartości własnej, a sama wartość własna to wariancja wzdłuż tej osi. Kolejne składowe to kolejne wektory własne. Ponieważ Σ jest symetryczna, wektory własne są prostopadłe, a nowe współrzędne — nieskorelowane.
Istnieje drugie, równoważne spojrzenie: PCA z k składowymi daje najlepsze przybliżenie danych podprzestrzenią k-wymiarową w sensie najmniejszych kwadratów. Maksymalizacja wariancji rzutu i minimalizacja błędu rekonstrukcji to to samo, bo całkowita wariancja = wariancja zachowana + błąd (twierdzenie Pitagorasa dla każdego punktu). W praktyce PCA liczy się przez rozkład SVD macierzy danych, bez jawnego tworzenia Σ.
Odsetek wariancji wyjaśnionej przez składową to jej wartość własna podzielona przez sumę wszystkich. Wykres tych odsetków (scree plot) pomaga wybrać liczbę składowych: zwykle tyle, by łącznie wyjaśnić 80–95% wariancji, albo do miejsca, gdzie krzywa się wypłaszcza.
Dwa zastrzeżenia są fundamentalne. Po pierwsze, PCA jest wrażliwe na skalę — cecha w dużych jednostkach ma dużą wariancję i zdominuje pierwszą składową, dlatego zwykle standaryzuje się cechy (co odpowiada PCA na macierzy korelacji). Po drugie, PCA szuka tylko liniowych kierunków i maksymalizuje wariancję, nie przydatność do żadnego zadania. Duża wariancja nie musi znaczyć „ważna informacja”.
Na przykładzie
Zbiór Wine: 178 win z trzech odmian winorośli, 13 cech chemicznych. Po standaryzacji pierwsza składowa wyjaśnia 36,2% wariancji, druga 19,2%, razem 55,4%; trzy składowe — 66,5%. Do 90% potrzeba 8 składowych z 13, do 95% — 10. Tylko trzy pierwsze wartości własne przekraczają 1 (4,73; 2,51; 1,45), czyli tylko one niosą więcej zmienności niż pojedyncza standaryzowana cecha.
Ładunki pozwalają nazwać osie. Pierwsza składowa ma duże dodatnie wagi przy flawonoidach (0,42), fenolach ogółem (0,39), wskaźniku OD280/OD315 (0,38) i proantocyjanidynach (0,31), a ujemne przy fenolach nieflawonoidowych (−0,30) i kwasie jabłkowym (−0,25) — to „oś polifenoli”. Druga to głównie intensywność barwy (0,53), alkohol (0,48) i prolina (0,36). Regresja logistyczna (5-krotna walidacja krzyżowa) na wszystkich 13 cechach trafia odmianę w 98,3% przypadków, na dwóch składowych w 95,5%, na jednej w 84,9%. Dwie liczby zamiast trzynastu kosztują ok. 3 punkty procentowe trafności.
Dane: Wine (wina z Piemontu)
W praktyce
- W scikit-learn:
make_pipeline(StandardScaler(), PCA(n_components=2)); odsetki wariancji wexplained_variance_ratio_, ładunki wcomponents_. PCA(n_components=0.95)samo dobierze liczbę składowych wyjaśniających 95% wariancji.- Przy bardzo dużych danych:
IncrementalPCAalboPCA(svd_solver="randomized"); dla macierzy rzadkich (np. TF-IDF)TruncatedSVD. - Dopasowuj PCA tylko na zbiorze treningowym — w potoku, razem z modelem — żeby uniknąć wycieku danych w walidacji.
inverse_transformodtwarza dane z kilku składowych; błąd rekonstrukcji bywa używany do wykrywania anomalii.- Typowe zastosowania: wizualizacja 2D, kompresja, usuwanie współliniowości przed regresją, odszumianie.
Najczęstsze pytania
- Ile składowych głównych wybrać?
- Popularne reguły: tyle, by wyjaśnić 80–95% wariancji; „łokieć” na wykresie wariancji; składowe o wartości własnej powyżej 1 przy danych standaryzowanych. Jeśli PCA jest krokiem przed modelem, najlepiej traktować liczbę składowych jak hiperparametr i wybrać ją walidacją krzyżową.
- Czy przed PCA trzeba standaryzować dane?
- Prawie zawsze, gdy cechy są w różnych jednostkach — inaczej pierwsza składowa odzwierciedli po prostu cechę o największych liczbach. Bez standaryzacji można obejść się tylko wtedy, gdy wszystkie cechy mają tę samą jednostkę i ich wariancje są porównywalne z natury, np. piksele obrazu.
- Czy PCA wybiera najważniejsze cechy?
- Nie. PCA tworzy nowe cechy jako kombinacje wszystkich starych, a nie wybiera podzbioru oryginalnych kolumn. Do wyboru cech służą metody selekcji; ładunki PCA mówią tylko, które cechy współtworzą kierunki dużej zmienności.
Źródła
- Pearson K., „On Lines and Planes of Closest Fit to Systems of Points in Space”, Philosophical Magazine 2(11), 1901.
- Hotelling H., „Analysis of a Complex of Statistical Variables into Principal Components”, Journal of Educational Psychology 24, 1933.
- Jolliffe I. T., Cadima J., „Principal component analysis: a review and recent developments”, Philosophical Transactions of the Royal Society A 374, 2016.
- James G., Witten D., Hastie T., Tibshirani R., „An Introduction to Statistical Learning”, 2nd ed., Springer 2021, rozdz. 12.2 (Principal Components Analysis).
- Dokumentacja scikit-learn, „PCA”: https://scikit-learn.org/stable/modules/decomposition.html#pca