Macchina a vettori di supporto (SVM)

Che cos’è una macchina a vettori di supporto?

Una Support Vector Machine (SVM) è un algoritmo di apprendimento con supervisione, utilizzato in molti problemi di classificazione e regressione, tra cui le applicazioni mediche di elaborazione dei segnali, l’elaborazione del linguaggio naturale e il riconoscimento di dati immagine e vocali.

L’obiettivo di un algoritmo SVM è quello di trovare un iperpiano che separi, al miglior grado possibile, i punti di dati di una classe da quelli di un’altra classe. Per “migliore” si intende l’iperpiano che ha il margine maggiore tra le due classi, rappresentate dal più e dal meno nella figura qui sotto. Per margine si intende la larghezza massima della linea parallela all’iperpiano che non ha punti di dati interni. L’algoritmo è in grado di trovare un iperpiano di questo tipo solo per i problemi separabili in modo lineare, mentre per i problemi più pratici l’algoritmo massimizza il margine soft, il che consente un numero ridotto di classificazioni errate.

Illustrazione dei concetti fondamentali delle macchine a vettori di supporto: iperpiano, vettori di supporto, margine e punti di dati separati in due classi.

Definizione del “margine” tra le classi, il criterio che le SVM cercano di ottimizzare.

I Support Vector, detti anche vettori di supporto, sono un sottoinsieme delle osservazioni di addestramento che identificano la posizione dell’iperpiano di separazione. L’algoritmo SVM standard viene formulato per problemi di classificazione binari e i problemi multiclasse vengono generalmente ridotti a una serie di problemi binari.

Esaminando più approfonditamente l’aspetto matematico, le Support Vector Machine rientrano in una classe di algoritmi di Machine Learning definiti metodi kernel, in cui è possibile trasformare le feature per mezzo di una funzione kernel. Le funzioni kernel mappano i dati su uno spazio diverso e spesso di dimensione superiore con l’idea che, dopo questa trasformazione, le classi saranno più facili da separare, semplificando potenzialmente i confini decisionali non lineari complessi in confini lineari nello spazio di dimensione superiore delle feature mappate. In questo processo, non è necessario trasformare esplicitamente i dati, il che sarebbe molto dispendioso a livello computazionale. Questo è tradizionalmente noto come il “kernel trick”.

MATLAB® supporta diversi kernel, tra cui:

Tipo di SVM Kernel di Mercer Descrizione
Radial Basis Function (RBF) o gaussiano \(K(x_1,x_2) = \exp\left(-\frac{\|x_1 - x_2\|^2}{2\sigma^2}\right)\) Addestramento di una classe. \(\sigma\) è la larghezza del kernel
Lineare \(K(x_1,x_2) = x_1^{\mathsf{T}}x_2\)
Addestramento di due classi.
Polinomiale \(K(x_1,x_2) = \left( x_1^{\mathsf{T}}x_2 + 1 \right)^{\rho}\)
\(\rho\) è l’ordine del polinomio
Sigmoide \(K(x_1,x_2) = \tanh\left( \beta_{0}x_1^{\mathsf{T}}x_2 + \beta_{1} \right)\)
Si tratta di un kernel di Mercer solo per alcuni valori \(\beta_{0}\) e \(\beta_{1}\) 

Addestrare una Support Vector Machine significa risolvere un problema di ottimizzazione quadratica per eseguire il fitting di un iperpiano in grado di minimizzare il margine soft tra le classi. Il numero di feature trasformate è determinato dal numero di vettori di supporto.

Aspetti principali:

  • Le Support Vector Machine sono molto conosciute e garantiscono ottime prestazioni in molte attività di classificazione e regressione.
  • Sebbene le Support Vector Machine siano formulate per la classificazione binaria, è possibile costruire una SVM multiclasse combinando più classificatori binari.
  • I kernel rendono le SVM più flessibili e in grado di gestire problemi non lineari.
  • Per realizzare la superficie decisionale occorrono solo i vettori di supporto scelti tra i dati di addestramento. Una volta avvenuto l’addestramento, i dati di addestramento rimanenti sono irrilevanti, il che porta a una rappresentazione compatta del modello, adatta alla generazione automatica di codice.

Esempio

Le Support Vector Machine possono anche essere utilizzate per il rilevamento di anomalie, mediante la costruzione di una SVM a una classe il cui confine decisionale determina se un oggetto appartiene alla classe “normale” usando una soglia di anomalia. In questo esempio, MATLAB mappa tutti gli esempi su un’unica classe usando la frazione specifica di anomalie riconosciuta come parametro, come indicato di seguito: fitcsvm(sample,ones(…), ‘OutlierFraction’, …). Il grafico mostra gli iperpiani di separazione per un intervallo di OutlierFractions per i dati ottenuti da un task di classificazione di attività umane.

Rilevamento di anomalie HAR tramite una SVM a una classe

Vedere anche: Statistics and Machine Learning Toolbox, Modelli di Machine Learning, biomedical signal processing