Come funziona una Support Vector Machine (SVM)?


108

Come funziona una macchina Support Vector (SVM) di lavoro, e ciò che lo differenzia dagli altri classificatori lineari, come ad esempio il Perceptron Lineare , Lineare Analisi Discriminante , o regressione logistica ? *

(* Sto pensando in termini di motivazioni alla base dell'algoritmo, strategie di ottimizzazione, capacità di generalizzazione e complessità di runtime )



Risposte:


126

Le macchine vettoriali di supporto si concentrano solo sui punti più difficili da distinguere, mentre altri classificatori prestano attenzione a tutti i punti.

L'intuizione dietro l'approccio della macchina vettoriale di supporto è che se un classificatore è buono nei confronti più difficili (i punti in B e A che sono più vicini tra loro nella Figura 2), allora il classificatore sarà ancora migliore nei confronti facili ( confrontare i punti in B e A che sono molto distanti tra loro).

Perceptron e altri classificatori:

Perceptrons sono costruiti prendendo un punto alla volta e regolando la linea di divisione di conseguenza. Non appena tutti i punti vengono separati, l'algoritmo perceptron si interrompe. Ma potrebbe fermarsi ovunque. La Figura 1 mostra che ci sono un sacco di diverse linee di divisione che separano i dati. I criteri di arresto del percettrone sono semplici: "separa i punti e smetti di migliorare la linea quando ottieni una separazione del 100%". Al percettrone non viene esplicitamente detto di trovare la migliore linea di separazione. La regressione logistica e i modelli discriminanti lineari sono costruiti in modo simile ai percettroni.

La migliore linea di divisione massimizza la distanza tra i punti B più vicini ad A e i punti A più vicini a B. Non è necessario guardare tutti i punti per farlo. In effetti, incorporare il feedback da punti lontani può far saltare la linea un po 'troppo lontano, come visto di seguito.

inserisci qui la descrizione dell'immagine

Supporto macchine vettoriali:

A differenza di altri classificatori, alla macchina vettoriale di supporto viene esplicitamente detto di trovare la migliore linea di separazione. Come? La macchina vettore di supporto cerca i punti più vicini (Figura 2), che chiama i "vettori di supporto" (il nome "macchina vettore di supporto" è dovuto al fatto che i punti sono come vettori e che la linea migliore "dipende" o è "supportato da" i punti più vicini).

Una volta individuati i punti più vicini, SVM traccia una linea che li collega (vedere la linea etichettata 'w' nella Figura 2). Disegna questa linea di collegamento eseguendo la sottrazione vettoriale (punto A - punto B). La macchina vettoriale di supporto dichiara quindi che la migliore linea di separazione è la linea che taglia in due - ed è perpendicolare alla - linea di collegamento.

La macchina vettoriale di supporto è migliore perché quando ottieni un nuovo campione (nuovi punti), avrai già creato una linea che mantiene B e A il più lontano possibile l'uno dall'altro, e quindi è meno probabile che uno si sparga attraverso la linea nel territorio dell'altro.

inserisci qui la descrizione dell'immagine

Mi considero uno studente visivo e ho lottato a lungo con l'intuizione dietro le macchine vettoriali di supporto. Il documento chiamato Duality and Geometry in Classificatori SVM mi ha finalmente aiutato a vedere la luce; ecco da dove ho preso le immagini.


4
+1 da un altro studente visivo! Per il lettore, vorrei notare che questi limiti evidenti nella figura sopra si basano su un set di dati che è già stato trasformato. Non il set di dati non elaborati.
Kingz,

Leggendo svm per più di due anni, oggi ho capito come si identifica la linea di separazione e poche altre cose. Grazie per la risposta chiara.
user123

53

La risposta di Ryan Zotti spiega la motivazione alla base della massimizzazione dei confini delle decisioni, la risposta di Carlosdc fornisce alcune somiglianze e differenze rispetto ad altri classificatori. Fornirò in questa risposta una breve panoramica matematica di come gli SVM vengono addestrati e usati.

notazioni

Di seguito, gli scalari sono indicati con lettere minuscole in corsivo (ad esempio, ), vettori con lettere minuscole in grassetto (ad esempio, ) e matrici con caratteri maiuscoli in corsivo (ad esempio, ). è la trasposizione di e .y,bw,xWwTww=wTw

Permettere:

  • x è un vettore di funzione (ovvero, l'input di SVM). , dove è la dimensione del vettore della funzione.xRnn
  • y è la classe (ovvero l'output dell'SVM). , ovvero l'attività di classificazione è binaria.y{1,1}
  • w e siano i parametri della SVM: abbiamo bisogno di imparare utilizzando il training set.b
  • (x(i),y(i)) essere l'esempio nel set di dati. Supponiamo di avere campioni nel set di addestramento.ithN

Con , si possono rappresentare i limiti di decisione dell'SVM come segue:n=2

inserisci qui la descrizione dell'immagine

La classe è determinata come segue:y

y(i)={1 if wTx(i)+b11 if wTx(i)+b1

che può essere scritto in modo più conciso come .y(i)(wTx(i)+b)1

Obbiettivo

SVM mira a soddisfare due requisiti:

  1. L'SVM dovrebbe massimizzare la distanza tra i due confini delle decisioni. Matematicamente, questo significa che vogliamo massimizzare la distanza tra l'iperpiano definito da e l'iperpiano definito da . Questa distanza è uguale a . Questo significa che vogliamo risolvere . Allo stesso modo vogliamo .wTx+b=1wTx+b=12wmaxw2wminww2

  2. SVM dovrebbe inoltre classificare correttamente tutti , che significax(i)y(i)(wTx(i)+b)1,i{1,,N}

Il che ci porta al seguente problema di ottimizzazione quadratica:

minw,bw2,s.t.y(i)(wTx(i)+b)1i{1,,N}

Questo è l' SVM a margine fisso , poiché questo problema di ottimizzazione quadratica ammette una soluzione se i dati sono separabili linearmente.

Si possono allentare i vincoli introducendo le cosiddette variabili allentate . Si noti che ogni campione del set di allenamento ha una propria variabile di gioco. Questo ci dà il seguente problema di ottimizzazione quadratica:ξ(i)

minw,bw2+Ci=1Nξ(i),s.t.y(i)(wTx(i)+b)1ξ(i),i{1,,N}ξ(i)0,i{1,,N}

Questa è la SVM soft-margin . è un iperparametro chiamato pena del termine di errore . ( Qual è l'influenza di C negli SVM con kernel lineare? E quale intervallo di ricerca per determinare i parametri ottimali SVM? ).C

Si può aggiungere ancora più flessibilità introducendo una funzione che mappa lo spazio delle caratteristiche originale su uno spazio delle caratteristiche di dimensione superiore. Ciò consente limiti di decisione non lineari. Il problema dell'ottimizzazione quadratica diventa:ϕ

minw,bw2+Ci=1Nξ(i),s.t.y(i)(wTϕ(x(i))+b)1ξ(i),i{1,,N}ξ(i)0,i{1,,N}

Ottimizzazione

Il problema dell'ottimizzazione quadratica può essere trasformato in un altro problema di ottimizzazione chiamato doppio problema lagrangiano (il problema precedente è chiamato primitivo ):

maxαminw,bw2+Ci=1Nα(i)(1wTϕ(x(i))+b)),s.t.0α(i)C,i{1,,N}

Questo problema di ottimizzazione può essere semplificato (impostando alcuni gradienti su ) a:0

maxαi=1Nα(i)i=1Nj=1N(y(i)α(i)ϕ(x(i))Tϕ(x(j))y(j)α(j)),s.t.0α(i)C,i{1,,N}

w non appare come (come affermato dal teorema del rappresentante ).w=i=1Nα(i)y(i)ϕ(x(i))

Impariamo quindi usando del set di addestramento.α(i)(x(i),y(i))

(FYI: Perché preoccuparsi del doppio problema quando si adatta SVM? Risposta breve: calcolo più veloce + consente di usare il trucco del kernel, sebbene esistano alcuni buoni metodi per addestrare SVM nel primitivo, ad esempio vedi {1})

Fare una previsione

Una volta appreso , è possibile prevedere la classe di un nuovo campione con il vettore di funzione come segue:α(i)xtest

ytest=sign(wTϕ(xtest)+b)=sign(i=1Nα(i)y(i)ϕ(x(i))Tϕ(xtest)+b)

La somma potrebbe sembrare schiacciante, dal momento che significa che bisogna sommare tutti i campioni di addestramento, ma la stragrande maggioranza di sono (vedi Perché sono i Moltiplicatori di Lagrange sparsi per SVM? ), Quindi in pratica non è un problema. (nota che si possono costruire casi speciali in cui tutto ) iff è un vettore di supporto . L'illustrazione sopra ha 3 vettori di supporto.i=1Nα(i)0α(i)>0α(i)=0x(i)

Trucco del kernel

Si può osservare che il problema di ottimizzazione utilizza solo nel prodotto interno . La funzione che mappa sul prodotto interno viene chiamato un kernel , aka funzione del kernel, spesso indicato con .ϕ(x(i))ϕ(x(i))Tϕ(x(j))(x(i),x(j))ϕ(x(i))Tϕ(x(j))k

Si può scegliere modo che il prodotto interno sia efficiente da calcolare. Ciò consente di utilizzare uno spazio di funzionalità potenzialmente elevato a un basso costo computazionale. Questo si chiama trucco del kernel . Perché una funzione del kernel sia valida , cioè utilizzabile con il trucco del kernel, dovrebbe soddisfare due proprietà chiave . Esistono molte funzioni del kernel tra cui scegliere . Come nota a margine , il trucco del kernel può essere applicato ad altri modelli di apprendimento automatico , nel qual caso vengono definiti kernelizzati .k

Andare avanti

Alcuni interessanti QA su SVM:

Altri collegamenti:


Riferimenti:


2
Ciao Franck, molte grazie per la tua risposta. Ti dispiacerebbe spiegare perché il vettore è ortogonale all'iperpiano generato da SVM? E come hai calcolato che la distanza tra due limiti di decisione è uguale aw2w
tosik

3
Oltre a questa grande risposta, voglio raccomandare questo video che illustra la matematica dietro SVM e chiarisce in particolare la domanda che @tosik ha commentato su youtube.com/watch?v=_PwhiWxHK8o
Nikolas Rieble

Risposta molto bella. Solo un'osservazione su questa parte: iff è un vettore di supporto . Per la classificazione, la somma è effettivamente al di sopra dei vettori di supporto (ad esempio, ). α(i)=0x(i)α(i)0
989,

13

Mi concentrerò sulle somiglianze e le differenze rispetto ad altri classificatori:

  • Da un percettrone: SVM usa la perdita della cerniera e la regolarizzazione di L2, il percettrone usa la perdita di percettrone e potrebbe usare l'interruzione precoce (o tra le altre tecniche) per la regolarizzazione, non c'è davvero un termine di regolarizzazione nel percettrone. Poiché non ha un termine di regolarizzazione, il percettrone è destinato ad essere sovrallenato, quindi le capacità di generalizzazione possono essere arbitrariamente cattive. L'ottimizzazione viene eseguita utilizzando la discesa gradiente stocastica ed è quindi molto veloce. Il lato positivo di questo documento mostra che facendo una fermata anticipata con una funzione di perdita leggermente modificata le prestazioni potrebbero essere alla pari con un SVM.

  • Dalla regressione logistica: la regressione logistica utilizza il termine di perdita logistica e potrebbe utilizzare la regolarizzazione L1 o L2. Puoi pensare alla regressione logistica come il fratello discriminante dell'ingenuo-Bayes generativo.

  • Da LDA: LDA può anche essere visto come un algoritmo generativo, presuppone che le funzioni di densità di probabilità (p (x | y = 0) e p (x | y = 1) siano normalmente distribuite. Questo è l'ideale quando i dati sono in fatto normalmente distribuito, ma ha il rovescio della medaglia che l '"addestramento" richiede l'inversione di una matrice che può essere grande (quando si hanno molte caratteristiche). Sotto l'omocedasticità LDA diventa QDA che è Bayes ottimale per i dati normalmente distribuiti. Ciò significa che se il i presupposti sono soddisfatti, non puoi davvero fare di meglio.

In fase di esecuzione (tempo di test), una volta che il modello è stato addestrato, la complessità di tutti questi metodi è la stessa, è solo un punto prodotto tra l'iperpiano che la procedura di addestramento ha trovato e il punto dati.


1
Dato che sembri molto competente in SVM, lascia che ti chieda di chiarire il mio dubbio: una volta trovato l'iperpiano di separazione migliore, per cosa lo usiamo? Possiamo definire SVM come un metodo che, in primo luogo, sceglie l'hyperplane migliore per classificare correttamente i punti dati e, in secondo luogo, utilizza questo hyperplane per recidere i nuovi punti dati nelle due classi. Giusto? (Ho dei dubbi sulla seconda parte)
DavideChicco.it

1
@ DavideChicco.it Sì, possiamo utilizzare la funzione indicatore per classificare nuovi dati, che è spesso lo scopo principale del classificatore. (Non prendere la mia parola per nulla di tutto questo, sono nuovo a tutto questo).
keyser,

12

La tecnica si basa sul tracciare una linea di confine decisionale che lasci il margine più ampio possibile ai primi esempi positivi e negativi:

inserisci qui la descrizione dell'immagine

Come nell'illustrazione sopra, se selezioniamo un vettore ortogonale tale che possiamo stabilire un criterio di decisione per qualsiasi esempio sconosciuto da catalogare come positivo del modulo:w=1u

wuC

corrispondente a un valore che posizionerebbe la proiezione oltre la linea di decisione in mezzo alla strada. Notare che .wu=uw

Una condizione equivalente per un campione positivo sarebbe:

(1)wu+b0

conC=b.

Abbiamo bisogno di e per avere una regola decisionale e per arrivarci abbiamo bisogno di vincoli .bw

Primo vincolo che ci accingiamo ad imporre è che per ogni campione positivo , ; e per campioni negativi, . Nel limite di divisione o iperpiano ( mediana ) il valore sarebbe , mentre i valori nelle grondaie saranno e :x+,wx++b1wx+b1011

inserisci qui la descrizione dell'immagine

Il vettore è il vettore dei pesi , mentre è il bias .wb


Per riunire queste due disuguaglianze, possiamo introdurre la variabile modo che per esempi positivi e se gli esempi sono negativi e concludereyiyi=+1yi=1

yi(xiw+b)10.

Quindi stabiliamo che questo deve essere maggiore di zero, ma se l'esempio si trova sugli iperpiani (le "grondaie") che massimizzano il margine di separazione tra l'iperpiano decisionale e le punte dei vettori di supporto, in questo caso le righe), poi:

(2)yi(xiw+b)1=0

Si noti che ciò equivale a richiedere cheyi(xiw+b)=1.

inserisci qui la descrizione dell'immagine


Secondo vincolo : verrà massimizzata la distanza dell'iperpiano di decisione dalle punte dei vettori di supporto. In altre parole, il margine di separazione ("strada") sarà massimizzato:

inserisci qui la descrizione dell'immagine

Supponendo un vettore unitario perpendicolare al confine di decisione, , il prodotto punto con la differenza tra due esempi "confinanti" più e meno è la larghezza di "strada" :w

width=(x+x)ww

sopra e sono nella grondaia (su iperpiani che massimizzano la separazione). Pertanto, per l'esempio positivo: o ; e per l'esempio negativo: . Quindi, riformulando la larghezza della strada:x+x (xiw+b)1=0x+w=1bxw=1b

width=(x+x)ww=x+wxww=1b(1b)w(3)=2w

Quindi ora non ci resta che massimizzare la larghezza della strada, ovvero massimizzare minimizzare o minimizzare:2w,w

(4)12w2

che è matematicamente conveniente.


Quindi vogliamo:

  1. Riduci a icona con il vincolo:x2

  2. yi(wxi+b)1=0


Poiché vogliamo minimizzare questa espressione in base ad alcuni vincoli, abbiamo bisogno di un moltiplicatore di Lagrange (risalendo alle equazioni 2 e 4):

(5)L=12w2λi[yi(xiw+b)1]

differenziare,

Lw=wλiyixi=0
.

Perciò,

(6)w=λiyixi

E differenziando rispetto ab:

Lb=λiyi=0,

ciò significa che abbiamo un prodotto a somma zero di moltiplicatori ed etichette:

(7)λiyi=0

Ricollegando l'equazione Eq (6) nuovamente in Eq (5),

L=12(λiyixi)(λjyjxj)(λiyixi)(λjyjxj)λiyib+λi

Il penultimo termine è zero secondo l'equazione Eq (7).

Perciò,

(8)L=λi12ijλiλjyiyjxixj

L'Eq (8) è l'ultimo Lagrangiano.

Quindi, l'ottimizzazione dipende dal punto prodotto da coppie di esempi.

Tornando alla "regola decisionale" nell'Eq (1) sopra e usando l'Eq (6):

(9)λiyixiu+b0

sarà la regola di decisione finale per un nuovo vettoreu.


Niente di originale ... Solo le mie note a un livello più basso. Fondamentalmente da questo video del MIT con le mie illustrazioni. Per errori, per favore fatemi sapere. Per risposte perspicaci e ulteriori dettagli vai al livello di esperti (post di Franck e altri).
Antoni Parellada,

E come calcolo b ?
Mike

1
@mike con come set di indici dei vettori di supportoPuoi trovarlo qui . b=ysmSαmymxmxsS(αi>0).
Antoni Parellada,

@AntoniParellada sorprendente risposta Antoni grazie mille - ma non ti manca una parte sul problema Dual e sulle condizioni KTT?
Xavier Bourret Sicotte,

@XavierBourretSicotte Non potrò lavorarci su per un po '. Per favore, considera di scrivere una risposta alternativa toccando questi problemi, e se lo fai, per favore fammi sapere così ne sono consapevole e posso votarlo.
Antoni Parellada,

3

Alcuni commenti sulle condizioni Duality e KTT

Problema primario

Riprendendo dal post di @ Antoni tra le equazioni e , ricordiamo che il nostro problema di ottimizzazione originale, o primario , è nella forma:(4)(5)

minw,bf(w,b)=minw,b 12||w||2s.t.  gi(w,b)=y(i)(wTx(i)+b)+1=0

Metodo di Lagrange

Il metodo dei moltiplicatori di Lagrange ci consente di trasformare un problema di ottimizzazione vincolata in uno non vincolato del modulo:

L(w,b,α)=12||w||2imαi[y(i)(wTx(i)+b)1]

Dove è chiamato lagrangiano e sono chiamati moltiplicatori lagrangiani . L(w,b,α)αi

Il nostro primordiale problema di ottimizzazione con la lagrangiana diventa la seguente: (si noti che l'uso di , , non è il più rigoroso, come dovremmo essere anche utilizzando e qui ...)minmaxinfsup

minw,b(maxαL(w,b,α))

Doppio problema

Quello che @Antoni e il Prof. Patrick Winston hanno fatto nella loro derivazione è supporre che la funzione di ottimizzazione e i vincoli soddisfino alcune condizioni tecniche in modo che possiamo fare quanto segue:

minw,b(maxαL(w,b,α))=maxα(minw,bL(w,b,α))

Questo ci consente di prendere le derivate parziali di rispetto a e , equivalere a zero e quindi ricollegare i risultati all'equazione originale del Lagrangiano, generando quindi un equivalente duplice problema di ottimizzazione del moduloL(w,b,α)wb

maxαminw,bL(w,b,α)maxαimαi12i,jmy(i)y(j)αiαj<x(i)x(j)>s.t. αi0s.t. imαiy(i)=0

Duality e KTT

Senza entrare in eccessivi tecnicismi matematici, queste condizioni sono una combinazione delle condizioni Duality e Karush Kuhn Tucker (KTT) e ci consentono di risolvere il doppio problema invece di quello primario , garantendo allo stesso tempo che la soluzione ottimale sia la stessa. Nel nostro caso le condizioni sono le seguenti:

  • L'obiettivo primario e le funzioni di vincolo di disuguaglianza devono essere convesse
  • La funzione di vincolo di uguaglianza deve essere affine
  • I vincoli devono essere rigorosamente fattibili

Quindi esiste che sono soluzioni ai problemi primari e doppi. Inoltre, i parametri soddisfano le condizioni KTT seguenti:w,αw,α

wiL(w,α,β)=0(A)βiL(w,α,β)=0(B)αigi(w)=0(C)gi(w)0(D)αi0(E)

Inoltre, se alcuni soddisfano le soluzioni KTT, allora sono anche una soluzione al problema primario e doppio.w,α

L'equazione sopra è di particolare importanza ed è chiamata la doppia condizione di complementarità . Implica che se allora significa che il vincolo è attivo, vale a dire con l'uguaglianza piuttosto che con la disuguaglianza. Questa è la spiegazione dietro l'equazione nella derivazione di Antoni in cui il vincolo di disuguaglianza viene trasformato in un vincolo di uguaglianza.α i > 0 g i ( w ) = 0 g i ( w ) 0 ( 2 )(C)αi>0gi(w)=0gi(w)0(2)

Un diagramma intuitivo ma informale

inserisci qui la descrizione dell'immagine

fonti


2
Grazie mille. L'ho letto rapidamente e ci torno più tardi con più tempo, ma suona benissimo e tocca i punti mancanti nella mia risposta.
Antoni Parellada,
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.