La Support Vector Machine (SVM) è un algoritmo di Machine Learning con supervisione in grado di trovare l’iperpiano migliore per separare i punti di dati di una classe da quelli di un’altra classe.
La Support Vector Machine è un algoritmo di Machine Learning con supervisione spesso utilizzato nei problemi di classificazione e regressione in applicazioni quali l’elaborazione di segnali, l’elaborazione del linguaggio naturale (NLP) e il riconoscimento immagini e vocale. L’obiettivo dell’algoritmo SVM consiste nel trovare un iperpiano in grado di separare al meglio i punti di dati di una classe da quelli di un’altra classe. Questo iperpiano può essere una linea per lo spazio 2D o un piano per uno spazio n-dimensionale, dove n indica il numero di feature per ogni osservazione nel set di dati. Possono esistere più iperpiani che separano le classi nei dati. L’iperpiano ottimo, derivato dall’algoritmo SVM, è quello che massimizza il margine tra le due classi.
Il margine è la larghezza massima dell’area parallela all’iperpiano che non ha punti di dati interni. I punti di dati che contrassegnano il confine di questa area parallela e che sono più vicini all’iperpiano di separazione sono i vettori di supporto. I vettori di supporto fanno riferimento a un sottoinsieme di osservazioni di addestramento che identificano la posizione dell’iperpiano di separazione.
Workflow per la modellazione di una SVM
Il workflow tipico per realizzare un modello di Support Vector Machine comprende i seguenti passaggi:
Pre-elaborazione dei dati
Addestrare un modello di SVM con dati grezzi spesso porta a scarsi risultati per via di outlier e valori mancanti, ma anche a causa della ridondanza delle informazioni. È possibile eseguire la pulizia dei dati per gestire eventuali valori mancanti o outlier e l’estrazione delle feature per scegliere il set di feature corretto dai dati.
L’estrazione delle feature trasforma i dati grezzi in feature numeriche che possono essere elaborate preservando al contempo le informazioni del set di dati originale. Le tecniche di riduzione della dimensionalità, come l’analisi dei componenti principali (PCA), riducono il numero di feature preservando al contempo le informazioni più importanti. Tale approccio rende i modelli di Support Vector Machine robusti e capaci di gestire set di dati complessi.
Una volta elaborati, i dati vanno suddivisi in set di addestramento e di test. Usa la validazione incrociata per suddividere i dati in modo ottimale. Il modello di SVM viene addestrato con il set di dati di addestramento, mentre il set di dati di test viene utilizzato per valutare le prestazioni del modello su dati non osservati.
Scelta del kernel
In base alla distribuzione dei dati, occorre scegliere una funzione kernel appropriata (lineare, polinomiale, RBF, ecc.). Se la separazione lineare non è praticabile, una funzione kernel trasforma i dati in uno spazio a maggiore dimensionalità, semplificando la separazione delle classi.
Tipo di SVM | Kernel di Mercer | Descrizione |
Funzione a base radiale (RBF) o gaussiano | \( K({x_1},{x_2})=exp(−‖{x_1}−{x_2}‖22{σ^2}) \) | Apprendimento di una classe. \( σ \) è la larghezza del kernel. |
Lineare | \( K({x_1},{x_2})={x_1}T{x_2} \) | Apprendimento di due classi. |
Polinomiale | \( K({x_1},{x_2})=({x_1}T{x_2}+1)ρ \) | \( ρ \) è l’ordine del polinomio. |
Sigmoidea | \( K({x_1},{x_2})=tanh({β_0}{x_1}T{x_2}+{β_1}) \) | Si tratta di un kernel di Mercer solo per alcuni valori \( β_0 \) e \( β_1 \). |
Addestramento del modello di SVM
Realizza e addestra il tuo modello di SVM usando un set di dati di addestramento. Addestrare una Support Vector Machine corrisponde a risolvere un problema di ottimizzazione quadratica per trovare un iperpiano che massimizza il margine tra le classi. L’algoritmo della Support Vector Machine identifica i vettori di supporto e determina l’iperpiano ottimale. Serviti del modello addestrato per classificare punti di dati nuovi e non osservati sulla base dell’iperpiano ottimale.
Valutazione del modello di SVM
Testa il modello con il set di dati di test. Valuta le prestazioni del modello servendoti di metriche quali accuratezza, matrice di confusione, precisione, F1-score o richiamo.
Ottimizzazione degli iperparametri
Regola gli iperparametri in modo da migliorare le prestazioni del modello. Implementa una tecnica di ricerca, come l’ottimizzazione bayesiana, che usa modelli probabilistici per trovare gli iperparametri ottimali.
Tipi di classificatori SVM
Support Vector Machine lineari
Le SVM lineari vengono utilizzate per i dati linearmente separabili che hanno esattamente due classi. Questo tipo di algoritmo della Support Vector Machine usa un confine lineare di decisione per separare tutti i punti di dati delle due classi.
L’algoritmo SVM è in grado di trovare tale iperpiano solo per i problemi separabili linearmente. Per le attività più complesse, in cui i dati non sono separabili, la Support Vector Machine può utilizzare un margine detto “soft”, ovvero un iperpiano che separa molti punti di dati, ma non tutti. L’algoritmo massimizza il margine “soft” permettendo di fare pochi errori di classificazione.

SVM a margine “soft” che consente l’errata classificazione di un punto di dati dalla classe -1 (blu). (cfr. documentazione MATLAB).

SVM a margine “soft” che consente l’errata classificazione di un punto di dati dalla classe -1 (blu). (cfr. documentazione MATLAB).
Support Vector Machine non lineari
Le SVM vengono utilizzate anche per attività di regressione e classificazione non lineare. Per i dati non separabili in modo lineare, le Support Vector Machine non lineari usano le funzioni kernel per trasformare le feature. Il numero di feature trasformate è determinato dal numero di vettori di supporto.
Le funzioni kernel mappano i dati su uno spazio diverso, spesso a maggiore dimensionalità. Questa trasformazione può rendere la separazione delle classi più facile semplificando il complesso confine non lineare di decisione in un confine lineare nello spazio delle feature mappato a maggiore dimensionalità. In questo processo, comunemente noto come kernel trick, i dati non devono essere esplicitamente trasformati, il che sarebbe oneroso da un punto di vista computazionale. Le funzioni kernel per i dati non lineari includono i polinomi, la funzione a base radiale (gaussiano) e la rete multilayer perceptron o sigmoidea (rete neurale).

Classificatore SVM non lineare addestrato in MATLAB con un kernel gaussiano (cfr. codice).
Regressione a vettori di supporto
Le SVM vengono principalmente utilizzate per operazioni di classificazione, ma possono essere adattate anche alla regressione. La regressione SVM è considerata una tecnica non parametrica in quanto si basa sulle funzioni kernel. A differenza della regressione lineare, in cui la relazione tra la risposta (output) e le variabili predittive (input) è nota, l’obiettivo della regressione a vettori di supporto (SVR) è trovare questa relazione. Per farlo, la SVR identifica l’iperpiano che approssima i dati nel miglior modo possibile rispettando un margine di tolleranza predefinito, detto margine, mantenendo al contempo l’errore di previsione a livelli minimi.
Il principio di funzionamento della SVR è uguale a quello dei classificatori SVM, tranne per il fatto che la SVR ha lo scopo di prevedere valori continui invece di classi discrete. La SVR riesce a gestire sia i dati lineari che quelli non lineari usando tipi di kernel differenti. Grazie a questo kernel trick, è possibile eseguire la regressione non lineare mappando i dati su uno spazio ad alta dimensionalità.
Vantaggi delle SVM
Le SVM sono tra gli algoritmi di apprendimento supervisionato più popolari in ambito di Machine Learning e intelligenza artificiale, principalmente perché sono in grado di gestire in modo efficace dati ad alta dimensionalità e confini di decisione complessi. I principali vantaggi delle Support Vector Machine sono i seguenti:
- Versatilità dei dati. Le SVM sono particolarmente efficaci nella gestione di set di dati non strutturati e ad alta dimensionalità. Le Support Vector Machine possono essere utilizzate sia per i dati lineari che per quelli non lineari, per cui sono utili in molte applicazioni.
- Robustezza. Le SVM sono meno soggette all’overfitting, soprattutto negli spazi ad alta dimensionalità, grazie al parametro di regolarizzazione che controlla il trade-off tra l’ottenimento di un basso livello di errori nell’addestramento dei dati e la riduzione al minimo della norma dei pesi.
- Interpretabilità. Il confine di decisione creato da un classificatore SVM lineare è chiaro e interpretabile, il che può essere vantaggioso per comprendere le previsioni del modello e prendere decisioni informate.
- Accuratezza. Le SVM sono altamente accurate ed efficaci con i set di dati più piccoli, soprattutto nei casi in cui il numero di dimensioni supera il numero di campioni.
Applicazioni delle SVM
I suddetti vantaggi rendono le Support Vector Machine un’opzione molto interessante per la modellazione di dati in una vasta serie di applicazioni:
- Elaborazione del linguaggio naturale. Le SVM vengono ampiamente utilizzate in attività di elaborazione del linguaggio naturale, come il rilevamento dello spam e la sentiment analysis tramite la classificazione del testo in categorie.
- Visione artificiale. Le SVM vengono impiegate in attività di classificazione delle immagini, come il riconoscimento del testo scritto a mano e il rilevamento di volti e oggetti, così come in qualità di strumento diagnostico in ambito medico per la classificazione di immagini di risonanza magnetica che potrebbero indicare la presenza di un tumore.
- Elaborazione di segnali. Le SVM vengono applicate anche ai dati di segnali per attività quali il rilevamento di anomalie, il riconoscimento vocale e l’analisi dei segnali biomedici.
- Rilevamento di anomalie. Le SVM possono essere addestrate in modo da trovare un iperpiano che separa i dati normali dalle anomalie.
- Bioinformatica. Le SVM vengono impiegate nella classificazione dei dati biologici, per la classificazione delle proteine e l’analisi dei profili di espressione genica.

Immagine iperspettrale classificata con un classificatore SVM. (Cfr. codice MATLAB.)
Svantaggi delle SVM
Come tutti i modelli di Machine Learning, anche le Support Vector Machine hanno dei limiti:
- Set di dati di grandi dimensioni. Le SVM non sono adatte a gestire set di dati di grandi dimensioni per via del loro elevato costo computazionale e dei requisiti in termini di memoria. Sebbene il kernel trick consenta alle Support Vector Machine di gestire i dati non lineari, le rende onerose dal punto di vista computazionale. Le SVM richiedono la risoluzione di un problema di ottimizzazione quadratica. Per i set di dati di grandi dimensioni, anche la matrice kernel sarebbe grande e aumenterebbe i requisiti in termini di memoria.
- Dati rumorosi. Le SVM non sono adatte ai dati rumorosi in quanto hanno lo scopo di massimizzare il margine tra le classi.
- Interpretabilità. Mentre le SVM lineari sono interpretabili, quelle non lineari non lo sono. Le trasformazioni complesse previste dalle SVM non lineari rendono il confine di decisione difficile da interpretare.
Con MATLAB® e Statistics and Machine Learning Toolbox™, è possibile addestrare, valutare e fare previsioni con modelli di SVM per la classificazione e la regressione. Dalla selezione delle feature e l’ottimizzazione degli iperparametri fino alla validazione incrociata e le metriche prestazionali, MATLAB mette a disposizione degli strumenti per realizzare modelli di Support Vector Machine efficienti. Le app di Machine Learning low-code di MATLAB consentono di addestrare e valutare le SVM in modo interattivo, di generare codice C/C++ e di procedere alla distribuzione su CPU e microcontroller, senza dover scrivere codice in autonomia.
Pre-elaborazione dei dati
Per garantire risultati accurati, i dati devono essere privi di outlier e pronti all’addestramento del modello. Con MATLAB, è possibile eseguire attività di pulizia, come la gestione di valori mancanti e outlier, la normalizzazione dei dati e lo smoothing dei dati. È possibile utilizzare le attività di pre-elaborazione dei dati di Live Editor o l’app Data Cleaner per pre-elaborare i dati in modo interattivo. Queste app generano anche il codice.
MATLAB supporta vari tipi di dati come le serie storiche, i dati testuali, audio e le immagini. Dei toolbox dedicati, come Audio Toolbox™ e Signal Processing Toolbox™, forniscono funzionalità di estrazione delle feature, che consentono di misurare le feature distintive in domini diversi e di riutilizzare i calcoli intermedi.
Addestramento del modello di SVM
È possibile addestrare i propri modelli di SVM per le attività di regressione e classificazione binaria o multiclasse con le funzioni fitcsvm
e fitrsvm
. Per le Support Vector Machine non lineari, sono supportate varie funzioni kernel (ad es. lineare, polinomiale e RBF) oppure è possibile creare e specificare una funzione kernel personalizzata (ad es. sigmoidea).
È inoltre possibile addestrare i modelli di SVM in modo interattivo con l’app Classification Learner e l’app Regression Learner. Con queste app, è possibile eseguire il workflow completo per un modello di SVM, dall’addestramento all’ottimizzazione, senza dover scrivere codice. Le app consentono di esplorare i dati, selezionare le feature, eseguire l’addestramento automatizzato, ottimizzare gli iperparametri e valutare i risultati.

Matrice di confusione di validazione creata con l’app Classification Learner. (Cfr. codice MATLAB.)
Le app possono generare codice C/C++ e consentono di esportare il modello di SVM, semplificando la condivisione dei risultati e l’ulteriore analisi esternamente all’app. Ad esempio, è possibile esportare il modello della Support Vector Machine dall’app Classification Learner o dall’app Regression Learner e importarlo nell’ app Experiment Manager per svolgere ulteriori attività, come la modifica dei dati di addestramento, la regolazione degli intervalli di ricerca degli iperparametri e l’esecuzione di esperimenti di addestramento personalizzati.
Esecuzione delle previsioni
Dopo aver addestrato il modello di SVM, prevedi le etichette con la funzione di previsione. È possibile simulare il modello di SVM addestrato in Simulink con i blocchi ClassificationSVM Predict o RegressionSVM Predict.
Valutazione dei risultati
È possibile valutare le prestazioni del modello di SVM in modo programmatico, usando funzioni quali confusionchart
e rocmetrics
oppure in modo interattivo. Usando le app di Machine Learning, è possibile confrontare le prestazioni di vari modelli in modo da trovare quello più adatto ai propri dati.
Dopo l’addestramento dei classificatori nell’app Classification Learner, è possibile confrontare i modelli in base all’accuratezza, visualizzare i risultati dei classificatori raffigurando le previsioni delle classi e verificare le prestazioni con una matrice di confusione, la curva ROC o la curva precisione-richiamo.
Analogamente, nell’app Regression Learner, è possibile confrontare i modelli sulla base delle metriche dei modelli, visualizzare i risultati della regressione in un grafico della risposta oppure raffigurando graficamente la risposta effettiva rispetto a quella prevista, quindi valutare i modelli con un grafico dei residui.

Grafico della risposta prevista rispetto alla risposta effettiva per un modello di regressione addestrato nell’app Regression Learner. Più i punti sono vicini alla linea, migliore è la previsione. (Cfr. codice MATLAB.)

Grafico della risposta prevista rispetto alla risposta effettiva per un modello di regressione addestrato nell’app Regression Learner. Più i punti sono vicini alla linea, migliore è la previsione. (Cfr. codice MATLAB.)
Risorse
Amplia le tue conoscenze consultando la documentazione, gli esempi, guardando video e molto altro ancora.
Documentazione
- Classificazione delle registrazioni del fonocardiogramma (PCG) di una persona con un classificatore SVM
- Valutazione delle prestazioni del classificatore con l’app Classification Learner
- Valutazione delle prestazioni del modello nell’app Regression Learner
- Scelta del tipo di classificatore
- Esportazione di un modello di classificazione per prevedere nuovi dati
- Ottimizzazione di un modello di regressione con Experiment Manager
- Creazione di un classificatore di immagini SVM
Scopri di più
- Introduzione al Machine Learning (4 video) - Serie di video
- Apprendimento supervisionato
Argomenti correlati
Scopri argomenti simili comunemente utilizzati con i prodotti MATLAB e Simulink.
30 giorni di prova gratuita
Inizia oraSeleziona un sito web
Seleziona un sito web per visualizzare contenuto tradotto dove disponibile e vedere eventi e offerte locali. In base alla tua area geografica, ti consigliamo di selezionare: .
Puoi anche selezionare un sito web dal seguente elenco:
Come ottenere le migliori prestazioni del sito
Per ottenere le migliori prestazioni del sito, seleziona il sito cinese (in cinese o in inglese). I siti MathWorks per gli altri paesi non sono ottimizzati per essere visitati dalla tua area geografica.
Americhe
- América Latina (Español)
- Canada (English)
- United States (English)
Europa
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)