PCA e foreste casuali


12

Per una recente competizione di Kaggle, ho definito (manualmente) 10 funzioni aggiuntive per il mio set di allenamento, che sarebbero state utilizzate per addestrare un classificatore di foreste casuale. Ho deciso di eseguire PCA sul set di dati con le nuove funzionalità, per vedere come si confrontavano tra loro. Ho scoperto che il 98% circa della varianza era trasportato dal primo componente (il primo autovettore). Ho quindi addestrato il classificatore più volte, aggiungendo una funzione alla volta e ho usato la convalida incrociata e l'errore RMS per confrontare la qualità della classificazione. Ho scoperto che le classificazioni sono migliorate con ogni funzionalità aggiuntiva e che il risultato finale (con tutte e 10 le nuove funzionalità) è stato di gran lunga migliore rispetto alla prima esecuzione con (diciamo) 2 funzionalità.

  • Dato che il PCA ha affermato che circa il 98% della varianza era nel primo componente del mio set di dati, perché la qualità delle classificazioni è migliorata così tanto?

  • Questo sarebbe vero per altri classificatori? La RF scala su più core, quindi è molto più veloce da addestrare rispetto a (diciamo) SVM.

  • E se avessi trasformato il set di dati nello spazio "PCA" ed avessi eseguito il classificatore nello spazio trasformato. Come cambieranno i miei risultati?


2
Hai normalizzato i tuoi dati prima di eseguire PCA? Se dovessi indovinare, penserei che una delle tue caratteristiche fosse su una scala molto più ampia delle altre ...
Marc Shivers,

1
La funzione PCA normalizza automaticamente tutto quando si esegue il calcolo.
Vishal,

1
Forse sono solo io, ma potresti chiarire quanto segue: il tuo primo passo consisteva nell'aggiungere 10 funzionalità (non elaborate), una alla volta, o hai lavorato direttamente con i componenti PCA? Come detto, capisco che questo è il primo caso e ti chiedi se potresti lavorare direttamente con i risultati di PCA. In entrambi i casi, hai applicato il PCA su tutte le variabili, comprese le nuove funzionalità o solo in un secondo momento?
chl

Ho applicato il PCA alla matrice originale con le 10 funzionalità aggiuntive. Ho quindi addestrato il classificatore, aggiungendo una funzione alla volta, in modo da poter misurare il miglioramento incrementale fornito con l'aggiunta di ciascuna funzione. La mia domanda era: se trasformassi il set di dati (con le 10 nuove funzionalità) nello spazio PCA, e poi avessi eseguito il classificatore direttamente sul set di dati nello spazio PCA
Vishal

Risposte:


7

Quando si esegue la modellazione predittiva, si sta tentando di spiegare la variazione nella risposta, non la variazione nelle funzionalità. Non vi è alcun motivo di ritenere che il fatto di stipare la maggior parte della variazione delle funzionalità in un'unica nuova funzionalità catturerà una grande quantità del potere predittivo delle funzionalità nel loro insieme.

Ciò è spesso spiegato come la differenza tra la regressione dei componenti principali anziché i minimi quadrati parziali.


"Non vi è alcun motivo di ritenere che il fatto di stipare la maggior parte della variazione delle funzionalità in un'unica nuova funzionalità catturerà una grande quantità del potere predittivo delle funzionalità nel loro insieme." Non è mai stato questo il punto, e fare questo si tradurrebbe in un classificatore molto confuso! L'obiettivo era disporre di una serie di funzionalità, tutte che illustrassero aspetti diversi del set di dati, con l'intenzione di ridurre l'errore di generalizzazione. Il punto di prendere il PCA era vedere quanto fossero diverse le caratteristiche. E il mio punto di pubblicazione era che le mie caratteristiche non erano così diverse, ma i risultati della RF erano ancora migliorati.
Vishal,

1
La stessa logica può ancora essere applicata. Una nuova funzionalità è altamente colinnear con una funzionalità precedente può ancora portare un maggiore potere predittivo. Soprattutto per un randomForest: se la funzionalità quasi duplicata è importante in generale, una versione o un'altra è ora più probabile che vengano selezionate come suddivisione dei candidati.
Shea Parkes,

Questo fa sorgere la domanda di follow-up, come selezioni a priori le caratteristiche per il tuo classificatore di foreste casuali per migliorare la classificazione, senza effettivamente eseguire il classificatore? Esiste un processo di screening? Come si fa? :)
Vishal,

Non conosco alcun metodo di selezione a priori utile. Puoi fare molti cicli annidati di importanza e selezione tramite alcuni pacchetti R come Boruta. Non li ho trovati utili neanche. Trovo irragionevole credere che una determinata funzionalità non abbia alcun effetto. Posso credere che enfatizzare alcune funzionalità rispetto ad altre potrebbe essere utile, ma l'algoritmo randomForest di base lo fa già abbastanza bene. Se sei così appassionato di modellazione e desideri più prestazioni, suggerirei di impilare altri algoritmi, alcuni come alcuni alberi potenziati, con il tuo randomForest.
Shea Parkes,

1
Potresti calcolare a priori alcune misure di separabilità per le tue classi in base alle tue caratteristiche (distanza di Jeffries-Matusita, Divergenza, ecc.). Questo potrebbe aiutarti a capire in generale quali funzioni ti aiutano a distinguere tra le classi ma a causa del funzionamento di RF non è facile scegliere da qui quali funzioni forniscono il miglior set per la classificazione. Un chiaro ostacolo qui è che la RF trova interazioni variabili da sola.
JEquihua

6

Il primo componente principale è una combinazione lineare di tutte le funzionalità. Il fatto che spieghi quasi tutta la variabilità significa solo che la maggior parte dei coefficienti delle variabili nel primo componente principale sono significativi.

Ora anche gli alberi di classificazione generati sono un po 'diversi da un animale. Fanno divisioni binarie su variabili continue che meglio separano le categorie che si desidera classificare. Questo non è esattamente lo stesso di trovare combinazioni lineari ortogonali di variabili continue che danno la direzione della maggiore varianza. In effetti, abbiamo recentemente discusso un documento sul CV in cui il PCA è stato utilizzato per l'analisi dei cluster e gli autori hanno scoperto che esistono situazioni in cui si trova la migliore separazione non nei primi pochi componenti principali, ma piuttosto negli ultimi.


3
"In effetti abbiamo recentemente discusso un documento sul CV in cui PCA" hai un link a questo? Sono molto interessato :)
user603

Cercherò la discussione.
Michael R. Chernick,

Sarai così gentile da dare un'occhiata alla domanda correlata ?
Nadya,
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.