Fondamenti di IA
Che cosa sono le Macchine a Vettori di Supporto?
Che cosa sono le Macchine a Vettori di Supporto?
Le macchine a vettori di supporto sono un tipo di classificatore di apprendimento automatico, probabilmente uno dei più popolari tipi di classificatori. Le macchine a vettori di supporto sono particolarmente utili per la previsione numerica, la classificazione e il riconoscimento di modelli.
Le macchine a vettori di supporto operano disegnando confini decisionali tra punti di dati, mirando al confine decisionale che meglio separa i punti di dati in classi (o è il più generalizzabile). L’obiettivo quando si utilizza una macchina a vettori di supporto è che il confine decisionale tra i punti sia il più grande possibile in modo che la distanza tra qualsiasi punto di dati e il confine sia massimizzata. Questa è una spiegazione rapida di come le macchine a vettori di supporto (SVM) operano, ma prendiamoci un po’ di tempo per capire meglio come funzionano le SVM e comprendere la logica dietro il loro funzionamento.
Obiettivo delle Macchine a Vettori di Supporto
Immagina un grafico con una serie di punti di dati, basati su caratteristiche specificate dagli assi X e Y. I punti di dati sul grafico possono essere divisi grossolanamente in due cluster diversi, e il cluster a cui appartiene un punto di dati indica la classe del punto di dati. Ora, supponi di voler disegnare una linea nel grafico che separi le due classi, con tutti i punti di dati di una classe su un lato della linea e tutti i punti di dati dell’altra classe sull’altro lato della linea. Questa linea di separazione è conosciuta come iperpiano.
Puoi pensare a una macchina a vettori di supporto come a una creazione di “strade” in una città, separando la città in distretti su entrambi i lati della strada. Tutti gli edifici (punti di dati) che si trovano su un lato della strada appartengono a un distretto.

L’obiettivo di una macchina a vettori di supporto non è solo disegnare iperpiani e dividere i punti di dati, ma disegnare l’iperpiano che separa i punti di dati con il margine più grande, o con lo spazio più ampio tra il confine e qualsiasi punto di dati. Tornando alla metafora delle “strade”, se un urbanista disegna piani per un’autostrada, non vuole che l’autostrada sia troppo vicina alle case o ad altri edifici. Maggiore è il margine tra l’autostrada e gli edifici su entrambi i lati, meglio è. Maggiore è questo margine, più “sicura” può essere la classificazione delle previsioni. Nel caso della classificazione binaria, disegnare il confine decisionale corretto significa scegliere un iperpiano che si trova esattamente nel mezzo delle due classi diverse. Se il confine decisionale/iperpiano è più lontano da una classe, sarà più vicino a un’altra. Pertanto, l’iperpiano deve bilanciare il margine tra le due classi diverse.
Calcolare l’Iperpiano di Separazione
Come fa una macchina a vettori di supporto a determinare l’iperpiano di separazione migliore? Ciò viene fatto calcolando possibili iperpiani utilizzando una formula matematica. Non entreremo nei dettagli della formula per calcolare gli iperpiani in estremo dettaglio, ma la linea è calcolata con la famosa formula della retta:
Y = ax + b
Nel frattempo, le linee sono composte da punti, il che significa che qualsiasi iperpiano può essere descritto come: l’insieme di punti che corrono parallelamente all’iperpiano proposto, come determinato dai pesi del modello moltiplicati per l’insieme di caratteristiche modificate da uno scostamento/offset specifico (“d”).
Le SVM disegnano molti iperpiani. Ad esempio, la linea di confine è un iperpiano, ma i punti di dati che il classificatore considera si trovano anche su iperpiani. I valori per x sono determinati in base alle caratteristiche nel set di dati. Ad esempio, se avessi un set di dati con le altezze e i pesi di molte persone, le caratteristiche “altezza” e “peso” sarebbero le caratteristiche utilizzate per calcolare “X”. I margini tra l’iperpiano proposto e i vari “vettori di supporto” (punti di dati) trovati su entrambi i lati dell’iperpiano di separazione sono calcolati con la seguente formula:
W * X – b
Mentre puoi leggere di più sulla matematica dietro le SVM, se stai cercando una comprensione più intuitiva di loro, basta sapere che l’obiettivo è massimizzare la distanza tra l’iperpiano di separazione proposto e gli altri iperpiani che corrono parallelamente ad esso (e sui quali si trovano i punti di dati).

Foto: ZackWeinberg via Wikimedia Commons, CC BY SA 3.0 (https://commons.wikimedia.org/wiki/File:svm_separating_hyperplanes_(SVG).svg)
Classificazione Multiclasse
Il processo descritto finora si applica ai compiti di classificazione binaria. Tuttavia, i classificatori SVM possono anche essere utilizzati per compiti di classificazione non binaria. Quando si esegue la classificazione SVM su un set di dati con tre o più classi, vengono utilizzate più linee di confine. Ad esempio, se un compito di classificazione ha tre classi invece di due, verranno utilizzate due linee di confine per dividere i punti di dati in classi e la regione che comprende una singola classe si troverà tra due linee di confine invece di una. Invece di calcolare solo la distanza tra due classi e un confine decisionale, il classificatore deve considerare ora i margini tra i confini decisionali e le più classi all’interno del set di dati.
Separazioni Non Lineari
Il processo descritto sopra si applica ai casi in cui i dati sono linearmente separabili. Nota che, nella realtà, i set di dati sono quasi mai completamente linearmente separabili, il che significa che quando si utilizza un classificatore SVM, spesso sarà necessario utilizzare due tecniche diverse: margine morbido e trucchi del kernel. Considera una situazione in cui i punti di dati di classi diverse sono mischiati insieme, con alcune istanze appartenenti a una classe nel “cluster” di un’altra classe. Come potresti far sì che il classificatore gestisca queste istanze?
Una tattica che può essere utilizzata per gestire set di dati non linearmente separabili è l’applicazione di un classificatore SVM a margine morbido. Un classificatore a margine morbido opera accettando alcuni punti di dati mal classificati. Cercherà di disegnare una linea che migliori separi i cluster di punti di dati l’uno dall’altro, poiché contengono la maggior parte delle istanze appartenenti alle rispettive classi. Il classificatore SVM a margine morbido tenta di creare una linea di confine che bilancia le due richieste del classificatore: accuratezza e margine. Cercherà di minimizzare la mal classificazione mentre massimizza il margine.
La tolleranza per l’errore della SVM può essere regolata manipolando un iperparametro chiamato “C”. Il valore C controlla quanti vettori di supporto il classificatore considera quando disegna confini decisionali. Il valore C è una penalità applicata alle mal classificazioni, il che significa che più grande è il valore C, meno vettori di supporto il classificatore prende in considerazione e più stretto è il margine.

Il trucco del kernel trasforma i dati in modo non lineare. Foto: Shiyu Ju via Wikmedia Commons, CC BY SA 4.0 (https://commons.wikimedia.org/wiki/File:kernel_trick_idea.svg)
Il trucco del kernel opera applicando trasformazioni non lineari alle caratteristiche nel set di dati. Il trucco del kernel prende le caratteristiche esistenti nel set di dati e crea nuove caratteristiche attraverso l’applicazione di funzioni matematiche non lineari. Ciò che risulta dall’applicazione di queste trasformazioni non lineari è un confine decisionale non lineare. Poiché il classificatore SVM non è più limitato a disegnare confini decisionali lineari, può iniziare a disegnare confini decisionali curvi che meglio racchiudono la vera distribuzione dei vettori di supporto e portano le mal classificazioni a un minimo. Due dei nuclei SVM non lineari più popolari sono la Funzione Radiale e la Funzione Polinomiale. La funzione polinomiale crea combinazioni polinomiali di tutte le caratteristiche esistenti, mentre la Funzione Radiale genera nuove caratteristiche misurando la distanza tra un punto/ punti centrali e tutti gli altri punti.












