mozzicone Cosa sono le Support Vector Machine? - Unite.AI
Seguici sui social
Corso di perfezionamento sull'intelligenza artificiale:

AI 101

Cosa sono le Support Vector Machine?

mm
aggiornato on

Cosa sono le Support Vector Machine?

Le macchine a vettori di supporto sono un tipo di classificatore di machine learning, probabilmente uno dei tipi di classificatori più popolari. Le macchine vettoriali di supporto sono particolarmente utili per attività di previsione numerica, classificazione e riconoscimento di modelli.

Le macchine vettoriali di supporto operano tracciando confini decisionali tra i punti dati, mirando al confine decisionale che separa meglio i punti dati in classi (o è il più generalizzabile). L'obiettivo quando si utilizza una macchina vettoriale di supporto è che il confine decisionale tra i punti sia il più ampio possibile in modo da massimizzare la distanza tra un dato punto dati e la linea di confine. Questa è una rapida spiegazione di come supporta le macchine vettoriali (SVM) funzionano, ma prendiamoci un po' di tempo per approfondire il funzionamento delle SVM e comprendere la logica alla base del loro funzionamento.

Obiettivo delle macchine vettoriali di supporto

Immagina un grafico con un numero di punti dati su di esso, in base alle caratteristiche specificate dagli assi X e Y. I punti dati sul grafico possono essere liberamente suddivisi in due diversi cluster e il cluster a cui appartiene un punto dati indica la classe del punto dati. Supponiamo ora di voler tracciare una linea lungo il grafico che separi le due classi l'una dall'altra, con tutti i punti dati in una classe trovati su un lato della linea e tutti i punti dati appartenenti a un'altra classe trovati sull'altro lato della linea. Questa linea di separazione è nota come iperpiano.

Puoi pensare a una macchina vettoriale di supporto come a creare "strade" attraverso una città, separando la città in distretti su entrambi i lati della strada. Tutti gli edifici (punti dati) che si trovano su un lato della strada appartengono a un quartiere.

L'obiettivo di una macchina vettoriale di supporto non è solo disegnare iperpiani e dividere punti dati, ma disegnare l'iperpiano che separa i punti dati con il margine più ampio o con il maggior spazio tra la linea di divisione e un dato punto dati. Tornando alla metafora delle “strade”, se un urbanista disegna piani per un'autostrada, non vuole che l'autostrada sia troppo vicina a case o altri edifici. Maggiore è il margine tra l'autostrada e gli edifici su entrambi i lati, meglio è. Maggiore è questo margine, più "fiducioso" può essere il classificatore riguardo alle sue previsioni. Nel caso della classificazione binaria, disegnare l'iperpiano corretto significa scegliere un iperpiano che si trovi proprio nel mezzo delle due diverse classi. Se il confine/iperpiano decisionale è più lontano da una classe, sarà più vicino a un'altra. Pertanto, l'iperpiano deve bilanciare il margine tra le due diverse classi.

Calcolo dell'iperpiano di separazione

Quindi, come fa una macchina a vettori di supporto a determinare il miglior confine di iperpiano/decisione di separazione? Ciò si ottiene calcolando i possibili iperpiani utilizzando una formula matematica. Non tratteremo la formula per il calcolo degli iperpiani in estremo dettaglio, ma la retta è calcolata con la famosa formula pendenza/retta:

Y = ascia + b

Nel frattempo, le linee sono costituite da punti, il che significa che qualsiasi iperpiano può essere descritto come: l'insieme di punti che corrono paralleli all'iperpiano proposto, come determinato dai pesi del modello moltiplicato per l'insieme di caratteristiche modificate da un offset/bias specificato ("D").

Gli SVM disegnano molti iperpiani. Ad esempio, la linea di confine è un iperpiano, ma anche i punti dati considerati dal classificatore si trovano su iperpiani. I valori per x sono determinati in base alle funzionalità 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 la "X". I margini tra l'iperpiano proposto e i vari "vettori di supporto" (punti dati) trovati su entrambi i lati dell'iperpiano di divisione sono calcolati con la seguente formula:

W * X – b

Mentre puoi leggere di più sulla matematica dietro gli SVM, se stai cercando una comprensione più intuitiva di loro, sappi che l'obiettivo è massimizzare la distanza tra l'iperpiano/linea di confine di separazione proposto e gli altri iperpiani che corrono paralleli ad esso ( e su cui si trovano i punti dati).

Foto: ZackWeinberg tramite 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 alle attività di classificazione binaria. Tuttavia, i classificatori SVM possono essere utilizzati anche per attività di classificazione non binarie. 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'attività di classificazione ha tre classi anziché due, verranno utilizzate due linee di divisione per suddividere i punti dati in classi e la regione che comprende una singola classe rientrerà tra due linee di divisione anziché una. Invece di calcolare solo la distanza tra solo due classi e un limite decisionale, il classificatore deve ora considerare i margini tra i limiti decisionali e le classi multiple all'interno del set di dati.

Separazioni non lineari

Il processo sopra descritto si applica ai casi in cui i dati sono linearmente separabili. Si noti che, in realtà, i set di dati non sono quasi mai completamente separabili linearmente, il che significa che quando si utilizza un classificatore SVM sarà spesso necessario utilizzare due tecniche diverse: margini morbidi e trucchi del kernel. Considera una situazione in cui i punti dati di classi diverse sono mescolati insieme, con alcune istanze appartenenti a una classe nel "cluster" di un'altra classe. Come potresti fare in modo 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 "soft margin". Un classificatore a margine morbido funziona accettando alcuni punti dati classificati erroneamente. Proverà a tracciare una linea che separi al meglio i cluster di punti dati l'uno dall'altro, in quanto contengono la maggior parte delle istanze appartenenti alle rispettive classi. Il classificatore SVM con margine morbido tenta di creare una linea di demarcazione che bilancia le due esigenze del classificatore: accuratezza e margine. Cercherà di ridurre al minimo l'errata classificazione massimizzando al contempo il margine.

La tolleranza all'errore di SVM può essere regolata attraverso la manipolazione di un iperparametro chiamato "C". Il valore C controlla quanti vettori di supporto considera il classificatore quando disegna i limiti decisionali. Il valore C è una penalità applicata alle classificazioni errate, il che significa che maggiore è il valore C, minore è il numero di vettori di supporto presi in considerazione dal classificatore e minore è il margine.

Il kernel inganna i dati e li trasforma 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 Kernel Trick opera applicando trasformazioni non lineari alle caratteristiche nel set di dati. Il Kernel Trick prende le funzionalità esistenti nel set di dati e crea nuove funzionalità 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 incapsulano meglio la vera distribuzione dei vettori di supporto e riducono al minimo gli errori di classificazione. Due dei kernel non lineari SVM più popolari sono Radial Basis Function e Polynomial. La funzione polinomiale crea combinazioni polinomiali di tutte le feature esistenti, mentre la Radial Basis Function genera nuove feature misurando la distanza tra un punto/i punti centrali e tutti gli altri punti.

Blogger e programmatore con specialità in machine Learning ed Deep Learning temi. Daniel spera di aiutare gli altri a usare il potere dell'intelligenza artificiale per il bene sociale.