Come selezionare il kernel per SVM?


96

Quando si utilizza SVM, è necessario selezionare un kernel.

Mi chiedo come selezionare un kernel. Qualche criterio sulla selezione del kernel?


1
qual è la dimensione del problema? (#variabili, osservazioni)?
user603

1
Sto solo chiedendo una soluzione generalizzata, nessun problema particolare specificato
xiaohan2012

Risposte:


55

Il kernel è effettivamente una misura di somiglianza, quindi è una buona idea scegliere un kernel in base alla conoscenza precedente delle invarianze come suggerito da Robin (+1).

In assenza di conoscenze specialistiche, il kernel della funzione di base radiale crea un buon kernel predefinito (una volta stabilito che si tratta di un problema che richiede un modello non lineare).

La scelta dei parametri del kernel e del kernel / regolarizzazione può essere automatizzata ottimizzando una selezione del modello basata sulla valdiazione incrociata (o usando i margini di raggio o span). La cosa più semplice da fare è minimizzare un criterio di selezione del modello continuo usando il metodo simplex Nelder-Mead, che non richiede il calcolo del gradiente e funziona bene con numeri sensibili di iperparametri. Se hai più di alcuni iperparametri da mettere a punto, è probabile che la selezione automatica del modello provochi un eccessivo adattamento, a causa della varianza del criterio di selezione del modello. È possibile utilizzare l'ottimizzazione basata sul gradiente, ma il guadagno prestazionale di solito non vale lo sforzo di codificarlo).

La scelta automatizzata di kernel e parametri kernel / regolarizzazione è un problema complicato, in quanto è molto facile sovrautilizzare il criterio di selezione del modello (in genere basato sulla convalida incrociata) e puoi finire con un modello peggiore di quello che hai iniziato. La selezione automatica del modello può anche influenzare la valutazione delle prestazioni, quindi assicurati che la tua valutazione delle prestazioni valuti l'intero processo di adattamento del modello (formazione e selezione del modello), per i dettagli, vedi

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. (pdf)

e

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


1
Capisco come la base radiale sia una misura di somiglianza poiché è quasi 0 per i vettori molto distanti tra loro e raggiunge il massimo su vettori identici. Tuttavia, non vedo come questa idea si applichi all'algoritmo lineare (usando il prodotto dot come kernel). Come possiamo interpretare il prodotto punto come una misura di somiglianza?
Bananin,

1
@Bananin il prodotto punto può essere scritto come il prodotto della grandezza dei due vettori volte il coseno dell'angolo tra di loro, quindi puoi pensarlo come misurare la somiglianza in termini di direzione dei vettori (ma ovviamente anche dipendente sulle loro magnitudini)
Dikran Marsupial

35

Se non sei sicuro di quale sarebbe la soluzione migliore, puoi utilizzare tecniche di selezione automatiche (ad es. Validazione incrociata, ...). In questo caso puoi anche usare una combinazione di classificatori (se il tuo problema è la classificazione) ottenuti con kernel diversi.

Tuttavia , il "vantaggio" di lavorare con un kernel è che si modifica la solita geometria "euclidea" in modo che si adatti al proprio problema. Inoltre, dovresti davvero cercare di capire qual è l'interesse di un kernel per il tuo problema, cosa è particolare della geometria del tuo problema . Questo può includere:

  • Invarianza : se c'è una famiglia di trasformazioni che non cambia sostanzialmente il tuo problema, il kernel dovrebbe riflettere questo. L'invarianza per rotazione è contenuta nel kernel gaussiano, ma puoi pensare a molte altre cose: traduzione, homothetie, qualsiasi rappresentazione di gruppo, ....
  • Cos'è un buon separatore? se hai un'idea di cosa sia un buon separatore (cioè una buona regola di classificazione) nel tuo problema di classificazione, questo dovrebbe essere incluso nella scelta del kernel. Ricorda che SVM ti darà classificatori del modulo

f^(X)=Σio=1nλioK(X,Xio)

K(X,Xio)=X,UNXio+c


Nella tua risposta, hai affermato che "Il" vantaggio "di lavorare con un kernel è che cambi la solita geometria" euclidea "in modo che si adatti al tuo problema. Inoltre, dovresti davvero cercare di capire qual è l'interesse di un kernel per il tuo problema, ciò che è particolare per la geometria del tuo problema. " Puoi dare alcuni riferimenti per cominciare. Grazie.
Raihana,

12

Ho sempre la sensazione che qualsiasi selezione di iperparametri per SVM venga effettuata tramite validazione incrociata in combinazione con la ricerca della griglia.


2
Ho la stessa sensazione
xiaohan2012

2
la ricerca della griglia è una cattiva idea, trascorri molto tempo a cercare in aree in cui le prestazioni sono cattive. Usa algoritmi di ottimizzazione senza gradiente, come il metodo simplex Nelder-Mead, che è molto più efficiente in pratica (ad esempio fminsearch () in MATLAB).
Dikran Marsupial,

No, utilizzare modelli grafici o processi gaussiani per l'ottimizzazione globale in combinazione con le informazioni previste. (Vedi "Algoritmi per l'ottimizzazione dell'iperparametro", Bergstra et al, NIPS di prossima pubblicazione)
bayerj

3

In generale, il kernel RBF è una prima scelta ragionevole. Inoltre, il kernel lineare è un caso speciale di RBF, in particolare, quando il numero di funzionalità è molto elevato, si può semplicemente usare il kernel lineare.


2
Dipende dal fatto che i tuoi dati siano separabili linearmente o meno, non dal numero di dimensioni che hai. Quando il numero di funzioni è molto elevato, (sempre in base ai dati), si applica prima la riduzione della dimensionalità, PCA o LDA (varianti del kernel lineari o non lineari)
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.