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,xWwTw∥w∥=wTw
Permettere:
- x è un vettore di funzione (ovvero, l'input di SVM). , dove è la dimensione del vettore della funzione.x∈Rnn
- 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
La classe è determinata come segue:y
y(i)={−11 if wTx(i)+b≤−1 if wTx(i)+b≥1
che può essere scritto in modo più conciso come .y(i)(wTx(i)+b)≥1
Obbiettivo
SVM mira a soddisfare due requisiti:
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=12∥w∥maxw2∥w∥minw∥w∥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,bs.t.∥w∥2,y(i)(wTx(i)+b)≥1∀i∈{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,bs.t.∥w∥2+C∑i=1Nξ(i),y(i)(wTx(i)+b)≥1−ξ(i),ξ(i)≥0,∀i∈{1,…,N}∀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,bs.t.∥w∥2+C∑i=1Nξ(i),y(i)(wTϕ(x(i))+b)≥1−ξ(i),ξ(i)≥0,∀i∈{1,…,N}∀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αs.t.minw,b∥w∥2+C∑i=1Nα(i)(1−wTϕ(x(i))+b)),0≤α(i)≤C,∀i∈{1,…,N}
Questo problema di ottimizzazione può essere semplificato (impostando alcuni gradienti su ) a:0
maxαs.t.∑i=1Nα(i)−∑i=1N∑j=1N(y(i)α(i)ϕ(x(i))Tϕ(x(j))y(j)α(j)),0≤α(i)≤C,∀i∈{1,…,N}
w non appare come (come affermato dal teorema del rappresentante ).w=∑Ni=1α(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.∑Ni=1α(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: