Selezione dei parametri SVM


9

Esistono metodi alternativi migliori per scegliere C e Gamma che offrono migliori prestazioni di allenamento?

Risposte:


5

La ricerca della griglia è lenta in quanto impiega molto tempo a studiare le impostazioni di iperparametri che non sono quasi ottimali. Una soluzione migliore è l' algoritmo simplex Nelder-Mead , che non richiede il calcolo delle informazioni sul gradiente ed è semplice da implementare (dovrebbero esserci abbastanza informazioni sulla pagina di Wikipedia). Potrebbe esserci anche del codice java nella casella degli strumenti di Weka , tuttavia lavoro in MATLAB e non ho esaminato Weka in alcun dettaglio.

SMO è un algoritmo per trovare i parametri del modello, piuttosto che gli iperparametri.


Potresti fornire la tua implementazione matlab?
Zach,

1
Ce n'è uno qui theoval.cmp.uea.ac.uk/matlab/#optim ma se hai già la toolbox di ottimizzazione, fminsearch è anche un'implementazione del metodo Nelder-Mead IIRC.
Dikran Marsupial,

5

Il metodo simplex Nelder-Mead può comportare tutte le valutazioni delle funzioni di una semplice ricerca della griglia. Di solito la superficie dell'errore è abbastanza liscia vicino ai valori dei parametri ottimali che una ricerca di griglia grossolana seguita da una ricerca più fine in una regione più piccola dovrebbe essere sufficiente.

Se sei interessato all'ottimizzazione basata su gradiente di C e gamma, esistono metodi come l'ottimizzazione dei limiti del margine del raggio o l'ottimizzazione del tasso di errore in un set di convalida. Il calcolo del gradiente della funzione obiettivo implica qualcosa come un treno SVM, ma una semplice discesa del gradiente può comportare solo poche decine di iterazioni. (Guarda http://olivier.chapelle.cc/ams/ per un articolo e un'implementazione di Matlab.)


Nella mia esperienza, nelder-mead è di solito più veloce della ricerca della griglia e la discesa del gradiente è solo leggermente più veloce perché richiede meno iterazioni, il costo del calcolo del gradiente è alto. Quindi, se hai un'implementazione che fornisce una discesa gradiente, allora usala, ma Nelder-Mead probabilmente non sarà molto indietro. Naturalmente non appena si hanno più di due iperparametri per ottimizzare la ricerca della griglia diventa immediatamente il metodo più lento. Sarebbe interessante vedere uno studio delle efficienze comparative di ciascun metodo.
Dikran Marsupial,

Hai ragione se il numero di parametri è superiore a una coppia, la ricerca della griglia non è praticabile. Lo stesso vale per Nelder-Mead, perché la dimensione del simplex è determinata dalla dimensionalità.
Innuo,

solo nella stessa misura della discesa del gradiente, l'aggiunta di una dimensione aggiuntiva al problema aggiunge solo un punto in più al simplex, quindi come la discesa del gradiente si ridimensiona approssimativamente in modo lineare nel numero di iperparametri. L'ho usato con problemi con oltre 40 iperparametri ed è solo leggermente più lento della discesa del gradiente (si tende a ottenere un adattamento eccessivo nella selezione del modello in entrambi i modi, sebbene con così tanti iperparametri).
Dikran Marsupial,

0

Ecco una voce nel blog di Alex Smola relativa alla tua domanda

Ecco una citazione:

[...] scegli, diciamo 1000 coppie (x, x ') a caso dal tuo set di dati, calcola la distanza di tutte queste coppie e prendi la mediana, lo 0,1 e lo 0,9 quantile. Ora scegli λ come inverso uno di questi tre numeri. Con un po 'di crossvalidation scoprirai quale dei tre è il migliore. Nella maggior parte dei casi non sarà necessario effettuare ulteriori ricerche.

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.