Selezione delle funzioni per il modello "finale" quando si esegue la validazione incrociata nell'apprendimento automatico


76

Mi sto confondendo un po 'sulla selezione delle funzionalità e sull'apprendimento automatico e mi chiedevo se potevi aiutarmi. Ho un set di dati di microarray che è classificato in due gruppi e ha migliaia di funzionalità. Il mio obiettivo è quello di ottenere un piccolo numero di geni (le mie caratteristiche) (10-20) in una firma che in teoria sarò in grado di applicare ad altri set di dati per classificare in modo ottimale quei campioni. Dato che non ho molti campioni (<100), non sto usando un set di test e training, ma sto usando la validazione incrociata "Lascia un singolo" per aiutare a determinare la robustezza. Ho letto che si dovrebbe eseguire la selezione delle caratteristiche per ciascuna divisione dei campioni, ad es

  1. Selezionare un campione come set di test
  2. Sui restanti campioni eseguire la selezione delle funzioni
  3. Applicare l'algoritmo di apprendimento automatico ai campioni rimanenti utilizzando le funzionalità selezionate
  4. Verifica se il set di test è classificato correttamente
  5. Vai a 1.

Se lo fai, potresti ottenere geni diversi ogni volta, quindi come puoi ottenere il tuo classificatore di geni ottimale "finale"? ovvero cos'è il passaggio 6.

Quello che intendo per ottimale è la raccolta di geni che qualsiasi ulteriore studio dovrebbe usare. Ad esempio, supponiamo che io abbia un set di dati cancro / normale e che voglio trovare i primi 10 geni che classificheranno il tipo di tumore secondo un SVM. Vorrei conoscere l'insieme di geni più i parametri SVM che potrebbero essere utilizzati in ulteriori esperimenti per vedere se potesse essere usato come test diagnostico.


Dovrei dire per la piena divulgazione che ho già pubblicato questo nell'elenco dei
bioconduttori

Riassumi tutti i risultati dei bioconduttori qui?
Shane,

Risposte:


39

Questa è un'ottima domanda che ho dovuto affrontare quando lavoravo con i dati degli SNP ... E non ho trovato nessuna risposta ovvia in letteratura.

Sia che tu utilizzi LOO o K-fold CV, finirai con diverse funzionalità poiché l'iterazione di validazione incrociata deve essere il ciclo più esterno, come hai detto. Puoi pensare a una sorta di schema di voto che valuterà gli n-vettori delle caratteristiche che hai ottenuto dal tuo LOO-CV (non ricordi il documento ma vale la pena controllare il lavoro di Harald Binder o Antoine Cornuéjols ). In assenza di un nuovo campione di test, ciò che viene solitamente fatto è riapplicare l'algoritmo ML all'intero campione dopo aver trovato i parametri ottimali incrociati convalidati. Procedendo in questo modo, non è possibile garantire l'assenza di un eccesso di adattamento (poiché il campione è già stato utilizzato per l'ottimizzazione del modello).

Oppure, in alternativa, puoi utilizzare metodi incorporati che ti forniscono funzionalità in base a una misura di importanza variabile, ad esempio come nelle foreste casuali (RF). Come convalida incrociata è incluso nel RFs, non c'è bisogno di preoccuparsi per la caso o maledizione della dimensionalità. Ecco alcuni articoli sulle loro applicazioni negli studi sull'espressione genica:np

  1. 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.
  2. Saeys, Y., Inza, I. e Larrañaga, P. (2007). Una revisione delle tecniche di selezione delle caratteristiche in bioinformatica. Bioinformatica , 23 (19) : 2507-2517.
  3. Díaz-Uriarte, R., Alvarez de Andrés, S. (2006). Selezione genica e classificazione dei dati di microarray usando foreste casuali. BMC Bioinformatics , 7 : 3.
  4. Diaz-Uriarte, R. (2007). GeneSrF e varSelRF: uno strumento web-based e un pacchetto R per la selezione e la classificazione dei geni usando foreste casuali. BMC Bioinformatics , 8 : 328

Dal momento che stai parlando di SVM, puoi cercare SVM penalizzato .


Grazie per quello Non sono in particolare venduto su SVM, ma lo uso solo come esempio. Quindi se hai usato alberi casuali, non devi fare la validazione incrociata? È giusto.
danielsbrewer,

7
sì, le RF includono un campionamento casuale di variabili (in genere ) quando si coltiva un albero e ogni albero si basa su un campione boostraped degli individui; L'importanza variabile viene calcolata sui cosiddetti campioni out-of-bag (quelli non utilizzati per la costruzione dell'albero decisionale) usando una tecnica di permutazione. L'algoritmo viene ripetuto per m alberi (default m = 500) e i risultati vengono mediati per compensare l'incertezza a livello di albero (potenziamento). p
chl

3
È importante che sia chiamato Foresta casuale e non Alberi casuali; potresti avere problemi con Google.

1
+1, buona risposta e serendipito per me - molte grazie per i riferimenti cartacei, in particolare la recensione.
ars,

Con abbastanza dati, non sarebbe meglio tenere un set di test, eseguire loocv sul set di training per ottimizzare i parametri del modello, adattarsi all'intero set di treni (e chiamarlo classificatore "finale"), quindi valutare il modello finale sul set di test?
utente0

40

In linea di principio:

Fai le tue previsioni utilizzando un singolo modello addestrato sull'intero set di dati (quindi esiste solo un set di funzionalità). La convalida incrociata viene utilizzata solo per stimare le prestazioni predittive del singolo modello addestrato sull'intero set di dati. È VITAL nell'uso della convalida incrociata che in ogni piega si ripete l'intera procedura utilizzata per adattarsi al modello primario, poiché altrimenti si può finire con una sostanziale distorsione ottimistica delle prestazioni.

Per capire perché ciò accada, considera un problema di classificazione binaria con 1000 funzioni binarie ma solo 100 casi, in cui i casi e le caratteristiche sono puramente casuali, quindi non esiste alcuna relazione statistica tra le caratteristiche e i casi. Se formiamo un modello primario sull'insieme di dati completo, possiamo sempre ottenere zero errori sul set di addestramento in quanto vi sono più funzioni che casi. Possiamo persino trovare un sottoinsieme di funzionalità "informative" (che sono correlate per caso). Se eseguiamo quindi la convalida incrociata utilizzando solo queste funzionalità, otterremo una stima delle prestazioni migliore rispetto all'ipotesi casuale. Il motivo è che in ogni piega della procedura di convalida incrociata ci sono alcune informazioni sui casi risolti utilizzati per i test poiché le funzionalità sono state scelte perché erano buone per prevedere, tutte, compresi quelli sostenuti. Ovviamente il tasso di errore reale sarà 0,5.

Se adottiamo la procedura corretta ed eseguiamo la selezione delle caratteristiche in ogni piega, non ci sono più informazioni sui casi risolti nella scelta delle caratteristiche utilizzate in quella piega. Se si utilizza la procedura corretta, in questo caso, si otterrà un tasso di errore di circa 0,5 (anche se varierà leggermente per le diverse realizzazioni del set di dati).

I buoni documenti da leggere sono:

Christophe Ambroise, Geoffrey J. McLachlan, "Distorsione di selezione nell'estrazione genica sulla base di dati di espressione genica di microarray", PNAS http://www.pnas.org/content/99/10/6562.abstract

che è molto rilevante per il PO e

Gavin C. Cawley, Nicola LC Talbot, "Sull'adattamento eccessivo nella selezione del modello e conseguente bias di selezione nella valutazione delle prestazioni", JMLR 11 (lug): 2079-2107, 2010 http://jmlr.csail.mit.edu/papers /v11/cawley10a.html

che dimostra che la stessa cosa può facilmente verificarsi nella selezione del modello (ad es. sintonizzazione degli iperparametri di un SVM, che deve anche essere ripetuto in ogni iterazione della procedura CV).

In pratica:

Consiglierei l'uso del Bagging e l'uso dell'errore out-of-bag per la stima delle prestazioni. Otterrai un modello di comitato che utilizza molte funzionalità, ma in realtà è una buona cosa. Se si utilizza solo un singolo modello, è probabile che si adatterà eccessivamente al criterio di selezione delle funzionalità e si finirà con un modello che fornisce previsioni più scadenti rispetto a un modello che utilizza un numero maggiore di funzioni.

Il libro di Alan Millers sulla selezione dei sottogruppi in regressione (monografie di Chapman e Hall su statistiche e probabilità applicata, volume 95) offre un buon consiglio (pagina 221) che se le prestazioni predittive sono la cosa più importante, allora non fare alcuna selezione delle caratteristiche , basta usare invece la regressione della cresta. E questo è in un libro sulla selezione dei sottogruppi !!! ; O)


17

Per aggiungere a chl: quando si usano macchine vettoriali di supporto, un metodo di penalizzazione altamente raccomandato è la rete elastica. Questo metodo ridurrà i coefficienti verso zero e, in teoria, mantiene i coefficienti più stabili nel modello. Inizialmente era utilizzato in un framework di regressione, ma è facilmente estendibile per l'uso con macchine vettoriali di supporto.

La pubblicazione originale : Zou and Hastie (2005): regolarizzazione e selezione variabile tramite la rete elastica. JRStatist.Soc. B, 67-2, pp.301-320

Rete elastica per SVM : Zhu & Zou (2007): Selezione variabile per la macchina vettoriale di supporto: Tendenze nel calcolo neurale, capitolo 2 (Redattori: Chen e Wang)

miglioramenti sulla rete elastica Jun-Tao e Ying-Min (2010): una rete elastica migliorata per la classificazione dei tumori e la selezione dei geni: Acta Automatica Sinica, 36-7, pp.976-981


9

Come passaggio 6 (o 0) si esegue l'algoritmo di rilevamento delle funzionalità sull'intero set di dati.

La logica è la seguente: devi considerare la convalida incrociata come un metodo per scoprire le proprietà della procedura che stai utilizzando per selezionare le funzionalità. Risponde alla domanda: "se ho alcuni dati ed eseguo questa procedura, qual è il tasso di errore per la classificazione di un nuovo campione?". Una volta che conosci la risposta, puoi utilizzare la procedura (selezione delle caratteristiche + sviluppo della regola di classificazione) sull'intero set di dati. Persone come leave-one-out perché le proprietà predittive di solito dipendono dalla dimensione del campione, e è di solito abbastanza vicino a non importa più di tanto.nn1n


Penso che ci sia ancora un problema di generalizzazione quando si utilizza lo stesso campione (1) per valutare le prestazioni di classificazione / previsione del classificatore mentre si sintonizzano i suoi parametri (eventualmente, con la selezione delle funzionalità) e (2) si usano a loro volta le previsioni sull'intero set di dati. In effetti, stai infrangendo il controllo esercitato sul sovradimensionamento che è stato elaborato usando la validazione incrociata. Hastie et al. fornire una bella illustrazione delle insidie ​​del CV, esp. WRT. selezione delle caratteristiche, nel loro libro ESL, § 7.10.2 nella 2a edizione.
chl

@chl: chi ha detto qualcosa sull'ottimizzazione dei parametri? Se vengono eseguite ulteriori operazioni, dovrebbero essere ripetute anche durante la convalida incrociata. Modificare chiaramente l'algoritmo fino a quando non si ottengono buoni tassi di errore con convalida incrociata significa "imbrogliare". A proposito, concordo sul fatto che la convalida incrociata, in particolare il congedo unico, non è poi così eccezionale.
Aniko,

non è un imbroglio, dal momento che CV mostra l'approssimazione del rendimento dell'algoritmo sui nuovi dati. Devi solo essere sicuro di non esserti accontentato di qualcosa basato sull'intero set (si tratta di una perdita di informazioni sulla struttura del set completo, in modo che possa distorcere immediatamente tutte le parti del treno).

@mbq - Ankino ha ragione, ottimizzare il tuo modello per minimizzare una statistica CV è "imbroglione" e la statistica CV del modello finale avrà un sostanziale pregiudizio ottimistico. La ragione di ciò è che la statistica CV ha una varianza non trascurabile (poiché viene valutata su una serie finita di dati) e quindi se si ottimizza direttamente la statistica CV è possibile inserirla in modo eccessivo e si può finire con un modello che generalizza meno bene di quello con cui hai iniziato. Per una dimostrazione di ciò, in un contesto di apprendimento automatico, vedere jmlr.csail.mit.edu/papers/v11/cawley10a.html Soluzione: utilizzare nidificato XVAL
Dikran Marsupial

1

Ecco come seleziono le funzionalità. Supponiamo che in base a determinate conoscenze, ci siano 2 modelli da confrontare. Il modello A utilizza le funzionalità dal n. 1 al n. 10. Il modello B utilizza il n. 11 al n. 20. Applicherò il CV LOO al modello A per ottenere prestazioni fuori campione. Fai lo stesso con il modello B e poi confrontali.


-1

Non sono sicuro dei problemi di classificazione, ma nel caso della selezione di funzionalità per problemi di regressione, Jun Shao ha dimostrato che il CV Leave-One-Out è asintoticamente incoerente , ovvero la probabilità di selezionare il sottoinsieme corretto di funzionalità non converge a 1 come il numero di campioni aumenta. Da un punto di vista pratico, Shao raccomanda una convalida incrociata Monte-Carlo o una procedura di abbandono.


Oh mio Dio, ancora una volta; hai letto il titolo di questo articolo?

2
Ok, per essere chiari, non sto dicendo che LOOCV sia una buona idea per un gran numero di oggetti; ovviamente non lo è, ma Shao non è applicabile qui. In effetti, nella maggior parte dei casi, le regole per LM non valgono per ML.

2
È anche discutibile se i risultati assintotici siano di utilità pratica quando si esaminano set di dati con un gran numero di funzionalità e comparativamente pochi schemi. In tal caso, è probabile che la varianza della procedura abbia un'importanza pratica maggiore rispetto a parzialità o coerenza. Il valore principale di LOOCV è che per molti modelli può essere implementato a spese computazionali trascurabili, quindi sebbene abbia una varianza più elevata rispetto a quella del bootstrap, può essere l'unico approccio possibile all'interno del budget computazionale disponibile. Ecco perché lo uso, ma uso qualcos'altro per la valutazione delle prestazioni!
Dikran Marsupial,
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.