Esistono almeno due modi per motivare gli SVM, ma qui seguirò il percorso più semplice.
Ora, dimentica tutto ciò che sai su SVM per il momento e concentrati solo sul problema attuale. Ti viene data una serie di punti insieme ad alcune etichette ( ) che provengono da . Ora stiamo provando a trovare una linea in 2D in modo tale che tutti i punti con etichetta cadano su un lato della linea e tutti i punti con etichetta cadano sull'altro lato.yiD={(xi1,xi2,yi)}yi1 - 1{1,−1}1−1
Prima di tutto, renditi conto che è una linea in 2D e rappresenta "un lato" della linea e rappresenta "l'altro lato" del linea.w 0 +w0+w1x1+w2x2=0w 0 +w0+w1x1+w2x2>0w0+w1x1+w2x2<0
Da quanto sopra possiamo concludere che vogliamo un vettore tale che,
per tutti i punti con e per tutti i punti con [1].w 0 + w 1 x i 1 + w 2 x i 2 ≥ 0 x i y i = 1 w 0 + w 1 x i[w0,w1,w2]w0+w1xi1+w2xi2≥0xiyi=1w0+ w1Xio1+ w2Xio2< 0y iXioyio= - 1
Supponiamo che una tale linea esista effettivamente, quindi posso definire un classificatore nel modo seguente,
min | w0| + | w1| + | w2|soggetto a : w0+ w1Xio1+ w2Xio2≥ 0 , ∀ xio con yio= 1w0+ w1Xio1+ w2Xio2< 0 , ∀ xio con yio= - 1
Ho usato una funzione oggettiva arbitraria sopra, non ci interessa davvero al momento quale funzione oggettiva viene utilizzata. Vogliamo solo una che soddisfi i nostri vincoli. Poiché abbiamo ipotizzato che esista una linea in modo tale da poter separare le due classi con quella linea, troveremo una soluzione al problema di ottimizzazione sopra riportato.w
Quanto sopra non è SVM ma ti darà un classificatore :-). Tuttavia, questo classificatore potrebbe non essere molto buono. Ma come si definisce un buon classificatore? Un buon classificatore è di solito quello che fa bene sul set di test. Idealmente, si dovrebbe andare su tutte le possibili s' che separano i dati di allenamento e vedere chi di loro fa bene sui dati di test. Tuttavia, ci sono infiniti , quindi questo è abbastanza senza speranza. Considereremo invece alcune euristiche per definire un buon classificatore. Una euristica è che la linea che separa i dati sarà sufficientemente lontana da tutti i punti (cioè c'è sempre spazio o margine tra i punti e la linea). Il miglior classificatore tra questi è quello con il margine massimo. Questo è ciò che viene utilizzato negli SVM.ww
Invece di insistere sul fatto che per tutti i punti con e per tutti i punti con , se insistiamo sul fatto che per tutti i punti con e per tutti i punti con , quindi stiamo effettivamente insistendo sul fatto che i punti siano lontani dalla linea. Il margine geometrico corrispondente a questo requisito risulta essere .x i y i = 1 w 0 + w 1 x i 1 + w 2 x i 2 < 0 x i y i = - 1 w 0 + w 1 x i 1 + ww0+w1Xio1+w2Xio2≥ 0Xioyio= 1w0+ w1Xio1+ w2Xio2< 0Xioyio= - 1w0+ w1Xio1+ w2Xio2≥ 1 1Xiow 0 y i = - 1yio= 1x iw0+ w1Xio1+ w2Xio2≤ - 1Xioyio= - 11∥ w ∥2
Quindi, otteniamo il seguente problema di ottimizzazione,
Una forma leggermente succinta di scrittura è:
Questa è sostanzialmente la formulazione SVM di base. Ho saltato molte discussioni per brevità. Spero di avere ancora la maggior parte dell'idea.
max 1∥ w ∥2soggetto a : w0+ w1Xio1+ w2Xio2≥ 1 , ∀ xio con yio= 1w0+ w1Xio1+ w2Xio2≤ - 1 , ∀ xio con yio= - 1
min ∥ w ∥2soggetto a : yio( w0+ w1Xio1+ w2Xio2) ≥ 1 , ∀ i
Script CVX per risolvere il problema di esempio:
A = [1 2 1; 3 2 1; 2 3 1; 3 3 1; 1 1 1; 2 0 1; 2 1 1; 3 1 1];
b = ones(8, 1);
y = [-1; -1; -1; -1; 1; 1; 1; 1];
Y = repmat(y, 1, 3);
cvx_begin
variable w(3)
minimize norm(w)
subject to
(Y.*A)*w >= b
cvx_end
Addendum - Margine geometrico
Sopra abbiamo già richiesto di cercare tale che o generalmente . LHS qui che vedi è chiamato margine funzionale, quindi quello che abbiamo richiesto qui è che il margine funzionale sia . Ora proveremo a calcolare il margine geometrico dato questo requisito di margine funzionale.y i ( w 0 + w 1 x 1 + w 2 x 2wy i ( w 0 + w T x ) ≥ 1 ≥ 1yio( w0+ w1X1+w2X2) ≥ 1yio(w0+wTx ) ≥ 1≥ 1
Cos'è il margine geometrico? Il margine geometrico è la distanza più breve tra i punti negli esempi positivi e i punti negli esempi negativi. Ora, i punti che hanno la distanza più breve come richiesto sopra possono avere un margine funzionale maggiore di uguale a 1. Tuttavia, consideriamo il caso estremo, quando sono più vicini all'iperpiano ovvero, il margine funzionale per i punti più corti è esattamente uguale a 1. Sia il punto dell'esempio positivo sia un punto tale che e sia il punto dell'esempio negativo sia un punto tale che . Ora, la distanza tra e sarà la più breve quandow T x + + w 0 = 1 x - w T x - + wX+wTX++ w0= 1X-x + x - x + - x -wTX-+ w0= - 1X+X-X+- x- è perpendicolare all'iperpiano.
Ora, con tutte le informazioni di cui sopra, proveremo a trovare che è il margine geometrico.
w T x + + w 0 = 1 w T x - + w 0 = - 1 w T ( x + - x - ) = 2 | w T∥ x+- x-∥2
wTX++ w0= 1
wTX-+ w0= - 1
wT( x+- x-) = 2
| wT( x+- x-) | = 2
‖ x + - x - ‖ 2 = 2∥ w ∥2∥ x+- x-∥2= 2
∥ x+- x-∥2= 2∥ w ∥2
[1] In realtà non importa quale parte scegli per e . Devi solo rimanere coerente con qualunque cosa tu scelga.- 11- 1