La differenza dei kernel in SVM?


27

Qualcuno può dirmi la differenza tra i kernel in SVM:

  1. Lineare
  2. Polinomio
  3. Gaussiano (RBF)
  4. sigmoid

Perché, come sappiamo, il kernel viene utilizzato per mappare il nostro spazio di input nello spazio di funzionalità ad alta dimensionalità. E in quello spazio delle caratteristiche, troviamo il confine linearmente separabile.

Quando vengono utilizzati (a quali condizioni) e perché?

Risposte:


4

Il kernel lineare è quello che ti aspetteresti, un modello lineare. Credo che il kernel polinomiale sia simile, ma il confine è di un ordine definito ma arbitrario

(es. ordine 3: ).un'=B1+B2X+B3X2+B4X3

RBF utilizza curve normali attorno ai punti dati e le somma in modo che il limite di decisione possa essere definito da un tipo di condizione di topologia come le curve in cui la somma è superiore a un valore di 0,5. (vedi questa foto )

Non sono sicuro di cosa sia il kernel sigmoid, a meno che non sia simile al modello di regressione logistica in cui una funzione logistica viene utilizzata per definire le curve in base a dove il valore logistico è maggiore di un valore (probabilità di modellazione), come 0,5 come il normale Astuccio.


Quindi, possiamo ottenere l'iperpiano separabile più sottile (confine), se usiamo il kernel lineare ?? e se usiamo il kernel polinomiale o RBF, l'hyperane (per polinomio) potrebbe essere un cerchio di classi raggruppate (per RBF) e curve ?? è giusto?? scikit-learn.org/stable/modules/svm.html
user3378327

Ognuno dei kernals lavora per versioni ad alta dimensione dei rispettivi confini. Questo risponde alla tua domanda? Non sei limitato a tre dimensioni per qualsiasi kernel di cui sono a conoscenza.
John Yetter,

Voglio solo chiarirlo. Quindi il limite usando il kernel lineare è lineare? Per RBF è come un cerchio di classe raggruppata ?? e per il polinomio, può essere curva in base al grado del polinomio ??
user3378327

Non direi che RBF è un circolo di classe raggruppata. La mia comprensione è che applica una funzione basata su una distribuzione normale in ciascun punto di dati e somma queste funzioni. Quindi un confine è formato dalla curva che rappresenta un certo valore su quella funzione. Se qualcuno che ha contribuito a una libreria SVM potesse intervenire, ciò potrebbe aiutare. Penso che la tua comprensione degli altri due kernel sia corretta.
John Yetter,

U ha detto che Linier Kernel è quello che mi aspettavo (per ottenere una classe separabile in modo sottile) usando Kernel. e usando il classificatore SVM, lo abbiamo chiamato LINIER SVM. Ma come se potessimo ottenere i dati separabili più piccoli senza alcun kernel in SVM. Come lo chiamiamo ?? Ancora Linier SVM o Non Linier SVM ??
user3378327

11

Basandosi sulla conoscenza di base del lettore sui kernel.

K(X,Y)=XTY

K(X,Y)=(γXTY+r)d,γ>0

K(X,Y)=exp(X-Y2/2σ2)exp(-γX-Y2),γ>0

Kernel sigmoideo: che è simile alla funzione sigmoide nella regressione logistica.K(X,Y)=tanh(γXTY+r)

Qui , e sono parametri del kernel.rdγ


3
Mentre le informazioni nella tua risposta sono corrette, non credo che risponda alla domanda qui sollevata, che è più verso quale sia la differenza pratica tra loro, cioè quando usare l'uno o l'altro.
Firebug,

1
Sorprendentemente queste semplici definizioni sono difficili da trovare. Dovrebbero essere la prima cosa presentata quando si parla di differenze di kernel, eppure c'è un diffuso fallimento nel dichiararle.
cammil,

Esiste una fonte ufficiale per questi? (Li ho testati e sembrano corretti, ma mi piacerebbe poterli citare.)
Christian Eriksson

6

A questa domanda si può rispondere dal punto di vista teorico e pratico. Dal teorico secondo il teorema del pranzo libero, si afferma che non ci sono garanzie che un kernel funzioni meglio dell'altro. Questo è a priori che non sai mai né puoi scoprire quale kernel funzionerà meglio.

Dal punto di vista pratico consultare la seguente pagina:

Come selezionare il kernel per SVM?


1

Riflettendo su ciò che un kernel è "buono" o quando dovrebbe essere usato, non ci sono regole rigide e veloci.

Se il tuo classificatore / regressore funziona bene con un dato kernel, è opportuno, in caso contrario, considerare di passare a un altro.

Informazioni su come potrebbe funzionare il tuo kernel, in particolare se si tratta di un modello di classificazione, potrebbero essere acquisite esaminando alcuni esempi di visualizzazione, ad esempio https://gist.github.com/WittmannF/60680723ed8dd0cb993051a7448f7805

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.