Dato un insieme di punti nello spazio bidimensionale, come può una decisione progettuale funzionare per SVM?


10

Qualcuno può spiegarmi come si fa a progettare una funzione decisionale SVM? Oppure indicami una risorsa che discute un esempio concreto.

MODIFICARE

Per l'esempio seguente, posso vedere che l'equazione separa le classi con il margine massimo. Ma come posso regolare i pesi e scrivere equazioni per iperpiani nella seguente forma.X2=1.5

H1:w0+w1x1+w2x21forYi=+1H2:w0+w1x1+w2x21forYi=1.

inserisci qui la descrizione dell'immagine

Sto cercando di ottenere la teoria di base nello spazio 2D (poiché è più facile da visualizzare) prima di pensare a dimensioni più elevate.

Ho trovato una soluzione per questo Qualcuno può confermare se questo è corretto?

il vettore del peso è (0, -2) e W_0 è 3

H1:3+0x12x21forYi=+1H2:3+0x12x21forYi=1.

C'è un'illustrazione con R qui , ma sento che la tua domanda è più sull'aspetto algoritmico. In questo caso, sarebbe utile aggiungere ulteriori dettagli sull'applicazione prevista o sulla risorsa disponibile.
chl

@chl Ho aggiornato la domanda con i dettagli
Naresh,

Risposte:


12

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={(x1i,x2i,yi)}yi1 - 1{1,1}11

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 20 x i y i = 1 w 0 + w 1 x i[w0,w1,w2]w0+w1x1i+w2x2i0xiyi=1w0+w1x1i+w2x2i<0y ixiyi=1

Supponiamo che una tale linea esista effettivamente, quindi posso definire un classificatore nel modo seguente,

min|w0|+|w1|+|w2|subject to:w0+w1x1i+w2x2i0,xi with yi=1w0+w1x1i+w2x2i<0,xi with yi=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+w1x1i+w2x2i0xiyi=1w0+w1x1i+w2x2i<0xiyi=1w0+w1x1i+w2x2i1 1xiw 0 y i = - 1yi=1x iw0+w1x1i+w2x2i1xiyi=11w2

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.

max1w2subject to:w0+w1x1i+w2x2i1,xi with yi=1w0+w1x1i+w2x2i1,xi with yi=1
minw2subject to:yi(w0+w1x1i+w2x2i)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 1yi(w0+w1x1+w2x2)1yio(w0+wTX)11

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 TX+-X-2

wTX++w0=1
wTX-+w0=-1
wT(X+-X-)=2
|wT(X+-X-)|=2
x + - x - 2 = 2
w2X+-X-2=2
X+-X-2=2w2

[1] In realtà non importa quale parte scegli per e . Devi solo rimanere coerente con qualunque cosa tu scelga.- 11-1


1
@naresh Yeap, risolverlo in cvx mi ha dato la stessa identica soluzione che hai . w=[0,-2,3]
TenaliRaman,

1
@entropy grazie ho corretto l'errore di battitura. Aggiungerò la spiegazione del margine geometrico.
TenaliRaman,

1
@entropia Ho aggiornato la risposta con la spiegazione del margine geometrico.
TenaliRaman

1
@entropy è un iperpiano che passa attraverso l'origine. Per coprire lo spazio di tutte le equazioni lineari è necessario il termine bias. Pensa ai punti che risiedono in 2D e lasciaci dire che stai cercando di trovare una linea che separa questi punti. Tuttavia, tutti questi punti si trovano nel primo quadrante. Ora è possibile disporre questi punti in modo che siano separabili ma non da alcuna linea che passa attraverso l'origine. Tuttavia, una linea con una corretta propensione può farlo. wTX
TenaliRaman

1
@entropia Detto questo, potresti aver capito che se ruoti e sposti correttamente i punti, anche una linea che passa attraverso l'origine dovrebbe essere in grado di separare le classi. Tuttavia, di solito trovare questa giusta rotazione e spostamento non è facile, rispetto all'apprendimento del solo termine.
TenaliRaman
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.