Cos’è e Come Funziona una Support Vector Machine (SVM) in Python?
La Support Vector Machine, o SVM, è un algoritmo di apprendimento supervisionato utilizzato principalmente per problemi di classificazione, ma applicabile anche alla regressione. La caratteristica principale delle SVM è la capacità di trovare l’iperpiano che separa al meglio le diverse classi nel dataset. Immaginate di avere una lavagna e voler tracciare una linea che separa mele da arance; la SVM cerca di fare proprio questo, ma in uno spazio multi-dimensionale.
Come Funziona una SVM?
L’idea dietro una SVM è piuttosto semplice: l’algoritmo cerca l’iperpiano che massimizza il margine tra le classi. Un iperpiano è una “linea” che divide lo spazio in dimensioni superiori a due; ad esempio, in 2D è una linea, in 3D è un piano. Il margine è la distanza tra l’iperpiano e i punti più vicini di ciascuna classe. Vogliamo trovare quell’iperpiano che lascia il massimo spazio tra le classi.
Una volta trovato l’iperpiano ottimale, possiamo usare la SVM per fare previsioni su nuovi dati. Se il nuovo dato cade su un lato del piano, appartiene a una classe; se cade dall’altro, appartiene alla classe opposta. Facile, no?
Implementazione di una SVM in Python
Passiamo alla parte pratica: come implementare una SVM in Python? La libreria scikit-learn
rende tutto molto facile. Ecco un piccolo esempio:
# Importiamo la libreria e il modulo SVC (Support Vector Classifier) from sklearn import datasets from sklearn.model_selection import train_test_split from sklearn.svm import SVC from sklearn.metrics import accuracy_score # Carichiamo il dataset di iris iris = datasets.load_iris() X = iris.data y = iris.target # Dividiamo il dataset in training e test X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42) # Creiamo un modello SVM model = SVC(kernel='linear') # Alleniamo il modello model.fit(X_train, y_train) # Facciamo delle previsioni predictions = model.predict(X_test) # Valutiamo il modello accuracy = accuracy_score(y_test, predictions) print(f"Accuratezza del modello: {accuracy*100:.2f}%") print(f"Predizioni: {predictions}")
Con poche righe di codice, abbiamo caricato un dataset, addestrato una SVM e fatto delle previsioni.
Concetti chiave: margine, iperpiani e vettori di supporto
Ora che abbiamo affrontato le basi, è arrivato il momento di parlare dei dettagli che rendono le SVM così potenti: margine, iperpiani e vettori di supporto.
Il margine è la distanza tra l’iperpiano di separazione e i punti più vicini delle classi opposte. Il nostro obiettivo è massimizzare questo margine per garantire che la separazione tra le classi sia la più netta possibile, migliorando la fiducia nelle nostre predizioni.
Gli iperpiani sono, come menzionato prima, “linee” che dividono lo spazio in dimensioni superiori a due. L’interessante è che una SVM può calcolare iperpiani anche in spazi di dimensioni elevate, grazie al kernel trick, che permette di mappare i dati in uno spazio ad alta dimensione dove trovare un iperpiano diventa più facile. I kernel più comuni sono lineare, polinomiale e Gaussiano (RBF).
I vettori di supporto sono i campioni del dataset che si trovano più vicini all’iperpiano e giocano un ruolo cruciale nella determinazione dell’iperpiano di separazione. Sono come quei compagni di squadra che fanno tutto il lavoro sporco per proteggere la porta.
Spero che questa rapida panoramica vi abbia aiutato a chiarire un po’ le idee. Continuate a sperimentare e a fare domande. Alla prossima avventura nel fantastico mondo dell’apprendimento automatico!
Sono amante della tecnologia e delle tante sfumature del mondo IT, ho partecipato, sin dai primi anni di università ad importanti progetti in ambito Internet proseguendo, negli anni, allo startup, sviluppo e direzione di diverse aziende; Nei primi anni di carriera ho lavorato come consulente nel mondo dell’IT italiano, partecipando attivamente a progetti nazionali ed internazionali per realtà quali Ericsson, Telecom, Tin.it, Accenture, Tiscali, CNR. Dal 2010 mi occupo di startup mediante una delle mie società techintouch S.r.l che grazie alla collaborazione con la Digital Magics SpA, di cui sono Partner la Campania, mi occupo di supportare ed accelerare aziende del territorio .
Attualmente ricopro le cariche di :
– CTO MareGroup
– CTO Innoida
– Co-CEO in Techintouch s.r.l.
– Board member in StepFund GP SA
Manager ed imprenditore dal 2000 sono stato,
CEO e founder di Eclettica S.r.l. , Società specializzata in sviluppo software e System Integration
Partner per la Campania di Digital Magics S.p.A.
CTO e co-founder di Nexsoft S.p.A, società specializzata nella Consulenza di Servizi in ambito Informatico e sviluppo di soluzioni di System Integration, CTO della ITsys S.r.l. Società specializzata nella gestione di sistemi IT per la quale ho partecipato attivamente alla fase di startup.
Sognatore da sempre, curioso di novità ed alla ricerca di “nuovi mondi da esplorare“.