Qual è una spiegazione intuitiva di come PCA passa da un problema geometrico (con le distanze) a un problema di algebra lineare (con autovettori)?


54

Ho letto molto su PCA, compresi vari tutorial e domande (come questo , questo , questo e questo ).

Il problema geometrico che PCA sta cercando di ottimizzare è chiaro per me: PCA cerca di trovare il primo componente principale minimizzando l'errore di ricostruzione (proiezione), che massimizza simultaneamente la varianza dei dati proiettati.

inserisci qui la descrizione dell'immagine

Quando l'ho letto per la prima volta, ho immediatamente pensato a qualcosa di simile alla regressione lineare; forse puoi risolverlo usando la discesa gradiente se necessario.

Tuttavia, quando ho letto che il problema dell'ottimizzazione è risolto usando l'algebra lineare e la ricerca di autovettori ed autovalori, sono rimasto senza parole. Semplicemente non capisco come questo uso dell'algebra lineare entri in gioco.

Quindi la mia domanda è: come può la PCA passare da un problema di ottimizzazione geometrica a un problema di algebra lineare? Qualcuno può fornire una spiegazione intuitiva?

Non sto cercando una risposta come questa che dice "Quando risolvi il problema matematico della PCA, finisce per essere equivalente a trovare gli autovalori e gli autovettori della matrice di covarianza". Spiegare perché gli autovettori risultano essere i componenti principali e perché gli autovalori risultano essere la varianza dei dati proiettati su di essi

Sono un ingegnere del software e non un matematico, comunque.

Nota: la figura sopra è stata presa e modificata da questo tutorial PCA .


2
Nel lungo thread dietro il tuo primo link, c'è la risposta di @ amoeba con l'animazione, che spiega la cosa fondamentale. PCA è la rotazione degli assi di dati (colonne) fino a quando non diventano non correlati come vettori di dati (variabili). Tale matrice di rotazione si trova attraverso la decomposizione di eigendecomposizione o valore singolare ed è chiamata matrice di autovettori.
ttnphns,

2
Inoltre, anche se non sei un matematico (non lo sono anch'io) probabilmente hai sentito parlare di algebra lineare e geometria euclidea che sono campi di matematica molto intimamente legati; sono anche studiati insieme come una disciplina chiamata geometria analitica.
ttnphns,

1
optimization problemSì, credo che il problema della PCA possa essere risolto tramite approcci di ottimizzazione (iterativi, convergenti). Ma dal momento che ha una soluzione a forma chiusa tramite la matematica, perché non usare quella soluzione più semplice ed efficiente?
ttnphns,

Chiedete a provide an intuitive explanation. Mi chiedo perché la risposta intuitiva e chiara dell'ameba, a cui mi sono legato, non ti soddisfi. Tu chiedi _why_ eigenvectors come out to be the principal components...perché? Per definizione! Gli autovettori sono le direzioni principali di un cloud di dati.
ttnphns,

6
CwCw=λw

Risposte:


54

Dichiarazione problema

Il problema geometrico che PCA sta cercando di ottimizzare è chiaro per me: PCA cerca di trovare il primo componente principale minimizzando l'errore di ricostruzione (proiezione), che massimizza simultaneamente la varianza dei dati proiettati.

Giusto. Spiego la connessione tra queste due formulazioni nella mia risposta qui (senza matematica) o qui (con matematica).

Cww=1wCw

(Nel caso non fosse chiaro: se è la matrice di dati centrata, la proiezione è data da e la sua varianza è .)XXw1n1(Xw)Xw=w(1n1XX)w=wCw

D'altra parte, un autovettore di è, per definizione, qualsiasi vettore tale che .CvCv=λv

Si scopre che la prima direzione principale è data dall'autovettore con il più grande autovalore. Questa è un'affermazione non banale e sorprendente.


prove

Se si apre un libro o tutorial su PCA, è possibile trovare la seguente prova di quasi una riga della dichiarazione sopra. Vogliamo massimizzare con il vincolo che ; questo può essere fatto introducendo un moltiplicatore di Lagrange e massimizzando ; differenziando, otteniamo , che è l'equazione di autovettore. Vediamo che deve in effetti essere il più grande autovalore sostituendo questa soluzione nella funzione oggettiva, che dàwCww=ww=1wCwλ(ww1)Cwλw=0λwCwλ(ww1)=wCw=λww=λ . In virtù del fatto che questa funzione oggettiva dovrebbe essere massimizzata, deve essere il più grande autovalore, QED.λ

Questo tende ad essere poco intuitivo per la maggior parte delle persone.

Una prova migliore (vedi ad esempio questa risposta chiara di @cardinale ) afferma che poiché è una matrice simmetrica, è diagonale nella sua base di autovettore. (Questo in realtà si chiama teorema spettrale .) Quindi possiamo scegliere una base ortogonale, cioè quella data dagli autovettori, dove è diagonale e ha autovalori sulla diagonale. In tale base, semplifica in , o in altre parole la varianza è data dalla somma ponderata degli autovalori. È quasi immediato che per massimizzare questa espressione si debba semplicemente prendereCCλiwCwλiwi2w=(1,0,0,,0), vale a dire il primo autovettore, che produce varianza (in effetti, deviando da questa soluzione e "scambiando" parti del più grande autovalore per le parti di quelli più piccoli porterà solo a una varianza complessiva più piccola). Si noti che il valore di non dipende dalla base! Passare alla base dell'autovettore equivale a una rotazione, quindi in 2D si può immaginare semplicemente di ruotare un pezzo di carta con il diagramma a dispersione; ovviamente questo non può cambiare nessuna variazione.λ1wCw

Penso che questo sia un argomento molto intuitivo e molto utile, ma si basa sul teorema spettrale. Quindi il vero problema qui penso sia: qual è l'intuizione dietro il teorema spettrale?


Teorema spettrale

Prendete una matrice simmetrica . Prendi il suo autovettore con il più grande autovalore . Rendi questo autovettore il vettore della prima base e scegli casualmente altri vettori di base (in modo che tutti siano ortonormali). Come apparirà in questa base?Cw1λ1C

Avrà nell'angolo in alto a sinistra, perché in questa base e deve essere uguale a .λ1w1=(1,0,00)Cw1=(C11,C21,Cp1)λ1w1=(λ1,0,00)

Con lo stesso argomento avrà zeri nella prima colonna sotto .λ1

Ma poiché è simmetrico, avrà anche zero nella prima riga dopo . Quindi sembrerà così:λ1

C=(λ10000),

dove spazio vuoto significa che c'è un blocco di alcuni elementi lì. Poiché la matrice è simmetrica, anche questo blocco sarà simmetrico. Quindi possiamo applicare esattamente lo stesso argomento ad esso, usando efficacemente il secondo autovettore come vettore della seconda base e ottenendo e sulla diagonale. Questo può continuare fino a quando è diagonale. Questo è essenzialmente il teorema spettrale. (Nota come funziona solo perché è simmetrico.)λ1λ2CC


Ecco una riformulazione più astratta esattamente dello stesso argomento.

Sappiamo che , quindi il primo autovettore definisce un sottospazio monodimensionale in cui agisce come una moltiplicazione scalare. Prendiamo ora qualsiasi vettore ortogonale a . Quindi è quasi immediato che anche sia ortogonale a . Infatti:Cw1=λ1w1Cvw1Cvw1

w1Cv=(w1Cv)=vCw1=vCw1=λ1vw1=λ10=0.

Ciò significa che agisce sull'intero sottospazio rimanente ortogonale a modo che rimanga separato da . Questa è la proprietà cruciale delle matrici simmetriche. Quindi possiamo trovare il più grande autovettore lì, , e procedere allo stesso modo, costruendo infine una base ortonormale di autovettori.Cw1w1w2


Il "moltiplicatore di Lagrange" è davvero chiaro per me. Tuttavia, potresti dirmi perché abbiamo bisogno di un vincolo di lunghezza unitaria? Grazie
Haitao Du,

2
@ hxd1011 Qui c'è già esattamente questa domanda , ma brevemente: perché altrimenti puoi moltiplicare per qualsiasi numero e aumenterà del quadrato di questo numero. Quindi il problema diventa mal definito: il massimo di questa espressione è infinito. In effetti, la varianza della proiezione sulla direzione di è solo se è la lunghezza unitaria. wwCwwwCww
ameba dice Ripristina Monica il

Immagino che potrebbe essere un po 'più familiare per la maggior parte dei lettori; L'ho sostituito qui. Grazie. n1
ameba dice Ripristina Monica il

@amoeba: grazie per la risposta. Sono confuso da alcune delle tue notazioni. Usa w per indicare il vettore di lunghezza unitaria che risulta essere il primo autovettore (componente principale). Quando eseguo PCA in R (ad es. prcomp(iris[,1:4], center=T, scale=T)), Vedo autovettori di lunghezza unitaria con un gruppo di float come (0.521, -0.269, 0.580, 0.564). Tuttavia, nella tua risposta in "Prove", scrivi È quasi immediato che per massimizzare questa espressione si debba semplicemente prendere w = (1,0,0, ..., 0), cioè il primo autovettore . Perché l'autovettore nella tua prova sembra così ben formato in quel modo?
stackoverflowuser2010

1
Ciao @ user58865, grazie per la spinta: ho semplicemente dimenticato di rispondere la prima volta. Il sottile è, è uno scalare - è solo un numero. Qualsiasi numero è "simmetrico" :) ed è uguale alla sua trasposizione. Ha senso? w1Cv
ameba dice di reintegrare Monica l'

5

C'è un risultato del 1936 di Eckart and Young ( https://ccrma.stanford.edu/~dattorro/eckart%26young.1936.pdf ), che afferma quanto segue

1rdkukvkT=argminX^ϵM(r)||XX^||F2

dove M (r) è l'insieme delle matrici r-r, che sostanzialmente significa che i primi componenti r di SVD di X forniscono la migliore approssimazione di matrice di basso rango di X e il migliore è definito in termini della norma quadrata di Frobenius - la somma del quadrato elementi di una matrice.

Questo è un risultato generale per le matrici e a prima vista non ha nulla a che fare con i set di dati o la riduzione della dimensionalità.

Tuttavia, se non si considera come una matrice ma si pensa piuttosto alle colonne della matrice rappresentano i vettori dei punti dati, è l'approssimazione con l'errore di rappresentazione minimo in termini di differenze di errore al quadrato.XXX^


4

Questa è la mia opinione sull'algebra lineare dietro PCA. Nell'algebra lineare, uno dei teoremi chiave è il . Indica se S è una matrice n per n simmetrica con coefficienti reali, quindi S ha n autovettori con tutti gli autovalori reali. Ciò significa che possiamo scrivere con D una matrice diagonale con voci positive. Questo è e non vi è alcun danno nell'assumere . A è il cambiamento della matrice di base. Cioè, se la nostra base originale era , quindi rispetto alla base data daSpectral TheoremS=ADA1D=diag(λ1,λ2,,λn)λ1λ2λnx1,x2,,xnA(x1),A(x2),A(xn), l'azione di S è diagonale. Ciò significa anche che può essere considerato come una base ortogonale con Se la nostra matrice di covarianza fosse per n osservazioni di n variabili, avremmo finito. La base fornita da è la base PCA. Ciò deriva dai fatti di algebra lineare. In sostanza è vero perché una base di PCA è una base di autovettori e ci sono al massimo n autovettori di una matrice quadrata di dimensione n. Naturalmente la maggior parte delle matrici di dati non sono quadrate. Se X è una matrice di dati con n osservazioni di variabili p, allora X ha dimensione n per p. Presumo che (più osservazioni che variabili) e cheA(xi)||A(xi)||=λiA(xi)
n>prk(X)=p(tutte le variabili sono linearmente indipendenti). Nessuna ipotesi è necessaria, ma aiuterà con l'intuizione. L'algebra lineare ha una generalizzazione dal teorema spettrale chiamata decomposizione del valore singolare. Per tale X si afferma che con U, V matrici ortonormali (quadrate) di dimensione n e p e una vera matrice diagonale con solo non negativo voci sulla diagonale. Ancora una volta possiamo riorganizzare la base di V in modo che In termini di matrice, ciò significa che se e se . IlX=UΣVtΣ=(sij)s11s22spp>0X(vi)=siiuiipsii=0i>nvidare la decomposizione PCA. Più precisamente è la decomposizione PCA. Perché? Ancora una volta, l'algebra lineare dice che possono esserci solo autovettori. SVD fornisce nuove variabili (date dalle colonne di V) che sono ortogonali e hanno norma decrescente. ΣVt


4

"che massimizza contemporaneamente la varianza dei dati proiettati." Hai sentito del quoziente di Rayleigh ? Forse è un modo per vederlo. Vale a dire il quoziente rayleigh della matrice di covarianza ti dà la varianza dei dati proiettati. (e la pagina wiki spiega perché gli autovettori massimizzano il quoziente di Rayleigh)


1

@amoeba fornisce un'accurata formalizzazione e prova di:

Possiamo formalizzare come segue: dato il matrice di covarianza C, stiamo cercando un vettore w avente unità di lunghezza, ‖w‖ = 1, tale che w T Cw è massima.

Ma penso che ci sia una prova intuitiva per:

Si scopre che la prima direzione principale è data dall'autovettore con il più grande autovalore. Questa è un'affermazione non banale e sorprendente.

Possiamo interpretare w T Cw come un prodotto punto tra il vettore w e Cw, che si ottiene w attraverso la trasformazione C:

w T Cw = ‖w‖ * ‖Cw‖ * cos (w, Cw)

Poiché w ha una lunghezza fissa, per massimizzare w T Cw, abbiamo bisogno di:

  1. massimizzare ‖Cw‖
  2. massimizza cos (w, Cw)

Risulta che se prendiamo w come autovettore di C con il più grande autovalore, possiamo archiviare entrambi contemporaneamente:

  1. ‖Cw‖ è massimo, (se si discosta da questo autovettore, si decompone lungo autovettori ortogonali, si dovrebbe vedere ‖Cw‖ in diminuzione.)
  2. w e Cw nella stessa direzione, cos (w, Cw) = 1, max

Poiché gli autovettori sono ortogonali, insieme agli altri autovettori di C formano un insieme di componenti principali di X.


prova di 1

decomporre w in autovettori primari e secondari ortogonali v1 e v2 , supponiamo che la loro lunghezza sia rispettivamente v1 e v2. vogliamo provare

1 w) 2 > ((λ 1 v1) 2 + (λ 2 v2) 2 )

da λ 1 > λ 2 , abbiamo

((λ 1 v1) 2 + (λ 2 v2) 2 )

<((λ 1 v1) 2 + (λ 1 v2) 2 )

= (λ 1 ) 2 * (v1 2 + v2 2 )

= (λ 1 ) 2 * w 2

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.