Koncepcja: obrót wokół niezależnych osi
Surowe dane często wykazują korelacje i są częściowo redundantne – np. wzrost i waga poruszają się razem. Analiza Wariancji (PCA) znajduje nowy, ortogonalny układ współrzędnych, uporządkowany według tego, jak dużą zmienność wyjaśnia każda nowa oś; pierwsza oś wskazuje w kierunku największego rozproszenia danych, druga jest prostopadła do pierwszej i zajmuje kolejny największy udział w rozproszeniu, a tak dalej. Jest to czysty obrót układu współrzędnych – dane same nie ulegają zmianie – który koncentruje jak najwięcej zmienności w jak najmniejszej liczbie osi.
Macierz kowariancji i jej wektory własne
Klasyczna receptura: przeskaluj dane, abyś usunął średnią każdej kolumny, a następnie oblicz macierz kowariancji z macierzy danych X po przeskalowaniu. Ponieważ macierz kowariancji jest zawsze symetryczna, twierdzenie spektralne gwarantuje, że ma rzeczywiste wartości własne i współwzajemnie ortogonalne wektory własne (patrz artykuł o wektorach własnych na tej stronie) — a te wektory własne to kierunki głównych składowych, z każdą wartością własną równą wariancji wyjaśnionej wzdłuż jej własnej składowej. Sortowanie wartości własnych od największej do najmniejszej układa składniki według ważności.
C = (1 / (n - 1)) * X-transpose * X (X: centered n x d data matrix) C v_i = lambda_i v_i (eigen-decomposition) variance explained by component i = lambda_i / sum(lambda_j)
Dlaczego SVD zamiast bezpośredniego rozkładu wartości własnej macierzy kowariancji
Rozkład wartości osobliwych rozkłada bezpośrednio macierz danych znormalizowanych jako X = U Σ Vᵀ. Kolumny V są dokładnie wektorami własnymi macierzy kowariancji, a wartości osobliwe relacjonują się z wartościami własnymi poprzez lambda_i = sigma_i^2 / (n-1). Obliczanie SVD dla X bezpośrednio jest numerycznie bardziej stabilne niż najpierw tworzenie XᵀX i następnie rozkład wartości własnej tej macierzy, ponieważ kwadratowanie danych (jak w przypadku budowy macierzy kowariancji) również kwadratuje jej rząd i wzmacnia błędy zaokrągleń zmiennoprzecinkowych. To jest praktyczny powód, dla którego implementacje produkcyjne takie jak NumPy i scikit-learn obliczają PCA za pomocą SVD zamiast poprzez jawne rozkład wartości własnej macierzy kowariancji.
X = U Sigma V-transpose principal components = columns of V scores (projected data) = X V = U Sigma
Redukcja wymiarowości i błąd rekonstrukcji
Zachowanie się tylko z k najlepszych komponentów projektuje dane d-wymiarowe w d wymiarów, przy jednoczesnym zachowaniu maksymalnej możliwej zmienności, jaką może zapewnić dowolna k-wymiarowa projekcja liniowa – to gwarancja znana jako twierdzenie Eckarta-Younga, które mówi, że skrócona SVD jest najlepszym możliwym przybliżeniem o niskiej randze w sensie najmniej kwadratowym. Błąd rekonstrukcji wynikający z pominięcia pozostałych komponentów równa się sumie odrzuconych wartości własnych, co daje bezpośredni i zasadniczy sposób wyboru k: zachowaj wystarczającą liczbę komponentów, aby suma ich zmienności osiągnęła docelowy poziom, często 95%.
k = 0; cumulative = 0 while cumulative / total_variance < 0.95: k += 1 cumulative += lambda[k]
Co to jest i czego nie jest PCA
PCA jest metodą liniową opartą na wariancji – nie jest to samo, co automatyczne znajdowanie najbardziej przewidywających wyniki cech, a także jest wrażliwa na skalę poszczególnych zmiennych, ponieważ cecha zmierzona w większej skali liczbowej dominuje wariancję, chyba że dane są wcześniej znormalizowane. Struktura nieliniowa, taka jak dane leżące na krzywoliniowym manifoldzie, nie jest dobrze uchwycona przez proste główne osie, dlatego istnieją alternatywy nieliniowe, takie jak PCA z jądrem, t-SNE lub UMAP, do wizualizacji tego typu danych.
Frequently asked questions
Czy PCA jest to samo co SVD?
Są ze sobą blisko powiązane, ale nie identyczne. PCA to cel statystyczny – znajdowanie niezależnych osi uporządkowanych według wyjaśnionego wariancji. SVD to technika rozkładu macierzy używana do jego obliczenia. Bezpośrednie zastosowanie SVD do wycentrowanej macierzy danych daje dokładnie te same składowe główną, jak eigen-rozklad macierzy kowariancji, ale robi to z lepszą stabilnością numeryczną.
Dlaczego SVD jest preferowane przed eigen-rozkladem macierzy kowariancji?
Formowanie macierzy kowariancji wymaga obliczenia transpozycji X razy X, co podnosi czynnik niemożliwości do rozwiązania macierzy i wzmacnia błędy zaokrągleń zmiennoprzecinkowych. SVD rozkłada bezpośrednio oryginalną wycentrowaną macierz danych, bez konieczności jego tworzenia, dzięki czemu pozostaje stabilny numerycznie nawet na źle uwarunkowanych lub o wysokiej wymiarowości zbiorach danych. Dlatego też biblioteki produkcyjne takie jak NumPy i scikit-learn używają SVD pod spodem.
Czy PCA działa dobrze we wszystkich typach danych?
Nie. PCA jest techniką liniową, która jest wrażliwa na skalę każdej zmiennej, dlatego cechy mierzone w większych skalach numerycznych będą dominować wyjaśnioną wariancję, chyba że dane są najpierw znormalizowane. Ponadto, przechwytuje tylko strukturę liniową; dane znajdujące się na zakrzywym manifoldzie nie są dobrze reprezentowane przez małą liczbę prostej składowych głównych, dlatego istnieją techniki nieliniowe takie jak kernel PCA, t-SNE lub UMAP w tym przypadku.
Wypróbuj na żywo
Wszystko powyżej działa bezpośrednio w Twojej przeglądarce — otwórz PCA & SVD Visualiser i zmieniaj parametry podczas działania. Nic nie jest instalowane ani przesyłane na serwer, cały model działa w jednej karcie.
▶ Otwórz symulację PCA & SVD Visualiser