Support Vector Machine (SVM) è un potente algoritmo di machine learning utilizzato per attività di classificazione lineare o non lineare, regressione e persino rilevamento di valori anomali. Le SVM possono essere utilizzate per una varietà di attività, come la classificazione del testo, la classificazione delle immagini, il rilevamento dello spam, l'identificazione della grafia, l'analisi dell'espressione genetica, il rilevamento dei volti e il rilevamento delle anomalie. Le SVM sono adattabili ed efficienti in una varietà di applicazioni perché possono gestire dati ad alta dimensione e relazioni non lineari.
Gli algoritmi SVM sono molto efficaci poiché cerchiamo di trovare il massimo iperpiano di separazione tra le diverse classi disponibili nella feature di destinazione.
pendenza indefinita
Supporta la macchina vettoriale
Support Vector Machine (SVM) è un file apprendimento automatico supervisionato algoritmo utilizzato sia per la classificazione che per la regressione. Anche se diciamo anche problemi di regressione, è più adatto per la classificazione. L'obiettivo principale dell'algoritmo SVM è trovare l'iperpiano ottimale in uno spazio N-dimensionale in grado di separare i punti dati in diverse classi nello spazio delle caratteristiche. L'iperpiano cerca di fare in modo che il margine tra i punti più vicini delle diverse classi sia il più massimo possibile. La dimensione dell'iperpiano dipende dal numero di caratteristiche. Se il numero di elementi di input è due, l'iperpiano è solo una linea. Se il numero di elementi di input è tre, l'iperpiano diventa un piano 2D. Diventa difficile immaginare quando il numero di funzionalità supera le tre.
Consideriamo due variabili indipendenti x1, X2,e una variabile dipendente che è un cerchio blu o rosso.

Punti dati linearmente separabili
Dalla figura sopra è molto chiaro che ci sono più linee (il nostro iperpiano qui è una linea perché stiamo considerando solo due caratteristiche di input x1, X2) che separano i nostri punti dati o eseguono una classificazione tra cerchi rossi e blu. Allora come scegliamo la linea migliore o in generale il miglior iperpiano che segrega i nostri punti dati?
Come funziona la SVM?
Una scelta ragionevole come miglior iperpiano è quella che rappresenta la separazione o il margine più ampio tra le due classi.

Più iperpiani separano i dati da due classi
Quindi scegliamo l'iperpiano la cui distanza da esso al punto dati più vicino su ciascun lato è massimizzata. Se un tale iperpiano esiste, è noto come iperpiano con margine massimo/margine rigido . Quindi dalla figura sopra scegliamo L2. Consideriamo uno scenario come quello mostrato di seguito

Selezione dell'iperpiano per dati con valori anomali
Qui abbiamo una pallina blu nel confine della pallina rossa. Quindi, come fa SVM a classificare i dati? È semplice! La pallina blu nel confine di quelle rosse è un valore anomalo delle palline blu. L'algoritmo SVM ha le caratteristiche per ignorare l'outlier e trovare il miglior iperpiano che massimizza il margine. SVM è resistente ai valori anomali.

Hyperplane che è quello più ottimizzato
Quindi in questo tipo di punto dati ciò che fa SVM è trovare il margine massimo come fatto con i set di dati precedenti e aggiungere una penalità ogni volta che un punto attraversa il margine. Così vengono chiamati i margini in questi tipi di casi margini morbidi . Quando c'è un margine morbido nel set di dati, l'SVM tenta di minimizzarlo (1/margine+∧(∑penalità)) . La perdita della cerniera è una penalità comunemente usata. Se non ci sono violazioni, nessuna perdita della cerniera. In caso di violazioni, la perdita della cerniera è proporzionale alla distanza della violazione.
Finora parlavamo di dati separabili linearmente (il gruppo di palline blu e rosse è separabile da una linea retta/linea lineare). Cosa fare se i dati non sono linearmente separabili?
identificatori validi Java

Set di dati 1D originale per la classificazione
Supponiamo che i nostri dati siano mostrati nella figura sopra. SVM risolve questo problema creando una nuova variabile utilizzando a nocciolo . Chiamiamo un punto xiosulla linea e creiamo una nuova variabile yioin funzione della distanza dall'origine o. quindi se lo tracciamo otteniamo qualcosa come mostrato di seguito

Mappatura dei dati 1D in 2D per poter separare le due classi
In questo caso, la nuova variabile y viene creata in funzione della distanza dall'origine. Una funzione non lineare che crea una nuova variabile viene definita kernel.
Supporta la terminologia della macchina vettoriale
- Iperpiano: l'iperpiano è il confine decisionale utilizzato per separare i punti dati di diverse classi in uno spazio di funzionalità. Nel caso delle classificazioni lineari, sarà un'equazione lineare, ovvero wx+b = 0. Vettori di supporto: i vettori di supporto sono i punti dati più vicini all'iperpiano, il che svolge un ruolo fondamentale nel decidere l'iperpiano e il margine. Margine: Il margine è la distanza tra il vettore di supporto e l'iperpiano. L'obiettivo principale dell'algoritmo della Support Vector Machine è massimizzare il margine. Il margine più ampio indica prestazioni di classificazione migliori. Kernel: Kernel è la funzione matematica, utilizzata in SVM per mappare i punti dati di input originali in spazi di caratteristiche ad alta dimensione, in modo che l'iperpiano possa essere facilmente trovato anche se i punti dati non sono linearmente separabili nello spazio di input originale. Alcune delle funzioni comuni del kernel sono lineari, polinomiali, funzione di base radiale (RBF) e sigmoide.Margine Rigido: L'iperpiano con margine massimo o l'iperpiano con margine rigido è un iperpiano che separa correttamente i punti dati di diverse categorie senza errori di classificazione. Margine morbido: quando i dati non sono perfettamente separabili o contengono valori anomali, SVM consente una tecnica di margine morbido. Ogni punto dati ha una variabile di margine introdotta dalla formulazione SVM a margine morbido, che attenua il rigoroso requisito di margine e consente determinate classificazioni errate o violazioni. Scopre un compromesso tra l'aumento del margine e la riduzione delle violazioni.C: la massimizzazione del margine e le multe per errata classificazione sono bilanciate dal parametro di regolarizzazione C in SVM. La penalità per il superamento del margine o per l'errata classificazione dei dati viene decisa da esso. Una penalità più severa viene imposta con un valore maggiore di C, che si traduce in un margine più piccolo e forse in meno classificazioni errate. Perdita Di Cerniera: Una tipica funzione di perdita nelle SVM è la perdita di cerniera. Punisce classificazioni errate o violazioni dei margini. La funzione obiettivo in SVM è spesso formata combinandola con il termine di regolarizzazione. Problema doppio: Un problema doppio del problema di ottimizzazione che richiede l'individuazione dei moltiplicatori di Lagrange relativi ai vettori di supporto può essere utilizzato per risolvere SVM. La doppia formulazione consente l'uso di trucchi del kernel e un'elaborazione più efficace.
Intuizione matematica della Support Vector Machine
Considera un problema di classificazione binaria con due classi, etichettate come +1 e -1. Abbiamo un set di dati di addestramento costituito da vettori di funzionalità di input X e dalle etichette di classe corrispondenti Y.
L'equazione per l'iperpiano lineare può essere scritta come:
Il vettore W rappresenta il vettore normale all'iperpiano. cioè la direzione perpendicolare all'iperpiano. Il parametro B nell'equazione rappresenta l'offset o la distanza dell'iperpiano dall'origine lungo il vettore normale In .
La distanza tra un punto dati x_i e il confine della decisione può essere calcolata come:
dove ||w|| rappresenta la norma euclidea del vettore dei pesi w. Norma euclideadel vettore normale W
Per il classificatore SVM lineare:
Ottimizzazione:
- Per il classificatore SVM lineare con margine rigido:
La variabile o etichetta di destinazione per ithl'istanza di training è indicata dal simbolo tioin questa affermazione. E Tio=-1 per occorrenze negative (quando yio= 0) e tio=1 istanze positive (quando yio= 1) rispettivamente. Poiché abbiamo bisogno del confine decisionale che soddisfi il vincolo:
- Per il classificatore SVM lineare con margine morbido:
- Problema doppio: un problema doppio del problema di ottimizzazione che richiede l'individuazione dei moltiplicatori di Lagrange relativi ai vettori di supporto può essere utilizzato per risolvere SVM. I moltiplicatori di Lagrange ottimali α(i) che massimizzano la seguente funzione obiettivo duale
Dove,
- UNioè il moltiplicatore di Lagrange associato all'iesimo campione di addestramento.
- K(xio, XJ) è la funzione del kernel che calcola la somiglianza tra due campioni xioe xJ. Consente a SVM di gestire problemi di classificazione non lineare mappando implicitamente i campioni in uno spazio di caratteristiche di dimensione superiore.
- Il termine ∑αiorappresenta la somma di tutti i moltiplicatori di Lagrange.
Il confine decisionale della SVM può essere descritto in termini di questi moltiplicatori di Lagrange ottimali e dei vettori di supporto una volta risolto il duplice problema e scoperti i moltiplicatori di Lagrange ottimali. I campioni di addestramento che hanno i> 0 sono i vettori di supporto, mentre il confine decisionale è fornito da:
Tipi di macchine vettoriali di supporto
In base alla natura del confine decisionale, le Support Vector Machines (SVM) possono essere suddivise in due parti principali:
- SVM lineare: le SVM lineari utilizzano un limite decisionale lineare per separare i punti dati di classi diverse. Quando i dati possono essere separati linearmente con precisione, le SVM lineari sono molto adatte. Ciò significa che una singola linea retta (in 2D) o un iperpiano (nelle dimensioni superiori) può dividere interamente i punti dati nelle rispettive classi. Un iperpiano che massimizza il margine tra le classi è il confine decisionale. SVM non lineare: SVM non lineare può essere utilizzato per classificare i dati quando non possono essere separati in due classi da una linea retta (nel caso del 2D). Utilizzando le funzioni del kernel, le SVM non lineari possono gestire dati separabili in modo non lineare. I dati di input originali vengono trasformati da queste funzioni del kernel in uno spazio di caratteristiche di dimensione superiore, dove i punti dati possono essere separati linearmente. Una SVM lineare viene utilizzata per individuare un confine decisionale non lineare in questo spazio modificato.
Funzioni del kernel popolari in SVM
Il kernel SVM è una funzione che prende uno spazio di input a bassa dimensionalità e lo trasforma in uno spazio a dimensione superiore, ovvero converte problemi non separabili in problemi separabili. È utile soprattutto nei problemi di separazione non lineare. In poche parole, il kernel esegue alcune trasformazioni di dati estremamente complesse e quindi scopre il processo per separare i dati in base alle etichette o agli output definiti.
definire informatico
Vantaggi dell'SVM
- Efficace nei casi ad alta dimensione.
- La sua memoria è efficiente poiché utilizza un sottoinsieme di punti di allenamento nella funzione decisionale chiamati vettori di supporto.
- È possibile specificare diverse funzioni del kernel per le funzioni decisionali ed è possibile specificare kernel personalizzati.
Implementazione SVM in Python
Prevedere se il cancro è benigno o maligno. L'utilizzo di dati storici sui pazienti con diagnosi di cancro consente ai medici di differenziare i casi maligni e a quelli benigni vengono assegnati attributi indipendenti.
Passi
- Caricare il set di dati sul cancro al seno da sklearn.datasets
- Funzionalità di input separate e variabili di destinazione.
- Costruisci e addestra i classificatori SVM utilizzando il kernel RBF.
- Traccia il grafico a dispersione delle caratteristiche di input.
- Tracciare il confine della decisione.
- Tracciare il confine della decisione
Python3
# Load the important packages> from> sklearn.datasets> import> load_breast_cancer> import> matplotlib.pyplot as plt> from> sklearn.inspection> import> DecisionBoundaryDisplay> from> sklearn.svm> import> SVC> # Load the datasets> cancer> => load_breast_cancer()> X> => cancer.data[:, :> 2> ]> y> => cancer.target> #Build the model> svm> => SVC(kernel> => 'rbf'> , gamma> => 0.5> , C> => 1.0> )> # Trained the model> svm.fit(X, y)> # Plot Decision Boundary> DecisionBoundaryDisplay.from_estimator(> > svm,> > X,> > response_method> => 'predict'> ,> > cmap> => plt.cm.Spectral,> > alpha> => 0.8> ,> > xlabel> => cancer.feature_names[> 0> ],> > ylabel> => cancer.feature_names[> 1> ],> > )> # Scatter plot> plt.scatter(X[:,> 0> ], X[:,> 1> ],> > c> => y,> > s> => 20> , edgecolors> => 'k'> )> plt.show()> |
>
>
Produzione :

Classificazioni del cancro al seno con il kernel SVM RBF