SVM in Sklearn

SVM in Sklearn
Le macchine di supporto-vettore (SVM, note anche come reti di supporto-vettore) nell'apprendimento automatico sono modelli di apprendimento supervisionato con algoritmi corrispondenti che valutano i dati per la regressione e la classificazione. Gli SVM, basati su quadri di apprendimento statistico o teoria VC pubblicati da Chervonenkis e Vapnik, sono tra le tecniche di previsione più affidabili (1974). L'implementazione di SVMS in Sklearn, così come i suoi benefici e gli svantaggi, sarà trattata in questo articolo.

Cos'è SVM?

SVM o Support Vector Machine è una tecnica di apprendimento automatico supervisionato per analizzare i dati per la regressione e la classificazione. L'obiettivo dell'algoritmo SVM è di definire il limite o la linea di decisione ottimale in grado di classificare lo spazio n-dimensionale, consentendoci di classificare nuovi punti dati in futuro rapidamente. Questo limite di decisione è noto come iperplano. Ciò consente al tuo modello di ordinare un set di dati etichettato e classificare l'input senza etichetta. È uno degli algoritmi di apprendimento supervisionati più popolari ed è spesso utilizzato per classificare le immagini utilizzando le funzionalità recuperate da una profonda rete neurale convoluzionale.

Supponiamo che tu abbia alcuni punti linearmente separabili nel tuo documento che sono di diversi tipi. L'SVM troverà una linea retta che, per quanto è ragionevolmente possibile, divide quei punti in due categorie. Immagina due paia di punti sdraiati su un aereo. I primi sono rossi, mentre il resto è blu. Al fine di ottimizzare la sua distanza da entrambe le classi di punti, una macchina vettoriale di supporto cerca una linea che divide i punti rossi da quelli blu. Questo è noto come il margine di differenza più grande. È importante misurare la distanza dalla linea ai punti ai bordi dei due punti per determinare il margine con la differenza più grande. Si riferiscono a loro come Supportare i vettori. I punti devono essere separabili da una linea poiché devono essere separati da uno. Il termine per questo è separabilità lineare. Il trucco del kernel è un'aggiunta cruciale all'algoritmo della macchina vettoriale di supporto per superare questa restrizione. Questo sposta i dati in uno spazio a dimensione superiore e utilizza una funzione lineare per separarli lì. Attraverso un cosiddetto kernel, la trasformazione viene eseguita. Ciò è concepibile solo perché il calcolo della funzione lineare per separare i dati dipende dal prodotto DOT dei vettori di supporto/punti ". In poche parole: per evitare di usare una linea per dividere il rosso dai punti blu, mescolali sul piano.

Sollevare quelli rossi, lasciando quelli blu dietro. Ora è ovvio che potresti separare i punti usando un piano. La tecnica del kernel raggiunge questo. Altera i dati in una dimensione più elevata per presumibilmente essere linearmente separabile. Sollevamento ha aggiunto una terza dimensione (tre dimensioni), che ha separato i punti da una linea in tre dimensioni, un piano, mentre i punti sul pavimento (due dimensioni) non erano.

Vantaggi di SVM

  1. In spazi ad alta dimensione, è più efficace usare la loro memoria abbastanza bene.
  2. Adatto per lezioni con margini distinti di distinzione. Inoltre efficaci quando le dimensioni del campione superano le dimensioni complessive.

Svantaggi di SVM

  1. Quando le caratteristiche totali di ciascun punto dati sono maggiori dei campioni di dati di addestramento, non funziona bene. Inoltre, la sua tecnica non è appropriata per set di dati più grandi.
  2. Un set di dati inizia a rimanere in ritardo quando le classi target si sovrappongono o è presente più rumore. Inoltre, la classificazione prodotta dal classificatore vettoriale di supporto manca di una giustificazione probabilistica.

Implementazione di SVM in Sklearn

Importazione di biblioteche
da Sklearn.set di dati Importa make_classification
da sklearn import svm
Creazione di set di dati
X, y = make_classification (random_state = 42)
stampa ('Train Data is', x)
Print ('Test Data is', y)

Produzione

I dati del treno sono [[-2.02514259 0.0291022 -0.47494531… -0.33450124 0.86575519
-1.20029641]
[1.61371127 0.65992405 -0.15005559… 1.37570681 0.70117274
-0.2975635]
[0.16645221 0.95057302 1.42050425… 1.18901653 -0.55547712
-0.63738713]
..
[-0.03955515 -1.60499282 0.22213377… -0.30917212 -0.46227529
-0.43449623]
[1.08589557 1.2031659 -0.6095122… -0.3052247 -1.31183623
-1.06511366]
[-0.00607091 1.30857636 -0.17495976… 0.99204235 0.32169781
-0.66809045]]
I dati di prova sono [0 0 1 1 0 0 0 1 0 1 1 0 0 0 1 1 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 1 0
0 1 1 1 0 1 0 0 1 1 0 0 1 1 1 0 1 0 0 1 1 0 1 1 1 1 0 1 0 0 1 0 1 0 1 0
1 1 1 0 0 0 1 0 1 0 1 1 1 1 0 0 1 0 1 1 0 1 0 0 0]
Creazione del modello SVM
Modello = SVM.Svc ()
modello.Fit (x, y)
Stampa ("Vettori di supporto sono", modello.Support_vectors_)
stampa ("indici per vettori di supporto sono", modello.supporto_)

Produzione

I vettori di supporto sono [[-2.02514259 0.0291022 -0.47494531… -0.33450124 0.86575519
-1.20029641]
[0.17989415 -0.22210005 0.10537551… -0.96834445 -0.22463315
0.5500521]
[-1.22576566 0.80742726 0.65232288… 0.88365994 -0.03850847
-0.1726273]
..
[0.2005692 -0.24878048 -1.07213901… 0.08614388 -0.36702784
-0.82759022]
[-0.6115178 -1.22532865 -0.85835778… 0.18483612 2.63238206
0.4933179]
[-0.22096417 -0.54561186 -0.57117899… 0.64084286 -0.28110029
1.79768653]]
Gli indici per i vettori di supporto sono [0 4 5 6 8 11 12 13 18 21 22 23 24 27 29 30 31 32 33 34 36 47 52 54
58 67 73 78 79 81 83 89 92 95 2 3 7 9 10 14 25 35 38 39 40 42 45 49
51 57 59 60 61 62 63 68 72 74 75 76 80 85 86 88 91 93 94 96]

Conclusione

Abbiamo esaminato la spiegazione di Support Vector Machines (SVM) insieme ai loro pro, contro e implementazione. SVM disegna iperplani tra i punti con il margine più grande e può essere utilizzato per i casi di classificazione e regressione. Abbiamo visto come Sklearn ci fornisce un modo semplice per implementare SVM e ottenere dettagli sui vettori di supporto.