Perché preoccuparsi del doppio problema quando si adatta SVM?


50

Dati i punti dati e le etichette , il problema principale SVM del margine rigido èx1,,xnRdy1,,yn{1,1}

minimizew,w012wTw
s.t.i:yi(wTxi+w0)1

che è un programma quadratico con variabili da ottimizzare per vincoli e . Il doppiod+1i

maximizeαi=1nαi12i=1nj=1nyiyjαiαjxiTxj
s.t.i:αi0i=1nyiαi=0
è un programma quadratico con variabili da ottimizzare per e disuguaglianza e vincoli di uguaglianza.n nn+1nn

Quando si implementa un SVM a margine fisso, perché dovrei risolvere il doppio problema anziché il problema primario? Il problema principale mi sembra più "intuitivo" e non ho bisogno di preoccuparmi del divario di dualità, della condizione di Kuhn-Tucker ecc.

Avrebbe senso per me risolvere il duplice problema se , ma sospetto che ci siano ragioni migliori. È questo il caso?dn


26
La risposta breve è kernel. La risposta lunga è keeerneeels (-;

La cosa più importante del doppio problema è introdurre il trucco del kernel, con l'obiettivo di mappare i dati originali nello spazio con dimensioni più elevate.
BigeyeDestroyer,

Risposte:


40

Sulla base degli appunti della lezione citati nella risposta di @ user765195 (grazie!), I motivi più evidenti sembrano essere:

Risolvendo il problema primario, otteniamo il ottimale , ma non sappiamo nulla di . Per classificare un punto di query è necessario calcolare esplicitamente il prodotto scalare , che può essere costoso se è grande.α i x w T x dwαixwTxd

Risolvendo il doppio problema, otteniamo il (dove per tutti tranne alcuni punti - i vettori di supporto). Per classificare un punto di query , calcoliamoα i = 0 xαiαi=0x

wTx+w0=(i=1nαiyixi)Tx+w0=i=1nαiyixi,x+w0

Questo termine viene calcolato in modo molto efficiente se ci sono solo pochi vettori di supporto. Inoltre, poiché ora abbiamo un prodotto scalare che coinvolge solo vettori di dati , possiamo applicare il trucco del kernel .


6
Aspetta aspetta. Supponiamo che tu abbia due vettori di supporto x1 e x2. Non puoi averne meno di due, giusto? Stai dicendo che il calcolo <x1, x> e <x2, x> è più veloce di <w, x>?
Leone

1
@Leo: nota che io uso <x1, x>e wTx. Il primo è usato come simbolo per una valutazione del kernel K (x1, x), che proietta x1 e x in uno spazio di dimensioni molto elevate e calcola implicitamente il prodotto scalare dei valori proiettati. Quest'ultimo è il normale prodotto scalare, quindi we xdeve essere proiettato esplicitamente, quindi il prodotto scalare viene calcolato esplicitamente. A seconda della scelta del kernel, un singolo calcolo esplicito può richiedere molto più calcolo rispetto a molte valutazioni del kernel.
blubb

1
Quando capisco il problema primario, 's sono i moltiplicatori di Lagrange, quindi perché non possiamo risolvere il problema primal per trovare 's? Voglio dire, probabilmente non dovremo ricorrere al doppio problema per scoprire 's, vero? α αααα
avocado,

2
"Inoltre, poiché ora abbiamo un prodotto scalare che coinvolge solo vettori di dati, possiamo applicare il trucco del kernel." - Questo è vero anche nella formulazione originale.
Firebug,

2
Se la gente vuole maggiori dettagli sul commento di @Firebug ... controlla le equazioni 10-12 di lib.kobe-u.ac.jp/repository/90001050.pdf (che è una versione non vincolata del primordiale).
MrDrFenner,

13

Leggi il secondo paragrafo a pagina 13 e la discussione procede in queste note:

http://cs229.stanford.edu/notes/cs229-notes3.pdf


17
Questo è un ottimo riferimento e risponde chiaramente alla domanda. Penso che la tua risposta sarà apprezzata meglio se tu potessi riassumere la risposta qui: questo rende questa discussione autonoma.
whuber

3

Ecco un motivo per cui la doppia formulazione è attraente dal punto di vista dell'ottimizzazione numerica. Puoi trovare i dettagli nel seguente documento :

Hsieh, C.-J., Chang, K.-W., Lin, C.-J., Keerthi, SS e Sundararajan, S., “Un metodo di discesa a doppia coordinata per SVM lineare su larga scala”, Atti del 25ª Conferenza internazionale sull'apprendimento automatico, Helsinki, 2008.

La doppia formulazione comporta un unico vincolo di uguaglianza affine e vincoli n vincolati.

1. Il vincolo di uguaglianza affine può essere "eliminato" dalla doppia formulazione.

Questo può essere fatto semplicemente guardando i tuoi dati in R ^ (d + 1) tramite l'incorporamento di R ^ d in R ^ (d + 1) eliminando l'aggiunta di una singola coordinata "1" a ciascun punto dati, cioè R ^ d ----> R ^ (d + 1): (a1, ..., annuncio) | ---> (a1, ..., annuncio, 1).

In questo modo per tutti i punti del set di addestramento, il problema della separabilità lineare viene rielaborato in R ^ (d + 1) ed elimina il termine costante w0 dal classificatore, che a sua volta elimina il vincolo di uguaglianza affine dal doppio.

2. Al punto 1, il doppio può essere facilmente lanciato come un problema convesso di ottimizzazione quadratica i cui vincoli sono solo vincoli vincolati.

3. Il doppio problema ora può essere risolto in modo efficiente, ovvero tramite un algoritmo di discesa a doppia coordinata che fornisce una soluzione ottimale epsilon in O (log (1 / epsilon)).

Questo viene fatto osservando che la correzione di tutti gli alfa tranne uno produce una soluzione in forma chiusa. È quindi possibile scorrere tutti gli Alpha uno per uno (ad esempio, sceglierne uno a caso, correggere tutti gli altri Alpha, calcolare la soluzione in forma chiusa). Si può dimostrare che si otterrà così una soluzione quasi ottimale "piuttosto rapidamente" (vedere Teorema 1 nel documento sopra citato).

Ci sono molte altre ragioni per cui il duplice problema è attraente dal punto di vista dell'ottimizzazione, alcuni dei quali sfruttano il fatto che ha un solo vincolo di uguaglianza affine (i restanti vincoli sono tutti vincoli vincolati) mentre altri sfruttano l'osservazione che alla soluzione del doppio problema "spesso la maggior parte degli alfa" è zero (alfa diverso da zero corrispondente ai vettori di supporto).

È possibile ottenere una buona panoramica delle considerazioni sull'ottimizzazione numerica degli SVM dalla presentazione di Stephen Wright al Computational Learning Workshop (2009).

PS: sono nuovo qui. Ci scusiamo per non essere bravo a usare la notazione matematica su questo sito web.


1
Le informazioni su come utilizzare la tipizzazione matematica sono disponibili qui: math.meta.stackexchange.com/questions/5020/…
Ripristina Monica il

-5

A mio avviso, nelle note di lezione di Andrew ng, è stato chiaramente menzionato che il problema primario di 1 / || w || è un problema non convesso. Il doppio è un problema convesso ed è sempre facile trovare l'ottimale di una funzione convessa.


1
Il primitivo SVM come indicato sopra è convesso.
Dougal,
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.