Cos'è una SVM e quando conviene ancora usarla?
La support vector machine (SVM) è un classificatore che separa due categorie col margine più ampio: adatta a dati con pochi casi etichettati e molte variabili.
Una support vector machine (SVM) è un modello di machine learning che impara a separare due categorie di casi, per esempio pezzi conformi e pezzi difettosi, partendo da esempi già etichettati. Fra tutti i confini possibili sceglie quello che lascia la fascia vuota più larga fra i due gruppi, il cosiddetto margine, perché un confine lontano da entrambi sbaglia meno sui casi nuovi. A decidere dove passa il confine è solo una parte degli esempi, quelli più vicini alla linea di separazione: sono i vettori di supporto che danno il nome al metodo. Corinna Cortes e Vladimir Vapnik le hanno dato la forma usata ancora oggi in un articolo del 1995 sulla rivista Machine Learning, e l'hanno estesa ai dati che nessun confine separa senza errori. Oggi non è più la scelta di partenza per ogni problema, ma resta quella giusta in situazioni precise: pochi esempi etichettati, molte variabili per ciascuno e il bisogno di un modello stabile, con pochi parametri da regolare.
Leggi anche: Percettrone (Perceptron) · Il percettrone è il neurone artificiale più semplice: pesa gli ingressi, confronta il totale con una soglia, risponde sì o no e corregge i pesi a ogni errore.
Il margine più largo e il trucco del kernel
Come il percettrone, una SVM separa i due gruppi con una linea retta, o con un piano quando le variabili sono più di due; ma invece di accontentarsi della prima linea che funziona, sceglie quella col margine più ampio. Quando nessuna retta basta, entra in gioco il kernel trick, che Bernhard Boser, Isabelle Guyon e Vapnik hanno unito al margine massimo nel 1992: il modello confronta ogni caso nuovo con i vettori di supporto e ne misura la somiglianza, così il confine può piegarsi attorno ai gruppi. Il kernel RBF, o gaussiano, considera simili i casi vicini ed è l'opzione predefinita di SVC in scikit-learn. Si regola con due parametri: C stabilisce quanto punire gli errori sugli esempi di addestramento, gamma quanto resta circoscritta l'influenza di un singolo esempio. Valori troppo alti producono un confine che si avvolge attorno a ogni caso, cioè overfitting.
Quando sceglierla oggi, e quando no
Una SVM resta una buona scelta quando gli esempi etichettati sono centinaia o poche migliaia e le variabili sono tante rispetto alle righe: testi rappresentati come conteggi di parole, spettri di laboratorio, firme di sensori. Non lo è sulle grandi tabelle aziendali, dove di solito vince il gradient boosting basato sugli alberi decisionali, né su immagini, audio e testi in grande quantità, dove dominano reti neurali ed embedding. Pesa anche il costo: secondo la documentazione di scikit-learn, il tempo di addestramento con un kernel cresce tra il quadrato e il cubo del numero di esempi. La pagina dedicata a SVC avverte che oltre qualche decina di migliaia di esempi l'addestramento può diventare impraticabile e, per volumi grandi, suggerisce le varianti lineari LinearSVC e SGDClassifier. Infine una SVM non restituisce probabilità: vanno ricavate con una taratura a parte, il Platt scaling, che è costosa sui dataset grandi e talvolta contraddice la classe predetta. Chi ha bisogno di punteggi calibrati deve verificarla.
Un esempio enterprise
Un'azienda meccanica monitora con sensori di vibrazione una linea che produce pochissimi scarti: i difetti registrati sono una manciata, troppo pochi per insegnare a un modello che aspetto ha un pezzo difettoso. La one-class SVM, proposta da Bernhard Schölkopf e colleghi nel 2001, rovescia il problema: si addestra solo sui pezzi buoni, impara il perimetro della normalità e manda in ispezione ciò che ne cade fuori. Lo storico va però ripulito dagli scarti noti, perché la documentazione di scikit-learn avverte che il modello è sensibile ai casi anomali presenti nei dati di addestramento. Il giudizio finale resta all'ispettore, che controlla solo i pezzi segnalati.
Perché conta per chi decide
Con poche centinaia di esempi etichettati e molte variabili, una SVM è un candidato serio: costa poco, si addestra in fretta e ha pochi parametri da tarare. Se chi propone il progetto l'ha scartata, o l'ha scelta su milioni di righe, gli chiederei il perché: la risposta dice quanto ha capito i dati. Fin dall'inizio vanno chiarite due cose: quanto crescerà il dataset, visto che il costo di addestramento sale più che in proporzione, e se servono probabilità affidabili, che una SVM non fornisce di serie.
Domande frequenti
Termini correlati
- Percettrone (Perceptron) · Il percettrone è il neurone artificiale più semplice: pesa gli ingressi, confronta il totale con una soglia, risponde sì o no e corregge i pesi a ogni errore.
- Decision tree (albero decisionale) · Un modello che decide per domande a cascata (se X allora Y): leggibile da chiunque, e la base di random forest e gradient boosting.
- Overfitting · Quando un modello impara il rumore dei dati di addestramento invece della regola, e crolla sui dati nuovi che non ha mai visto.
- Calibrazione della confidenza · Quanto il livello di sicurezza dichiarato da un modello AI corrisponde davvero alla probabilità di avere ragione.
- Embedding · Rappresentazione numerica del significato di un testo o di un'immagine, usata per confrontare i contenuti per somiglianza.
Se l'AI ti serve in produzione, non in una demo, è il mio lavoro.
VEDI INTEGRAZIONI AI