logo

Atbalsta vektora mašīnas (SVM) algoritmu

Atbalsta vektora mašīna (SVM) ir jaudīgs mašīnmācīšanās algoritms, ko izmanto lineārai vai nelineārai klasifikācijai, regresijai un pat noviržu noteikšanas uzdevumiem. SVM var izmantot dažādiem uzdevumiem, piemēram, teksta klasifikācijai, attēlu klasifikācijai, surogātpasta noteikšanai, rokraksta identificēšanai, gēnu ekspresijas analīzei, sejas noteikšanai un anomāliju noteikšanai. SVM ir pielāgojami un efektīvi dažādās lietojumprogrammās, jo tie var pārvaldīt augstas dimensijas datus un nelineāras attiecības.

SVM algoritmi ir ļoti efektīvi, jo mēs cenšamies atrast maksimālo atdalīšanas hiperplāksni starp dažādām mērķa līdzeklī pieejamajām klasēm.



vesels skaitlis līdz virknei Java

Atbalstiet vektoru mašīnu

Atbalsta vektora mašīna (SVM) ir a uzraudzīta mašīnmācība algoritms, ko izmanto gan klasifikācijai, gan regresijai. Lai gan mēs sakām arī regresijas problēmas, tas ir vislabāk piemērots klasifikācijai. SVM algoritma galvenais mērķis ir atrast optimālo hiperplakni N-dimensiju telpā, kas var atdalīt datu punktus dažādās klasēs objektu telpā. Hiperplakne cenšas panākt, lai starpība starp dažādu klašu tuvākajiem punktiem būtu pēc iespējas lielāka. Hiperplaknes izmērs ir atkarīgs no pazīmju skaita. Ja ievades pazīmju skaits ir divi, tad hiperplakne ir tikai līnija. Ja ievades pazīmju skaits ir trīs, tad hiperplakne kļūst par 2-D plakni. Kļūst grūti iedomāties, kad funkciju skaits pārsniedz trīs.

Apskatīsim divus neatkarīgus mainīgos x1, x2,un viens atkarīgais mainīgais, kas ir zils vai sarkans aplis.

Lineāri atdalāmi datu punkti



No iepriekš redzamā attēla ir ļoti skaidrs, ka ir vairākas līnijas (mūsu hiperplakne šeit ir līnija, jo mēs apsveram tikai divus ievades līdzekļus x1, x2), kas atdala mūsu datu punktus vai veic klasifikāciju starp sarkanajiem un zilajiem apļiem. Tātad, kā izvēlēties labāko līniju vai vispār labāko hiperplānu, kas atdala mūsu datu punktus?

Kā darbojas SVM?

Viena saprātīga labākā hiperplāna izvēle ir tā, kas atspoguļo lielāko atšķirību vai rezervi starp abām klasēm.

Vairākas hiperplānas, kas atdala datus no divām klasēm

Vairākas hiperplānas atdala datus no divām klasēm



Tāpēc mēs izvēlamies hiperplakni, kuras attālums no tās līdz tuvākajam datu punktam katrā pusē ir maksimizēts. Ja šāda hiperplāna pastāv, to sauc par maksimālās robežas hiperplakne/cietā rezerve . Tātad no iepriekš minētā attēla mēs izvēlamies L2. Apskatīsim scenāriju, kā parādīts tālāk

Hiperplaknes atlase datiem ar novirzēm

Hiperplaknes atlase datiem ar novirzēm

Šeit mums ir viena zila bumbiņa sarkanās bumbiņas robežās. Tātad, kā SVM klasificē datus? Tas ir vienkārši! Zilā bumbiņa sarkano bumbiņu robežās ir zilo bumbiņu novirze. SVM algoritmam ir īpašības, kas ļauj ignorēt novirzes, un tas atrod labāko hiperplānu, kas palielina rezervi. SVM ir izturīgs pret novirzēm.

Hiperplakne, kas ir visvairāk optimizēta

Hiperplakne, kas ir visvairāk optimizēta

Tātad šāda veida datu punktā SVM atrod maksimālo rezervi, kā tas tika darīts ar iepriekšējām datu kopām, kā arī pievieno sodu katru reizi, kad punkts šķērso robežu. Tātad piemales šādos gadījumos tiek sauktas mīkstās malas . Ja datu kopai ir mīksta rezerve, SVM mēģina to samazināt (1/marža+∧(∑sods)) . Eņģes zudums ir bieži izmantots sods. Ja nav pārkāpumu nav eņģes zudumu. Ja pārkāpumi viras zudums proporcionāls attālumam pārkāpuma.

Līdz šim mēs runājām par lineāri atdalāmiem datiem (zilo bumbiņu un sarkano bumbiņu grupu var atdalīt ar taisnu/lineāru līniju). Ko darīt, ja dati nav lineāri atdalāmi?

Sākotnējā 1D datu kopa klasifikācijai

Sākotnējā 1D datu kopa klasifikācijai

Teiksim, mūsu dati ir parādīti attēlā iepriekš. SVM to atrisina, izveidojot jaunu mainīgo, izmantojot a kodols . Mēs saucam punktu xiuz līnijas un mēs izveidojam jaunu mainīgo yikā funkcija no attāluma no izcelsmes o.tāpēc, ja mēs to uzzīmējam, mēs iegūstam kaut ko līdzīgu, kā parādīts zemāk

1D datu kartēšana uz 2D, lai varētu nodalīt abas klases

1D datu kartēšana uz 2D, lai varētu nodalīt abas klases

Šajā gadījumā jaunais mainīgais y tiek izveidots kā attāluma no sākuma funkcija. Nelineāra funkcija, kas rada jaunu mainīgo, tiek saukta par kodolu.

Atbalstiet vektoru mašīnu terminoloģiju

    Hiperplakne: Hiperplakne ir lēmuma robeža, ko izmanto, lai objektu telpā atdalītu dažādu klašu datu punktus. Lineārās klasifikācijas gadījumā tas būs lineārs vienādojums, t.i., wx+b = 0. Atbalsta vektori: atbalsta vektori ir hiperplaknei tuvākie datu punkti, kam ir izšķiroša nozīme hiperplaknes un robežas noteikšanā. Piemale: robeža ir attālums starp atbalsta vektoru un hiperplakni. Atbalsta vektora mašīnas algoritma galvenais mērķis ir maksimāli palielināt rezervi. Plašāka robeža norāda uz labāku klasifikācijas veiktspēju.Kodols: Kodols ir matemātiskā funkcija, ko izmanto SVM, lai kartētu sākotnējos ievades datu punktus augstas dimensijas objektu telpās, lai hiperplakni varētu viegli noskaidrot pat tad, ja datu punkti nav lineāri atdalāmi sākotnējā ievades telpā. Dažas no izplatītākajām kodola funkcijām ir lineāras, polinomiālas, radiālās bāzes funkcijas (RBF) un sigmoīdas. Cietā robeža: maksimālās robežas hiperplakne vai cietās piemales hiperplakne ir hiperplakne, kas pareizi atdala dažādu kategoriju datu punktus bez nepareizas klasifikācijas. Soft Margin: ja dati nav pilnībā atdalāmi vai tajos ir novirzes, SVM pieļauj mīkstās piemales paņēmienu. Katram datu punktam ir atslābināts mainīgais, ko ievada mīkstās robežas SVM formulējums, kas mīkstina stingrās rezerves prasības un pieļauj noteiktas nepareizas klasifikācijas vai pārkāpumus. Tas atklāj kompromisu starp rezerves palielināšanu un pārkāpumu samazināšanu.C: maržas maksimizēšanas un nepareizas klasifikācijas naudas sodi tiek līdzsvaroti ar SVM legalizācijas parametru C. Tā nosaka sodu par robežvērtības pārsniegšanu vai datu vienību nepareizu klasifikāciju. Stingrāks sods tiek piemērots ar lielāku C vērtību, kas rada mazāku rezervi un, iespējams, mazāk nepareizu klasifikāciju. Eņģes zudums: tipiska SVM zaudēšanas funkcija ir eņģes zudums. Tas soda par nepareizu klasifikāciju vai maržas pārkāpumiem. Mērķa funkcija SVM bieži tiek veidota, apvienojot to ar regularizācijas terminu. Duālā problēma: SVM risināšanai var izmantot optimizācijas problēmas dubultproblēmu, kas prasa atrast ar atbalsta vektoriem saistītos Lagranža reizinātājus. Divkāršā formula ļauj izmantot kodola trikus un efektīvāku skaitļošanu.

Atbalsta vektora mašīnas matemātiskā intuīcija

Apsveriet binārās klasifikācijas problēmu ar divām klasēm, kas apzīmētas kā +1 un -1. Mums ir apmācības datu kopa, kas sastāv no ievades pazīmju vektoriem X un tiem atbilstošajām klases iezīmēm Y.

Lineārās hiperplaknes vienādojumu var uzrakstīt šādi:

w^Tx+ b = 0

Vektors W attēlo hiperplaknes normālo vektoru. i., virziens, kas ir perpendikulārs hiperplaknei. Parametrs b vienādojumā attēlo hiperplaknes nobīdi vai attālumu no sākuma pa normālo vektoru In .

Attālumu starp datu punktu x_i un lēmuma robežu var aprēķināt šādi:

d_i = frac{w^T x_i + b}

ja vēl bash čaulā

kur ||w|| apzīmē svara vektora w Eiklīda normu. Eiklīda normaparastā vektora W

Lineārajam SVM klasifikatoram:

Optimizācija:

    Cietās robežas lineārajam SVM klasifikatoram:

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 ;for; i = 1, 2,3, cdots,m

i mērķa mainīgais vai apzīmējumsthapmācības gadījums ir apzīmēts ar simbolu tišajā paziņojumā. Un ti=-1 negatīviem gadījumiem (kad yi= 0) un ti=1 pozitīvs gadījums (kad yi= 1) attiecīgi. Tā kā mums ir nepieciešama lēmuma robeža, kas atbilst ierobežojumam: underset{w,b}{	ext{minimizēt }}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};; un ; zeta_{i} ge 0;; priekš ; i = 1, 2,3, cdots,m

    Soft margin lineārajam SVM klasifikatoram:

underset{alpha}{	ext{maksimizēt}}: 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

    Duāla problēma: SVM risināšanai var izmantot optimizācijas problēmas dubulto problēmu, kas prasa atrast Lagranža reizinātājus, kas saistīti ar atbalsta vektoriem. Optimālie Lagranža reizinātāji α(i), kas maksimāli palielina šādu dubulto mērķa funkciju

w= apakšset

kurš ir Fredijs Merkūrijs

kur,

  • aiir Lagranža reizinātājs, kas saistīts ar i-to apmācības paraugu.
  • K(xi, xj) ir kodola funkcija, kas aprēķina līdzību starp diviem paraugiem xiun xj. Tas ļauj SVM risināt nelineāras klasifikācijas problēmas, netieši kartējot paraugus augstākas dimensijas funkciju telpā.
  • Termins ∑αiir visu Lagranža reizinātāju summa.

SVM lēmumu robežu var aprakstīt ar šiem optimālajiem Lagranža reizinātājiem un atbalsta vektoriem, kad ir atrisināta dubultā problēma un ir atklāti optimālie Lagranža reizinātāji. Apmācības paraugi, kuriem i> 0 ir atbalsta vektori, savukārt lēmuma robežu nodrošina:

egin{aligned} 	ext{Lineārs : } K(w,b) &= w^Tx+b  	ext{Polinoms : } K(w,x) &= (gamma w^Tx+b)^ N  	ext{Gausa 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}

Atbalsta vektora mašīnu veidi

Pamatojoties uz lēmumu robežas raksturu, atbalsta vektora mašīnas (SVM) var iedalīt divās galvenajās daļās.

    Lineārais SVM: Lineārie SVM izmanto lineāru lēmumu robežu, lai atdalītu dažādu klašu datu punktus. Ja datus var precīzi lineāri atdalīt, lineārie SVM ir ļoti piemēroti. Tas nozīmē, ka viena taisna līnija (2D) vai hiperplakne (augstākās dimensijās) var pilnībā sadalīt datu punktus to attiecīgajās klasēs. Hiperplakne, kas maksimāli palielina starpību starp klasēm, ir lēmuma robeža. Nelineārais SVM: Nelineārais SVM var tikt izmantots, lai klasificētu datus, ja tos nevar sadalīt divās klasēs ar taisnu līniju (2D gadījumā). Izmantojot kodola funkcijas, nelineārie SVM var apstrādāt nelineāri atdalāmus datus. Sākotnējos ievades datus šīs kodola funkcijas pārveido augstākas dimensijas funkciju telpā, kur datu punktus var lineāri atdalīt. Lineārais SVM tiek izmantots, lai šajā modificētajā telpā atrastu nelineāru lēmumu robežu.

Populāras kodola funkcijas SVM

SVM kodols ir funkcija, kas aizņem zemas dimensijas ievades vietu un pārveido to augstākās dimensijas telpā, ti, tā pārvērš neatdalāmas problēmas atdalāmās. Tas galvenokārt ir noderīgs nelineārās atdalīšanas problēmās. Vienkārši sakot, kodols veic dažas ārkārtīgi sarežģītas datu transformācijas un pēc tam uzzina datu atdalīšanas procesu, pamatojoties uz definētajām etiķetēm vai izvadēm.

Krūts vēža klasifikācija ar SVM RBF kodolu-Geeksforgeeks

SVM priekšrocības

  • Efektīva liela izmēra gadījumos.
  • Tās atmiņa ir efektīva, jo lēmuma funkcijā tā izmanto apmācības punktu apakškopu, ko sauc par atbalsta vektoriem.
  • Lēmuma funkcijām var norādīt dažādas kodola funkcijas, un ir iespējams norādīt pielāgotus kodolus.

SVM ieviešana Python

Paredzēt, vai vēzis ir labdabīgs vai ļaundabīgs. Izmantojot vēsturiskos datus par pacientiem, kuriem diagnosticēts vēzis, ārsti var atšķirt ļaundabīgos gadījumus, un labdabīgiem tiek piešķirti neatkarīgi atribūti.

Soļi

  • Ielādējiet krūts vēža datu kopu no sklearn.datasets
  • Atsevišķi ievades līdzekļi un mērķa mainīgie.
  • Izveidojiet un apmāciet SVM klasifikatorus, izmantojot RBF kodolu.
  • Uzzīmējiet ievades pazīmju izkliedes diagrammu.
  • Uzzīmējiet lēmuma robežu.
  • Uzzīmējiet lēmuma robežu

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

Izvade :

Krūts vēža klasifikācija ar SVM RBF kodolu