Utilizzo dell'analisi dei componenti principali (PCA) per la selezione delle funzionalità


54

Sono nuovo nella selezione delle funzionalità e mi chiedevo come avresti usato PCA per eseguire la selezione delle funzionalità. PCA calcola un punteggio relativo per ciascuna variabile di input che è possibile utilizzare per filtrare le variabili di input non informative? Fondamentalmente, voglio essere in grado di ordinare le caratteristiche originali nei dati per varianza o quantità di informazioni contenute.

Risposte:


75

L'idea di base quando si utilizza PCA come strumento per la selezione delle funzionalità è selezionare le variabili in base alla grandezza (dal più grande al più piccolo in valori assoluti) dei loro coefficienti ( carichi ). Si può ricordare che PCA cerca di sostituire le variabili (più o meno correlate) con combinazioni lineari non correlate (proiezioni) delle variabili originali. Ignoriamo come scegliere un ottimale per il problema in questione. Quei componenti principali sono classificati per importanza in base alla loro varianza spiegata e ogni variabile contribuisce con diverso grado a ciascun componente. L'uso dei criteri di varianza più grandi sarebbe simile all'estrazione delle caratteristichek < p k k j < p jpk<pkk , in cui il componente principale viene utilizzato come nuove funzionalità, anziché le variabili originali. Tuttavia, possiamo decidere di mantenere solo il primo componente e selezionare le variabili che hanno il coefficiente assoluto più alto; il numero potrebbe essere basato sulla proporzione del numero di variabili (ad esempio, mantenere solo il 10% superiore delle variabili ) o su un valore soglia fisso (ad esempio, considerando una soglia sui coefficienti normalizzati). Questo approccio ha una certa somiglianza con l' operatore Lazo nella regressione penalizzata (o regressione PLS ). Tuttavia, né il valore di , né il numero di componenti da conservare sono scelte ovvie.j<pjjpj

Il problema con l'utilizzo di PCA è che (1) misurazioni da tutte le variabili originali vengono utilizzate nella proiezione nello spazio dimensionale inferiore, (2) vengono considerate solo le relazioni lineari e (3) metodi basati su PCA o SVD come metodi di screening univariato (t-test, correlazione, ecc.), non tengono conto della potenziale natura multivariata della struttura dei dati (ad esempio, interazione di ordine superiore tra variabili).

Circa il punto 1, sono stati proposti alcuni metodi di screening più elaborati, ad esempio l' analisi delle caratteristiche principali o il metodo graduale, come quello utilizzato per la " rasatura genica " negli studi sull'espressione genica. Inoltre, è possibile utilizzare PCA sparsi per eseguire la riduzione delle dimensioni e la selezione delle variabili in base ai carichi variabili risultanti. A proposito del punto 2, è possibile usare il PCA del kernel (usando il trucco del kernel ) se è necessario incorporare relazioni non lineari in uno spazio dimensionale inferiore. Gli alberi decisionali , o meglio l' algoritmo di foresta casuale , sono probabilmente in grado di risolvere meglio il punto 3. Quest'ultimo consente di derivare misure basate su Gini o sulla permutazione di importanza variabile .

Un ultimo punto: se si intende eseguire la selezione delle caratteristiche prima di applicare un modello di classificazione o regressione, accertarsi di convalidare in modo incrociato l'intero processo (vedere §7.10.2 degli Elementi di apprendimento statistico o Ambroise e McLachlan, 2002 ).


Dato che sembri essere interessato alla soluzione R, consiglierei di dare un'occhiata al pacchetto del cursore che include molte funzioni utili per la preelaborazione dei dati e la selezione delle variabili in un contesto di classificazione o regressione.


1
Ci sono molte buone informazioni qui, ma sono sorpreso che non si faccia menzione di EFA. Penso che l'analisi dei fattori sia appropriata per caratterizzare la selezione / riduzione della dimensionalità e PCA sia davvero appropriata solo per rappresentare nuovamente i dati in modo tale che le variabili non siano correlate. Immagino tu non sia d'accordo?
gung - Ripristina Monica

3
Sono riluttante a raccomandare EFA senza sapere con che tipo di dati stiamo trattando: l'introduzione di un modello per gli errori (che PCA non ha) ha certamente il suo vantaggio quando si tratta di variabili latenti mirate, o più in generale quando si cerca di scoprire latenti strutture, ma PCA (con le sue avvertenze) viene utilizzato principalmente per eseguire la riduzione delle dimensioni o la selezione delle caratteristiche in grandi dimensioni, AFAICT. Nella caso, EFA sarebbe inopportuno mentre i metodi sofisticati per la selezione delle variabili esistono. Non conosco il caso del PO, quindi non posso aggiungere altro, ma questa è una buona osservazione. np
chl,

È chiaramente un problema difficile e ricco di sfumature. Dato che ne sai molto di più di me, ero interessato alla tua opinione. +1, a proposito.
gung - Ripristina Monica

2
Due commenti Innanzitutto, citi kPCA come una possibile soluzione al tuo punto 2. Ma come si può usare kPCA per la selezione delle funzioni, quando gli autovettori / caricamenti non sono disponibili lì? C'è una domanda in più a riguardo, e ho sostenuto lì che non può . In secondo luogo, il tuo secondo prima dell'ultimo paragrafo potrebbe migliorare molto se hai citato LASSO, come un modo preferito (?) Per fare la selezione delle funzioni in regressione. Questo thread rimane molto popolare e molte domande sono chiuse come duplicati, quindi è importante che la tua risposta sia il più eccellente possibile!
ameba dice di reintegrare Monica il

@chl, grazie per la tua risposta informativa. Parli di "decidere di mantenere solo il primo componente". Perché solo il primo componente? Con un componente è facile classificare caratteristiche / variabili. Come lo faresti con più componenti, diciamo 3? Come si classificano le variabili tra i componenti? Suppongo che potresti passare attraverso ciascun componente principale e scegliere la funzione con il caricamento maggiore da quel componente principale, dall'insieme di funzionalità che non sono già state selezionate. Questi possono di nuovo essere scelti da un numero (j) o da una soglia di coefficienti normalizzati. Sei d'accordo?
Sother,

6

Dato un insieme di caratteristiche N, un'analisi PCA produrrà (1) la combinazione lineare delle caratteristiche con la varianza più elevata (primo componente PCA), (2) la combinazione lineare con la varianza più elevata nel sottospazio ortogonale al primo componente PCA eccetera (sotto il vincolo che i coefficienti della combinazione formano un vettore con la norma unitaria) Il fatto che la combinazione lineare con la varianza massima sia una funzione "buona" dipende in realtà da ciò che si sta tentando di prevedere. Per questo motivo direi che essere un componente PCA ed essere una "buona" caratteristica sono (in generale) due nozioni non correlate.


(-1) Non vedo come questo risponda alla domanda originale.
ameba dice Reinstate Monica il

-1

Non è possibile ordinare le funzionalità in base alla loro varianza, poiché la varianza utilizzata in PCA è fondamentalmente un'entità multidimensionale. Puoi ordinare le caratteristiche solo attraverso la proiezione della varianza in una determinata direzione (che normalmente è la prima compagna principale). Quindi, in altre parole, se una caratteristica ha una varianza maggiore rispetto a un'altra dipende da come scegli la tua direzione di proiezione.


2
Non capisco: ogni caratteristica originale ha una varianza, e quindi si può certamente "ordinare le caratteristiche in base alla loro varianza". Inoltre, non capisco come si possano ordinare "dalla proiezione della varianza in una determinata direzione scelta". Che cosa vuoi dire con questo?
ameba dice Ripristina Monica il

Puoi davvero usare la varianza per ordinare le funzionalità, solo che quindi hanno qualcosa a che fare con PCA, che tratta tutte le funzionalità insieme.
James LI,

Informazioni sulla proiezione: se si dispone di n feature, un vettore di direzione è solo un vettore unitario nello spazio n-dimensionale; la proiezione dei vettori della tua istanza m è il prodotto in scala del vettore di istanza con quel vettore di unità, che risulta in un vettore dimensionale. E la varianza di questo vettore m-dimensionale è quella "proiezione" della varianza del set di dati nella direzione scelta.
James LI,

1
-1. Penso che ognuna delle tre frasi nella tua risposta sia sbagliata o così poco chiara da essere fuorviante. Sono d'accordo con tutto ciò che hai scritto nei commenti, ma non ho idea di come la tua risposta possa essere interpretata nel senso di ciò. "Non puoi ordinare le caratteristiche in base alla loro varianza" - ?? "Puoi ordinare le funzioni solo proiettando la varianza in una certa direzione" - ?? "se una caratteristica ha più varianza ... dipende ..." - ?? Tutto ciò è sbagliato.
ameba dice Ripristina Monica il

2
Non ero a conoscenza del fatto che questa domanda è stata posta tanto tempo fa; e sono d'accordo con la maggior parte di queste risposte. Il mio punto è: PCA non è appropriato per la selezione delle funzionalità. Solo nessuno qui vuole dirlo direttamente.
James LI,
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.