Ultralytics YOLO27: Iscriviti alla lista d'attesa.
Licenza YOLO
Torna al glossario di Ultralytics

Support Vector Machine (SVM)

Una macchina a vettori di supporto (SVM) separa le classi con l’iperpiano dal margine più ampio e usa kernel per i confini curvi. Scopri come funziona, come regolarla e il codice.

Una macchina a vettori di supporto (SVM) è un algoritmo di apprendimento supervisionato che classifica i dati individuando l'iperpiano che separa due classi con il margine più ampio possibile, ovvero la distanza tra il confine e i punti di addestramento più vicini di ciascuna classe. Questi punti più vicini, i vettori di supporto, sono gli unici esempi di addestramento che determinano il confine. Le funzioni kernel permettono alle SVM di apprendere confini curvi, mentre le varianti gestiscono la regressione e il rilevamento degli outlier. Vladimir Vapnik e i suoi colleghi svilupparono il metodo presso AT&T Bell Labs: la versione con kernel nel 1992 e la formulazione a margine morbido usata oggi, pubblicata da Cortes e Vapnik nel 1995. Prima del deep learning, le SVM erano tra i classificatori più accurati per testo, immagini e dati biologici e restano efficaci con dataset di piccole e medie dimensioni e molte feature.

Come funzionano le SVM#

Una SVM lineare predice la classe in base al segno di w·x + b, quindi il suo confine decisionale è l'iperpiano w·x + b = 0 e, con i pesi scalati in modo che i punti più vicini soddisfino |w·x + b| = 1, il margine ha larghezza 2/‖w‖. L'addestramento massimizza il margine minimizzando ‖w‖² e imponendo che ogni punto di addestramento ricada sul lato corretto. Le classi reali si sovrappongono, quindi la SVM a margine morbido permette ai punti di oltrepassare il margine, con un costo determinato dal parametro C di regolarizzazione. La sua funzione hinge non applica penalità ai punti classificati correttamente oltre il margine e assegna agli altri una penalità che cresce linearmente con la violazione. Un valore C basso tollera più violazioni e produce un margine più ampio e regolare; un valore C alto aderisce maggiormente ai dati di addestramento, con un rischio maggiore di overfitting. Nel modello addestrato, solo i punti sul margine o sul suo lato errato hanno un peso diverso da zero: sono i vettori di supporto, e spostare qualsiasi altro punto senza oltrepassare il margine lascia invariato il confine.

Il trucco del kernel#

Quando nessun iperpiano separa le classi, una mappatura dei dati in uno spazio con più dimensioni può renderle separabili: due anelli concentrici in 2D diventano separabili da un piano piatto quando una terza feature, x₁² + x₂², misura la distanza di ogni punto dal centro. Nella sua formulazione duale, l'addestramento e la predizione delle SVM utilizzano i dati solo attraverso i prodotti scalari tra coppie di punti, quindi una funzione kernel k(x, x′) può restituire direttamente il prodotto scalare nello spazio mappato, senza calcolare mai le coordinate mappate. Questo è il trucco del kernel. I kernel più comuni sono lineare, polinomiale e a funzione di base radiale (RBF), exp(−γ‖x − x′‖²), dove γ determina la portata dell'influenza di ciascun vettore di supporto. Questo esempio adatta SVC di scikit-learn con un kernel lineare e uno RBF su due anelli concentrici:

from sklearn.datasets import make_circles
from sklearn.model_selection import train_test_split
from sklearn.svm import SVC

# Two concentric rings: no straight line separates the classes
X, y = make_circles(n_samples=500, factor=0.4, noise=0.1, random_state=0)
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=0)

for kernel in ("linear", "rbf"):
    clf = SVC(kernel=kernel, C=1.0)
    clf.fit(X_train, y_train)
    print(f"{kernel}: test accuracy {clf.score(X_test, y_test):.2f}, support vectors {clf.n_support_.sum()}")

Il kernel lineare ottiene 0.43 sui punti esclusi dall'addestramento, peggio di una previsione casuale, e mantiene 360 dei 375 punti di addestramento come vettori di supporto. Il kernel RBF separa perfettamente gli anelli (1.00) con soli 42 vettori di supporto.

Scelta del kernel e degli iperparametri#

Le distanze e i prodotti scalari dipendono dalla scala delle feature, quindi gli input delle SVM vengono prima standardizzati. La guida pratica degli autori di LIBSVM, la libreria alla base di SVC di scikit-learn, consiglia di scalare le feature, iniziare con il kernel RBF e scegliere C e γ tramite ricerca a griglia con convalida incrociata. Quando le feature sono molte più dei campioni, come nel caso del testo, un kernel lineare offre prestazioni simili e si addestra molto più rapidamente. Il tempo di addestramento delle SVM con kernel cresce almeno quadraticamente con il numero di campioni, quindi oltre alcune decine di migliaia di campioni le SVM lineari o le feature kernel approssimate sostituiscono il modello con kernel esatto.

Le SVM nella computer vision#

La computer vision classica abbinava feature progettate manualmente a SVM lineari. Il rilevatore di pedoni di Dalal e Triggs del 2005 classificava gli istogrammi dei gradienti orientati (HOG) con una SVM lineare, mentre il rilevatore di oggetti R-CNN del 2014 classificava le feature CNN di ogni regione candidata con una SVM lineare per classe, finché nel 2015 Fast R-CNN non le sostituì con un livello softmax addestrato insieme alla rete. I rilevatori moderni apprendono insieme le feature e il classificatore; le SVM restano utili come classificatori rapidi su feature fisse. Una SVM lineare addestrata sui vettori restituiti da YOLO26 da model.embed(), un embedding per immagine, è una sonda lineare che aggiunge una nuova categoria di immagini senza riaddestrare la rete.

Applicazioni#

  • Classificazione del testo: i vettori basati sul conteggio delle parole hanno decine di migliaia di dimensioni sparse, in cui le SVM lineari separano con precisione argomenti, spam e sentiment: un vantaggio dimostrato da Thorsten Joachims per la categorizzazione del testo nel 1998.
  • Bioinformatica: gli studi di espressione genica classificano i tumori a partire da migliaia di geni misurati e solo decine o centinaia di pazienti, un contesto in cui il margine limita l'overfitting; inoltre, i kernel per stringhe confrontano direttamente le sequenze proteiche.
  • Rilevamento delle anomalie: una SVM a una classe apprende un confine attorno ai soli dati normali e segnala i punti esterni, caratteristica adatta al rilevamento delle frodi e al monitoraggio dei macchinari, dove i guasti sono troppo rari per essere etichettati.
  • Regressione: la regressione a vettori di supporto adatta una funzione all'interno di un tubo di larghezza ε, ignora gli errori inferiori a ε e mantiene come vettori di supporto solo i punti sul tubo o al suo esterno.
  • K vicini più prossimi (KNN): conserva l'intero set di addestramento e confronta ogni nuovo punto con i suoi vicini al momento della predizione, mentre una SVM conserva solo i propri vettori di supporto.
  • Alberi decisionali e foreste casuali: suddividono i dati in base a una feature alla volta, non richiedono la scalatura delle feature e gestiscono colonne numeriche e categoriche miste, mentre le SVM richiedono input numerici scalati.
  • Reti neurali: apprendono la mappatura delle feature dai dati invece di fissarla con un kernel, riuscendo così a scalare fino a milioni di immagini, un volume con cui le SVM con kernel diventano troppo lente.
  • Regressione logistica: apprende anch'essa un confine lineare, ma minimizza la perdita logaritmica su tutti i punti di addestramento e restituisce probabilità. Una SVM restituisce distanze con segno dal confine, mentre SVC di scikit-learn produce probabilità solo con probability=True, che applica la scalatura di Platt tramite una convalida incrociata interna a 5 fold.

Esplora le soluzioni

La visione artificiale nello sport

La visione artificiale nello sport

Scopri come Ultralytics YOLO alimenta la computer vision nello sport con il tracciamento di giocatori e palloni, l'analisi delle prestazioni, gli approfondimenti per gli allenatori e la riabilitazione degli atleti.
Scopri di più
Computer vision per immagini aeree

Computer vision per immagini aeree

Trasforma immagini aeree e riprese da drone in informazioni utili in tempo reale per agricoltura, acquacoltura, conservazione e analisi geospaziale con Ultralytics YOLO.
Scopri di più
Computer vision nel settore aerospaziale

Computer vision nel settore aerospaziale

Applica la visione artificiale nel settore aerospaziale con Ultralytics YOLO per l'ispezione degli aeromobili, il rilevamento di FOD sulle piste, le operazioni di terra aeroportuali e il rilevamento di difetti nei materiali compositi.
Scopri di più
Visione artificiale nella sicurezza

Visione artificiale nella sicurezza

Proteggi ogni sito con i modelli Ultralytics YOLO. L'IA visiva alimenta il monitoraggio perimetrale, il rilevamento delle minacce, il riconoscimento delle targhe e la sicurezza sul lavoro.
Scopri di più
Visione artificiale nella robotica

Visione artificiale nella robotica

Dai più potenza alle macchine intelligenti con i modelli Ultralytics YOLO. Nell'ambito della robotica, l'IA visiva alimenta la navigazione autonoma, la percezione, il tracciamento degli oggetti e il controllo in tempo reale.
Scopri di più
Visione artificiale nella logistica

Visione artificiale nella logistica

Semplifica la logistica con i modelli Ultralytics YOLO. L'IA per la visione consente l'ispezione dei pacchi, la selezione, il tracciamento dei veicoli e il monitoraggio della sicurezza nei magazzini in tempo reale.
Scopri di più
Visione artificiale nel commercio al dettaglio

Visione artificiale nel commercio al dettaglio

Ripensa il commercio al dettaglio con i modelli Ultralytics YOLO. L'IA per la visione consente di tracciare le scorte, monitorare gli scaffali, gestire le code e ottenere informazioni più approfondite sui clienti.
Scopri di più
Visione artificiale in ambito sanitario

Visione artificiale in ambito sanitario

Crea soluzioni sanitarie con i modelli Ultralytics YOLO. In ambito sanitario, l'IA per la visione consente di elaborare più rapidamente le immagini mediche, migliorare la diagnostica e monitorare i pazienti.
Scopri di più
Computer vision nella produzione

Computer vision nella produzione

Ottimizza la produzione con i modelli Ultralytics YOLO. La visione basata sull'IA migliora il controllo qualità, il rilevamento dei difetti, la conformità ai requisiti sui DPI e l'automazione delle linee di assemblaggio.
Scopri di più
Computer vision nel settore automobilistico

Computer vision nel settore automobilistico

Applica la computer vision al settore automobilistico con i modelli Ultralytics YOLO. La visione basata sull'IA migliora la sicurezza stradale, i sistemi di assistenza alla guida e l'automazione dei veicoli, per strade più intelligenti.
Scopri di più
Visione artificiale in agricoltura

Visione artificiale in agricoltura

Porta l'IA visiva nell'agricoltura intelligente con i modelli Ultralytics YOLO. Gestisci il monitoraggio delle colture, il tracciamento del bestiame e l'agricoltura di precisione per ottenere raccolti più abbondanti e intelligenti.
Scopri di più

Costruiamo insieme il futuro dell'IA!

Inizia il tuo percorso verso il futuro del machine learning