Selezione delle funzioni con foreste casuali


16

Ho un set di dati con principalmente variabili finanziarie (120 caratteristiche, esempi 4k) che sono per lo più altamente correlate e molto rumorose (indicatori tecnici, ad esempio), quindi vorrei selezionare circa 20-30 max per un uso successivo con la formazione dei modelli (classificazione binaria - aumento diminuzione).

Stavo pensando di usare foreste casuali per il posizionamento delle caratteristiche. È una buona idea usarli in modo ricorsivo? Ad esempio, supponiamo che al primo turno abbassi il peggior 20%, anche il secondo e così via fino a ottenere il numero desiderato di funzionalità. Dovrei usare la validazione incrociata con RF? (È intuitivo per me non usare CV perché è praticamente quello che RF fa già.)

Inoltre, se vado con foreste casuali, dovrei usarle come classificatori per il binario o il regressore per l'aumento / la riduzione effettivi per ottenere le importazioni delle funzionalità?

A proposito, i modelli che vorrei provare dopo la selezione delle funzionalità sono: SVM, reti neurali, regressioni ponderate localmente e foresta casuale. Lavoro principalmente in Python.


2
vorrebbe connettersi per scambiarsi informazioni. sto lavorando a qualcosa di simile
user670186

c'è qualche motivo per cui nessuno ha suggerito di usare semplicemente l' built-inattributo di RandomForestClassifier in sklearnchiamato feature_importances_....? Lo vedrai nel link.
Candic3,

Attenzione perché multicollinearitypuò falsare le importazioni e la selezione delle funzioni. dai un'occhiata qui
Candic3

Risposte:


12

Per la selezione delle caratteristiche, abbiamo bisogno di una funzione di punteggio e di un metodo di ricerca per ottimizzare la funzione di punteggio.

È possibile utilizzare la RF come metodo di classificazione delle caratteristiche se si definisce un punteggio di importanza rilevante. RF selezionerà le funzioni in base a casuale con metodo di sostituzione e raggrupperà ogni sottoinsieme in un sottospazio separato (chiamato sottospazio casuale). Una funzione di calcolo del punteggio di importanza potrebbe essere basata sull'assegnazione della precisione di ogni albero per ogni caratteristica in quel sottospazio casuale. Quindi, fai questo per ogni albero separato. Poiché la fonte di generazione dei sottospazi è casuale, è possibile stabilire una soglia per calcolare il punteggio di importanza.

Sommario:

Passaggio 1 : se la funzione X2 appare nel 25% degli alberi, assegnale un punteggio. Altrimenti, non prendere in considerazione la classificazione della funzione perché non disponiamo di informazioni sufficienti sulle sue prestazioni

Step2 : Ora, assegna il punteggio delle prestazioni di ogni albero in cui X2 appare a X2 e calcola la media del punteggio. Ad esempio: perf (Tree1) = 0.85 perf (Tree2) = 0.70 perf (Tree3) = 0.30

Quindi, l'importanza della funzione X2 = (0,85 + 0,70 + 0,30) / 3 = 0,6167

È possibile prendere in considerazione un'impostazione più avanzata includendo la profondità divisa della funzione o il valore di guadagno delle informazioni nella struttura decisionale. Esistono molti modi per progettare una funzione di punteggio basata su alberi decisionali e RF.

Per quanto riguarda il metodo di ricerca , il tuo metodo ricorsivo sembra ragionevole come un modo per selezionare i migliori classificati.

Infine, è possibile utilizzare la RF come classificatore o modello di regressione nella selezione delle funzionalità poiché entrambe forniscono un punteggio delle prestazioni. Il punteggio è indicativo in quanto si basa su campioni OOB out-of-bag e non è possibile considerare la convalida incrociata in un'impostazione più semplice.


Grazie per l'input. Volevo sottolineare questo (0.85+0.70+0.30)/3 = 0.6167.
Hendy,

5
Se lavori con Python, puoi usare direttamente l'importanza della variabile calcolata in sklearn quando chiami una foresta casuale.
Scratch

5

Ho un set di dati con principalmente variabili finanziarie (120 caratteristiche, esempi 4k) che sono per lo più altamente correlate e molto rumorose (indicatori tecnici, ad esempio), quindi vorrei selezionare circa 20-30 max per un uso successivo con la formazione dei modelli (classificazione binaria - aumento diminuzione).

Gli esempi 4k non sono davvero sufficienti per stimare qualcosa di molto sofisticato: è necessario utilizzare i modelli più semplici possibili (regressione lineare / logistica, svm lineare) e un piccolo numero di variabili

Dato che i tuoi dati sono rumorosi e correlati, la PCA è probabilmente la soluzione migliore [sta identificando efficacemente la media dei segnali comuni sui singoli indicatori]

La regolarizzazione L2 (per un modello lineare) aiuterà anche a calcolare la media del rumore [ad es. Se non si hanno copie rumorose dello stesso segnale, la regolarizzazione L2 incoraggerà i pesi a essere uguali - facendo la media di quelle n variabili]

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.