Support Vector Machines
★★★★★ La tipologia numerica più frequente in assoluto: 9 esercizi da 4 punti su support vector, calcolo di w, b e margine, più 3 domande aperte e 4 blocchi di vero/falso.
Le Support Vector Machines (SVM) sono la tecnica più popolare della famiglia dei metodi kernel introdotta nel capitolo precedente, e nascono per risolverne il difetto principale: il costo di soluzioni che dipendono da tutti i campioni del training set. L’idea è duplice. Da un lato si cambia il criterio con cui si sceglie l’iperpiano separatore: non una separazione qualsiasi, come nel perceptron, ma quella che massimizza il margine, cioè la distanza dai punti più vicini. Dall’altro, la matematica di questo criterio (un problema di ottimizzazione quadratica, risolto passando per la dualità lagrangiana) produce gratuitamente due proprietà preziose: la soluzione si scrive solo in termini di kernel, quindi eredita tutta la potenza dei metodi kernel, ed è sparsa, cioè dipende solo da un piccolo sottoinsieme di campioni detti support vector. Il capitolo sviluppa l’intera catena: definizione del margine, formulazione primale, passaggio al duale con moltiplicatori di Lagrange e condizioni KKT, ruolo dei support vector, confini non lineari tramite kernel, estensione soft margin per dati non separabili, addestramento pratico, estensioni multi-classe e a regressione. Chiude una sezione di esercizi svolti in stile esame, con la procedura meccanica per trovare support vector, pesi e margine di un piccolo dataset: la tipologia numerica più frequente negli esami del corso.
Riferimenti sul testo: Bishop, Pattern Recognition and Machine Learning, capitolo 7 (7.1, 7.1.1, 7.1.3, 7.1.4) e Appendice E per i moltiplicatori di Lagrange.
1. Dai metodi kernel alle macchine kernel sparse#
1.1 Il problema: soluzioni che dipendono da tutti i campioni#
Il capitolo sui metodi kernel ha mostrato come sia possibile lavorare implicitamente in feature space enormi, anche a dimensionalità infinita, senza mai calcolare esplicitamente le feature: basta saper calcolare la funzione kernel . Il prezzo di questa potenza è però rimasto in sospeso. Per addestrare un modello kernel serve la matrice di Gram, la matrice dei kernel tra tutte le coppie di campioni; e la soluzione trovata, per esempio nella kernel ridge regression, è una combinazione che coinvolge tutti gli campioni del training set: il vettore dei coefficienti duali ha una componente per campione, non per feature. Ogni predizione su un punto nuovo richiede quindi di valutare il kernel tra quel punto e ogni campione del training set. Con grande, sia l’addestramento sia l’inferenza diventano computazionalmente proibitivi.
1.2 L’obiettivo: sparsità#
Idea chiave: mantenere il vantaggio dei kernel (modelli molto espressivi senza calcolare le feature) eliminando il costo: cercare soluzioni in cui la maggior parte dei coefficienti duali è esattamente zero, così che solo pochi campioni contribuiscano alla predizione.
I metodi che realizzano questo programma si chiamano sparse kernel machines: trovano soluzioni che dipendono solo da un sottoinsieme dei campioni di training. I due rappresentanti più noti sono le Support Vector Machines e le Relevance Vector Machines (RVM); il corso si concentra sulle prime, di gran lunga le più diffuse. Nelle SVM i pochi campioni con coefficiente non nullo hanno un nome e un’interpretazione geometrica precisa: sono i support vector, i punti che “sostengono” la superficie di separazione.
In parole semplici: i metodi kernel puri sono come un comitato in cui ogni singolo dato del training set ha diritto di parola a ogni decisione: potentissimo ma lentissimo. Le SVM riducono il comitato ai soli membri davvero informativi, quelli al confine tra le classi, e ignorano tutti gli altri.
2. Non tutte le separazioni sono uguali: il margine#
2.1 Richiami: la geometria del discriminante lineare#
Il punto di partenza delle SVM è il modello del perceptron, già studiato nella parte sulla classificazione lineare. Il classificatore è
con target codificati come . La superficie di decisione è il luogo , un iperpiano nel feature space, e valgono le proprietà geometriche già derivate:
- l’iperpiano è ortogonale a ;
- la distanza dell’iperpiano dall’origine è ;
- la distanza (con segno) di un punto dall’iperpiano è .
L’ultima proprietà è quella cruciale: il valore di , riscalato per la norma dei pesi, misura quanto un punto è lontano dal confine di decisione, e il suo segno dice da che parte sta. In particolare, un punto è classificato correttamente se e solo se : moltiplicare per il target trasforma la distanza con segno in una quantità positiva per i punti dal lato giusto, esattamente come farebbe un valore assoluto ma restando una funzione liscia dei parametri.
2.2 Il limite del perceptron#
Il perceptron, applicabile quando il problema è linearmente separabile, minimizza una perdita proporzionale all’entità degli errori sui soli punti misclassificati; quando trova una separazione perfetta la perdita è zero e l’algoritmo si ferma. Il difetto è che il perceptron non esprime alcuna preferenza tra le infinite separazioni perfette possibili: qualunque iperpiano che separa i dati azzera la perdita, e quale venga effettivamente trovato dipende solo dall’inizializzazione dei pesi e dall’ordine di presentazione dei campioni.
Eppure le soluzioni non sono affatto equivalenti. Si immaginino tre iperpiani che separano tutti lo stesso dataset: due passano rasenti ad alcuni punti, il terzo scorre a distanza ragionevole da entrambe le classi. Intuitivamente il terzo è preferibile: un punto di test appena diverso dai punti di training (per rumore o per naturale variabilità) finirebbe facilmente dal lato sbagliato di un confine che passa a un soffio dai dati, mentre un confine “largo” tollera perturbazioni. La qualità di una separazione non è solo separare, è separare con riserva di sicurezza.
2.3 Il margine e il classificatore a massimo margine#
Dato un iperpiano separatore , il margine è la distanza tra l’iperpiano e il punto del dataset più vicino ad esso:
Il fattore garantisce che la quantità sia una distanza positiva per punti correttamente classificati, sia sul lato positivo sia su quello negativo.
Il classificatore a massimo margine cerca l’iperpiano che rende questa distanza la più grande possibile:
Un’osservazione geometrica utile: nella soluzione ottima la distanza dal punto positivo più vicino e quella dal punto negativo più vicino devono essere uguali. Se fossero diverse, si potrebbe traslare l’iperpiano verso la classe più lontana guadagnando margine; quindi qualunque iperpiano con distanze diverse dai due lati non può essere ottimo.
In parole semplici: tra tutte le rette (o iperpiani) che separano i dati, la SVM sceglie quella che passa “più al centro” possibile del corridoio vuoto tra le due classi, alla stessa distanza dai punti più vicini di entrambe. È lo stesso criterio con cui si guida in una strettoia: al centro, il più lontano possibile da entrambi i muri.
Il problema così scritto, un massimo di un minimo con una frazione, è però molto scomodo da ottimizzare direttamente. Serve una riformulazione.
3. La formulazione primale#
3.1 L’iperpiano canonico#
La prima semplificazione nasce da un’osservazione: il problema, così com’è, è mal posto perché ha infinite soluzioni equivalenti. Se definisce un certo iperpiano, allora per qualunque costante definisce esattamente lo stesso iperpiano: l’equazione non cambia moltiplicando tutto per una costante positiva, e nemmeno il margine cambia, perché il fattore compare sia al numeratore (dentro ) sia al denominatore (dentro ) e si semplifica. La scala di e è quindi irrilevante per la geometria, ma lascia l’ottimizzazione con infinite soluzioni indistinguibili.
Per fissare la scala si sceglie, tra le infinite versioni equivalenti, quella detta iperpiano canonico: si impone che per il punto (o i punti) più vicini all’iperpiano valga
cioè che la funzione valga esattamente sui punti positivi a ridosso del margine e su quelli negativi. Con questa normalizzazione:
- il margine diventa semplicemente (e l’ampiezza totale del corridoio tra le due classi è );
- tutti gli altri punti, essendo più lontani, soddisfano ;
- ogni iperpiano geometrico corrisponde ora a una sola coppia .
In parole semplici: siccome moltiplicare pesi e bias per una costante non cambia la retta di separazione, si sfrutta questa libertà per fissare una convenzione comoda: sui punti più vicini la funzione deve valere esattamente . Da quel momento il margine si legge direttamente dalla norma dei pesi: pesi piccoli significano margine grande.
3.2 Il problema quadratico primale#
Con la normalizzazione canonica, massimizzare il margine equivale a minimizzare , e per convenienza si minimizza la norma al quadrato (i problemi quadratici hanno ottimi algoritmi dedicati e derivate semplici). Il vincolo di canonicità, insieme al fatto che tutti i punti devono stare sul lato giusto e fuori dal margine, dà i vincoli del problema.
Natura del problema: ottimizzazione quadratica (obiettivo quadratico convesso, vincoli lineari), quindi convessa: l’ottimo trovato è sempre globale.
Vincoli attivi: i vincoli valgono con uguaglianza () esattamente per i punti sul margine, con disuguaglianza stretta () per tutti gli altri.
Questa formulazione definisce completamente il problema, ma non è ancora la forma finale della SVM. Il motivo è lo stesso che ha motivato i kernel: può vivere in uno spazio a dimensionalità enorme o infinita, e non si vuole mai doverlo calcolare esplicitamente. Serve una riscrittura del problema in cui i vettori di feature compaiano solo attraverso prodotti scalari, sostituibili con kernel: è il passaggio al problema duale.
4. Dal primale al duale: moltiplicatori di Lagrange e KKT#
4.1 La lagrangiana#
Lo strumento standard per l’ottimizzazione vincolata sono i moltiplicatori di Lagrange (la trattazione completa, con tutti i casi, è nell’Appendice E del Bishop; qui servono il meccanismo e l’intuizione). Si introduce una nuova variabile per ogni vincolo, si riscrive ciascun vincolo nella forma “”, cioè , e si costruisce la funzione lagrangiana sottraendo all’obiettivo i vincoli pesati dai moltiplicatori:
La lagrangiana va minimizzata rispetto alle variabili originali e e massimizzata rispetto ai moltiplicatori . L’intuizione del meccanismo: se un vincolo viene violato, il termine tra parentesi quadre diventa negativo; massimizzando su , il moltiplicatore corrispondente può crescere e far esplodere la penalità, quindi la soluzione ottima del gioco min-max non può contenere violazioni. I moltiplicatori agiscono da “prezzi” delle violazioni.
4.2 Le condizioni di stazionarietà#
Si annullano i gradienti della lagrangiana rispetto alle variabili primali:
La prima equazione è un cambio di variabile fondamentale: il vettore dei pesi ottimo è una combinazione lineare dei vettori di feature dei campioni, con coefficienti . Questo permette di eliminare dal problema, sostituendolo ovunque con questa espressione. La seconda equazione è un vincolo aggiuntivo che lega i moltiplicatori ai target e che entrerà nel problema duale.
4.3 Il problema duale#
Sostituendo nella lagrangiana e sfruttando , le variabili e scompaiono del tutto e resta un problema nella sola .
Il calcolo esplicito della sostituzione
I passaggi sono meccanici ma vale la pena vederli una volta, perché “derivare il duale dal primale” è una domanda d’esame ricorrente. Sostituendo l’espressione di :
La lagrangiana diventa quindi
che è l’obiettivo duale da massimizzare.
Variabili: i soli moltiplicatori , uno per campione: la dimensione del problema dipende da , non dalla dimensionalità del feature space.
Kernel: : i vettori di feature compaiono solo attraverso prodotti scalari.
Il punto qualificante è l’ultima riga: nell’obiettivo duale i vettori di feature sopravvivono solo dentro prodotti scalari, che si possono valutare con la funzione kernel senza mai costruire le feature. Per risolvere l’ottimizzazione basta conoscere il kernel: esattamente l’obiettivo dichiarato all’inizio. In più, il numero di variabili è invece della dimensionalità del feature space (che nel primale determina la taglia di e può essere infinita).
In parole semplici: il passaggio al duale è un cambio di prospettiva: invece di cercare direttamente i pesi dell’iperpiano, si cerca “quanto conta” ciascun punto del dataset (il suo ). I pesi si ricostruiscono poi come combinazione dei punti pesati per la loro importanza. Il guadagno è che in questa forma servono solo le similarità tra coppie di punti, cioè i kernel, mai le coordinate nel feature space.
4.4 Le condizioni KKT#
Per problemi convessi con vincoli di disuguaglianza, la soluzione ottima è caratterizzata dalle condizioni di Karush-Kuhn-Tucker (KKT).
All’ottimo, per ogni valgono simultaneamente:
Prima condizione: ammissibilità duale (i moltiplicatori sono non negativi).
Seconda condizione: ammissibilità primale (tutti i vincoli sono rispettati).
Terza condizione (complementarietà): per ogni punto, almeno uno tra e lo scarto del vincolo è zero: o il moltiplicatore è nullo, o il punto è esattamente sul margine.
La condizione di complementarietà è quella da cui discende tutta la struttura della soluzione, come si vede nella prossima sezione.
5. I support vector e la soluzione#
5.1 Sparsità: perché quasi tutti i moltiplicatori si annullano#
Risolto il duale, la funzione discriminante si ottiene sostituendo in :
A prima vista sembra la solita soluzione kernel non sparsa: una somma su tutti gli campioni. La sparsità arriva dalle condizioni KKT. Per la condizione di complementarietà, per ogni punto vale ; quindi:
- se il punto non è sul margine, cioè , la parentesi è strettamente positiva e l’unica possibilità è . Intuitivamente: nella lagrangiana un moltiplicherebbe una quantità positiva sottratta all’obiettivo da massimizzare, quindi non può essere ottimale;
- se il punto è esattamente sul margine, cioè , la parentesi è nulla e è libero di essere positivo senza costi: sono gli unici punti che possono avere moltiplicatore non nullo.
I support vector sono i campioni con moltiplicatore ; nel caso a margine rigido sono esattamente i punti che giacciono sul margine, cioè che soddisfano . L’insieme dei loro indici si denota .
La somma nella funzione discriminante si riduce quindi ai soli support vector:
In un problema reale con migliaia di punti, i support vector possono essere una manciata: tutti i punti “interni” alle rispettive classi, lontani dal confine, hanno e si possono letteralmente buttare via dopo l’addestramento senza cambiare nulla. Per classificare un punto nuovo bastano i kernel tra quel punto e i pochi support vector.
In parole semplici: la posizione dell’iperpiano ottimo dipende solo dai punti che gli stanno addosso, quelli sul margine: sono loro che lo “sostengono”, come i pali sostengono una tenda. Spostare o eliminare un punto lontano dal confine non cambia niente; per questo, dopo l’addestramento, si conservano solo i support vector e la predizione diventa velocissima.
5.2 Il calcolo del bias#
Il duale determina gli ma non direttamente , che è sparito annullando il gradiente. Lo si recupera dalla proprietà canonica: ogni support vector soddisfa , cioè
In linea di principio basta risolvere questa equazione per usando un solo support vector qualsiasi. In pratica, per una soluzione numericamente più stabile, la si risolve per tutti i support vector e si media il risultato (moltiplicando per e usando ):
In parole semplici: ogni support vector “sa” dove deve stare il margine, quindi ognuno fornisce una stima di ; per non fidarsi di un punto solo, si chiede a tutti e si fa la media.
5.3 Che cosa serve davvero a runtime#
Vale la pena distinguere le due fasi. In addestramento serve l’intera matrice di Gram: il kernel tra ogni coppia di punti del training set, perché l’obiettivo duale li coinvolge tutti. In inferenza, invece, tutta l’informazione necessaria è già condensata negli dei support vector e in : per classificare un punto nuovo si calcolano solo i kernel tra il punto nuovo e i support vector (questi non si possono precalcolare, perché dipendono dal punto da classificare, ma sono pochi).
5.4 Un bound sull’errore leave-one-out#
La sparsità ha anche una conseguenza teorica elegante. Si consideri la procedura di leave-one-out: si toglie un punto, si riaddestra, si verifica se il punto tolto viene classificato correttamente. Se il punto tolto non è un support vector, la soluzione riaddestrata è identica a quella originale (il punto non contribuiva), e siccome quel punto era correttamente classificato e fuori dal margine, resta correttamente classificato: non può generare errore. Gli unici punti che possono produrre un errore leave-one-out sono quindi i support vector, da cui il bound
cioè l’errore leave-one-out è limitato dalla frazione di support vector. Poche decine di support vector su migliaia di punti sono quindi anche un indizio di buona generalizzazione, non solo un vantaggio computazionale.
In parole semplici: se togliendo un punto la soluzione non cambia, quel punto non può essere sbagliato nel test leave-one-out. Solo i support vector possono “far danni”, quindi meno support vector ci sono, migliore è la stima dell’errore di generalizzazione.
6. SVM con kernel: confini non lineari#
Tutto il macchinario descritto vive nel feature space: lì l’iperpiano è lineare e il margine è una striscia diritta. Ma poiché sia l’addestramento (duale) sia la predizione (funzione discriminante) usano solo la funzione kernel, si può scegliere qualunque kernel valido, per esempio quello gaussiano, e ottenere confini di decisione arbitrariamente non lineari nello spazio originale: la retta nel feature space, riportata indietro, può diventare una curva qualsiasi, anche chiusa, che racchiude isole di una classe dentro l’altra. Anche le linee di margine, diritte nel feature space, appaiono come curve che affiancano il confine.
L’immagine da tenere a mente per un problema 2D con kernel gaussiano: un confine curvo e sinuoso tra le due classi, due curve di margine ai suoi lati, e una manciata di punti cerchiati (i support vector) appoggiati sulle curve di margine (e, nella variante soft margin della prossima sezione, anche sparsi nella zona di violazione). Tutti gli altri punti, per quanto numerosi, sono irrilevanti per la soluzione.
In parole semplici: la SVM disegna sempre una linea dritta, ma in uno spazio trasformato che non vediamo. Con il kernel giusto quella linea dritta, vista nel nostro spazio, può essere una curva complicata quanto serve. La combinazione “massimo margine + kernel + sparsità” è quello che ha reso le SVM per anni lo stato dell’arte della classificazione.
7. Soft margin: quando i dati non sono separabili#
7.1 Perché il margine rigido non basta#
Tutta la costruzione precedente assume che i dati siano linearmente separabili nel feature space. Con kernel abbastanza ricchi (per esempio il kernel gaussiano, che corrisponde a un feature space a dimensionalità infinita) uno spazio in cui i dati sono separabili si trova quasi sempre. Il problema è un altro: se il dataset contiene punti rumorosi o outlier, imporre la separazione perfetta costringe il modello a contorcersi per accontentare ogni singolo punto, producendo confini di decisione complessi e irregolari che inseguono il rumore. È l’overfitting nella sua versione SVM: i vincoli rigidi non lasciano al modello la libertà di sacrificare un punto anomalo in cambio di un confine più semplice.
7.2 Le variabili di slack e il primale soft margin#
Idea chiave: trasformare i vincoli rigidi in vincoli morbidi introducendo, per ogni punto, una variabile di slack che misura di quanto quel punto viola il proprio margine; le violazioni sono ammesse ma pagate nell’obiettivo, con un prezzo unitario scelto dal progettista.
Variabili di slack : misurano la violazione del margine da parte del punto -esimo.
Parametro : peso delle violazioni nell’obiettivo; regola il compromesso tra ampiezza del margine e numero/entità degli errori.
Il valore della slack ha una lettura geometrica diretta:
- : punto sul margine o oltre, dal lato corretto (nessuna violazione);
- : punto dentro il margine ma ancora dal lato corretto del confine (violazione morbida, classificazione ancora corretta);
- : punto oltre il confine di decisione, cioè misclassificato.
Senza il termine nell’obiettivo, il modello potrebbe violare i vincoli a piacere azzerando di fatto il problema; il termine di penalità dice “puoi sbagliare, ma ogni violazione costa”.
In parole semplici: la versione soft della SVM smette di pretendere la perfezione. Ogni punto scomodo può entrare nel margine o addirittura finire dal lato sbagliato, pagando una multa proporzionale allo sconfinamento. Il modello sceglie l’equilibrio più economico tra un margine largo e il totale delle multe.
7.3 Il ruolo di C e il compromesso bias-varianza#
Il parametro è l’analogo SVM del coefficiente di regolarizzazione, ma con verso opposto rispetto al della ridge regression:
- grande: le violazioni costano molto; al limite si torna al margine rigido, che non ammette alcuna violazione. Il confine di decisione deve accomodare ogni punto rumoroso, quindi diventa più complesso e irregolare: varianza alta, bias basso, poca regolarizzazione.
- piccolo: le violazioni costano poco; il modello preferisce margini larghi e confini lisci anche a costo di sbagliare qualche punto: varianza bassa, bias alto, molta regolarizzazione. Al limite gli errori non contano più nulla.
Mentre nella ridge grande significa più regolarizzazione, qui è piccolo a regolarizzare di più: informalmente si comporta come . Come ogni iperparametro, va scelto con una procedura di tuning (per esempio validazione incrociata): non esiste un valore giusto a priori.
In parole semplici: è la severità del giudice sulle multe per sconfinamento. Giudice severissimo ( grande): il modello non tollera errori e si contorce per accontentare ogni punto, rischiando l’overfitting. Giudice tollerante ( piccolo): il modello traccia un confine semplice e liscio, accettando qualche sbaglio. Attenzione all’esame: funziona al contrario del della regolarizzazione.
7.4 Il duale soft margin: vincoli a scatola#
La derivazione del duale ricalca quella del margine rigido, con un moltiplicatore in più per i vincoli . La lagrangiana è
con e . Le condizioni di stazionarietà rispetto a e sono identiche a prima ( e ); la novità è la derivata rispetto alle slack:
Poiché , ogni moltiplicatore risulta limitato superiormente da . Sostituendo tutto nella lagrangiana, le slack e i scompaiono e l’obiettivo duale risulta identico a quello del margine rigido; cambia solo l’insieme ammissibile.
I vincoli si chiamano box constraints: ogni variabile è confinata in una scatola con bordo inferiore e superiore.
Il valore di ora classifica i punti in tre categorie, informazione richiesta spesso all’esame:
- : il punto non è un support vector, sta fuori dal margine dal lato corretto e non contribuisce alla soluzione;
- : support vector con , cioè esattamente sul margine;
- : support vector che viola il margine: è dentro il margine e correttamente classificato se , misclassificato se .
Il cap a ha anche una lettura da regolarizzazione: limita il contributo massimo che un singolo campione può dare alla soluzione. Con piccolo nessun punto, per quanto anomalo, può tirare il confine verso di sé oltre una certa forza.
In parole semplici: nel soft margin ogni punto ha un’influenza compresa tra 0 e . Influenza zero: punto tranquillo lontano dal confine. Influenza intermedia: punto appoggiato esattamente sul margine. Influenza satura a : punto problematico che sconfina o è proprio dal lato sbagliato; il tetto gli impedisce comunque di dominare la soluzione.
7.5 La ν-SVM#
Un difetto pratico di è che il suo valore numerico non ha alcuna interpretazione: non si sa a priori come o si tradurranno in comportamento del modello. Esiste una formulazione alternativa, la -SVM, che sostituisce con un parametro dal significato trasparente:
cioè è contemporaneamente un limite superiore alla frazione di punti che violano il margine e un limite inferiore alla frazione di support vector. Per esempio garantisce che al più il 10% dei campioni violi il margine, e che i support vector siano almeno il 10% dei campioni. L’introduzione del soft margin, in generale, rende la funzione più liscia ma tende ad aumentare il numero di support vector, perché ai punti sul margine si aggiungono tutti quelli che lo violano.
8. Addestrare una SVM in pratica#
8.1 Il costo del problema quadratico#
In linea di principio addestrare una SVM significa solo risolvere il problema duale per trovare gli , e poi calcolare . In pratica il problema quadratico (QP) ha costo dell’ordine di nel numero di campioni: con training set grandi l’addestramento diretto è molto costoso. L’inferenza invece è economica, perché usa solo i support vector. Sono state sviluppate tecniche per accelerare l’addestramento, tutte basate sulla stessa strategia: risolvere iterativamente sottoproblemi piccoli invece del problema completo. Esistono anche varianti per l’apprendimento online, quando i dati non sono tutti disponibili all’inizio ma arrivano nel tempo (metodi basati su chunking e metodi incrementali).
8.2 Chunking#
Si costruisce un working set, inizialmente un sottocampione casuale del dataset, e si risolve il problema quadratico solo su di esso, ottenendo dei support vector provvisori. Si applica poi il modello all’intero dataset e si individua il worst set: i punti su cui il modello commette gli errori più gravi. Il nuovo working set è l’unione dei support vector correnti e del worst set, e si itera. La logica: i punti interessanti sono quelli già identificati come support vector più quelli su cui il modello fatica. Il metodo converge alla soluzione ottima, ma ha un difetto: la dimensione del working set non è limitata e può crescere fino a diventare paragonabile al dataset intero, vanificando il vantaggio.
8.3 Metodo di Osuna#
Stessa idea del chunking, ma con working set a dimensione fissa: a ogni iterazione si sostituisce un numero fisso di elementi del working set con altrettanti campioni misclassificati del dataset. La dimensione costante (per esempio il 10% del dataset) garantisce, grazie alla complessità cubica, un guadagno computazionale di ordini di grandezza su ogni sottoproblema. Converge all’ottimo, ma come il chunking richiede molte iterazioni.
8.4 Sequential Minimal Optimization (SMO)#
È l’approccio con le fondamenta teoriche più solide e il più usato in pratica. L’osservazione chiave: se si ottimizza il duale rispetto a due soli moltiplicatori alla volta, tenendo fissi gli altri, il sottoproblema ha soluzione analitica, senza bisogno di alcun solutore numerico (due variabili sono il minimo indispensabile, perché il vincolo impedisce di muoverne una sola). SMO itera quindi su coppie di punti, aggiornando ogni volta i loro in forma chiusa: servono moltissime iterazioni, ma ognuna è praticamente istantanea. Il criterio di arresto tipico è la stabilità della soluzione: ci si ferma quando gli aggiornamenti tra iterazioni successive scendono sotto una soglia.
In parole semplici: invece di risolvere un gigantesco problema di ottimizzazione tutto insieme, SMO lo sbriciola nel più piccolo pezzo possibile, due punti alla volta, per il quale la soluzione si scrive con carta e penna. Tanti micro-passi velocissimi al posto di un macro-passo proibitivo.
9. SVM multi-classe#
La definizione della SVM è intrinsecamente binaria: il margine è la distanza tra due classi. Estendere la formulazione stessa a più classi si è rivelato difficile (molti tentativi, pochi successi), quindi in pratica si decompone il problema multi-classe in più problemi binari, con le strategie generali già viste per i classificatori binari.
- One-against-all: un problema a classi diventa problemi binari “classe contro tutte le altre”. Ogni modello è addestrato sull’intero dataset. In test si applicano tutti i modelli e si sceglie la classe con il margine più alto, cioè la predizione più confidente. Pochi modelli ma problemi grandi: training costoso, test economico, memoria contenuta; il confronto tra modelli globali rende la scelta della classe piuttosto robusta.
- One-against-one: si addestra un modello per ogni coppia di classi, modelli, ciascuno sul sottoinsieme di dati delle due classi coinvolte. In test si applicano tutti i modelli e si sceglie la classe con majority voting. Molti modelli ma problemi piccoli: training complessivamente più leggero per singolo problema, test e memoria costosi. È l’approccio con le prestazioni migliori, grazie alla decomposizione più efficace.
- DAGSVM: addestramento identico a one-against-one, ma il test usa un grafo aciclico diretto di decisione: a ogni nodo un classificatore binario esclude una classe, così per classificare un punto bastano valutazioni invece di . Accortezza progettuale: i modelli più affidabili vanno posizionati in cima al grafo, perché un errore nei primi nodi esclude la classe giusta senza possibilità di recupero.
In sintesi: one-against-one è il più accurato, DAGSVM ne è un’approssimazione più veloce in test, one-against-all è il più economico in memoria.
10. SVM per regressione (cenni)#
L’idea del margine si può trasportare in regressione rovesciandola. Invece di una zona vuota da massimizzare tra due classi, si definisce un tubo di tolleranza di ampiezza attorno alla funzione di regressione: gli errori dei punti che cadono dentro il tubo non vengono penalizzati affatto, mentre si penalizzano solo gli scostamenti oltre . Rispetto alla regressione classica, che penalizza ogni scostamento per quanto piccolo, si ottiene un metodo più robusto e di nuovo sparso: i support vector sono i punti sul bordo o fuori dal tubo, e solo loro determinano la soluzione. Con i kernel, il tubo può seguire funzioni non lineari arbitrarie. Il corso si limita a questa intuizione, senza sviluppare la formulazione completa.
11. SVM, perceptron e logistic regression a confronto#
Le tre tecniche condividono lo stesso spazio delle ipotesi per la decisione: una funzione lineare (eventualmente in un feature space) di cui si guarda il segno. Ciò che le distingue è come scelgono e dato il dataset:
| Aspetto | Perceptron | Logistic regression | SVM |
|---|---|---|---|
| Criterio di scelta | azzerare gli errori sui punti misclassificati | massima verosimiglianza sulle probabilità | massimo margine |
| Soluzione trovata | una qualunque separazione valida; dipende da inizializzazione e ordine dei dati | unica, ma influenzata da tutti i punti del dataset | unica, determinata dai soli support vector |
| Dati non separabili | l’algoritmo non converge | gestiti naturalmente | gestiti con il soft margin |
| Output probabilistico | no | sì | no (solo classe e margine) |
| Sparsità | no | no | sì |
| Uso dei kernel | possibile ma senza sparsità | possibile ma senza sparsità | naturale ed efficiente |
Il confronto chiarisce il posizionamento delle SVM: rispetto al perceptron aggiungono un criterio di preferenza (il margine) che rende la soluzione unica, riproducibile e più robusta; rispetto alla logistic regression rinunciano all’output probabilistico in cambio di sparsità e di un’integrazione naturale con i kernel.
In parole semplici: perceptron, logistic regression e SVM disegnano tutte una linea di separazione; il perceptron ne trova una qualsiasi, la logistic regression quella più plausibile in senso probabilistico ascoltando tutti i punti, la SVM quella più prudente ascoltando solo i punti di frontiera.
12. Procedura d’esame ed esercizi svolti#
Gli esercizi numerici sulle SVM sono tra i più frequenti in assoluto negli esami del corso. Le due tipologie ricorrenti: analizzare una SVM lineare di cui sono dati e (support vector, margine, classificazione, effetto di nuovi punti) e ricavare da un piccolo dataset 2D la SVM a massimo margine (support vector, , , margine). Conviene padroneggiare le formule operative e le procedure meccaniche prima di affrontare gli svolgimenti.
12.1 La cassetta degli attrezzi#
Per una SVM lineare addestrata (in forma canonica):
- Confine di decisione: .
- Iperpiani di margine: (lato positivo) e (lato negativo).
- Margine: ; ampiezza totale del corridoio: .
- Classificazione di un punto: segno di .
- Test di support vector: si calcola . Se vale esattamente : punto sul margine, support vector. Se vale meno di (incluso negativo): punto dentro il margine o misclassificato, support vector nel caso soft margin. Se vale più di : punto fuori dal margine, non è un support vector.
- Vincoli sugli : , (la somma degli dei positivi uguaglia quella dei negativi), per ogni non support vector.
- Aggiunta di un punto nuovo: se misclassificato dalla SVM corrente, bisogna sempre riaddestrare; se correttamente classificato e strettamente fuori dal margine (), la soluzione non cambia e non serve riaddestrare; se correttamente classificato ma sul margine o dentro il margine (), in generale serve riaddestrare perché la soluzione a massimo margine può cambiare (con l’eccezione del punto che cade esattamente sul margine, che può lasciare la soluzione invariata).
- Rimozione di un punto: se non è un support vector la soluzione resta identica; se è un support vector la soluzione in generale cambia, e il margine può solo aumentare o restare uguale (si è tolto un vincolo, quindi la regione ammissibile si allarga).
- Numero minimo di support vector: almeno due, almeno uno per classe: su entrambi gli iperpiani di margine deve appoggiarsi almeno un punto, altrimenti si potrebbe allargare il margine.
12.2 Esercizio 1 (da esame): analisi di una SVM lineare data#
Traccia. Si consideri un classificatore SVM lineare definito dai parametri e . Rispondere motivando adeguatamente:
- il punto è un support vector?
- Fornire un esempio di punto che giace sul confine di decisione.
- Come viene classificato il punto ?
- Si raccoglie un nuovo campione di cui si sa che appartiene alla classe negativa. È necessario riaddestrare la SVM?
Svolgimento.
Punto 1. Un punto è un support vector se giace sul margine (o, nel caso soft margin, dentro il margine). Il test è calcolare :
Il valore è esattamente : il punto giace sull’iperpiano di margine del lato positivo. Sì, è un support vector, e in particolare sta esattamente sul margine (la risposta completa specifica entrambe le cose).
Punto 2. Il confine di decisione è l’insieme dei punti che soddisfano
Basta esibirne uno: scegliendo si ottiene , quindi il punto giace sul confine di decisione. (Qualunque altra soluzione dell’equazione è ugualmente valida.)
Punto 3. Si calcola il valore della funzione discriminante e se ne guarda il segno:
Il segno è positivo, quindi il punto è classificato nella classe positiva. Si può aggiungere che : il punto è ben oltre il margine, la classificazione è molto confidente.
Punto 4. Si calcola e si confronta con l’etichetta nota :
La SVM classifica il punto come positivo, ma la sua classe vera è negativa: il punto è misclassificato, quindi è necessario riaddestrare: la soluzione corrente viola la separazione e il nuovo problema di ottimizzazione produrrà in generale un confine diverso. Vale la pena riportare lo schema decisionale completo, spesso richiesto nella motivazione:
- punto misclassificato: riaddestrare sempre;
- punto correttamente classificato e strettamente fuori dal margine: nessun riaddestramento, la soluzione non cambierebbe (il punto avrebbe );
- punto correttamente classificato ma dentro il margine: riaddestrare, perché il vincolo di quel punto è violato dalla soluzione corrente e il confine a massimo margine cambia;
- caso limite del punto che cade esattamente sul margine: il vincolo è soddisfatto con uguaglianza, la soluzione corrente resta ottima e può non servire riaddestrare (il punto diventa semplicemente un ulteriore support vector).
12.3 Procedura meccanica: trovare la SVM da un dataset 2D#
Data una manciata di punti etichettati nel piano, la procedura per trovare la SVM a massimo margine a mano è la seguente.
- Disegnare i punti (o ragionare sulle coordinate) e individuare la zona di confine tra le classi: i candidati support vector sono i punti di ciascuna classe più vicini all’altra classe.
- Sfruttare le simmetrie: se il dataset è simmetrico rispetto a un asse, il confine ottimo rispetta la simmetria (per esempio è verticale o orizzontale) e la forma di si semplifica.
- Caso a due support vector (uno per classe): il confine è l’asse del segmento che li congiunge (perpendicolare al segmento, passante per il punto medio) e il margine è metà della loro distanza. Questo dà anche un limite superiore generale: il margine non può mai superare metà della distanza minima tra punti di classi opposte.
- Impostare i vincoli canonici sui support vector ipotizzati: per ogni candidato, ed eventualmente la forma di suggerita dalla simmetria. Risolvere il sistema lineare per e .
- Verificare tutti gli altri punti: ogni punto non support vector deve soddisfare . Se un punto viola il vincolo, l’ipotesi sui support vector era sbagliata: quel punto va incluso tra i support vector e si ripete il calcolo. Questa verifica è il passaggio che gli studenti dimenticano più spesso, ed è quella che certifica la soluzione.
- Calcolare il margine: .
- Se richiesti i moltiplicatori: risolvere insieme a , con fuori da , e controllare che tutti gli risultino positivi (un negativo segnala un’ipotesi sbagliata sui support vector).
12.4 Esercizio 2: support vector, pesi e margine da un dataset#
Traccia. È dato il dataset bidimensionale:
| 1 | 3 | 1 | |
| 2 | 3 | ||
| 3 | 6 | 1 | |
| 4 | 6 | ||
| 5 | 1 | 0 | |
| 6 | 0 | 1 | |
| 7 | 0 | ||
| 8 | 0 |
Addestrando una SVM lineare hard margin: individuare i support vector, calcolare , , il margine e i moltiplicatori .
Svolgimento.
Passo 1: geometria e candidati. I punti positivi occupano la regione con , i negativi la regione con . Il dataset è simmetrico rispetto all’asse (a ogni punto con corrisponde il gemello con ), quindi il confine ottimo è una retta verticale: . I punti positivi più vicini alla zona di confine sono e ; il negativo più vicino è . Candidati support vector: .
Passo 2: vincoli canonici. Con :
- per e (target ): ;
- per (target ): , cioè .
Sottraendo la seconda equazione dalla prima: , quindi
Il confine di decisione è , cioè la retta verticale ; gli iperpiani di margine sono e .
Passo 3: verifica degli altri punti. Si controlla per i punti fuori da :
- : , ok;
- : , ok;
- : , ok;
- : , ok;
- : , ok.
Tutti i vincoli sono soddisfatti: la soluzione è certificata e i support vector sono esattamente , , .
Passo 4: margine.
coerente con la geometria: il confine dista esattamente 1 sia da sia da . L’ampiezza totale del corridoio è .
Passo 5: moltiplicatori. Si impone e :
Dalla seconda componente della prima equazione: , quindi . Dal vincolo di somma: . Sostituendo nella prima componente: , da cui
Tutti gli dei support vector sono positivi: l’ipotesi era corretta. Verifica incrociata di con la formula della media sui support vector (kernel lineare ):
dove per ciascun si è calcolato . Il valore coincide con quello trovato prima.
12.5 Esercizio 3: aggiungere e togliere punti#
Traccia. Con riferimento al dataset e alla soluzione dell’esercizio 2 (, , margine 1), dire che cosa succede alla soluzione nei seguenti scenari, ciascuno considerato separatamente:
- si aggiunge il punto con classe ;
- si aggiunge il punto con classe ;
- si rimuove il punto ;
- si rimuove il support vector .
Svolgimento.
Scenario 1: punto nuovo fuori dal margine. Si calcola : il punto è correttamente classificato e strettamente oltre il margine. Il suo vincolo è già soddisfatto dalla soluzione corrente, che quindi resta ottima: la soluzione non cambia e il punto avrebbe . Non serve riaddestrare.
Scenario 2: punto nuovo misclassificato. Si calcola : il punto è misclassificato dalla SVM corrente, quindi bisogna riaddestrare. Il dataset resta linearmente separabile (tutti i negativi hanno , tutti i positivi, incluso il nuovo, ), quindi la hard margin SVM esiste ancora. I nuovi punti di classi opposte più vicini sono e , a distanza : il margine non può superare , e viene realizzato dall’asse del loro segmento, la retta verticale . Imponendo i vincoli canonici con : e , da cui , quindi
Verifica rapida degli altri punti: : ; : ; tutti soddisfatti. Il margine è crollato da a per colpa di un unico punto: se quel punto fosse rumore, la hard margin SVM ne resterebbe deformata. È esattamente lo scenario in cui conviene una soft margin con moderato: pagando una slack sul punto anomalo ( rispetto al vecchio confine) il modello può mantenere un margine ampio, e per sufficientemente piccolo la soluzione soft resta vicina a quella originale trattando il punto come outlier.
Scenario 3: rimozione di un non support vector. Il punto ha (era stato verificato: ). La soluzione dipende solo dai support vector, quindi rimuoverlo non cambia assolutamente nulla: stessi , , margine e support vector.
Scenario 4: rimozione di un support vector. Rimuovendo sparisce un vincolo attivo, quindi la soluzione in generale cambia e il margine può solo aumentare o restare uguale. I negativi più vicini diventano e ; il dataset resta simmetrico rispetto a , quindi si cerca ancora . Vincoli canonici: per : ; per : , cioè . Dalla prima: , quindi
Il confine si sposta in e il margine cresce da a . Verifica di : , ok; : , ok. I nuovi support vector sono .
In parole semplici: la soluzione SVM è insensibile a tutto ciò che accade lontano dal confine: aggiungere o togliere punti tranquilli non la muove di un millimetro. È invece sensibile ai punti di frontiera: aggiungerne uno scomodo restringe il margine (o costringe al soft margin), toglierne uno lo allarga.
12.6 Domande teoriche ricorrenti#
Oltre agli esercizi numerici, alcune domande teoriche ritornano spesso; conviene avere pronta la linea di risposta.
- Derivare il duale dal primale (soft margin): scrivere la lagrangiana con moltiplicatori per i vincoli di margine e per ; annullare i gradienti rispetto a , , ottenendo , e ; sostituire nella lagrangiana ed eliminare le variabili primali; concludere con l’obiettivo duale e i box constraints (sezione 7.4).
- Perché la soluzione è sparsa: per la condizione KKT di complementarietà : i punti fuori dal margine hanno vincolo non attivo e quindi (sezione 5.1).
- Perché massimizzare il margine: robustezza al rumore sui dati di test, unicità e riproducibilità della soluzione (contro l’arbitrarietà del perceptron), e legame con la generalizzazione tramite il bound leave-one-out (sezioni 2.2, 2.3 e 5.4).
- Ruolo di e legame col bias-varianza: grande equivale a poca regolarizzazione (margine rigido, varianza alta), piccolo a molta regolarizzazione (margine morbido, bias alto); comportamento opposto al della ridge (sezione 7.3).
- Interpretazione dei valori di nel soft margin: non support vector; sul margine; dentro il margine o misclassificato a seconda che o (sezione 7.4).
Glossario#
| Termine | Definizione |
|---|---|
| Sparse kernel machine | Metodo kernel la cui soluzione dipende solo da un sottoinsieme dei campioni di training (es. SVM, RVM). |
| Margine | Distanza tra l’iperpiano separatore e il punto del dataset più vicino; nella forma canonica vale . |
| Classificatore a massimo margine | Classificatore lineare che sceglie, tra le separazioni possibili, quella con margine massimo. |
| Iperpiano canonico | Normalizzazione della coppia tale che sui punti più vicini; elimina le infinite soluzioni equivalenti per riscalamento. |
| Problema primale | Formulazione con vincoli ; variabili nello spazio dei parametri. |
| Moltiplicatori di Lagrange () | Variabili non negative, una per vincolo, che trasformano il problema vincolato nella lagrangiana; misurano l’importanza di ciascun campione nella soluzione. |
| Problema duale | Riformulazione dell’ottimizzazione nelle sole variabili , in cui le feature compaiono solo tramite kernel; da massimizzare con vincoli (o ) e . |
| Condizioni KKT | Condizioni di ottimalità dei problemi convessi vincolati: ammissibilità primale, ammissibilità duale e complementarietà . |
| Support vector | Campione con : nel margine rigido è un punto esattamente sul margine; nel soft margin anche un punto che viola il margine. |
| Funzione discriminante | : somma sui soli support vector. |
| Bias () | Termine costante ricavato dai vincoli canonici sui support vector, in pratica mediando su tutti i support vector per stabilità numerica. |
| Bound leave-one-out | : l’errore leave-one-out è limitato dalla frazione di support vector. |
| Variabile di slack () | Entità della violazione del margine del punto : nessuna violazione, dentro il margine ma classificato bene, misclassificato. |
| Soft margin SVM | Variante che ammette violazioni del margine penalizzandole con nell’obiettivo; gestisce dati non separabili e rumore. |
| Parametro | Prezzo delle violazioni: grande margine rigido (varianza alta), piccolo più regolarizzazione (bias alto); agisce al contrario del della ridge. |
| Box constraints | Vincoli del duale soft margin: ogni moltiplicatore è limitato sia sotto sia sopra. |
| -SVM | Formulazione alternativa con parametro interpretabile : frazione di margin errors frazione di support vector. |
| Chunking | Addestramento iterativo su un working set formato dai support vector correnti più i campioni con errore maggiore; il working set può crescere. |
| Metodo di Osuna | Addestramento iterativo con working set a dimensione fissa, aggiornato sostituendo elementi con campioni misclassificati. |
| SMO | Sequential Minimal Optimization: ottimizza analiticamente due moltiplicatori alla volta; iterazioni numerosissime ma quasi gratuite. |
| One-against-all | Decomposizione multi-classe in problemi binari sull’intero dataset; in test vince la classe con margine più alto. |
| One-against-one | Decomposizione in problemi binari su coppie di classi; in test majority voting; l’approccio più accurato. |
| DAGSVM | Variante di one-against-one che in test usa un grafo di decisione: bastano classificatori. |
| SVM per regressione | Estensione con tubo di tolleranza : si penalizzano solo gli errori oltre il tubo; soluzione sparsa e robusta. |