Ricerca…


Riduzione della dimensione con analisi dei componenti principali

Principal Component Analysis trova sequenze di combinazioni lineari delle caratteristiche. La prima combinazione lineare massimizza la varianza delle caratteristiche (soggetto a un vincolo di unità). Ognuna delle seguenti combinazioni lineari massimizza la varianza delle caratteristiche nel sottospazio ortogonale a quella estesa dalle precedenti combinazioni lineari.

Una tecnica di riduzione delle dimensioni comune consiste nell'usare solo le k prima di tali combinazioni lineari. Supponiamo che le caratteristiche siano una matrice X di n righe e m colonne. Le prime k combinazioni lineari formano una matrice β k di m righe e k colonne. Il prodotto X β ha n righe e k colonne. Pertanto, la matrice risultante β k può essere considerata una riduzione da m a k dimensioni, mantenendo le parti ad alta varianza della matrice originale X.

In scikit-learn , PCA viene eseguito con sklearn.decomposition.PCA . Ad esempio, supponiamo di iniziare con una matrice 100 X 7, costruita in modo che la varianza sia contenuta solo nelle prime due colonne (ridimensionando le ultime 5 colonne):

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

Eseguiamo una riduzione a 2 dimensioni:

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

Ora controlliamo i risultati. Innanzitutto, ecco le combinazioni lineari:

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

Si noti come i primi due componenti di ciascun vettore siano diversi ordini di grandezza più grandi degli altri, mostrando che l'PCA ha riconosciuto che la varianza è contenuta principalmente nelle prime due colonne.

Per verificare il rapporto tra la varianza spiegata da questo PCA, possiamo esaminare pca.explained_variance_ratio_ :

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


Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow