Support vector machine

Indice dei contenuti

    Una support vector machine (SVM) è un algoritmo di apprendimento supervisionato che costruisce un classificatore a massimo margine. L’idea geometrica è scegliere una frontiera decisionale che separi le classi e resti il più lontana possibile dai campioni più vicini. Questi campioni critici sono i vettori di supporto: bastano loro, nel modello finale, a determinare la posizione della frontiera.

    Per una classificazione binaria, con etichette y_i\in\{-1,+1\}, il caso lineare cerca un iperpiano:

    w^\top x+b=0.

    Un punto viene classificato guardando il segno di w^\top x+b. Se i dati sono separabili, si impone:

    y_i(w^\top x_i+b)\ge 1

    e si minimizza:

    \dfrac{1}{2}\|w\|^2.

    Minimizzare \|w\| equivale a massimizzare il margine geometrico. La SVM non cerca quindi solo una frontiera che separi i dati, ma una frontiera robusta rispetto a piccole perturbazioni dei campioni.

    Margine morbido

    Nella pratica i dati non sono quasi mai perfettamente separabili. La SVM introduce allora un margine morbido tramite variabili di slack \xi_i\ge0:

    \min_{w,b,\xi}\; \dfrac{1}{2}\|w\|^2+C\sum_i\xi_i

    con vincoli:

    y_i(w^\top x_i+b)\ge 1-\xi_i.

    Il parametro C controlla il compromesso tra margine ampio ed errori di classificazione. Valori grandi penalizzano fortemente le violazioni e possono portare a overfitting; valori piccoli accettano più violazioni del margine e possono generalizzare meglio.

    Kernel trick

    Il kernel trick sostituisce i prodotti scalari tra campioni con una funzione kernel:

    K(x_i,x_j)=\langle \phi(x_i),\phi(x_j)\rangle.

    In questo modo la SVM può costruire frontiere non lineari nello spazio originale senza calcolare esplicitamente la trasformazione \phi. Il quadro funzionale sottostante è quello degli spazi di Hilbert a kernel riproducente. Kernel comuni sono:

    • lineare, quando una frontiera piana è sufficiente;
    • polinomiale, quando servono interazioni tra feature;
    • RBF gaussiano, quando la frontiera deve adattarsi localmente.

    Con kernel RBF entra un parametro di scala, spesso indicato con \gamma, che controlla quanto locale sia la frontiera decisionale. Un \gamma troppo grande può creare una frontiera frastagliata; un \gamma troppo piccolo può rendere il modello troppo rigido.

    Uso operativo

    Le SVM sono efficaci in spazi ad alta dimensione e con dataset in cui il margine è informativo. Sono state usate in classificazione di testi, bioinformatica, riconoscimento di pattern, diagnosi assistita e problemi con molte feature ma non necessariamente moltissimi campioni.

    Richiedono però scaling delle feature, scelta attenta di kernel e parametri, e validazione con dati non usati in addestramento. La validazione incrociata è spesso necessaria per scegliere C, \gamma e il tipo di kernel. La qualità finale va valutata con metriche coerenti con il problema, per esempio matrice di confusione, sensibilità, specificità, precisione o F1-score.

    Errori comuni

    Il parametro C non è una misura di accuratezza: è una penalizzazione degli errori di margine. Aumentarlo non rende automaticamente il modello migliore.

    Un secondo errore è usare un kernel RBF senza normalizzare le variabili. Se una feature ha scala molto più grande delle altre, domina le distanze e altera la frontiera.

    Un terzo errore è interpretare una SVM con kernel non lineare come un modello facilmente leggibile. La frontiera può essere potente, ma la spiegabilità è spesso inferiore rispetto a modelli lineari, alberi semplici o regressione logistica.

    Vedi anche: kernel trick, spazio di Hilbert a kernel riproducente, funzione positiva-definita, apprendimento supervisionato, funzione di perdita, validazione incrociata, matrice di confusione e formulario di Statistica Multivariata e Bayesiana.

    Ultimo aggiornamento: