Zoeken…


De dimensie verminderen met de belangrijkste componentenanalyse

Hoofdcomponentanalyse vindt reeksen van lineaire combinaties van de kenmerken. De eerste lineaire combinatie maximaliseert de variantie van de functies (afhankelijk van een eenheidsbeperking). Elk van de volgende lineaire combinaties maximaliseert de variantie van de kenmerken in de subruimte orthogonaal ten opzichte van die welke door de vorige lineaire combinaties werden overspannen.

Een gebruikelijke dimensiereductietechniek is om alleen de eerste k lineaire combinaties te gebruiken. Stel dat de functies een matrix X van n rijen en m kolommen zijn. De eerste k lineaire combinaties vormen een matrix β k van m rijen en k kolommen. Het product X β heeft n rijen en k kolommen. Aldus kan de resulterende matrix Pk worden beschouwd als een reductie van m naar k dimensies, waarbij de sterk variërende delen van de oorspronkelijke matrix X behouden blijven .

In scikit-learn wordt PCA uitgevoerd met sklearn.decomposition.PCA . Stel bijvoorbeeld dat we beginnen met een 100 x 7-matrix, zo geconstrueerd dat de variantie alleen in de eerste twee kolommen voorkomt (door de laatste 5 kolommen te verkleinen):

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)))

Laten we een reductie tot 2 dimensies uitvoeren:

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

Laten we nu de resultaten bekijken. Eerst zijn hier de lineaire combinaties:

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]])

Merk op hoe de eerste twee componenten in elke vector verschillende ordes van grootte groter zijn dan de andere, waaruit blijkt dat de PCA herkende dat de variantie hoofdzakelijk in de eerste twee kolommen zit.

Om de verhouding van de variantie te controleren die door deze PCA wordt uitgelegd, kunnen we pca.explained_variance_ratio_ onderzoeken:

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


Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow