regressione logistica con scikit-learn

Classificazione a massimo margine con le macchine a vettori di supporto

Nel capito riguardante il Machine Learning abbiamo parlato di vari e interessanti argomenti come il Perceptron e il modello Adaline. In questo articolo andiamo a parlare della classificazione a massimo margine con le macchine a vettori di supporto. Esso viene anche più comunemente chiamato SVM support vector machine – e puo essere considerato come un’estensione del nostro vecchio amico Perceptron.

Infatti, abbiamo visto e analizzato tramite scikit-learn, che con l’utilizzo di un modello come il Perceptron si vada a minimizzare gli errori di mancata classificazione, mentre con SVM il nostro obbiettivo di ottimizzazione consiste nel massimizzare il margine. 

Cerchiamo di capire bene cosa intendiamo per margine.

Esso è definito come la distanza fra l’iperpiano di separazione e i campioni di addestramento che sono più vicini a questo iperpiano, i cosiddetti vettori di supporto.

classificazione a massimo margine

Individuazione del massimo margine

La logica che porta ad avere confini decisionali con ampi margini è il fatto che questi tendono ad avere un errore di  generalizzazione più basso, mentre i modelli con margini più ridotti sono più soggetti al fenomeno dell’overfitting di qui ne abbiamo parlato nelle lezioni precedenti.

Vediamo più nel dettaglio come descrivere i due iperpiani, paralleli al confine decisionale, in modo matematico:

classificazione a massimo margine

La sottrazione tra le due equazioni matematiche determina una soluzione che corrisponde a:

classificazione a massimo margine

Il tutto è possibile massimizzarlo per la lunghezza del vettore w, definito nel seguente modo:

classificazione a massimo margine

La quale corrisponde alla distanza tra l’iperpiano negativo e quello positivo, ovvero il margine che vogliamo massimizzare. Esso è rappresentabile anche attraverso questa equazione:

Leggi articolo   Regressione logistica con scikit-learn e la regolarizzazione

L'utilizzo delle variabili slack nella classificazione a massimo margine

La variabile slack viene rappresentata con questo carattere ε ed è stata introdotta nel 1995 da Vladimir Vapnik e ha condotto allo studio della classififcazione a margine soft. Questa nuova tecnica è nata perchè i vincoli di linearità devono essere attenuati per i dati separabili non linearmente, in modo da consentire la convergenza dell’ottimizzazione in presenza di errate classificazioni sotto l’appropriata penalizzazione dei costi.

Da queste due equazioni, traiamo una nuova considerazione. Il nuovo obbiettivo da massimizzare, infatti, diventa:

Utilizzando C ci permette di controllare la penalizzazione per un errata classificazione. Ovviamente, se C è più alto, maggiori saranno le penalizzazioni di un errore.

Da questi due grafici capiamo che C possiamo utilizzarlo per il controllo dell’ampiezza del margine e ottimizzare il compromesso tra bias e varianza. Questo concetto è legato alla regolarizzazione, nella quale, incrementando C si aumenta il bias e si riduce la varianza.

Addestriamo un modello SVM per classificare fiori Iris

				
					from sklearn.svm import SVC

svm = SVC(kernel='linear', C=1.0, random_state=0)
svm.fit(X_train_std, y_train)

plot_decision_regions(X_combined_std, y_combined,
                      classifier=svm, test_idx=range(105, 150))
plt.xlabel('petal length [standardized]')
plt.ylabel('petal width [standardized]')
plt.legend(loc='upper left')
plt.tight_layout()

plt.show()
				
			

Il risultato di questo codice rappresenta le regioni decisionali:

Nel prossimo articolo continueremo a parlare di classificazione a massimo margine e andremo a implementare diversi tipi di tecniche in scikit-learn. Per avere il file jupyter constantemente aggiornato e quindi completo di tutte le implementazioni fatte fino ad adesso, comprendenti la regola del Perceptron e Adaline, vi consiglio di scaricare da qui il file:

Condividi il post

Condividi su facebook
Condividi su google
Condividi su twitter
Condividi su email
Condividi su whatsapp