SVM, Overfitting, maledizione della dimensionalità


37

Il mio set di dati è piccolo (120 campioni), tuttavia il numero di funzionalità è grande varia da (1000-200.000). Anche se sto facendo la selezione delle funzionalità per scegliere un sottoinsieme di funzionalità, potrebbe comunque essere troppo adatto.

La mia prima domanda è: in che modo SVM gestisce l'overfitting, se non del tutto.

In secondo luogo, mentre studio di più sul sovradimensionamento in caso di classificazione, sono giunto alla conclusione che anche i set di dati con un numero limitato di funzionalità possono sovrautilizzare. Se non abbiamo funzionalità correlate all'etichetta della classe, comunque si verifica un overfitting. Quindi ora mi chiedo qual è il punto della classificazione automatica se non riusciamo a trovare le giuste caratteristiche per un'etichetta di classe. In caso di classificazione dei documenti, ciò significherebbe creare manualmente un dizionario dei termini relativo alle etichette, che richiede molto tempo. Immagino che ciò che sto cercando di dire sia che, senza scegliere le caratteristiche giuste, è molto difficile costruire un modello generalizzato?

Inoltre, se i risultati sperimentali non mostrano che i risultati sono bassi / nessun overfit diventa insignificante. C'è un modo per misurarlo?

Risposte:


41

C

SVM è un'implementazione approssimativa di un limite sull'errore di generalizzazione, che dipende dal margine (essenzialmente la distanza dal confine di decisione al modello più vicino da ciascuna classe), ma è indipendente dalla dimensionalità dello spazio delle caratteristiche (motivo per cui usare il trucco del kernel per mappare i dati in uno spazio di dimensioni molto alte non è una cattiva idea come potrebbe sembrare). Quindi, in linea di principio, le SVM dovrebbero essere altamente resistenti all'adattamento eccessivo, maC

GC Cawley e NLC Talbot, Prevenire un eccesso di adattamento nella selezione del modello tramite regolarizzazione bayesiana degli iperparametri, Journal of Machine Learning Research, volume 8, pagine 841-861, aprile 2007. ( www )

e

GC Cawley e NLC Talbot, Over-fitting nella selezione dei modelli e conseguente bias nella selezione delle prestazioni, Journal of Machine Learning Research, 2010. Research, vol. 11, pp. 2079-2107, luglio 2010. ( www )

Entrambi questi articoli usano la regressione della cresta del kernel, piuttosto che l'SVM, ma lo stesso problema sorge altrettanto facilmente con gli SVM (anche limiti simili si applicano al KRR, quindi non c'è molto da scegliere tra loro in pratica). Quindi, in un certo senso, le SVM non risolvono davvero il problema del sovra-adattamento, ma spostano il problema dall'adattamento del modello alla selezione del modello.

Spesso è una tentazione rendere la vita un po 'più semplice per SVM eseguendo prima una sorta di selezione delle funzionalità. Questo generalmente peggiora le cose, come diversamente dall'SVM, gli algoritmi di selezione delle caratteristiche tendono a mostrare un eccesso di adattamento all'aumentare del numero di attributi. A meno che non si desideri sapere quali sono gli attributi informativi, in genere è meglio saltare il passaggio di selezione delle funzionalità e utilizzare la regolarizzazione per evitare di adattare eccessivamente i dati.

In breve, non vi è alcun problema inerente all'utilizzo di un SVM (o altro modello regolarizzato come regressione della cresta, LARS, Lazo, rete elastica ecc.) Su un problema con 120 osservazioni e migliaia di attributi, a condizione che i parametri di regolarizzazione siano sintonizzati correttamente .


Esistono documenti che mostrano metodi di selezione delle funzionalità come la classificazione basata sul guadagno delle informazioni hanno maggiori probabilità di sovralimentarsi?
user13420,

1
Non che io sappia, il punto era che l'SVM ha alcuni risultati teorici che suggeriscono che sono resistenti alla sovra-adattamento a causa del numero di attributi, ma i metodi di selezione delle caratteristiche non lo hanno nemmeno. FWIW, la monografia di Miller su "selezione di sottoinsiemi in regressione" consiglia di utilizzare i metodi di regolarizzazione se tutto ciò che è richiesto è la previsione. Ci sono state alcune sfide aperte nella selezione delle funzionalità, che suggeriscono che la regolarizzazione tende a sovraperformare la selezione delle funzionalità (vedere nipsfsc.ecs.soton.ac.uk e causality.inf.ethz.ch/challenge.php ).
Dikran Marsupial,

Come indicato nel primo paragrafo, le SVM tendono ad essere resistenti all'adattamento eccessivo, è che utilizza la regolarizzazione (parametro C) , quindi per impostazione predefinita, svmquesti parametri di regolarizzazione C ? E non sono sicuro di quali variabili siano controllate da questa C , intendi quelle variabili lente ?
avocado,

10

Inizierò con la seconda e l'ultima domanda.

Il problema della generalizzazione è ovviamente importante, perché se i risultati dell'apprendimento automatico non possono essere generalizzati, sono completamente inutili.

I metodi per garantire la generalizzazione provengono dalle statistiche. Di solito assumiamo che i dati siano generati da una distribuzione di probabilità che ha origine nella realtà. Ad esempio, se sei un maschio nato nell'anno 2000, allora c'è una distribuzione di probabilità di quale sia il tuo peso / altezza / colore degli occhi quando raggiungi 10, che risulta dal pool genico disponibile nell'anno 2000, possibili fattori ambientali ecc. Se abbiamo molti dati, possiamo dire qualcosa su quelle distribuzioni sottostanti, ad esempio che con alta probabilità sono gaussiane o multinomiali. Se abbiamo un quadro accurato delle distribuzioni, quindi data l'altezza, il peso e il colore degli occhi di un bambino di 10 anni nel 2010, possiamo ottenere una buona approssimazione della probabilità che il bambino sia maschio. E se la probabilità è vicina a 0 o 1, possiamo avere una buona idea di cosa sia veramente il sesso dei bambini.

KδK+εK+ε

Ora torniamo a SVM. Se non usi i kernel o i kernel che mappano in spazi di dimensioni finite, la cosiddetta dimensione di Vapnik-Chervonenkis, che è una misura della complessità dello spazio di ipotesi, è limitata e con quello e abbastanza esempi di allenamento puoi ottenerlo con è probabile che l'errore sul set di test non sia molto più grande dell'errore sul set di allenamento. Se usi kernel che mappano in spazi di caratteristiche a dimensione infinita, allora anche la dimensione di Vapnik-Chervonenkis è infinita e, peggio ancora, i campioni di addestramento da soli non possono garantire una buona generalizzazione, indipendentemente dal numero di essi. Fortunatamente, la dimensione del margine di un SVM risulta essere un buon parametro per garantire la generalizzazione. Con un ampio margine e un set di allenamento, puoi garantire che l'errore del test non sarà molto più grande dell'errore di allenamento.


7

Ci sono almeno due principali fonti di overfitting che potresti prendere in considerazione.

  1. Overfitting da un algoritmo che ha dedotto troppo dai campioni di training disponibili. È meglio proteggerlo empiricamente usando una misura della capacità di generalizzazione del modello. La convalida incrociata è uno di questi metodi popolari.

  2. Overfitting perché la distribuzione sottostante è sottocampionata. Di solito c'è poco che si può fare al riguardo a meno che non sia possibile raccogliere più dati o aggiungere conoscenze di dominio sul problema al proprio modello.

Con 120 campioni e un gran numero di funzioni è molto probabile che tu possa cadere in fallo di 2 e che potresti anche essere incline a 1.

Puoi fare qualcosa su 1 osservando attentamente l'effetto della complessità del modello sugli errori di test e di addestramento.


Ma come rileviamo se ci stiamo adattando troppo? Se i modelli funzionano abbastanza bene nella validazione incrociata, lo stanno facendo perché è effettivamente buono o a causa di un overfitting dovuto a 1 o 2? Inoltre, con migliaia di funzioni, analizzarle a mano sarebbe ingombrante. Se non è possibile identificare un overfitting, come possiamo fidarci di qualsiasi risultato di validazione incrociata?
user13420,

1
Senza dati aggiuntivi, è molto difficile sapere se si è troppo adatti a una popolazione sottocampionata. È possibile dividere i dati in tre set utilizzando un set di convalida per ottimizzare il modello e quindi un set di test separato per testarlo. Un altro approccio è quello di modificare la complessità del modello e vedere come variano l'accuratezza dei set di training e test. Un aumento dell'errore del set di test indicherà un certo grado di overfitting del modello dai dati.
image_doctor,

Applicare ripetute prove 50/50 di holdout ti darà una sensazione se gli allenamenti e i set di test sono bilanciati. Probabilmente non lo saranno. Alcuni modelli, come KNN, raggiungeranno la massima precisione sul set di allenamento, quindi sono intrinsecamente sovradimensionati in un certo senso. Ma possono comunque ottenere prestazioni accettabili sul set di test. Così come per gran parte dell'apprendimento automatico, alla fine tutto dipende dalle specifiche precise dei dati.
image_doctor,

@image_doctor Puoi approfondire "modificare la complessità del modello"?
Keith Hughitt il
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.