logo

Algoritem podpornega vektorskega stroja (SVM).

Podporni vektorski stroj (SVM) je zmogljiv algoritem strojnega učenja, ki se uporablja za naloge linearne ali nelinearne klasifikacije, regresije in celo odkrivanja izstopnih vrednosti. SVM-je je mogoče uporabiti za različne naloge, kot so klasifikacija besedila, klasifikacija slik, zaznavanje neželene pošte, identifikacija rokopisa, analiza izražanja genov, zaznavanje obrazov in zaznavanje nepravilnosti. SVM-ji so prilagodljivi in ​​učinkoviti v različnih aplikacijah, ker lahko upravljajo visokodimenzionalne podatke in nelinearna razmerja.

Algoritmi SVM so zelo učinkoviti, saj poskušamo najti največjo ločevalno hiperravnino med različnimi razredi, ki so na voljo v ciljni funkciji.

pridruži se posodobitvi mysql

Podporni vektorski stroj

Podporni vektorski stroj (SVM) je a nadzorovano strojno učenje algoritem, uporabljen tako za klasifikacijo kot za regresijo. Čeprav pravimo tudi regresijski problemi, je najprimernejši za klasifikacijo. Glavni cilj algoritma SVM je najti optimalno hiperravnino v N-dimenzionalnem prostoru, ki lahko loči podatkovne točke v različnih razredih v prostoru funkcij. Hiperravnina se trudi, da bi bil razmik med najbližjimi točkami različnih razredov čim večji. Dimenzija hiperravnine je odvisna od števila elementov. Če je število vhodnih funkcij dve, potem je hiperravnina samo črta. Če je število vhodnih funkcij tri, postane hiperravnina 2-D ravnina. Težko si je predstavljati, ko število funkcij preseže tri.



Oglejmo si dve neodvisni spremenljivki x1, x2,in eno odvisno spremenljivko, ki je bodisi modri ali rdeči krog.

Linearno ločljive podatkovne točke

Iz zgornje slike je zelo jasno, da obstaja več črt (naša hiperravnina tukaj je črta, ker upoštevamo le dve vhodni funkciji x1, x2), ki ločujejo naše podatkovne točke ali izvajajo klasifikacijo med rdečimi in modrimi krogi. Kako torej izberemo najboljšo črto ali na splošno najboljšo hiperravnino, ki ločuje naše podatkovne točke?

Kako deluje SVM?

Ena razumna izbira kot najboljša hiperravnina je tista, ki predstavlja največjo ločitev ali rob med obema razredoma.

Več hiperravnin, ki ločujejo podatke iz dveh razredov

Več hiperravnin ločuje podatke iz dveh razredov

Zato izberemo hiperravnino, katere razdalja od nje do najbližje podatkovne točke na vsaki strani je največja. Če taka hiperravnina obstaja, je znana kot hiperravnina največjega roba/trdi rob . Torej iz zgornje slike izberemo L2. Oglejmo si scenarij, kot je prikazan spodaj

Izbira hiperravnine za podatke z izstopanjem

Izbira hiperravnine za podatke z izstopanjem

Tukaj imamo eno modro kroglo na meji rdeče krogle. Kako torej SVM razvršča podatke? Enostavno je! Modra krogla na meji rdečih je izven modrih kroglic. Algoritem SVM ima lastnosti, da ignorira izstopajoče vrednosti in najde najboljšo hiperravnino, ki poveča rob. SVM je robusten do izstopajočih vrednosti.

Hyperplane, ki je najbolj optimiziran

Hyperplane, ki je najbolj optimiziran

Torej pri tej vrsti podatkovne točke SVM poišče največjo mejo, kot je bilo storjeno s prejšnjimi nabori podatkov, in doda kazen vsakič, ko točka preseže mejo. Tako se marže v teh vrstah primerov imenujejo mehke robove . Ko je nabor podatkov mehak rob, ga SVM poskuša minimizirati (1/marža+∧(∑kazen)) . Izguba tečaja je pogosto uporabljena kazen. Če ni kršitev, ni izgube tečaja. Če so kršitve, je izguba tečaja sorazmerna razdalji kršitve.

Do sedaj smo govorili o linearno ločljivih podatkih (skupina modrih kroglic in rdečih kroglic je ločljiva z ravno črto/linearno črto). Kaj storiti, če podatki niso linearno ločljivi?

Izvirni nabor 1D podatkov za klasifikacijo

Izvirni nabor 1D podatkov za klasifikacijo

Recimo, naši podatki so prikazani na zgornji sliki. SVM to reši tako, da ustvari novo spremenljivko z uporabo a jedro . Točko imenujemo xjazna vrstici in ustvarimo novo spremenljivko yjazkot funkcija razdalje od izhodišča, torej če to narišemo, dobimo nekaj takega, kot je prikazano spodaj

Preslikava 1D podatkov v 2D, da lahko ločimo dva razreda

Preslikava 1D podatkov v 2D, da lahko ločimo dva razreda

V tem primeru se nova spremenljivka y ustvari kot funkcija razdalje od izhodišča. Nelinearna funkcija, ki ustvari novo spremenljivko, se imenuje jedro.

Terminologija podpornih vektorskih strojev

    Hiperravnina: Hiperravnina je meja odločitve, ki se uporablja za ločevanje podatkovnih točk različnih razredov v prostoru funkcij. V primeru linearnih klasifikacij bo to linearna enačba, tj. wx+b = 0. Podporni vektorji: Podporni vektorji so najbližje podatkovne točke hiperravnini, kar ima ključno vlogo pri odločanju o hiperravnini in robu. Rob : Rob je razdalja med nosilnim vektorjem in hiperravnino. Glavni cilj strojnega algoritma podpornih vektorjev je povečati maržo. Širši rob označuje boljšo učinkovitost klasifikacije. Jedro : Jedro je matematična funkcija, ki se uporablja v SVM za preslikavo prvotnih vhodnih podatkovnih točk v visokodimenzionalne prostore funkcij, tako da je hiperravnino mogoče zlahka najti, tudi če podatkovne točke niso linearno ločljivi v prvotnem vhodnem prostoru. Nekatere običajne jedrne funkcije so linearna, polinomska, radialna osnovna funkcija (RBF) in sigmoid. Trdi rob: Hiperravnina največjega roba ali hiperravnina trdega roba je hiperravnina, ki pravilno ločuje podatkovne točke različnih kategorij brez napačnih klasifikacij. Mehki rob: kadar podatki niso popolnoma ločljivi ali vsebujejo odstopanja, SVM dovoljuje tehniko mehkega roba. Vsaka podatkovna točka ima ohlapno spremenljivko, uvedeno s formulacijo SVM z mehkim robom, ki omili strogo zahtevo po marži in dovoljuje določene napačne klasifikacije ali kršitve. Odkriva kompromis med povečanjem kritja in zmanjšanjem kršitev. C: Maksimiranje kritja in globe za napačno razvrščanje so uravnotežene s parametrom regulacije C v SVM. Kazen za prekoračitev meje ali napačno razvrstitev podatkovnih postavk določi sam. Strožja kazen je naložena z višjo vrednostjo C, kar ima za posledico manjšo maržo in morda manj napačnih klasifikacij. Izguba tečaja: tipična funkcija izgube v SVM je izguba tečaja. Kaznuje nepravilne klasifikacije ali kršitve meje. Ciljna funkcija v SVM se pogosto oblikuje tako, da se združi z regulatornim členom. Dvojni problem: Dvojni problem optimizacijskega problema, ki zahteva lociranje Lagrangeovih množiteljev, povezanih s podpornimi vektorji, je mogoče uporabiti za rešitev SVM. Dvojna formulacija omogoča uporabo trikov jedra in učinkovitejše računalništvo.

Matematična intuicija stroja podpornih vektorjev

Razmislite o problemu binarne klasifikacije z dvema razredoma, označenima kot +1 in -1. Imamo nabor podatkov za usposabljanje, sestavljen iz vhodnih značilnih vektorjev X in njihovih ustreznih oznak razreda Y.

1 milijon v številkah

Enačbo za linearno hiperravnino lahko zapišemo kot:

w^Tx+ b = 0

Vektor W predstavlja normalni vektor na hiperravnino. to je smer, ki je pravokotna na hiperravnino. Parameter b v enačbi predstavlja odmik ali razdaljo hiperravnine od izhodišča vzdolž normalnega vektorja noter .

Razdaljo med podatkovno točko x_i in mejo odločitve je mogoče izračunati kot:

d_i = frac{w^T x_i + b}

kjer ||w|| predstavlja evklidsko normo vektorja teže w. Evklidska normanormalnega vektorja W

Za linearni klasifikator SVM:

Optimizacija:

    Za linearni klasifikator SVM s trdim robom:

underset{w,b}{	ext{minimize}}frac{1}{2}w^Tw =underset{W,b}{	ext{minimize}}frac{1}{2}left | w 
ight|^{2}  	ext{subject to}; y_i(w^Tx_i + b) geq 1 ;za; i = 1, 2,3, cdots,m

Ciljna spremenljivka ali oznaka za ithizobraževalna instanca je označena s simbolom tjazv tej izjavi. In tjaz=-1 za negativne pojave (ko je yjaz= 0) in tjaz=1 pozitivnih primerov (ko yjaz= 1) oz. Ker zahtevamo mejo odločitve, ki izpolnjuje omejitev: underset{w,b}{	ext{minimize }}frac{1}{2}w^Tw+ C sum_{i=1}^m zeta_{i}  	ext{podvrženo } y_i( w^Tx_i + b)ge 1-zeta_{i};; in ; zeta_{i} ge 0;; za ; i = 1, 2,3, cdots,m

    Za linearni klasifikator SVM z mehkim robom:

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

    Dvojni problem: Dvojni problem optimizacijskega problema, ki zahteva lociranje Lagrangeovih množiteljev, povezanih s podpornimi vektorji, je mogoče uporabiti za rešitev SVM. Optimalni Lagrangeovi množitelji α(i), ki maksimirajo naslednjo dvojno ciljno funkcijo

w= underset{i	o m}{sum}alpha_i t_i K(x_i, x) + b  t_i(w^Tx_i-b) = 1 Dolga desna puščica b= w^Tx_i-t_i

kje,

  • ajazje Lagrangeov množitelj, povezan z vzorcem i-ga usposabljanja.
  • K(xjaz, xj) je funkcija jedra, ki izračuna podobnost med dvema vzorcema xjazin xj. Omogoča, da SVM obravnava težave z nelinearno klasifikacijo z implicitnim preslikavanjem vzorcev v večdimenzionalni prostor funkcij.
  • Izraz ∑αjazpredstavlja vsoto vseh Lagrangeovih množiteljev.

Mejo odločitve SVM je mogoče opisati v smislu teh optimalnih Lagrangeovih množiteljev in podpornih vektorjev, potem ko je bila dvojna težava rešena in so bili odkriti optimalni Lagrangeovi množitelji. Učni vzorci, ki imajo i> 0, so podporni vektorji, medtem ko je meja odločitve podana z:

egin{aligned} 	ext{Linearno : } K(w,b) &= w^Tx+b  	ext{Polinom : } K(w,x) &= (gama w^Tx+b)^ N  	ext{Gaussov 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{poravnano}

aritmetično logična enota

Vrste podpornih vektorskih strojev

Na podlagi narave odločitvene meje lahko podporne vektorske stroje (SVM) razdelimo na dva glavna dela:

    Linearni SVM: Linearni SVM uporabljajo linearno mejo odločitve za ločevanje podatkovnih točk različnih razredov. Ko je mogoče podatke natančno linearno ločiti, so linearni SVM zelo primerni. To pomeni, da lahko ena ravna črta (v 2D) ali hiperravnina (v višjih dimenzijah) v celoti razdeli podatkovne točke v njihove ustrezne razrede. Hiperravnina, ki maksimira rob med razredi, je meja odločanja. Nelinearni SVM: nelinearni SVM se lahko uporablja za razvrščanje podatkov, kadar jih ni mogoče ločiti v dva razreda z ravno črto (v primeru 2D). Z uporabo funkcij jedra lahko nelinearni SVM obravnavajo nelinearno ločljive podatke. Izvirne vhodne podatke te funkcije jedra pretvorijo v prostor funkcij višje dimenzije, kjer je mogoče podatkovne točke linearno ločiti. Linearni SVM se uporablja za lociranje meje nelinearne odločitve v tem spremenjenem prostoru.

Priljubljene funkcije jedra v SVM

Jedro SVM je funkcija, ki zavzame nizkodimenzionalni vhodni prostor in ga pretvori v prostor višjih dimenzij, tj. pretvori neločljive probleme v ločljive probleme. Večinoma je uporaben pri problemih nelinearnega ločevanja. Preprosto povedano, jedro izvede nekaj izjemno zapletenih transformacij podatkov in nato najde postopek za ločevanje podatkov na podlagi definiranih oznak ali izhodov.

Klasifikacije raka dojke z jedrom SVM RBF-Geeksforgeeks

Prednosti SVM

  • Učinkovito v primerih velikih dimenzij.
  • Njegov pomnilnik je učinkovit, saj uporablja podmnožico učnih točk v odločitveni funkciji, imenovane podporni vektorji.
  • Za odločitvene funkcije je mogoče določiti različne funkcije jedra in jedra po meri.

Izvedba SVM v Pythonu

Predvidite, ali je rak benigen ali maligni. Uporaba zgodovinskih podatkov o bolnikih z diagnozo raka omogoča zdravnikom, da razlikujejo maligne primere, benigni pa dobijo neodvisne lastnosti.

Koraki

  • Naložite nabor podatkov o raku dojke iz sklearn.datasets
  • Ločite vhodne funkcije in ciljne spremenljivke.
  • Zgradite in učite klasifikatorje SVM z uporabo jedra RBF.
  • Narišite raztreseni graf vhodnih funkcij.
  • Narišite mejo odločitve.
  • Narišite mejo odločitve

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

Izhod :

Klasifikacije raka dojke z jedrom SVM RBF