Procedura di selezione variabile per la classificazione binaria


29

Quali sono le selezioni variabili / caratteristiche che preferisci per la classificazione binaria quando ci sono molte più variabili / caratteristiche rispetto alle osservazioni nel set di apprendimento? Lo scopo qui è discutere qual è la procedura di selezione delle caratteristiche che riduce al meglio l'errore di classificazione.

Possiamo correggere le notazioni per coerenza: per , lascia che { x i 1 , ... , x i n i } sia l'insieme di osservazioni di apprendimento del gruppo i . Quindi n 0 + n 1 = n è la dimensione del set di apprendimento. Impostiamo p come numero di funzioni (ovvero la dimensione dello spazio delle caratteristiche). Lascia che x [ i ] denoti l' i -coordinata di xio{0,1}{X1io,...,Xnioio}ion0+n1=npX[io]io .XRp

Si prega di fornire riferimenti completi se non è possibile fornire i dettagli.

EDIT (aggiornato continuamente): procedure proposte nelle risposte seguenti

Dato che si tratta di wiki della community, ci possono essere più discussioni e aggiornamenti

Ho un'osservazione: in un certo senso, tutti voi date una procedura che consente l'ordinamento delle variabili ma non la selezione delle variabili (siete abbastanza evasivi su come selezionare il numero di funzioni, immagino che tutti voi usate la validazione incrociata?) Potete migliorare le risposte in questa direzione? (dato che si tratta di un wiki della comunità non è necessario essere il redattore di risposte per aggiungere informazioni su come selezionare il numero di variabili? Ho aperto una domanda in questa direzione qui Convalida incrociata in dimensione molto alta (per selezionare il numero di variabili utilizzate in una classificazione dimensionale molto elevata) )


È una domanda o una piscina? In quest'ultimo caso, dovrebbe essere wiki della community. Se il primo, fornire maggiori dettagli su ciò che si desidera ottenere? Ad esempio, è una selezione pertinente o piuttosto minima-ottimale? Quanti sono? Quanto è difficile il problema della classificazione?

pool ... molti significa 1000 funzionalità o più e meno di 100 osservazioni.
Robin Girard,

Risposte:


18

Un approccio molto popolare è la regressione logistica penalizzata, in cui si massimizza la somma della probabilità logaritmica e un termine di penalizzazione costituito dalla norma L1 ("lasso"), norma L2 ("cresta"), una combinazione dei due ("elastico") o una penalità associata a gruppi di variabili ("lazo di gruppo"). Questo approccio ha diversi vantaggi:

  1. Ha forti proprietà teoriche, ad esempio, vedi questo articolo di Candes & Plan e chiudi le connessioni al rilevamento compresso;
  2. Ha esposizioni accessibili, ad esempio, in Elementi di apprendimento statistico di Friedman-Hastie-Tibshirani (disponibile online);
  3. Dispone di software prontamente disponibili per adattarsi ai modelli. R ha il pacchetto glmnet che è molto veloce e funziona bene con set di dati piuttosto grandi. Python ha scikit-learn , che include la regressione logistica penalizzata da L1 e L2;
  4. Funziona molto bene in pratica, come mostrato in molti documenti di applicazione in riconoscimento delle immagini, elaborazione del segnale, biometria e finanza.

10

Ho una leggera preferenza per le foreste casuali di Leo Breiman e Adele Cutleer per diversi motivi:

  • consente di gestire predittori categorici e continui, nonché dimensioni del campione di classe sbilanciate;
  • come metodo ensemble / incorporato, la convalida incrociata è incorporata e consente di stimare un errore di generalizzazione;
  • è relativamente insensibile ai suoi parametri di ottimizzazione (% di variabili selezionate per la crescita di un albero, numero di alberi costruiti);
  • fornisce una misura originale di importanza variabile ed è in grado di scoprire interazioni complesse tra variabili (sebbene ciò possa portare a risultati difficili da leggere).

Alcuni autori hanno sostenuto che ha funzionato così come penalizzato SVM o Gradient Boosting Machines (vedi, ad esempio, Cutler et al., 2009, per quest'ultimo punto).

Una copertura completa delle sue applicazioni o vantaggi potrebbe essere fuori tema, quindi suggerisco gli Elementi di apprendimento statistico di Hastie et al. (cap. 15) e Sayes et al. (2007) per ulteriori letture.

Ultimo ma non meno importante, ha una bella implementazione in R, con il pacchetto randomForest . Anche altri pacchetti R lo estendono o lo usano, ad esempio party e caret .

Riferimenti:

Cutler, A., Cutler, DR e Stevens, JR (2009). Metodi basati sugli alberi, nell'analisi dei dati ad alta dimensione nella ricerca sul cancro , Li, X. e Xu, R. (a cura di), pagg. 83-101, Springer.

Saeys, Y., Inza, I. e Larrañaga, P. (2007). Una revisione delle tecniche di selezione delle caratteristiche in bioinformatica. Bioinformatica , 23 (19) : 2507-2517.


7

Scansione Metropolis / MCMC

  • Seleziona alcune funzionalità in modo casuale per iniziare, addestra il classificatore solo su di esse e ottieni l'errore.
  • Apporta alcune modifiche casuali a questo set di lavoro: rimuovi una funzionalità, aggiungine un'altra a caso o sostituisci una funzionalità con una non utilizzata al momento.
  • Addestra nuovo classificatore e ottieni il suo errore; memorizzare nella dEdifferenza l'errore sul nuovo set meno l'errore sul set precedente.
  • Con probabilità min(1;exp(-beta*dE))accetta questa modifica, altrimenti respingila e prova un'altra modifica casuale.
  • Ripetere l'operazione per molto tempo e infine restituire il set di lavoro che ha ottenuto globalmente l'errore più piccolo.

È possibile estenderlo con un controllo più saggio del betaparametro. Il modo più semplice è utilizzare la ricottura simulata quando si aumenta beta(si abbassa la temperatura in analogia fisica) nel tempo per ridurre le fluttuazioni e portare l'algoritmo al minimo. È più difficile utilizzare lo scambio di repliche .


5

Se sei interessato solo alle prestazioni di generalizzazione, probabilmente stai meglio non eseguire alcuna selezione di funzionalità e utilizzare invece la regolarizzazione (ad es. Regressione della cresta). Ci sono state diverse sfide aperte nella comunità dell'apprendimento automatico sulla selezione delle funzioni e i metodi che si basano sulla regolarizzazione piuttosto che sulla selezione delle funzioni generalmente funzionano almeno, se non meglio.


3

Selezione golosa in avanti.

I passaggi per questo metodo sono:

  • Assicurati di avere un treno e un set di convalida
  • Ripeti quanto segue
    • Addestra un classificatore con ogni singola caratteristica separatamente che non è ancora selezionata e con tutte le caratteristiche precedentemente selezionate
    • Se il risultato migliora, aggiungi la funzione con le migliori prestazioni, altrimenti interrompi la procedura

Come "alleni" il tuo classificatore? Presumibilmente questo viene fatto sul set di allenamento. Se si tratta di una Support vector Machine (SVM), ci sono diversi parametri da provare durante l'allenamento. Ciascuno è testato rispetto al set di validazione (test)? O stai usando la validazione incrociata di k-fold? Quante volte stai usando il set di validazione (test) per verificare le tue prestazioni - presumibilmente si tratta di precisione. Mi dispiace essere pedante, ma questa è una risposta mal definita e rischia di essere troppo adatta.
Thylacoleo,

@Thylacoleo Questo è un metodo molto grezzo e avido. Spesso mantieni la tua convalida impostata allo stesso modo sulle corse, ma qualunque cosa ti piaccia va bene.
Peter Smit,

2

Eliminazione all'indietro.

Inizia con il set completo, quindi addestra in modo iterativo il classificatore sulle funzionalità rimanenti e rimuovi la funzione con la minima importanza, fermati quando l'errore del classificatore aumenta / diventa rapidamente inaccettabile.

L'importanza può anche essere ottenuta rimuovendo iterativamente ogni caratteristica e verificando l'aumento dell'errore o adattandola dal classificatore se la produce (come nel caso di Random Forest).


2
Ma la domanda dice che ci sono più variabili che osservazioni. Quindi non è possibile iniziare con il set completo.
Rob Hyndman,

Qual è il problema?

2
Non è possibile adattare un modello che ha più variabili delle osservazioni. Non ci sono abbastanza gradi di libertà per la stima dei parametri.
Rob Hyndman,

1
Nel calcolo F di Fisher, si calcola la F come (n - k - p) / (k - 1) * ...con nil numero di osservazioni, kil numero di classi (2 qui) e pil numero di variabili. n - 2 - p < 0quando n < p + 2(che è il caso qui) che porta a F < 0. Non sarebbe un problema?
Matthieu,

3
La regressione regolarizzata o completamente bayesiana consentirebbe di ottenere una soluzione unica con l'intera serie di predittori, senza dubbio lo stesso vale per alcune altre tecniche ML.
Scortchi - Ripristina Monica
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.