Vai al contenuto

Macchine a vettori di supporto

Da Wikipedia, l'enciclopedia libera.
Esempio di separazione lineare, usando le SVM.

Le macchine a vettori di supporto (SVM, dall'inglese support-vector machines o networks[1]) sono dei modelli di apprendimento supervisionato associati ad algoritmi di apprendimento per la regressione e la classificazione.[2]

Dato un insieme di esempi di addestramento, ognuno dei quali etichettato con la classe di appartenenza fra due possibili classi, l'algoritmo di addestramento per le SVM costruisce un modello che assegna i nuovi esempi a una delle due classi, ottenendo quindi un classificatore lineare binario non probabilistico. Un modello SVM lavora su una rappresentazione degli esempi come punti nello spazio, mappati in modo tale che gli esempi appartenenti alle due diverse categorie siano chiaramente separati con un margine il più possibile ampio. Nuovi esempi saranno mappati nello stesso spazio e la predizione della categoria alla quale essi appartengono viene fatta sulla base del lato nel quale ricadono.

Oltre alla classificazione lineare è possibile fare uso delle SVM per risolvere problemi non linearmente separabili, utilizzando il kernel trick, comune ai metodi kernel, ossia mappando implicitamente i dati di input su uno spazio di caratteristiche multidimensionale nel quale si possono applicare modelli lineari, essendo la soluzione basata sul prodotto scalare in tale spazio codificato dalla funzione kernel [3]. Le SVM possono essere usate anche per la regressione, utilizzando opportune funzioni obiettivo ε-sensbili.[4]

Con dati non etichettati non è possibile addestrare in modo supervisionato e si rende necessario ricorrere all'apprendimento non supervisionato: questo approccio mira a identificare classi naturali in cui si raggruppino i dati, mappando successivamente nuove istanze ai gruppi identificati. L'algoritmo di raggruppamento a vettori di supporto,[5] ideato da Hava Siegelmann e Vladimir Vapnik, applica le statistiche dei vettori di supporto, sviluppate per gli algoritmi relativi alle SVM, per classificare dati non etichettati, e rappresenta uno degli algoritmi di raggruppamento maggiormente utilizzati in ambito industriali.

Le macchine a vettori di supporto possono essere pensate come una tecnica alternativa per l'apprendimento di classificatori non lineari, contrapposti alle classiche reti neurali artificiali. Le reti neurali a un solo strato (cfr. il percettrone) prevedono algoritmi di apprendimento efficiente, ma risultano utili soltanto nel caso di dati linearmente separabili. Viceversa, le reti neurali (percettroni) multistrato possono rappresentare funzioni non lineari, ma risultano più difficili d'addestrare a causa dell'alto numero di dimensioni dello spazio dei pesi e poiché le tecniche più diffuse, come la back-propagation, permettono di ottenere i pesi della rete risolvendo problemi di ottimizzazione non convessi e non vincolati che, di conseguenza, presentano un numero indeterminato di minimi locali.

La tecnica di addestramento SVM risolve entrambi i problemi: presenta un algoritmo efficiente ed è in grado di rappresentare funzioni non lineari complesse. I parametri caratteristici del modello sono ottenuti mediante la risoluzione di un problema di programmazione quadratica convesso con vincoli di uguaglianza o di tipo boxed (in cui il valore del parametro deve essere mantenuto all'interno di un intervallo), che prevede un unico minimo globale.

Formalmente, una macchina a vettori di supporto costruisce un iperpiano o un insieme di iperpiani in uno spazio a più dimensioni o a infinite dimensioni, il quale può essere usato per classificazione, regressione e altri scopi come il rilevamento delle anomalie. Intuitivamente una buona separazione si può ottenere dall'iperpiano che ha la distanza maggiore dal punto (del training set) più vicino di ognuna delle classi; in generale maggiore è il margine fra questi punti, minore è l'errore di generalizzazione commesso dal classificatore.

Mentre il problema originale può essere definito in uno spazio di finite dimensioni, spesso succede che gli insiemi da distinguere non siano linearmente separabili in quello spazio. Per questo motivo è stato proposto che lo spazio originale di dimensioni finite venisse mappato in uno spazio con un numero di dimensioni maggiore, rendendo presumibilmente più facile trovare una separazione in questo nuovo spazio. Per mantenere il carico computazionale accettabile, le mappature utilizzate dalle SVM sono fatte in modo tale che i prodotti scalari dei vettori delle coppie di punti in ingresso siano calcolati facilmente in termini delle variabili dello spazio originale, attraverso la loro definizione in termini di una funzione kernel scelta in base al problema da risolvere. Gli iperpiani in uno spazio multidimensionale sono definiti come l'insieme di punti il cui prodotto scalare con un vettore in quello spazio è costante, dove tale insieme di vettori è un insieme ortogonale (e quindi minimale) di vettori che definiscono un iperpiano. I vettori che definiscono gli iperpiani possono essere scelti come combinazioni lineari con parametri delle immagini dei vettori delle caratteristiche . Con tale scelta dell'iperpiano, i punti nello spazio delle caratteristiche che sono mappati nell'iperpiano sono definiti dalla relazione . Si noti che se diventa più piccolo al crescere di rispetto a , ogni termine della somma misura il grado di vicinanza del punto di test al corrispondente punto di base . Si noti che l'insieme di punti mappato in un qualsiasi iperpiano può produrre un risultato piuttosto complicato, permettendo discriminazioni molto più complesse fra insiemi non completamente convessi nello spazio originario.

L'algoritmo SVM originale è stato inventato da Vladimir Vapnik e Aleksej Červonenkis nel 1963.

Nel 1992 Bernhard Boser, Isabelle Guyon e lo stesso Vapnik suggerirono un modo per creare un classificatore non lineare applicando il metodo kernel all'iperpiano con il massimo margine. Lo standard corrente che propone l'utilizzo di un margine soft (non rigido) fu invece proposto da Corinna Cortes e Vapnik nel 1993 e pubblicato nel 1995 [1]. Un modello analogo è costituito dalla cosiddetta -SVM. [6]

Sia dato un training set di punti della forma

dove le sono o , per indicare la classe di appartenenza del punto . Ciascun è un vettore -dimensionale di numeri reali. Si vuole trovare "l'iperpiano di massimo margine" che divida il gruppo di punti per i quali da quello per cui , definito in modo che la distanza fra l'iperpiano e il punto più vicino per ciascun gruppo risulti massimale.

Un iperpiano si può scrivere come insieme di punti che soddisfano

dove un vettore normale (non necessariamente normalizzato) rispetto all'iperpiano. Tale forma è molto simile alla forma normale di Hesse, tranne per il fatto che non è necessariamente un vettore unitario. Il parametro determina lo scarto dell'iperpiano dall'origine lungo il vettore normale .

Spesso nella letteratura sull'argomento si definisce un termine noto in modo che

Margine rigido

[modifica | modifica wikitesto]

Se i dati di training sono linearmente separabili, si possono scegliere due iperpiani paralleli che separino le due classi di dati, in modo che la distanza fra di essi sia la più grande possibile. La regione limitata da tali due iperpiani sarà il "margine", e l'iperpiano di margine massimo è quello che si trova compreso fra di essi equidistante da entrambi. Con un dataset normalizzato o standardizzato, tali iperpiani possono essere descritti attraverso le equazioni

(ciascun punto su questo limite o al di sopra di esso è di una classe, con etichetta 1)

e

(ciascun punto su questo limite o al di sopra di esso è di una classe, con etichetta −1).

Geometricamente, la distanza fra questi due iperpiani è ,[7] quindi per massimizzare la distanza fra i piani si deve minimizzare . La distanza viene calcolata come distanza da un punto all'equazione del piano. Si deve anche evitare che i punti ricadano nel margine, perciò si aggiunge il vincolo seguente: per ogni si ha se oppure se Tali vincoli stabiliscono che ogni punto debba trovarsi sul lato corretto del margine. Ciò si può riscrivere anche come

Si ottiene così il seguente problema di ottimizzazione:

I valori di e che risolvono tale problema determinano il classificatore finale, , dove è la funzione segno.

Una conseguenza importante di questa descrizione geometrica è che l'iperpiano di massimo margine viene completamente determinato dai che si trovano più vicini ad esso. Essi sono i vettori di supporto.

Margine Flessibile

[modifica | modifica wikitesto]

Per estendere la SVM a casi nei quali i dati non siano linearmente separabili, è d'aiuto la funzione di perdita a cerniera o hinge loss:

Si noti che è l' i-esimo obiettivo (ossia, in tal caso, 1 o -1), e è l' i-esimo output.

Questa funzione è nulla se i vincoli del problema sono soddisfatti, in altre parole, se si trova sul lato corretto del margine. Per dati sul lato sbagliato del margine, il valore della funzione è proporzionale alla distanza dal margine.

L'obiettivo dell'ottimizzazione è allora di minimizzare:

dove il parametro determina il compromesso fra l'aumento delle dimensioni del margine e assicurare che si trovi sul lato corretto del margine (Si noti che si può aggiungere un peso a entrambi i termini nella equazione sopra). Decostruendo la hinge loss, questo problema di ottimizzazione può essere riformulato come segue:

Pertanto, per grandi valori di , si comporterà in modo simile a una SVM a margine rigido, se i dati di input sono linearmente classificabili, ma comunque imparerà se una regola di classificazione sia valida o meno.

Classificazione non lineare

[modifica | modifica wikitesto]
Kernel machine

L'algoritmo originale dell'iperpiano di massimo margine proposto da Vapnik nel 1963 costruiva un classificatore lineare. Tuttavia, nel 1992, Bernhard Boser, Isabelle Guyon e Vladimir Vapnik suggerivano un modo per creare classificatori non lineari applicando il "trucco del kernel" (proposto originariamente da Aizerman et al.[8]) a iperpiani di massimo margine.[9] Il trucco del kernel, in cui i prodotti scalari sono sostituiti con kernel, si deriva facilmente nella rappresentazione duale del problema risolto dalla SVM. Ciò consente all'algoritmo di adattare un iperpiano a massimo margine in uno spazio delle caratteristiche trasformato. La trasformazione può essere non lineare e lo spazio trasformato ad alte dimensioni; sebbene il classificatore sia un iperpiano nello spazio delle caratteristiche trasformato, potrebbe essere non lineare nello spazio di input originario.

È da rimarcare che lavorare in uno spazio a maggiori dimensioni space incrementa l'errore di generalizzazione delle SVM, sebbene con un numero di esempi sufficiente l'algoritmo si comporta ancora bene.[10]

Fra i kernel più comuni ci sono:

  • il polinomiale (omogeneo): . In particolare, quando , si ha il kernel lineare.
  • il polinomiale (non omogeneo): .
  • la funzione radiale di base gaussiana: for . A volte parametrizzata usando .
  • la funzione sigmoide (tangente iperbolica): per qualche (non tutti) e .

Il kernel è correlato con la trasformazione tramite l'equazione . Il valore è anche nello spazio trasformato space, con . I prodotti scalari con per la classificazione possono di nuovo essere calcolati tramite kernel trick, cioè .

Calcolo del classificatore SVM

[modifica | modifica wikitesto]

Il calcolo del classificatore SVM (con margine flessibile) richiede la minimizzazione di un'espressione della forma

Ci si focalizzerà sui classificatori a margine flessibile poiché, come detto in precedenza, scegliendo un valore di sufficientemente piccolo si ottiene anche la versione a margine rigido utile nel caso di dati di input linearmente separabili. Nel seguito verrà descritto in dettaglio l'approccio classico, che richiede la riduzione dell'equazione precedente a un problema di programmazione quadratica.

Il problema di minimizzazione descritto nella formula precedente può essere riscritto come problema di ottimizzazione con vincoli usando una funzione obiettivo differenziabile nel modo nel seguito descritto.

Per ogni si introduce una variabile . Si noti che rappresenta il più piccolo numero non negativo che soddisfi

Pertanto si può riscrivere il problema di ottimizzazione come segue:

Questo si dice problema primale.

Ricavando il duale lagrangiano del problema primale, si ottiene il problema semplificato:

Questo si dice problema duale. Dato che il problema di massimizzazione duale è una funzione quadratica su sotto vincoli lineari, può essere risolto in modo efficiente impiegando algoritmi di programmazione quadratica.

Qui, le variabili sono definite di modo che

Inoltre, esattamente quando si trova su lato corretto del margine e quando si trova sul confine del margine stesso. Ne consegue che può essere scritto come una combinazione lineare dei vettori di supporto.

Il termine noto, , può essere ricavato trovando un sul confine e risolvendo

(si noti che essendo .)

Esempio di addestramento di SVM con kernel dato da φ((a, b)) = (a, b, a2 + b2)

Si supponga ora che si voglia imparare una regola di classificazione a non lineare che corrisponda a una regola lineare per punti trasformati Inoltre, sia data una funzione kernel che soddisfa .

Si sa che il vettore per la classificazione lineare nello spazio trasformato soddisfa

dove, i si ottengono risolvendo il problema di ottimizzazione

I coefficienti possono essere trovati attraverso programmazione quadratica, come visto prima. Di nuovo, si può trovare un indice tale che , di modo che si trovi sul confine del margine nello spazio trasformato, e poi si risolve

Infine,

Minimizzazione del rischio empirico

[modifica | modifica wikitesto]
Lo stesso argomento in dettaglio: Minimizzazione del rischio empirico.

SVM strutturata

[modifica | modifica wikitesto]

La SVM strutturata è un'estensione del modello tradizionale di SVM. Mentre questo è progettato primariamente per la classificazione binaria, multi-classe, e per risolvere problemi di regressione, la SVM strutturata amplia la sua applicazione al trattamento di etichette di output strutturate generalizzate, come ad esempio alberi di parsing, classificazione tassonomica, allineamento di sequenze e molti altri problemi.

Altre estensioni

[modifica | modifica wikitesto]
  • Support vector clustering (SVC)
  • SVM multiclasse
  • SVM trasduttiva
  • SVM per regressione
  • SVM bayesiana

Alcune applicazioni per cui le SVM sono state utilizzate con successo sono:

Implementazioni

[modifica | modifica wikitesto]

I seguenti framework mettono a disposizione un'implementazione di SVM:

  1. 1 2 (EN) Corinna Cortes e Vladimir Vapnik, Support-vector networks, in Machine Learning, vol. 20, n. 3, 1995, pp. 273–297, DOI:10.1007/BF00994018.
  2. (EN) Vladimir N. Vapnik, The Support Vector method, in Wulfram Gerstner, Alain Germond, Martin Hasler, Jean-Daniel Nicoud (a cura di), Artificial Neural Networks — ICANN'97, Springer, 1997, pp. 261–271, DOI:10.1007/BFb0020166.
  3. (EN) Mariette Awad e Rahul Khanna, Support Vector Machines for Classification, Apress, 2015, pp. 39–66, DOI:10.1007/978-1-4302-5990-9_3, ISBN 978-1-4302-5990-9.
  4. Hsin-Hsiung Huang, Tu Xu e Jie Yang, Comparing logistic regression, support vector machines, and permanental classification methods in predicting hypertension, in BMC Proceedings, vol. 8, n. 1, 17 giugno 2014, pp. S96, DOI:10.1186/1753-6561-8-S1-S96.
  5. Asa Ben-Hur, David Horn e Hava T. Siegelmann, Support vector clustering, in J. Mach. Learn. Res., vol. 2, 2002, pp. 125–137, DOI:10.5555/944790.944807.
  6. (EN) Bernhard Schölkopf, Alex J. Smola e Robert C. Williamson, New Support Vector Algorithms, in Neural Computation, vol. 12, n. 5, 2000, pp. 1207–1245, DOI:10.1162/089976600300015565.
  7. (EN) Why is the SVM margin equal to $\frac{2}{\|\mathbf{w}\|}$?, su Mathematics Stack Exchange. URL consultato il 9 ottobre 2025.
  8. M. A. Aizerman, È. M. Braverman, L. I. Rozonoèr, “Theoretical foundation of potential functions method in pattern recognition”, Avtomat. i Telemekh., 25:6 (1964), 917–936, su www.mathnet.ru.
  9. Bernhard E. Boser, Isabelle M. Guyon e Vladimir N. Vapnik, A training algorithm for optimal margin classifiers, in Proceedings of the fifth annual workshop on Computational learning theory, Association for Computing Machinery, 1º luglio 1992, pp. 144–152, DOI:10.1145/130385.130401.
  10. Chi Jin e Liwei Wang, Dimensionality Dependent PAC-Bayes Margin Bound, in Advances in Neural Information Processing Systems, vol. 25, Curran Associates, Inc., 2012.
  • Stuart Russell e Peter Norvig, Intelligenza artificiale: un approccio moderno, Prentice Hall, 2003, ISBN 88-7192-229-8
  • Bernhard Schölkopf and Alexander J. Smola, Learning with Kernels - Support Vector Machines, Regularization, Optimization, and Beyond, 2018. ISBN 9780262536578

Voci correlate

[modifica | modifica wikitesto]

Altri progetti

[modifica | modifica wikitesto]

Collegamenti esterni

[modifica | modifica wikitesto]
Controllo di autoritàLCCN (EN) sh2008009003 · GND (DE) 4505517-8 · BNF (FR) cb16627142b (data) · J9U (EN, HE) 987007539991605171