Quali sono i limiti dei metodi del kernel e quando utilizzare i metodi del kernel?


10

I metodi del kernel sono molto efficaci in molte attività di classificazione supervisionate. Quindi quali sono i limiti dei metodi del kernel e quando usare i metodi del kernel? Soprattutto nell'era dei dati su larga scala, quali sono i progressi dei metodi del kernel? Qual è la differenza tra i metodi del kernel e l'apprendimento di più istanze? Se i dati sono 500x10000, 500è il conteggio dei campioni ed 10000è la dimensione di ogni caratteristica, quindi in questa circostanza, possiamo usare i metodi del kernel?

Risposte:


16

I metodi del kernel possono essere utilizzati per problemi supervisionati e non controllati. Esempi ben noti sono rispettivamente la macchina vettoriale di supporto e il clustering spettrale del kernel .

I metodi del kernel forniscono un modo strutturato per utilizzare un algoritmo lineare in uno spazio di funzionalità trasformato, per il quale la trasformazione è in genere non lineare (e in uno spazio dimensionale superiore). Il vantaggio principale che questo cosiddetto trucco del kernel comporta è che i modelli non lineari possono essere trovati a un costo computazionale ragionevole .

Si noti che ho detto che il costo computazionale è ragionevole, ma non trascurabile. I metodi del kernel in genere creano una matrice del kernel con il numero di istanze di training. La complessità dei metodi del kernel è quindi una funzione del numero di istanze di training, piuttosto che del numero di dimensioni di input. Le macchine vettoriali di supporto, ad esempio, hanno una complessità di addestramento tra e . Per problemi con molto grande , questa complessità è attualmente proibitiva. N O ( N 2 ) O ( N 3 ) NKRN×NNO(N2)O(N3)N

Questo rende i metodi del kernel molto interessanti dal punto di vista computazionale quando il numero di dimensioni è grande e il numero di campioni è relativamente basso (diciamo, meno di 1 milione).

Correlati: kernel lineare e kernel non lineare per la macchina vettoriale di supporto?

SVM per problemi su larga scala

Per problemi di dimensioni molto elevate, come le 10000dimensioni menzionate nella domanda, spesso non è necessario eseguire il mapping a uno spazio di caratteristiche di dimensione superiore. Lo spazio di input è già abbastanza buono. Per tali problemi, i metodi lineari sono ordini di grandezza più veloci con quasi le stesse prestazioni predittive. Esempi di questi metodi sono disponibili in LIBLINEAR o Vowpal Wabbit .

I metodi lineari sono particolarmente interessanti quando si hanno molti campioni in uno spazio di input ad alta dimensione. Quando hai solo campioni, anche usare un metodo del kernel non lineare sarà economico (dato che è piccolo). Se avessi, per esempio, campioni in dimensioni, i metodi del kernel sarebbero impossibili.N 5.000.000 10.000500N5.000.00010.000

Per problemi a bassa dimensione con molte istanze di allenamento (i cosiddetti problemi piccoli piccoli ), i metodi lineari possono produrre una scarsa precisione predittiva. Per tali problemi, metodi di ensemble come EnsembleSVM forniscono limiti di decisione non lineari a costi di calcolo significativamente ridotti rispetto alla SVM standard.pNp


Mille grazie per le risposte così dettagliate, signore. Ho trovato in circostanze di dimensioni elevate, se uso il RBFkernel libsvm, è sempre troppo adatto, il classificatore raggiunge un'alta precisione ma una bassa accuratezza nel set di test. E se eseguo la riduzione delle dimensioni prima del classificatore e le dimensioni ridotte si avvicinano al numero di campioni di training, il classificatore potrebbe ottenere un buon profitto tra training e set di test. I risultati corrispondono ai risultati più empirici? Grazie.
mining

I metodi del kernel sono abbastanza robusti rispetto all'elevata dimensionalità dell'input. In genere, non è necessario eseguire la riduzione della dimensionalità prima di utilizzarli. È molto importante ottimizzare tutti i parametri, in particolare gammaper il kernel RBF. Il valore ottimale per gammaè correlato al numero di dimensioni di input. L'approccio di ottimizzazione più comune è la convalida incrociata. Se hai utilizzato lo stesso valore gammacon e senza riduzione della dimensionalità, probabilmente stai commettendo un errore.
Marc Claesen,

Si signore. Io di solito uso l' grid.pynel libsvmpacchetto per fare la convalida incrociata. E nella maggior parte dei casi, per dati di dimensioni elevate, gammasempre molto piccoli, come 0.00001questo livello.
mining

Salve, signore, ho verificato il suo progetto open source EnsembleSVM, deve rendere multithreading la procedura di convalida incrociata? E penso nella fase di previsione, sarà positivo prevedere gli enormi dati in batch e multithreading o multi machine?
mining

L'uso del multithreading è facoltativo in EnsembleSVM, ma abilitato per impostazione predefinita in esvm-traine esvm-predict. Per disabilitare il multithreading, utilizzare il seguente bandiera in questi strumenti: -threads 1.
Marc Claesen,
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.