logo

Suport Vector Machine (SVM) algoritm

Support Vector Machine (SVM) este un algoritm puternic de învățare automată utilizat pentru clasificare liniară sau neliniară, regresie și chiar sarcini de detectare a valorii aberante. SVM-urile pot fi utilizate pentru o varietate de sarcini, cum ar fi clasificarea textului, clasificarea imaginilor, detectarea spam-ului, identificarea scrisului de mână, analiza expresiei genelor, detectarea feței și detectarea anomaliilor. SVM-urile sunt adaptabile și eficiente într-o varietate de aplicații, deoarece pot gestiona date cu dimensiuni mari și relații neliniare.

Algoritmii SVM sunt foarte eficienți deoarece încercăm să găsim hiperplanul de separare maxim între diferitele clase disponibile în caracteristica țintă.

vba

Suport Vector Machine

Support Vector Machine (SVM) este un învățare automată supravegheată algoritm utilizat atât pentru clasificare, cât și pentru regresie. Deși spunem și probleme de regresie, este cel mai potrivit pentru clasificare. Obiectivul principal al algoritmului SVM este de a găsi hiperplanul optim într-un spațiu N-dimensional care poate separa punctele de date în diferite clase din spațiul caracteristic. Hiperplanul încearcă ca marja dintre cele mai apropiate puncte ale diferitelor clase să fie cât mai maximă posibil. Dimensiunea hiperplanului depinde de numărul de caracteristici. Dacă numărul de caracteristici de intrare este două, atunci hiperplanul este doar o linie. Dacă numărul de caracteristici de intrare este trei, atunci hiperplanul devine un plan 2-D. Devine dificil de imaginat când numărul de caracteristici depășește trei.



Să considerăm două variabile independente x1, X2,și o variabilă dependentă care este fie un cerc albastru, fie un cerc roșu.

Puncte de date liniar separabile

Din figura de mai sus este foarte clar că există mai multe linii (hiperplanul nostru aici este o linie, deoarece luăm în considerare doar două caracteristici de intrare x1, X2) care separă punctele noastre de date sau fac o clasificare între cercuri roșii și albastre. Deci, cum alegem cea mai bună linie sau, în general, cel mai bun hiperplan care ne segrega punctele de date?

Cum funcționează SVM?

O alegere rezonabilă ca cel mai bun hiperplan este cea care reprezintă cea mai mare separare sau marjă între cele două clase.

Hiperplanuri multiple care separă datele din două clase

Mai multe hiperplanuri separă datele din două clase

Deci alegem hiperplanul a cărui distanță de la acesta până la cel mai apropiat punct de date de fiecare parte este maximizată. Dacă un astfel de hiperplan există, acesta este cunoscut sub numele de hiperplan cu margine maximă/margine dură . Deci, din figura de mai sus, alegem L2. Să luăm în considerare un scenariu ca cel prezentat mai jos

Selectarea hiperplanului pentru datele cu valori aberante

Selectarea hiperplanului pentru datele cu valori aberante

Aici avem o minge albastră în limita mingii roșii. Deci, cum clasifică SVM datele? E simplu! Bila albastră de la limita celor roșii este o valoare anormală a bilelor albastre. Algoritmul SVM are caracteristicile de a ignora valorile aberante și de a găsi cel mai bun hiperplan care maximizează marja. SVM este robust la valori aberante.

Hyperplane care este cel mai optimizat

Hyperplane care este cel mai optimizat

Deci, în acest tip de punct de date, ceea ce face SVM este să găsească marja maximă așa cum s-a făcut cu seturile de date anterioare, împreună cu faptul că adaugă o penalizare de fiecare dată când un punct trece de marja. Deci, marjele în aceste tipuri de cazuri sunt numite margini moi . Când există o marjă slabă pentru setul de date, SVM încearcă să minimizeze (1/marja+∧(∑penalizare)) . Pierderea balamalei este o penalizare folosită în mod obișnuit. Dacă nu există încălcări, nu există pierderi de balamale. Dacă încălcări, pierderi de balamale sunt proporționale cu distanța de încălcare.

Până acum, vorbeam despre date separabile liniar (grupul de bile albastre și roșii sunt separabile printr-o linie dreaptă/liniară). Ce să faci dacă datele nu sunt separabile liniar?

Setul de date 1D original pentru clasificare

Setul de date 1D original pentru clasificare

Să spunem, datele noastre sunt prezentate în figura de mai sus. SVM rezolvă acest lucru prin crearea unei noi variabile folosind a nucleu . Numim un punct xipe linie și creăm o nouă variabilă yiîn funcție de distanța de la origine, deci, dacă tragem acest lucru, obținem ceva asemănător cu cel de mai jos

Maparea datelor 1D la 2D pentru a putea separa cele două clase

Maparea datelor 1D la 2D pentru a putea separa cele două clase

În acest caz, noua variabilă y este creată în funcție de distanța de la origine. O funcție neliniară care creează o nouă variabilă este denumită nucleu.

Suport Terminologie Vector Machine

    Hyperplane: Hyperplane este limita de decizie care este utilizată pentru a separa punctele de date ale diferitelor clase într-un spațiu de caracteristici. În cazul clasificărilor liniare, va fi o ecuație liniară, adică wx+b = 0. Vectorii suport: Vectorii suport sunt cele mai apropiate puncte de date de hiperplan, ceea ce are un rol critic în deciderea hiperplanului și a marginii. Marja: Marja este distanța dintre vectorul suport și hiperplan. Obiectivul principal al algoritmului de mașină vectorială de suport este de a maximiza marja. Marja mai largă indică o performanță mai bună de clasificare. Kernel: Kernel este funcția matematică, care este utilizată în SVM pentru a mapa punctele de date originale de intrare în spații caracteristice cu dimensiuni mari, astfel încât hiperplanul poate fi găsit cu ușurință chiar dacă punctele de date. nu sunt separabile liniar în spațiul de intrare original. Unele dintre funcțiile obișnuite ale nucleului sunt liniare, polinomiale, funcția de bază radială (RBF) și sigmoid.Hard Margin: Hiperplanul cu margine maximă sau hiperplanul cu marginea tare este un hiperplan care separă în mod corespunzător punctele de date ale diferitelor categorii fără nicio clasificări greșite. Soft Margin: Când datele nu sunt perfect separabile sau conțin valori aberante, SVM permite o tehnică soft margin. Fiecare punct de date are o variabilă slack introdusă de formula SVM cu marjă moale, care atenuează cerința strictă a marjei și permite anumite clasificări greșite sau încălcări. Descoperă un compromis între creșterea marjei și reducerea încălcărilor.C: Maximizarea marjei și amenzile de clasificare greșită sunt echilibrate de parametrul de regularizare C în SVM. Penalizarea pentru depășirea marjei sau clasificarea greșită a elementelor de date este decisă de acesta. O penalizare mai strictă este impusă cu o valoare mai mare a C, ceea ce are ca rezultat o marjă mai mică și poate mai puține clasificări greșite. Pierderea balamalei: O funcție tipică de pierdere în SVM este pierderea balamalei. Pedepsește clasificările incorecte sau încălcările marjei. Funcția obiectiv în SVM se formează frecvent prin combinarea acesteia cu termenul de regularizare. Problemă duală: O problemă duală a problemei de optimizare care necesită localizarea multiplicatorilor Lagrange aferenți vectorilor suport poate fi folosită pentru a rezolva SVM. Formularea dublă permite utilizarea trucurilor nucleului și calcularea mai eficientă.

Intuiția matematică a suportului Vector Machine

Luați în considerare o problemă de clasificare binară cu două clase, etichetate ca +1 și -1. Avem un set de date de antrenament format din vectori caracteristici de intrare X și etichetele lor de clasă corespunzătoare Y.

Ecuația pentru hiperplanul liniar poate fi scrisă astfel:

w^Tx+ b = 0

Vectorul W reprezintă vectorul normal la hiperplan. adică direcția perpendiculară pe hiperplan. Parametrul b în ecuație reprezintă decalajul sau distanța hiperplanului de la origine de-a lungul vectorului normal În .

Distanța dintre un punct de date x_i și limita de decizie poate fi calculată ca:

d_i = frac{w^T x_i + b}

unde ||w|| reprezintă norma euclidiană a vectorului greutate w. norma euclidianăa vectorului normal W

Pentru clasificatorul liniar SVM:

powershell mai mic sau egal cu

Optimizare:

    Pentru clasificatorul liniar SVM cu marjă rigidă:

underset{w,b}{	ext{minimizați}}frac{1}{2}w^Tw =underset{W,b}{	ext{minimizați}}frac{1}{2}left | w 
ight|^{2}  	ext{supus la}; y_i(w^Tx_i + b) geq 1 ;pentru; i = 1, 2,3, cdots,m

Variabila țintă sau eticheta pentru ithinstanța de antrenament este notă cu simbolul tiin aceasta afirmatie. Si ti=-1 pentru aparițiile negative (când yi= 0) și ti=1 cazuri pozitive (când yi= 1) respectiv. Deoarece avem nevoie de granița de decizie care satisface constrângerea: underset{w,b}{	ext{minimize }}frac{1}{2}w^Tw+ C sum_{i=1}^m zeta_{i}  	ext{subject to } y_i( w^Tx_i + b)ge 1-zeta_{i};; și ; zeta_{i} ge 0;; pentru ; i = 1, 2,3, cdots,m

    Pentru clasificatorul liniar SVM cu margine moale:

underset{alpha}{	ext{maximize}}: frac{1}{2}underset{i	o m;}{sum};underset{j	o m}{sum} alpha_ialpha_j t_i t_j K(x_i, x_j) -underset{i	o m}{sum}alpha_i

    Problemă dublă: O problemă duală a problemei de optimizare care necesită localizarea multiplicatorilor Lagrange legați de vectorii suport poate fi utilizată pentru a rezolva SVM. Multiplicatorii Lagrange optimi α(i) care maximizează următoarea funcție obiectiv duală

w= underset{i	o m}{sum}alpha_i t_i K(x_i, x) + b  t_i(w^Tx_i-b) = 1 Longleftrightarrow b= w^Tx_i-t_i

Unde,

  • Aieste multiplicatorul Lagrange asociat cu eșantionul i-lea de antrenament.
  • K(xi, Xj) este funcția de nucleu care calculează asemănarea dintre două eșantioane xiși xj. Acesta permite SVM să gestioneze problemele de clasificare neliniară prin maparea implicită a eșantioanelor într-un spațiu de caracteristici de dimensiuni mai mari.
  • Termenul ∑αireprezintă suma tuturor multiplicatorilor Lagrange.

Limita de decizie SVM poate fi descrisă în termenii acestor multiplicatori Lagrange optimi și vectori suport odată ce problema duală a fost rezolvată și multiplicatorii Lagrange optimi au fost descoperiți. Eșantioanele de antrenament care au i> 0 sunt vectorii suport, în timp ce limita de decizie este furnizată de:

egin{aligned} 	ext{Linear : } K(w,b) &= w^Tx+b  	ext{Polinom : } K(w,x) &= (gamma w^Tx+b)^ N  	ext{Gaussian RBF: } K(w,x) &= exp(-gamma|| x_i-x_j||^n  	ext{Sigmoid :} K(x_i, x_j) &=  tanh(alpha x_i^Tx_j + b) end{aligned}

Tipuri de suport Vector Machine

Pe baza naturii graniței de decizie, Mașinile Vectori de Suport (SVM) pot fi împărțite în două părți principale:

imagini de reducere
    SVM liniar: SVM-urile liniare utilizează o limită de decizie liniară pentru a separa punctele de date ale diferitelor clase. Când datele pot fi separate liniar precis, SVM-urile liniare sunt foarte potrivite. Aceasta înseamnă că o singură linie dreaptă (în 2D) sau un hiperplan (în dimensiuni mai mari) poate împărți în întregime punctele de date în clasele lor respective. Un hiperplan care maximizează marja dintre clase este limita de decizie. SVM non-liniar: SVM neliniar poate fi folosit pentru a clasifica datele atunci când nu pot fi separate în două clase printr-o linie dreaptă (în cazul 2D). Prin utilizarea funcțiilor nucleului, SVM-urile neliniare pot gestiona date neliniar separabile. Datele de intrare originale sunt transformate de aceste funcții ale nucleului într-un spațiu de caracteristici de dimensiuni mai mari, unde punctele de date pot fi separate liniar. Un SVM liniar este utilizat pentru a localiza o graniță de decizie neliniară în acest spațiu modificat.

Funcții populare ale nucleului în SVM

Nucleul SVM este o funcție care ia spațiu de intrare de dimensiuni joase și îl transformă în spațiu de dimensiuni superioare, adică transformă problemele neseparabile în probleme separabile. Este util mai ales în problemele de separare neliniară. Pur și simplu puneți nucleul, face unele transformări de date extrem de complexe și apoi află procesul de separare a datelor pe baza etichetelor sau ieșirilor definite.

Clasificări ale cancerului de sân cu SVM RBF kernel-Geeksforgeeks

Avantajele SVM

  • Eficient în cazuri cu dimensiuni mari.
  • Memoria sa este eficientă deoarece folosește un subset de puncte de antrenament în funcția de decizie numită vectori suport.
  • Pot fi specificate diferite funcții ale nucleului pentru funcțiile de decizie și este posibil să se specifice nuclee personalizate.

Implementarea SVM în Python

Preziceți dacă cancerul este benign sau malign. Utilizarea datelor istorice despre pacienții diagnosticați cu cancer le permite medicilor să diferențieze cazurile maligne, iar celor benigne li se atribuie atribute independente.

Pași

  • Încărcați setul de date despre cancerul de sân din sklearn.datasets
  • Separați caracteristicile de intrare și variabilele țintă.
  • Construiți și antrenați clasificatorii SVM folosind nucleul RBF.
  • Trasează graficul de dispersie al caracteristicilor de intrare.
  • Trasează granița de decizie.
  • Trasează granița de decizie

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()>
>
>

Ieșire :

Clasificări ale cancerului de sân cu nucleul SVM RBF