Esercizio - SVM a margine rigido e morbido a mano
In questa pagina 5
Testo. Nel piano sono dati quattro punti: classe : , ; classe : , .
- Si trovi l'iperpiano a margine massimo e si calcolino la larghezza del margine e i vettori di supporto.
- Si ricavino i moltiplicatori della forma duale e si verifichi .
- Si classifichi il punto .
- Si aggiunge il punto di classe . Con del punto 1 si calcolino la variabile di scarto e il valore dell'obiettivo soft margin . Si confronti poi con il piano , : per quali conviene il primo?
Teoria usata: Support vector machines e metodi kernelUna SVM cerca l'iperpiano $w\cdot x+b=0$ che separa due classi con il margine più largo possibile: normalizzando $y_i(w\cdot x_i+b)\ge1$ il margine totale vale $2/|w|$, quindi si risolve $\min\frac12|w|^2$ (problema convesso, nessun minimo locale). Con classi sovrapposte si ammettono errori con le variabili di scarto $\xi_i$ e il parametro $C$ (soft margin, equivalente alla hinge loss più una penalità su $|w|^2$); $C$ piccolo = margine largo e più bias, $C$ grande = margine stretto e più varianza, si sceglie per cross-validation. La soluzione dipende solo dai vettori di supporto ($w=\sum\alpha_iy_ix_i$) e solo tramite prodotti scalari, per questo si può sostituire $x_i\cdot x_j$ con un kernel $K(x_i,x_j)=\langle\phi(x_i),\phi(x_j)\rangle$ (polinomiale, RBF) senza calcolare $\phi$: così si ottengono bordi non lineari. La SVR usa lo stesso schema con un tubo di tolleranza $\varepsilon$. Nell'esame le SVM sono solo nella parte teorica.Support vector machines e metodi kernel →, Prodotto scalare, norma e angoliIl prodotto scalare aggiunge a uno spazio vettoriale lunghezze e angoli: norma, disuguaglianza di Cauchy-Schwarz, angolo tra vettori in R^n, ortogonalità, proiezione su una retta, aree e volumi con il determinante della matrice dei prodotti scalari.Prodotto scalare, norma e angoli →.
1. Margine massimo
Idea. Tra due classi separabili, il piano a margine massimo ha due piani paralleli () che toccano i vettori di supporto. Conviene cercare quali punti stanno sui due piani.
Passo 1: i punti più estremi. Nella classe i punti e sono i più vicini alla classe in direzioni diverse; si fa l'ipotesi che entrambi stiano sul piano e che stia sul piano (si verificherà dopo).
Passo 2: direzione di . Se e stanno sullo stesso piano parallelo al bordo, il vettore è parallelo al piano, quindi ortogonale a : . I vettori ortogonali a sono multipli di : .
Passo 3: valori di e . Dalle due condizioni:
- su : ;
- su : .
Sottraendo la seconda dalla prima: , . Allora e .
Passo 4: verifica di tutti i punti con :
| punto | |||
|---|---|---|---|
Tutti e tre uguali a : l'ipotesi è corretta. I vettori di supporto sono , e ; è fuori dal margine.
Margine. . Larghezza totale , cioè per lato. (Per essere sicuri che sia il minimo di si può controllare che nessun altro piano ammissibile abbia norma inferiore: lo conferma la ricerca esaustiva sulle coppie e terne di punti di supporto.)
2. Moltiplicatori
Solo i vettori di supporto hanno : . Le condizioni sono e :
- : , quindi ;
- componente : ;
- componente : .
Sostituendo : la seconda diventa e la terza , da cui . Sostituendo nella prima: , , , . Tutti positivi, come devono essere.
Verifica. ✓. Valore del duale: e ; il duale è calcolato in , cioè , uguale al primale ✓.
3. Classificazione di
. Negativo: classe . Il punto è dentro il margine (), quindi la decisione è poco sicura. Con la forma duale si ottiene lo stesso valore: ✓.
4. Un punto che viola il margine
, : , quindi . Il punto è dal lato giusto ma dentro il margine: . Gli altri punti hanno , quindi .
Obiettivo del piano : .
Piano alternativo , : , . Margini: ; ; ; ; . Tutti : nessuno scarto, obiettivo (è il piano a margine rigido di tutti e cinque i punti).
Confronto. Il primo piano è migliore se , cioè . Con piccolo (errori poco costosi) conviene il margine largo con uno scarto; con conviene il piano più stretto che separa tutto. Ricordare che si confrontano solo i due candidati: il vero ottimo soft margin si trova risolvendo il problema di ottimizzazione.
Controllo con il codice
import numpy as np
from sklearn.svm import SVC
X = np.array([[1,1],[2,3],[4,1],[5,4]]); y = np.array([-1,-1,1,1])
clf = SVC(kernel="linear", C=1e6).fit(X, y) # C enorme ~ margine rigido
print(clf.coef_, clf.intercept_, clf.support_) # atteso: [[ 0.75 -0.25]] [-1.75], indici 1,2,3
print(clf.dual_coef_) # y_i * alpha_i: [[-0.3125 0.1875 0.125 ]]Versione ripasso
Quattro punti: classe : , ; classe : , . Teoria: Support vector machines e metodi kernelUna SVM cerca l'iperpiano $w\cdot x+b=0$ che separa due classi con il margine più largo possibile: normalizzando $y_i(w\cdot x_i+b)\ge1$ il margine totale vale $2/|w|$, quindi si risolve $\min\frac12|w|^2$ (problema convesso, nessun minimo locale). Con classi sovrapposte si ammettono errori con le variabili di scarto $\xi_i$ e il parametro $C$ (soft margin, equivalente alla hinge loss più una penalità su $|w|^2$); $C$ piccolo = margine largo e più bias, $C$ grande = margine stretto e più varianza, si sceglie per cross-validation. La soluzione dipende solo dai vettori di supporto ($w=\sum\alpha_iy_ix_i$) e solo tramite prodotti scalari, per questo si può sostituire $x_i\cdot x_j$ con un kernel $K(x_i,x_j)=\langle\phi(x_i),\phi(x_j)\rangle$ (polinomiale, RBF) senza calcolare $\phi$: così si ottengono bordi non lineari. La SVR usa lo stesso schema con un tubo di tolleranza $\varepsilon$. Nell'esame le SVM sono solo nella parte teorica.Support vector machines e metodi kernel →, Prodotto scalare, norma e angoliIl prodotto scalare aggiunge a uno spazio vettoriale lunghezze e angoli: norma, disuguaglianza di Cauchy-Schwarz, angolo tra vettori in R^n, ortogonalità, proiezione su una retta, aree e volumi con il determinante della matrice dei prodotti scalari.Prodotto scalare, norma e angoli →.
Margine massimo: vettori di supporto , , (con fuori dal margine). Si ottiene e , con e larghezza .
Duale: , , , . Verifica . Valore del duale uguale al primale, .
Classificazione di : , classe , dentro il margine.
Soft margin: il punto di classe ha e scarto . L'obiettivo del primo piano è . Il piano alternativo , separa tutti e cinque i punti con obiettivo . Il primo conviene per .
Passi del margine: da e su e su si ottengono e , quindi e . Verifica di tutti i punti: , con per , , e .
Verifica duale: . In SVC il dual_coef_ è .
Errori tipici:
- ipotizzare quali punti sono di supporto senza verificare ;
- confondere con nel
dual_coef_di scikit-learn; - confrontare due piani candidati e chiamarlo ottimo soft margin.