logo

Algoritmus podporného vektorového stroja (SVM).

Support Vector Machine (SVM) je výkonný algoritmus strojového učenia, ktorý sa používa na úlohy lineárnej alebo nelineárnej klasifikácie, regresie a dokonca aj úloh detekcie odľahlých hodnôt. SVM možno použiť na rôzne úlohy, ako je klasifikácia textu, klasifikácia obrázkov, detekcia spamu, identifikácia rukopisu, analýza génovej expresie, detekcia tváre a detekcia anomálií. SVM sú prispôsobiteľné a efektívne v rôznych aplikáciách, pretože dokážu spravovať veľkorozmerné údaje a nelineárne vzťahy.

Algoritmy SVM sú veľmi efektívne, pretože sa snažíme nájsť maximálnu oddeľovaciu nadrovinu medzi rôznymi triedami dostupnými v cieľovom prvku.

statické kľúčové slovo v jazyku Java

Podpora vektorového stroja

Support Vector Machine (SVM) je a strojové učenie pod dohľadom algoritmus používaný na klasifikáciu aj regresiu. Aj keď hovoríme aj o regresných problémoch, najlepšie sa to hodí na klasifikáciu. Hlavným cieľom algoritmu SVM je nájsť optimálnu nadrovinu v N-rozmernom priestore, ktorá dokáže oddeliť dátové body v rôznych triedach v priestore prvkov. Nadrovina sa snaží, aby rozpätie medzi najbližšími bodmi rôznych tried bolo čo najväčšie. Rozmer nadroviny závisí od počtu prvkov. Ak je počet vstupných prvkov dva, potom je nadrovina len čiara. Ak je počet vstupných prvkov tri, potom sa nadrovina stane 2-D rovinou. Je ťažké si predstaviť, keď počet funkcií presiahne tri.



Uvažujme dve nezávislé premenné x1, X2,a jednu závislú premennú, ktorou je buď modrý kruh alebo červený kruh.

Lineárne oddeliteľné dátové body

Z vyššie uvedeného obrázku je veľmi jasné, že existuje viacero čiar (naša nadrovina je tu čiara, pretože uvažujeme iba o dvoch vstupných prvkoch x1, X2), ktoré oddeľujú naše dátové body alebo robia klasifikáciu medzi červenými a modrými kruhmi. Ako teda vyberieme najlepšiu čiaru alebo vo všeobecnosti najlepšiu nadrovinu, ktorá oddeľuje naše dátové body?

Ako funguje SVM?

Jedna rozumná voľba ako najlepšia nadrovina je tá, ktorá predstavuje najväčšiu vzdialenosť alebo rozpätie medzi týmito dvoma triedami.

Viaceré nadroviny oddeľujúce údaje z dvoch tried

Viaceré nadroviny oddeľujú údaje z dvoch tried

Vyberieme teda nadrovinu, ktorej vzdialenosť od nej k najbližšiemu dátovému bodu na každej strane je maximalizovaná. Ak takáto nadrovina existuje, je známa ako nadrovina maximálneho rozpätia/tvrdý okraj . Takže z vyššie uvedeného obrázku vyberieme L2. Zoberme si scenár, ako je uvedený nižšie

Výber nadroviny pre údaje s odľahlými hodnotami

Výber nadroviny pre údaje s odľahlými hodnotami

Tu máme jednu modrú guľu na hranici červenej gule. Ako teda SVM klasifikuje údaje? Je to jednoduché! Modrá guľa na hranici červených guľôčok je odľahlou hodnotou modrých guľôčok. Algoritmus SVM má vlastnosti ignorovať odľahlé hodnoty a nájde najlepšiu nadrovinu, ktorá maximalizuje rezervu. SVM je odolný voči odľahlým hodnotám.

Hyperplane, ktorý je najviac optimalizovaný

Hyperplane, ktorý je najviac optimalizovaný

Takže v tomto type údajového bodu, čo robí SVM, je, že nájde maximálnu rezervu ako pri predchádzajúcich súboroch údajov a pridá penalizáciu zakaždým, keď bod prekročí hranicu. Takže okraje v týchto typoch prípadov sa nazývajú mäkké okraje . Keď je v súbore údajov mäkká rezerva, SVM sa pokúsi minimalizovať (1/marža + ∧(∑penalta)) . Strata závesu je bežne používaný trest. Ak nedochádza k žiadnemu porušeniu, žiadna strata závesu. Ak dôjde k porušeniu, strata závesu je úmerná vzdialenosti porušenia.

Doteraz sme hovorili o lineárne oddeliteľných dátach (skupina modrých guľôčok a červených guľôčok sú oddeliteľné priamkou/lineárnou čiarou). Čo robiť, ak údaje nie sú lineárne oddeliteľné?

Pôvodný 1D súbor údajov na klasifikáciu

Pôvodný 1D súbor údajov na klasifikáciu

Herečka Sai Pallavi

Povedzme, že naše údaje sú zobrazené na obrázku vyššie. SVM to rieši vytvorením novej premennej pomocou a jadro . Bod nazývame xina riadku a vytvoríme novú premennú yiako funkciu vzdialenosti od pôvodu o. takže ak to vykreslíme, dostaneme niečo také, ako je uvedené nižšie

Mapovanie 1D údajov na 2D, aby bolo možné oddeliť dve triedy

Mapovanie 1D údajov na 2D, aby bolo možné oddeliť dve triedy

V tomto prípade sa nová premenná y vytvorí ako funkcia vzdialenosti od počiatku. Nelineárna funkcia, ktorá vytvára novú premennú, sa označuje ako jadro.

Podpora terminológie vektorových strojov

    Hyperplane: Hyperplane je rozhodovacia hranica, ktorá sa používa na oddelenie údajových bodov rôznych tried v priestore prvkov. V prípade lineárnych klasifikácií to bude lineárna rovnica, t.j. wx+b = 0. Podporné vektory: Podporné vektory sú najbližšie dátové body k nadrovine, čo zohráva rozhodujúcu úlohu pri rozhodovaní o nadrovine a rezerve. Okraj: Okraj je vzdialenosť medzi vektorom podpory a nadrovinou. Hlavným cieľom algoritmu podporného vektorového stroja je maximalizácia rozpätia. Širší okraj naznačuje lepší výkon klasifikácie. Jadro : Jadro je matematická funkcia, ktorá sa používa v SVM na mapovanie pôvodných vstupných dátových bodov do priestorov vysokorozmerných prvkov, takže nadrovinu možno ľahko nájsť, aj keď dátové body nie sú lineárne oddeliteľné v pôvodnom vstupnom priestore. Niektoré z bežných funkcií jadra sú lineárne, polynomické, radiálne bázové funkcie (RBF) a sigmoidné. Tvrdý okraj: Nadrovina maximálneho rozpätia alebo nadrovina s pevným okrajom je nadrovina, ktorá správne oddeľuje dátové body rôznych kategórií bez akýchkoľvek nesprávnych klasifikácií. Mäkký okraj: Ak údaje nie sú dokonale oddeliteľné alebo obsahujú odľahlé hodnoty, SVM povolí techniku ​​mäkkého okraja. Každý údajový bod má premennú uvoľnenia zavedenú formuláciou soft-margin SVM, ktorá zmierňuje prísnu požiadavku na maržu a umožňuje určité nesprávne klasifikácie alebo porušenia. Objavuje kompromis medzi zvyšovaním marže a znižovaním priestupkov. C: Pokuty za maximalizáciu marže a za nesprávnu klasifikáciu sú vyvážené parametrom regularizácie C v SVM. Rozhoduje o pokute za prekročenie hranice alebo nesprávne zatriedenie údajových položiek. Prísnejšia sankcia je uložená s vyššou hodnotou C, čo má za následok menšiu maržu a možno menej nesprávnych klasifikácií. Strata závesu: Typickou stratovou funkciou v SVM je strata závesu. Postihuje nesprávne klasifikácie alebo porušenia marží. Objektívna funkcia v SVM je často tvorená kombináciou s termínom regularizácie. Duálny problém: Duálny problém optimalizačného problému, ktorý vyžaduje lokalizáciu Lagrangeových multiplikátorov súvisiacich s podpornými vektormi, možno použiť na riešenie SVM. Duálne zloženie umožňuje použitie trikov s jadrom a efektívnejšie výpočty.

Matematická intuícia stroja Support Vector Machine

Zvážte problém binárnej klasifikácie s dvoma triedami, označenými ako +1 a -1. Máme trénovaciu množinu údajov pozostávajúcu zo vstupných vektorov znakov X a ich zodpovedajúcich označení tried Y.

Rovnicu pre lineárnu nadrovinu možno zapísať takto:

w^Tx+ b = 0

Vektor W predstavuje normálny vektor k nadrovine. tj smer kolmý na nadrovinu. Parameter b v rovnici predstavuje posun alebo vzdialenosť nadroviny od začiatku pozdĺž normálového vektora In .

Vzdialenosť medzi dátovým bodom x_i a hranicou rozhodnutia možno vypočítať ako:

d_i = frac{w^T x_i + b}

kde ||w|| predstavuje euklidovskú normu váhového vektora w. Euklidovská normanormálneho vektora W

Pre lineárny klasifikátor SVM:

Optimalizácia:

    Pre lineárny klasifikátor SVM s pevným okrajom:

underset{w,b}{	ext{minimize}}frac{1}{2}w^Tw =underset{W,b}{	ext{minimize}}frac{1}{2}left | w 
ight|^{2}  	ext{s výhradou}; y_i(w^Tx_i + b) geq 1 ;for; i = 1, 2,3, cdots,m

Cieľová premenná alebo označenie pre ithtréningová inštancia je označená symbolom tiv tomto vyhlásení. A ti=-1 pre negatívne výskyty (keď yi= 0) a ti=1 pozitívny výskyt (keď yi= 1). Pretože požadujeme hranicu rozhodnutia, ktorá spĺňa obmedzenie: underset{w,b}{	ext{minimalizovať }}frac{1}{2}w^Tw+ C sum_{i=1}^m zeta_{i}  	ext{s výhradou } y_i( w^Tx_i + b)ge 1-zeta_{i};; a ; zeta_{i} ge 0;; pre ; i = 1, 2,3, cdots,m

    Pre lineárny klasifikátor SVM s jemným okrajom:

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) -podmnožina{i	o m}{súčet}alpha_i

    Duálny problém: Na riešenie SVM možno použiť duálny problém optimalizačného problému, ktorý vyžaduje lokalizáciu Lagrangeových multiplikátorov súvisiacich s podpornými vektormi. Optimálne Lagrangeove multiplikátory α(i), ktoré maximalizujú nasledujúcu funkciu s dvoma cieľmi

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

kde,

  • aije Lagrangeov multiplikátor spojený s i-tou tréningovou vzorkou.
  • K(xi, Xj) je funkcia jadra, ktorá počíta podobnosť medzi dvoma vzorkami xia xj. Umožňuje SVM zvládnuť problémy nelineárnej klasifikácie implicitným mapovaním vzoriek do priestoru funkcií vyššej dimenzie.
  • Termín ∑αipredstavuje súčet všetkých Lagrangeových multiplikátorov.

Rozhodovacia hranica SVM môže byť opísaná pomocou týchto optimálnych Lagrangeových multiplikátorov a podporných vektorov, keď sa vyriešil duálny problém a boli objavené optimálne Lagrangeove multiplikátory. Tréningové vzorky, ktoré majú i> 0, sú podporné vektory, pričom hranicu rozhodovania poskytuje:

egin{aligned} 	ext{Lineárne : } K(š,b) &= w^Tx+b  	ext{Polynóm : } K(š,x) &= (gama w^Tx+b)^ N  	ext{Gaussovské RBF: } K(š,x) &= exp(-gamma|| x_i-x_j||^n  	ext{Sigmoid :} K(x_i, x_j) &=  tanh(alpha x_i^Tx_j + b) end{aligned}

Typy podporných vektorových strojov

Na základe povahy rozhodovacej hranice možno podporné vektorové stroje (SVM) rozdeliť na dve hlavné časti:

    Lineárne SVM: Lineárne SVM používajú lineárnu rozhodovaciu hranicu na oddelenie údajových bodov rôznych tried. Keď je možné dáta presne lineárne oddeliť, veľmi vhodné sú lineárne SVM. To znamená, že jedna priamka (v 2D) alebo nadrovina (vo vyšších rozmeroch) môže úplne rozdeliť dátové body do ich príslušných tried. Nadrovina, ktorá maximalizuje rozpätie medzi triedami, je hranicou rozhodovania. Nelineárna SVM: Nelineárna SVM sa môže použiť na klasifikáciu údajov, keď ich nemožno rozdeliť do dvoch tried priamou čiarou (v prípade 2D). Pomocou funkcií jadra môžu nelineárne SVM spracovať nelineárne oddeliteľné údaje. Pôvodné vstupné dáta sú transformované týmito funkciami jadra do priestoru funkcií vyššej dimenzie, kde môžu byť dátové body lineárne oddelené. Lineárny SVM sa používa na lokalizáciu nelineárnej rozhodovacej hranice v tomto upravenom priestore.

Populárne funkcie jadra v SVM

Jadro SVM je funkcia, ktorá zaberá vstupný priestor s nízkou dimenziou a transformuje ho na priestor vyššej dimenzie, tj prevádza neoddeliteľné problémy na oddeliteľné problémy. Je to väčšinou užitočné pri problémoch nelineárnej separácie. Jednoducho povedané, jadro vykoná niektoré extrémne zložité transformácie údajov a potom zistí proces oddelenia údajov na základe definovaných štítkov alebo výstupov.

Klasifikácia rakoviny prsníka s jadrom SVM RBF-Geeksforgeeks

Výhody SVM

  • Účinné vo veľkých prípadoch.
  • Jeho pamäť je efektívna, pretože používa podmnožinu tréningových bodov v rozhodovacej funkcii nazývanej podporné vektory.
  • Pre rozhodovacie funkcie môžu byť špecifikované rôzne funkcie jadra a je možné špecifikovať vlastné jadrá.

Implementácia SVM v Pythone

Predpovedajte, či je rakovina benígna alebo malígna. Použitie historických údajov o pacientoch s diagnostikovanou rakovinou umožňuje lekárom rozlíšiť malígne prípady a benígne prípady majú samostatné atribúty.

Kroky

  • Načítajte súbor údajov o rakovine prsníka zo sklearn.datasets
  • Samostatné vstupné funkcie a cieľové premenné.
  • Zostavte a trénujte klasifikátory SVM pomocou jadra RBF.
  • Nakreslite bodový graf vstupných prvkov.
  • Nakreslite hranicu rozhodnutia.
  • Nakreslite hranicu rozhodnutia

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

Výkon :

vodoznak vo worde

Klasifikácia rakoviny prsníka s jadrom SVM RBF