Ha senso combinare PCA e LDA?


25

Supponiamo di avere un set di dati per un'attività di classificazione statistica supervisionata, ad esempio tramite un classificatore di Bayes. Questo set di dati è composto da 20 funzionalità e desidero ridurlo a 2 funzionalità tramite tecniche di riduzione della dimensionalità come Analisi componenti principali (PCA) e / o Analisi lineare discriminante (LDA).

Entrambe le tecniche proiettano i dati su un sottospazio di funzionalità più piccolo: con PCA, troverei le direzioni (componenti) che massimizzano la varianza nel set di dati (senza considerare le etichette di classe), e con LDA avrei i componenti che massimizzano l'intervallo tra separazione di classe.

Ora mi chiedo se, come e perché queste tecniche possano essere combinate e se abbia senso.

Per esempio:

  1. trasformando il set di dati tramite PCA e proiettandolo su un nuovo sottospazio 2D
  2. trasformazione del set di dati (già trasformato in PCA) tramite LDA per max. separazione in classe

o

  1. saltando il passaggio PCA e utilizzando i primi 2 componenti di un LDA.

o qualsiasi altra combinazione che abbia senso.


2
Non ci può essere universale best practice. PCA e LDA, come tecniche di riduzione della dimensionalità, sono molto diverse. A volte le persone fanno PCA prima di LDA, ma ha i suoi rischi di buttare via (con i PC scartati) importanti dimensioni discriminatorie. La domanda che poni è stata effettivamente posta in qualche forma più volte su questo sito. Cerca "PCA LDA" per leggere ciò che le persone gli hanno detto.
ttnphns

@SebastianRaschka: Mi chiedo se la mia risposta qui sia stata utile o hai ulteriori domande su questi problemi?
ameba dice di ripristinare Monica

@amoeba scusa, non ho visto la risposta fino ad ora - in qualche modo deve essere scivolato attraverso le crepe, grazie!

Risposte:


44

Riepilogo: PCA può essere eseguito prima di LDA per regolarizzare il problema ed evitare un eccesso di adattamento.

Ricordiamo che le proiezioni LDA sono calcolate tramite la composizione geografica di , dove e sono all'interno e tra le matrici di covarianza tra classi. Se ci sono meno di punti dati (dove è la dimensionalità del tuo spazio, cioè il numero di caratteristiche / variabili), allora sarà singolare e quindi non può essere invertito. In questo caso semplicemente non c'è modo di eseguire direttamente LDA, ma se si applica prima PCA, funzionerà. @Aaron ha fatto questa osservazione nei commenti alla sua risposta, e sono d'accordo con quello (ma non sono d'accordo con la sua risposta in generale, come vedrai ora).ΣW1ΣBΣWΣBNNΣW

Tuttavia, questa è solo una parte del problema. Il quadro più ampio è che LDA tende facilmente a sovrautilizzare i dati. Si noti che la matrice di covarianza all'interno della classe viene invertita nei calcoli LDA; per le matrici ad alta dimensione, l'inversione è un'operazione molto delicata che può essere eseguita in modo affidabile solo se la stima di è davvero buona. Ma in alte dimensioni , è davvero difficile ottenere una stima precisa di , e in pratica è spesso costretto ad avere molto più di punti di dati per iniziare sperando che la stima è buono. AltrimentiΣWN1ΣWNΣW sarà quasi singolare (ovvero alcuni degli autovalori saranno molto bassi), e ciò comporterà un eccesso di adattamento, ovvero una separazione di classe quasi perfetta sui dati di allenamento con prestazioni casuali sui dati di test.

Per affrontare questo problema, è necessario regolarizzare il problema. Un modo per farlo è utilizzare PCA per ridurre prima la dimensionalità. Ci sono altri, probabilmente migliori, ad esempio il metodo LDA (rLDA) regolarizzato che utilizza semplicemente con piccolo invece di (questo è chiamato stimatore del restringimento ), ma fare prima PCA è concettualmente l'approccio più semplice e spesso funziona bene.(1λ)ΣW+λIλΣW

Illustrazione

Ecco un'illustrazione del problema di adattamento eccessivo. Ho generato 60 campioni per classe in 3 classi dalla distribuzione gaussiana standard (zero medio, varianza unitaria) in spazi di 10, 50, 100 e 150 dimensioni e ho applicato LDA per proiettare i dati in 2D:

Overfitting in LDA

Nota come cresce la dimensionalità, le classi diventano sempre più separate, mentre in realtà non c'è differenza tra le classi.

Possiamo vedere come il PCA aiuta a prevenire l'eccessivo adattamento se rendiamo le classi leggermente separate. Ho aggiunto 1 alla prima coordinata della prima classe, 2 alla prima coordinata della seconda classe e 3 alla prima coordinata della terza classe. Ora sono leggermente separati, vedi la sottotrama in alto a sinistra:

Overfitting in LDA e regolarizzazione con PCA

L'adattamento eccessivo (riga superiore) è ancora evidente. Ma se preprocedo i dati con PCA, mantenendo sempre 10 dimensioni (riga inferiore), il sovradimensionamento scompare mentre le classi rimangono quasi ottimamente separate.

PS. Per evitare fraintendimenti: non sto affermando che PCA + LDA sia una buona strategia di regolarizzazione (al contrario, consiglierei di usare rLDA), sto semplicemente dimostrando che si tratta di una possibile strategia.


Aggiornare. Argomento molto simile è stato precedentemente discusso nei seguenti thread con risposte interessanti e complete fornite da @cbeleites:

Vedi anche questa domanda con alcune buone risposte:


Questa è un'ottima risposta, sul serio! E mentre spieghi la teoria di base hai anche una bella spiegazione pratica lì, un'altra grande risposta per la mia raccolta di riferimenti. Molte grazie!

Non capisco la seconda trama, mi sembra che le classi non siano separate con PCA prima dell'LDA (riga in basso)
PierreE

@PierreE, sul secondo grafico le classi vengono generate in modo tale da non essere quasi separate. La separazione è minuscola. Nella riga in basso puoi vedere questa leggera separazione, ma devi guardare da vicino: concentrati sulle classi blu e rossa e vedrai che uno è spostato a sinistra e l'altro a destra.
ameba dice Ripristina Monica il

Va bene, ho capito. Ho dimenticato che la separazione delle classi che vediamo nella prima fila è effettivamente troppo adatta. Grazie
PierreE

1

Se hai un problema di due classi, LDA ti porterà a 1 dimensione. Non c'è motivo di fare prima PCA.


1
Hm, non seguo il tuo ragionamento qui: sono abbastanza certo che l'ADL NON ti ridurrà a 1 dimensione a meno che tu non scelga di farlo. Dipende da quanti autovettori si desidera conservare dopo aver ordinato gli autovalori diminuendo i valori. Forse mi manca qualcosa qui ... ma non ho menzionato il numero di lezioni. Supponiamo di avere 3 classi con 20 funzioni ciascuna e voglio proiettarle su un sottospazio 3D.

1
L'unica ragione per fare prima PCA è se la matrice di covarianza all'interno della classe è singolare. Se hai 20 funzioni e tre classi, non sarà singolare, quindi non fare prima PCA.
Aaron,

4
assume we have 3 classes. @SebastianRaschka: LDA ti consentirà al massimo 2 funzioni discriminanti. Il numero di autovalori in LDA è min (num_groups-1, num_features).
ttnphns

@Sebastian Il numero di funzioni discriminanti che scegli da LDA dipende da cosa vuoi fare con esso. Come trasformazione dello spazio è praticamente come un PCA "supervisionato" e ne scegli tutti quanti ne desideri. Come metodo di classificazione della separazione dell'iperpiano , l'iperpiano è, per definizione, della dimensione N-1. Potrei fare una domanda su questo argomento per ulteriori informazioni, perché ancora non capisco da dove min(num_groups-1,num_features)viene ...
Matthieu,

1
@Matthieu Credo che sia a causa della matrice di dispersione tra le classi, la crei aggiungendo matrici c (c = numero di classi) con grado 1 o inferiore. Quindi puoi avere solo autovalori non zero c-1 al massimo.
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.