Data for Breakfast arriva in Italia

Il 19 marzo scopri come fare la differenza con i dati e gli agenti AI.

Macchina a vettori di supporto (SVM): una guida completa per il machine learning

Scopri cos’è una Support Vector Machine (SVM), come funziona, i componenti, le tipologie, le applicazioni nel mondo reale e le best practice per l’implementazione.

  • Presentazione
  • Che cos’è una macchina a vettori di supporto (SVM)?
  • Concetti chiave delle SVM nel machine learning
  • Come funzionano le SVM?
  • Tipi di macchine a vettori di supporto
  • Applicazioni delle SVM nel mondo reale
  • Vantaggi e limiti delle SVM
  • Best practice per l’implementazione delle SVM
  • Conclusione
  • Domande frequenti sulle SVM
  • Clienti che utilizzano Snowflake
  • Risorse su AI e machine learning

Presentazione

Le macchine a vettori di supporto (SVM) sono algoritmi utilizzati nei modelli di machine learning supervisionato per separare diverse categorie di dati. Un modello SVM è progettato per creare confini decisionali che consentono una classificazione accurata. È una delle tecniche chiave utilizzate dai data scientist per creare modelli di AI e ML con un’ampia gamma di applicazioni pratiche, tra cui il riconoscimento delle immagini, il rilevamento delle frodi e il filtraggio dello spam.

Le SVM eccellono nell’elaborazione di dati ad alta dimensionalità, come una scansione cerebrale contenente milioni di data point. Possono inoltre ridurre il rischio di overfitting, situazione in cui un modello fornisce buoni risultati sui dati di addestramento ma presenta prestazioni scarse quando viene applicato a dati nuovi.

Questa guida spiega come funzionano le SVM e perché sono strumenti fondamentali per ottenere previsioni accurate utilizzando modelli di ML.

Che cos’è una macchina a vettori di supporto (SVM)?

Le SVM operano individuando il punto in cui il margine tra le diverse categorie di dati è massimo. Ad esempio, in un modello ML addestrato su immagini di frutta, una SVM può imparare a separare mele e arance in base a caratteristiche come colore, forma e consistenza, creando un confine chiamato iperpiano, utilizzato dal modello per distinguere le due categorie. 

Una SVM può operare sia su dati linearmente separabili sia su dati non lineari. Nel caso di dati lineari, è possibile rappresentare mele e arance su un grafico utilizzando feature come peso e forma. Gli oggetti più pesanti e rotondi (le arance) tendono a concentrarsi in un’area, mentre quelli più leggeri e meno rotondi (le mele) in un’altra. Una SVM individua la linea retta ottimale che separa questi cluster con il margine più ampio possibile e utilizza questo confine (l’iperpiano) per classificare nuove immagini di frutta.

La classificazione e la separazione di dati non lineari richiedono un passaggio aggiuntivo. Supponiamo di gestire una pizzeria e di voler identificare dove vivono i clienti più assidui. Scopriamo quindi che i clienti che vengono in pizzeria più spesso tendono a vivere vicino al locale, mentre quelli che la frequentano di rado formano un anello a distanze diverse. La rappresentazione grafica di questi dati assume la forma di una ciambella, con i clienti più fedeli al centro. Poiché i dati non sono lineari, non è possibile tracciare una linea che separi chiaramente i due gruppi. Le SVM utilizzano quindi funzioni matematiche, chiamate kernel, tramite un processo noto come kernel trick, che trasforma i dati in uno spazio con più dimensioni, consentendo di individuare il confine ottimale tra i gruppi. Uno dei kernel più utilizzati è il Radial Basis Function (RBF), particolarmente adatto a dati complessi e non lineari.

Concetti chiave delle SVM nel machine learning

Ogni SVM comprende i seguenti elementi:
 

1. Iperpiano 

È il confine decisionale che separa le diverse categorie di dati: una linea in spazi bidimensionali, un piano in tre dimensioni o una superficie a dimensioni superiori in spazi più complessi. La SVM individua l’iperpiano ottimale che separa al meglio le categorie.
 

2. Vettori di supporto 

I data point più vicini all’iperpiano, che influenzano direttamente la posizione del confine, sono detti vettori di supporto. Rappresentano gli esempi critici che definiscono il confine decisionale; se venissero rimossi, l’iperpiano cambierebbe posizione.
 

3. Margine 

Il margine è la distanza tra l’iperpiano e i data point più vicini di ciascuna classe. Le SVM massimizzano questo margine per stabilire la separazione più solida possibile tra le categorie.
 

4. Funzioni kernel 

Sono funzioni matematiche che trasformano i dati in spazi a dimensioni superiori per rendere possibile la separazione lineare. Consentono alle SVM di gestire dati non lineari individuando confini curvi nello spazio originale.
 

5. Parametro di regolarizzazione 

Questo valore, solitamente indicato con C, controlla il compromesso tra la massimizzazione del margine e la minimizzazione degli errori di classificazione. Un valore elevato di C privilegia la correttezza della classificazione, mentre un valore basso accetta più errori in cambio di un margine più ampio.
 

6. Gamma 

I valori di gamma determinano quanto è stretta l’aderenza del confine decisionale ai dati di addestramento. Valori elevati di gamma producono confini molto specifici, mentre valori bassi generano confini più fluidi e generalizzati.
 

7. Variabili di slack 

Quando una separazione perfetta non è possibile, le variabili di slack consentono ad alcuni data point di trovarsi sul lato errato del margine o dell’iperpiano. Consentire una piccola quantità di errori di classificazione aiuta a gestire dati rumorosi o sovrapposti.

Come funzionano le SVM?

Di seguito sono riportate le cinque fasi principali che una SVM esegue durante l’elaborazione dei dati:
 

Fase 1: Mappatura dei dati di input nello spazio delle feature ad alta dimensionalità 

La SVM trasforma i dati di input originali in uno spazio a dimensioni superiori tramite funzioni kernel, rendendo possibile la separazione lineare. Questo passaggio è fondamentale per gestire dati non lineari. Ciò che sembra un contorno curvo nello spazio originale diventa una linea retta nello spazio trasformato.
 

Fase 2: Individuazione dell’iperpiano ottimale che massimizza il margine 

La SVM identifica l’iperpiano (confine decisionale) che crea il margine più ampio possibile tra le classi, concentrandosi sui vettori di supporto. Si concentra sui vettori di supporto, ossia i data point più vicini al confine, e posiziona l’iperpiano per massimizzare la distanza di questi punti critici da ogni classe.
 

Fase 3: Gestione di dati sovrapposti o rumorosi tramite variabili di slack 

Quando la separazione perfetta non è possibile, la SVM introduce le variabili di slack per consentire alcuni errori di classificazione. Il parametro di regolarizzazione C bilancia massimizzazione del margine e minimizzazione degli errori di classificazione.
 

Fase 4: Ottimizzazione dei parametri per le migliori prestazioni 

La SVM regola iperparametri come C, gamma e kernel per rendere il modello sufficientemente complesso per risultare accurato, ma anche sufficientemente semplice per funzionare bene con i dati nuovi. Questo aiuta la SVM a evitare l’overfitting, in cui un modello diventa troppo specializzato nell’addestramento dei dati e ha scarse prestazioni sui nuovi esempi.
 

Fase 5: Classificazione di nuovi dati in base alla posizione dell’iperpiano 

Per nuovi data point, la SVM applica la stessa trasformazione del kernel e determina da quale lato dell’iperpiano si trovano. La distanza dall’iperpiano può anche indicare il livello di confidenza della classificazione.

Tipi di macchine a vettori di supporto

Esistono cinque principali tipologie di macchine a vettori di supporto:
 

SVM lineare 

Le SVM lineari vengono utilizzate quando i dati possono essere separati da una linea retta o da un iperpiano. Non dipendendo dalle trasformazioni del kernel e sono quindi efficienti dal punto di vista computazionale e facili da interpretare. 
 

SVM non lineare 

Quando la separazione lineare non è possibile, le SVM non lineari utilizzano funzioni kernel per trasformare i dati in dimensioni superiori. Questo crea confini decisionali curvilinei nello spazio originale, rendendolo ideale per schemi di dati complessi e non lineari come un classico data set a forma di ciambella.
 

SVM a una classe 

Le SVM di una classe vengono utilizzate per il rilevamento di anomalie, identificando ciò che si discosta dal comportamento normale. Questo tipo di macchina è tipicamente utilizzato nelle applicazioni di rilevamento delle frodi e controllo qualità.
 

Support vector regression (SVR) 

La SVR utilizza tecniche SVM per prevedere valori numerici anziché categorie. Invece di tracciare una linea che separa diversi gruppi, la SVR traccia la linea che si adatta meglio ai data point con un certo margine per gli errori. La SVR è utilizzata per prevedere prezzi, temperature o valore delle vendite. 
 

SVM multiclasse 

Le SVM multiclasse combinano più SVM a una classe per gestire problemi con più di due categorie. Poiché le SVM standard possono separare solo due gruppi alla volta, questo approccio prevede la collaborazione di più SVM per distinguere tra più categorie, ad esempio classificando le immagini della frutta in mele, arance e banane. 

Applicazioni delle SVM nel mondo reale

Le SVM trovano applicazione in numerosi ambiti di machine learning, tra cui:
 

Classificazione delle immagini 

Grazie alla loro capacità di analizzare rapidamente schemi di pixel e caratteristiche visive, i classificatori SVM eccellono nel riconoscimento di oggetti, volti e scene nelle immagini digitali. Sono ampiamente utilizzati nella diagnostica per immagini medica per rilevare tumori tramite radiografie o risonanze magnetiche, nonché nei sistemi di sicurezza per il riconoscimento facciale e la sorveglianza.
 

Classificazione del testo e rilevamento dello spam 

Le SVM analizzano schemi di parole e caratteristiche linguistiche per classificare automaticamente email, documenti e contenuti web. I provider di posta elettronica le utilizzano per filtrare lo spam, imparando a distinguere tra messaggi legittimi e contenuti promozionali o dannosi.
 

Bioinformatica 

Analizzando schemi complessi di dati biologici, questi sistemi aiutano a classificare sequenze di DNA, prevedere strutture proteiche e identificare marcatori genetici associati alle malattie. Sono particolarmente utili nella ricerca oncologica per classificare i tipi di tumore in base ai profili di espressione genica.
 

Riconoscimento della grafia 

Le SVM convertono il testo scritto a mano in formato digitale analizzando schemi di tratto, forme dei caratteri e relazioni spaziali nei documenti scansionati. Sono utilizzate dai servizi postali per leggere automaticamente gli indirizzi sulle buste e in ambito bancario per elaborare assegni e moduli manoscritti.
 

Rilevamento delle frodi 

Questi algoritmi SVM analizzano schemi di spesa, importi delle transazioni, localizzazione e tempistiche per individuare transazioni finanziarie potenzialmente fraudolente. Le società di carte di credito e le banche le utilizzano per rilevare anomalie in tempo reale e proteggere i clienti da acquisti non autorizzati.

Inoltre, le SVM sono ampiamente impiegate nella scoperta di farmaci per prevedere il comportamento molecolare e identificare composti farmaceutici promettenti. Sono utilizzate anche nei sistemi di raccomandazione per servizi di streaming e piattaforme di ecommerce, analizzando preferenze e comportamenti degli utenti per suggerire contenuti o prodotti pertinenti.

Vantaggi e limiti delle SVM

Le SVM non sono adatte a tutti i casi d’uso di machine learning. Ecco i principali vantaggi e limiti dell’implementazione di questi algoritmi.
 

Vantaggi chiave dell’uso delle SVM
 

  • Sono altamente accurate. Le SVM offrono prestazioni di classificazione elevate su un’ampia varietà di data set. Concentrandosi sui data point più critici (i vettori di supporto) e massimizzando la separazione tra le classi, creano confini decisionali robusti che generalizzano bene sui dati nuovi.

  • Funzionano bene in spazi ad alta dimensionalità. Le SVM gestiscono efficacemente dati con un numero elevato di feature, come l’analisi simultanea di migliaia di geni. A differenza di altri algoritmi che soffrono l’eccesso di informazioni, le SVM si concentrano esclusivamente sull’individuazione del miglior confine di separazione.

  • Sono efficaci con data set di dimensioni ridotte. Le SVM possono costruire modelli affidabili anche con quantità limitate di dati di addestramento, risultando ideali per ambiti specialistici come la diagnosi medica o il rilevamento di eventi rari. La loro base matematica consente di estrarre il massimo valore anche da pochi esempi, riducendo il rischio di overfitting che è invece un problema diffuso con altri algoritmi quando i dati sono scarsi.

  • Sono efficienti in termini di memoria. Le SVM memorizzano esclusivamente i vettori di supporto, ossia i data point critici vicini al confine decisionale, invece dell’intero data set di addestramento. Questo approccio riduce i requisiti di storage e rende le previsioni più efficienti dal punto di vista computazionale, un vantaggio importante in contesti con risorse limitate.

  • Sono versatili. Le SVM possono gestire sia problemi lineari semplici sia pattern non lineari complessi, semplicemente cambiando la funzione kernel utilizzata. Ciò consente di affrontare problemi di natura molto diversa con lo stesso approccio di base, selezionando il kernel più adatto al contesto. 
     

Principali limitazioni delle SVM
 

  • Possono comportare un elevato carico computazionale. Il tempo di addestramento delle SVM cresce rapidamente con l’aumentare del numero di data point, rendendole lente e dispendiose in termini di memoria su data set molto grandi. L’elaborazione di milioni di esempi può richiedere ore o giorni, limitandone l’uso in contesti di big data.

  • Sono sensibili alla scelta del kernel. La selezione di un kernel non appropriato può compromettere significativamente le prestazioni del modello. Kernel diversi sono più adatti a pattern differenti, rendendo necessarie sperimentazioni approfondite e competenze di dominio per individuare la configurazione ottimale.

  • Sono meno efficaci quando le classi si sovrappongono. Poiché sono progettate per individuare confini di separazione netti, le SVM incontrano difficoltà quando le categorie sono fortemente mescolate. In questi casi possono generare confini troppo complessi, che generalizzano male su nuovi dati.

  • Le stime di probabilità sono limitate. A differenza di altri algoritmi, le SVM non forniscono automaticamente stime di probabilità o livelli di confidenza. Sebbene sia possibile aggiungerli, ciò richiede ulteriori passaggi computazionali e può risultare meno affidabile rispetto ad approcci che producono queste informazioni in modo nativo.

  • Possono essere difficili da interpretare. I modelli basati su SVM possono presentare il problema della “scatola nera”, rendendo complesso comprendere le motivazioni alla base di una previsione. Questa mancanza di interpretabilità può rappresentare un limite in settori regolamentati come sanità e finanza in cui comprendere il ragionamento alla base delle previsioni è fondamentale per la fiducia e la compliance normativa.

  • Hanno prestazioni inferiori in presenza di dati rumorosi. Le SVM possono essere particolarmente sensibili agli outlier e ai dati etichettati in modo errato, che possono spostare significativamente il confine decisionale. A differenza di algoritmi più robusti, le SVM possono attribuire un peso eccessivo a queste anomalie durante l’addestramento.

Best practice per l’implementazione delle SVM

Ecco cinque best practice per l’utilizzo delle SVM:
 

1. Eseguire il feature scaling per migliorare le prestazioni 

Le SVM possono risentire di feature con scale molto diverse tra loro. Assicurati che tutte le feature utilizzino intervalli numerici simili, ad esempio normalizzando età e reddito sulla stessa scala, per evitare distorsioni nei risultati. 
 

2. Sperimentare con diversi kernel 

Ogni kernel cattura pattern di dati differenti; testarne più di uno aiuta a individuare la soluzione più adatta al problema. È consigliabile iniziare con un kernel lineare per dati ad alta dimensionalità e poi valutare RBF per pattern non lineari. I kernel polinomiali possono essere utili in presenza di relazioni strutturate. 
 

3. Utilizzare la validazione incrociata per il tuning dei parametri 

Testa diverse combinazioni di parametri, come C e gamma, utilizzando la validazione incrociata su più sottoinsiemi di dati. Questo approccio consente di individuare le impostazioni che funzionano bene anche su dati nuovi, non utilizzati per l’addestramento. 
 

4. Monitorare l’overfitting con data set di convalida 

Mantieni un set di convalida separato per valutare le prestazioni del modello durante l’addestramento. Se l’accuratezza sul training set è molto superiore a quella sul validation set, riduci la complessità del modello abbassando i valori di C o gamma.
 

5. Gestire correttamente lo squilibrio di classe 

Quando una classe è significativamente più numerosa di un’altra (ad esempio, 50 email di spam contro 1000 messaggi legittimi), regola le impostazioni della SVM tramite pesi di classe o tecniche di campionamento. Molti framework SVM supportano il bilanciamento automatico, evitando che il modello favorisca la classe dominante.

Conclusione

Le macchine a vettori di supporto sono tra gli algoritmi di machine learning più affidabili grazie alla loro capacità di creare confini decisionali solidi tra classi di dati. Sono particolarmente utili quando i dati di addestramento sono limitati o quando è richiesta un’elevata precisione.

Le SVM eccellono in numerose applicazioni, tra cui la diagnosi medica, il rilevamento delle frodi finanziarie, la classificazione genica, il filtraggio dello spam e il riconoscimento della scrittura. La loro capacità di gestire dati ad alta dimensionalità le rende adatte a sfide moderne come l’analisi di sequenze genetiche con migliaia di feature o l’elaborazione di documenti di testo con vocabolari estesi.

Continuano a essere uno strumento fondamentale sia nella ricerca accademica sia in ambito industriale.

Domande frequenti sulle SVM

Le SVM funzionano meglio quando è necessario classificare dati con elevata accuratezza, ma non sono disponibili grandi volumi di esempi di addestramento. Sono particolarmente efficaci nella gestione di dati complessi con molte feature, come testi o immagini.

Il kernel trick consente alle SVM di gestire dati non lineari trasformandoli matematicamente in uno spazio a dimensioni superiori, in cui possono essere separati con un confine lineare. Invece di spostare realmente i dati in uno spazio ad alta dimensionalità, le funzioni kernel eseguono le trasformazioni matematiche in modo efficiente. Questo permette alle SVM di creare confini curvi nello spazio originale utilizzando metodi lineari.

La support vector regression (SVR) utilizza gli stessi principi delle SVM, ma anziché separare le categorie, traccia una funzione che approssima al meglio i data point per prevedere valori numerici. La differenza principale è la presenza di un margine di errore accettabile attorno alla linea di previsione. Finché i valori reali rientrano in questo margine, le previsioni sono considerate corrette.