Szukaj…


Zmniejszenie wymiaru dzięki analizie głównych składników

Analiza głównych składników wyszukuje sekwencje liniowych kombinacji cech. Pierwsza kombinacja liniowa maksymalizuje wariancję cech (z zastrzeżeniem ograniczenia jednostkowego). Każda z następujących kombinacji liniowych maksymalizuje wariancję cech w podprzestrzeni ortogonalnej do tej, którą obejmują poprzednie kombinacje liniowe.

Powszechną techniką redukcji wymiarów jest stosowanie tylko k pierwszych takich kombinacji liniowych. Załóżmy, że cechy są macierzą X z n rzędów i m kolumn. Pierwsze k kombinacji liniowych tworzy macierz β k m rzędów i k kolumn. Produkt X β ma n wierszy ik kolumn. Tak więc uzyskaną macierz β k można uznać za redukcję z wymiarów m do k , zachowując części o dużej wariancji oryginalnej macierzy X.

W scikit-learn PCA wykonuje się za pomocą sklearn.decomposition.PCA . Załóżmy na przykład, że zaczynamy od macierzy 100 X 7, skonstruowanej w taki sposób, że wariancja jest zawarta tylko w dwóch pierwszych kolumnach (poprzez zmniejszenie ostatnich 5 kolumn):

import numpy as np
np.random.seed(123) # we'll set a random seed so that our results are reproducible
X = np.hstack((np.random.randn(100, 2) + (10, 10), 0.001 * np.random.randn(100, 5)))

Zróbmy redukcję do 2 wymiarów:

from sklearn.decomposition import PCA
pca = PCA(n_components=2)
pca.fit(X)

Teraz sprawdźmy wyniki. Po pierwsze, oto kombinacje liniowe:

pca.components_
# array([[ -2.84271217e-01,  -9.58743893e-01,  -8.25412629e-05,
#           1.96237855e-05,  -1.25862328e-05,   8.27127496e-05,
#          -9.46906600e-05],
#        [ -9.58743890e-01,   2.84271223e-01,  -7.33055823e-05,
#          -1.23188872e-04,  -1.82458739e-05,   5.50383246e-05,
#           1.96503690e-05]])

Zauważ, że pierwsze dwa składniki w każdym wektorze są o kilka rzędów wielkości większe niż pozostałe, co pokazuje, że PCA rozpoznało, że wariancja jest zawarta głównie w pierwszych dwóch kolumnach.

Aby sprawdzić współczynnik wariancji wyjaśniony przez ten PCA, możemy zbadać pca.explained_variance_ratio_ :

pca.explained_variance_ratio_
# array([ 0.57039059,  0.42960728])


Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow