top of page

Algoritmo Support Vector Machine (SVM) Spiegazione - Algoritmo di Classificazione Machine Learning

Dopo aver parlato dei dataset per i problemi di IA e di come i dati contenuti nei dataset siano oro colato per i data scientist, in questo post proverò quindi a presentare uno degli algoritmi più noti e diffusi di apprendimento automatico utilizzato per risolvere i problema di classificazione e regressione: il SVM (Support Vector Machine).


Spiegazione Algoritmo Support Vector Machine (SVM)


Definizione SVM

Le macchine a vettori di supporto utilizzano i dati etichettati per definire un iperpiano con cui suddividere e classificare gli elementi presenti nel dataset.”


oppure come proposto su wikipedia


"Le macchine a vettori di supporto (SVM, dall'inglese support-vector machines) sono dei modelli di apprendimento supervisionato associati ad algoritmi di apprendimento per la classificazione. Dato un insieme di esempi per l'addestramento, ognuno dei quali etichettato con la classe di appartenenza fra le due possibili classi, un algoritmo di addestramento per le SVM costruisce un modello che assegna i nuovi esempi a una delle due classi, ottenendo quindi un classificatore lineare binario non probabilistico. Un modello SVM è una rappresentazione degli esempi come punti nello spazio, mappati in modo tale che gli esempi appartenenti alle due diverse categorie siano chiaramente separati da uno spazio il più possibile ampio. I nuovi esempi sono quindi mappati nello stesso spazio e la predizione della categoria alla quale appartengono viene fatta sulla base del lato nel quale ricade."


Che vuol dire?

Per spiegarvi meglio la definizione precedente voglio valutare il problema di classificazione binaria (ovvero fra due classi). Ancora più nello specifico, consideriamo che siano solo 2 le features utilizzate per classificare le istanze del dataset.


È quindi possibile rappresentare le istanze in un spazio cartesiano 2D. L’algoritmo traccerà una retta (nel caso lineare) per suddividere le istanze delle due classi in base alla classe a cui appartengono. Questa retta servirà quindi per classificare le istanze non etichettate.


Esempio SVM a due dimensioni
Esempio SVM a due dimensioni

Nella Figura sopra sono riportate le istanze del dataset suddivise in base alle features scelte per la classificazione x1 e x2. SVM definisce quindi una linea che suddivida equamente le istanze delle due classi. Nuovi elementi non etichettati saranno quindi classificati nella seguente maniera:

  • se si troveranno al di sopra della linea rossa saranno classificati appartenenti alla classe blue;

  • se si troveranno al di sotto della linea rossa saranno classificati appartenenti alla classe verde.


Esistono vari kernel: noi abbiamo visto quello lineare, che il più semplice, ma sono disponibili per l’uso anche il kernel polinominale, quello esponenziale oppure è possibile crearne uno personalizzato. Cambiando kernel sarà quindi possibile utilizzare altre funzioni matematiche più complesse (come iperboli e parabole) per suddividere le istanze del dataset.


È importante notare che non sempre è possibile suddividere tutte le istanze del dataset nella maniera corretta come nel primo esempio presentato.


Fallimento del Kernl Lineare
Fallimento del Kernl Lineare

In questa seconda Figura viene mostrato come l’utilizzo di un kernel lineare non permetta di risolvere il problema. Probabilmente utilizzando un altro kernel si potrebbero ottenere risultati migliori. Non sempre ciò è possibile!


Prima di terminare voglio mostrare con una terza Figura l’utilizzo di SVM nel caso in cui vengano utilizzate 3 features per la classificazione. In questo caso anziché tracciare una retta, viene utilizzato un piano.


SVM su 3 Dimensioni
SVM su 3 Dimensioni

In conclusione, il suddetto algoritmo è molto utilizzato perché efficiente ed efficace (ovvero produce buoni risultati di classificazione) ed esistono varie implementazioni, tra cui vi consiglio la versione presente nella libreria sklearn.


Spoiler

Nel prossimo post presenterò un caso di studio relativo ad un semplice problema di classificazione, in cui utilizzerò SVM.




Sono appassionato di Intelligenza Artificiale e nel 2020 ho ricevuto il Ph.D. in Visione Artificiale presso l'Università degli Studi di Parma.



Se vuoi ricevere maggiori informazioni sull'articolo o sui progetti che sto svolgendo visita il mio sito web.

PCR (5).gif
PCR (4).gif
PCR.gif
PCR.gif
PCR.gif
PCR.gif
PCR (5).gif
3.gif
Vediamo se riesci a cliccarmi ! Nascondo una Sorpresa... (2).png

Ciao 

🤗 Articoli consigliati dalla nostra
Intelligenza Artificiale in base ai tuoi interessi

Correlazione Alta

Correlazione Media

Correlazione Bassa

Iscriviti

VUOI DIVENTARE UN MEMBRO DI INTELLIGENZA ARTIFICIALE ITALIA GRATUITAMENTE E TRARNE I SEGUENTI BENEFICI?

Corsi Gratis

più di 150 lezioni online

Dataset Gratis

più di 150o dataset

Ebook Gratis

più di 10 libri da leggere

Editor Gratis

un editor python online

Progetti Gratis

più di 25 progetti python

App Gratis

4 servizi web con I.A.

Unisciti Ora a oltre
1.000.000
di lettori e appassionanti d'I.A.

Tutto ciò che riguarda l'intelligenza Artificiale, in unico posto, in italiano e gratis.

MEGLIO DI COSI' NON SI PUO' FARE

Dopo l'iscrizione riceverai diversi Regali

VUOI SCRIVERE ARTICOLI INSIEME A NOI.

Grazie

bottom of page