Kernel lineare e kernel non lineare per supporto vettoriale macchina?


45

Quando si utilizza la macchina vettoriale di supporto, esistono delle linee guida per la scelta del kernel lineare rispetto al kernel non lineare, come RBF? Una volta ho sentito che il kernel non lineare tende a non funzionare bene quando il numero di funzionalità è grande. Ci sono riferimenti su questo problema?


1
secondo la mia saggezza, ciò si basa sul problema attuale ed è pericoloso usare tali timpani in pratica.
htrahdis,

Risposte:


66

Di solito, la decisione è se usare un kernel lineare o RBF (aka gaussiano). Ci sono due fattori principali da considerare:

  1. Risolvere il problema di ottimizzazione per un kernel lineare è molto più veloce, vedi ad es. LIBLINEAR.
  2. Tipicamente, le migliori prestazioni predittive possibili sono migliori per un kernel non lineare (o almeno buono come quello lineare).

È stato dimostrato che il kernel lineare è una versione degenerata di RBF , quindi il kernel lineare non è mai più preciso di un kernel RBF correttamente regolato. Citando l'abstract dall'articolo che ho collegato:

L'analisi indica anche che se è stata condotta la selezione completa del modello usando il kernel gaussiano, non è necessario considerare SVM lineare.

Una regola empirica di base è brevemente trattata nella guida pratica di NTU per supportare la classificazione dei vettori (Appendice C).

Se il numero di funzioni è elevato, potrebbe non essere necessario mappare i dati su uno spazio dimensionale più elevato. Cioè, la mappatura non lineare non migliora le prestazioni. L'uso del kernel lineare è abbastanza buono e si cerca solo il parametro C.

La tua conclusione è più o meno giusta ma hai l'argomento al contrario. In pratica, il kernel lineare tende a funzionare molto bene quando il numero di funzioni è elevato (ad es. Non è necessario mappare su uno spazio di caratteristiche dimensionale ancora più elevato). Un tipico esempio di ciò è la classificazione dei documenti, con migliaia di dimensioni nello spazio di input.

In questi casi, i kernel non lineari non sono necessariamente significativamente più accurati di quello lineare. Questo in pratica significa che i kernel non lineari perdono il loro fascino: richiedono molte più risorse per allenarsi con un guadagno minimo o nullo nelle prestazioni predittive, quindi perché preoccuparsi.

TL; DR

Prova sempre prima lineare poiché è molto più veloce allenarsi (AND test). Se la precisione è sufficiente, tamponati sulla schiena per un lavoro ben fatto e passa al problema successivo. Altrimenti, prova un kernel non lineare.


1
Ho questa spiegazione per il trucco del kernel: stats.stackexchange.com/questions/131138/…

37

Andrew Ng dà una bella spiegazione della regola empirica in questo video a partire dalle 14:46, anche se vale la pena guardare l'intero video.

Punti chiave

  • Usa il kernel lineare quando il numero di funzionalità è maggiore del numero di osservazioni.
  • Usa il kernel gaussiano quando il numero di osservazioni è maggiore del numero di funzioni.
  • Se il numero di osservazioni è maggiore di 50.000 velocità potrebbe essere un problema quando si utilizza il kernel gaussiano; quindi, si potrebbe voler usare il kernel lineare.

concordato ................
datmannz,

1
il link è morto: penso che questo sia lo stesso video: youtube.com/watch?v=hDh7jmEGoY0
ihebiheb
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.