Dovrei usare il trucco del kernel ogni volta che è possibile per i dati non lineari?


13

Di recente ho appreso sull'uso del trucco del kernel, che mappa i dati in spazi di dimensioni superiori nel tentativo di linearizzare i dati in quelle dimensioni. Ci sono casi in cui dovrei evitare di usare questa tecnica? È solo una questione di trovare la giusta funzione del kernel?

Per i dati lineari questo ovviamente non è utile, ma per i dati non lineari, questo sembra sempre utile. L'uso di classificatori lineari è molto più semplice di non lineare in termini di tempo di allenamento e scalabilità.

Risposte:


8

Per i dati lineari questo ovviamente non è utile, ma per i dati non lineari, questo sembra sempre utile. L'uso di classificatori lineari è molto più semplice di non lineare in termini di tempo di allenamento e scalabilità.

@BartoszKP ha già spiegato perché è utile il trucco del kernel. Per rispondere pienamente alla tua domanda, tuttavia, vorrei sottolineare che la kernelizzazione non è l'unica opzione per gestire dati non linearmente separabili.

Esistono almeno tre alternative valide e comuni per la delinearizzazione del modello:

  • Metodi neutri basati su rete, in cui si aggiungono uno (o più) livelli di unità di elaborazione, in grado di trasformare i dati in un caso separabile linearmente. Nel caso più semplice si tratta di uno strato basato su sigmoide, che aggiunge non linearità al processo. Una volta inizializzati casualmente, ottengono aggiornamenti durante l'ottimizzazione basata sul gradiente dello strato superiore (che risolve effettivamente il problema lineare).
  • In particolare, qui è possibile utilizzare tecniche di apprendimento profondo per preparare i dati per un'ulteriore classificazione lineare. È un'idea molto simile alla precedente, ma qui si allenano prima i livelli di elaborazione al fine di trovare un buon punto di partenza per un'ulteriore messa a punto basata sull'addestramento di alcuni modelli lineari.
  • Proiezioni casuali: è possibile campionare proiezioni (non lineari) da alcuni spazi predefiniti e formare al loro interno un classificatore lineare. Questa idea è fortemente sfruttata nel cosiddetto machine learning estremo , in cui solutori lineari molto efficienti sono usati per addestrare un semplice classificatore su proiezioni casuali e ottenere ottime prestazioni (su problemi non lineari sia in classificazione che in regressione, vedi ad esempio l' apprendimento estremo macchine ).

Per riassumere: la kernelizzazione è una grande tecnica di delinearizzazione, e puoi usarla quando il problema non è lineare, ma questo non dovrebbe essere cieco "se poi" valutare. Questo è solo uno dei metodi meno interessanti, che può portare a vari risultati, a seconda del problema e dei requisiti. In particolare, ELM tende a trovare soluzioni molto simili a quelle fornite da SVM con kernel mentre allo stesso tempo può essere addestrato file di grandezza più velocemente (quindi si ingrandisce molto meglio di SVM con kernel).


10

Il prezzo da pagare per il trucco del kernel in generale, per i metodi lineari, ha limiti di generalizzazione peggiori. Per un modello lineare la sua dimensione VC è anche lineare in termini di numero di dimensioni (ad es. La dimensione VC per un Perceptron è d + 1).

Ora, se eseguirai una trasformazione non lineare complessa in uno spazio ad alta dimensione, la dimensione VC del tuo set di ipotesi è significativamente più grande, poiché ora è lineare in termini di numero di dimensioni nel nuovo spazio ad alta dimensione. E con esso, il limite della generalizzazione sale.

Support Vector Machines sfrutta il trucco del kernel nel modo più efficiente, facendo due cose:


1
"è anche lineare in termini di numero di pesi" in termini di dimensione dello spazio, non di numero di pesi. Puoi avere un classificatore lineare parametrizzato con tutti i pesi che vuoi, ma la sua dimensione VC è ancora d + 1 (dove d è la dimensionalità dello spazio). "la dimensione VC per i modelli SVM è correlata al numero di vettori di supporto" In che modo la dimensione VC è rappresentata esattamente dal numero di SV? Sono consapevole del limite del margine duro, ma nel caso del margine morbido non esiste una relazione del genere. Anche nei limiti di complessità di Radamacher non troverai il numero di SV come variabile.
lejlot,

Anche "quindi è irrilevante quanto" grande "sia lo spazio di destinazione del kernel, non perdi nulla in termini di limite di generalizzazione" per quanto ne so completamente falso. Spazi ad alta dimensione porteranno a perdere capacità di generalizzazione, anche con un modello fortemente regolarizzato come SVM.
lejlot,

1
@lejlot Grazie, ho corretto i primi due errori. Ho bisogno di un po 'di tempo per relazionarmi con le tue ultime due osservazioni: cercherò di migliorare la risposta e fornire alcune fonti, dopo aver ricontrollato le mie informazioni :)
BartoszKP

1
Ora è quasi corretto, ma qual è la ragione per cui si presume che la dimensione dello spazio del kernel sia irrilevante? Prendi qualsiasi set di dati, esegui un SVM con kernel RBF e C-> inf e ti mancherai troppo. Non è così semplice Il numero di dimensioni nello spazio caratteristiche è rilevante , ma può essere controllato con C (come limite superiore dei moltiplicatori di lagrange). In particolare, la dimensione VC per SVM con RBF è infinita e il limite di generalizzazione (di Vapnik) è inutile (Radamacher potrebbe funzionare ma questa è una storia completamente diversa).
Lejlot,

1
@lejlot Ho fornito un altro riferimento: forniscono esplicitamente un limite per il caso del margine morbido e non dipende dal numero di dimensioni.
BartoszKP

6

Proverò a fornire una risposta non tecnica alla tua domanda.

In effetti, si dovrebbe preferire la linearità e dovrebbe essere la prima scelta per i motivi menzionati, tempo di addestramento, scalabilità, oltre a facilità di interpretazione del modello finale, scelta di lavorare su primari o doppi, maggiore tolleranza ai sovralimentazione ecc.

Se il modello lineare non offre prestazioni soddisfacenti, è possibile provare soluzioni non lineari. Alcuni compromessi da considerare includono:

  • la scelta del kernel. Questo non è ovvio, di solito è necessario testare diverse opzioni
  • c'è il pericolo di sovralimentare il set di allenamento. In realtà è abbastanza facile da indossare se si desidera. Per evitare un eccesso di adattamento è necessario un quadro di valutazione più forte (è necessario misurare la varianza / stabilità delle prestazioni su dati invisibili) e sono necessari dati sufficienti per poter effettuare una corretta selezione del modello
  • lavori sul doppio e quindi non puoi interpretare il modello finale, cioè non puoi affermare che la funzione X sia più importante della funzione Y ecc.
  • il tempo di formazione aumenta con il volume di dati (meno con il numero di funzioni poiché è nella doppia)

Questa è un'intuizione interessante sul "lavorare con il doppio" che porta all'incapacità di rivendicare l'importanza delle funzionalità. Vuoi avere qualche riferimento al materiale che spiega ulteriormente?
javadba,
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.