logo

Støtte Vector Machine (SVM) Algoritme

Support Vector Machine (SVM) er en kraftig maskinlæringsalgoritme som brukes til lineær eller ikke-lineær klassifisering, regresjon og til og med avviksdeteksjonsoppgaver. SVM-er kan brukes til en rekke oppgaver, for eksempel tekstklassifisering, bildeklassifisering, spam-deteksjon, håndskriftidentifikasjon, genuttrykksanalyse, ansiktsdeteksjon og anomalideteksjon. SVM-er er tilpasningsdyktige og effektive i en rekke applikasjoner fordi de kan administrere høydimensjonale data og ikke-lineære relasjoner.

SVM-algoritmer er veldig effektive når vi prøver å finne det maksimale skillende hyperplanet mellom de forskjellige klassene som er tilgjengelige i målfunksjonen.

1 million i sifre

Støtte Vector Machine

Support Vector Machine (SVM) er en overvåket maskinlæring algoritme brukt for både klassifisering og regresjon. Selv om vi også sier regresjonsproblemer, er det best egnet for klassifisering. Hovedmålet med SVM-algoritmen er å finne det optimale hyperplanet i et N-dimensjonalt rom som kan skille datapunktene i forskjellige klasser i funksjonsrommet. Hyperplanet prøver at marginen mellom de nærmeste punktene i forskjellige klasser skal være så maksimalt som mulig. Dimensjonen til hyperplanet avhenger av antall funksjoner. Hvis antallet inndatafunksjoner er to, er hyperplanet bare en linje. Hvis antallet inndatafunksjoner er tre, blir hyperplanet et 2D-plan. Det blir vanskelig å forestille seg når antallet funksjoner overstiger tre.



La oss vurdere to uavhengige variabler x1, x2,og en avhengig variabel som enten er en blå sirkel eller en rød sirkel.

Lineært separerbare datapunkter

Fra figuren ovenfor er det veldig tydelig at det er flere linjer (hyperplanet vårt her er en linje fordi vi kun vurderer to inngangsfunksjoner x1, x2) som skiller datapunktene våre eller gjør en klassifisering mellom røde og blå sirkler. Så hvordan velger vi den beste linjen eller generelt det beste hyperplanet som skiller datapunktene våre?

Hvordan fungerer SVM?

Et rimelig valg som det beste hyperplanet er det som representerer den største separasjonen eller marginen mellom de to klassene.

Flere hyperplan som skiller dataene fra to klasser

Flere hyperplan skiller dataene fra to klasser

Så vi velger hyperplanet hvis avstand fra det til nærmeste datapunkt på hver side er maksimert. Hvis et slikt hyperplan eksisterer, er det kjent som maksimumsmargin hyperplan/hard margin . Så fra figuren ovenfor velger vi L2. La oss vurdere et scenario som vist nedenfor

Velge hyperplan for data med uteligger

Velge hyperplan for data med utligger

Her har vi én blå ball i grensen til den røde ballen. Så hvordan klassifiserer SVM dataene? Det er enkelt! Den blå ballen i grensen til røde er en uteligger av blå kuler. SVM-algoritmen har egenskapene til å ignorere uteliggeren og finner det beste hyperplanet som maksimerer marginen. SVM er robust overfor uteliggere.

Hyperplane som er den mest optimaliserte

Hyperplane som er den mest optimaliserte

Så i denne typen datapunkter er det SVM gjør, finner den maksimale marginen som gjort med tidligere datasett sammen med at den legger til en straff hver gang et punkt krysser marginen. Så marginene i denne typen saker kalles myke marger . Når det er en myk margin til datasettet, prøver SVM å minimere (1/margin+∧(∑straff)) . Hengseltap er en vanlig straff. Hvis ingen brudd ikke hengsel tap. Hvis brudd hengsel tap proporsjonalt med avstanden til brudd.

Til nå snakket vi om lineært separerbare data (gruppen av blå kuler og røde kuler kan separeres med en rett linje/lineær linje). Hva skal jeg gjøre hvis data ikke er lineært separerbare?

Originalt 1D-datasett for klassifisering

Originalt 1D-datasett for klassifisering

La oss si at dataene våre er vist i figuren ovenfor. SVM løser dette ved å lage en ny variabel ved hjelp av en kjerne . Vi kaller et punkt xJegpå linjen og vi lager en ny variabel yJegsom funksjon av avstand fra origo o.så hvis vi plotter dette får vi noe slikt som vist nedenfor

gjør mens du er i java
Kartlegging av 1D-data til 2D for å kunne skille de to klassene

Kartlegging av 1D-data til 2D for å kunne skille de to klassene

I dette tilfellet opprettes den nye variabelen y som en funksjon av avstanden fra origo. En ikke-lineær funksjon som lager en ny variabel kalles en kjerne.

Støtte vektormaskinterminologi

    Hyperplan: Hyperplan er beslutningsgrensen som brukes til å skille datapunktene til forskjellige klasser i et funksjonsrom. Ved lineære klassifikasjoner vil det være en lineær ligning dvs. wx+b = 0. Støttevektorer: Støttevektorer er de nærmeste datapunktene til hyperplanet, som spiller en kritisk rolle i å bestemme hyperplanet og margin. Margin : Margin er avstanden mellom støttevektoren og hyperplanet. Hovedmålet med støttevektormaskinalgoritmen er å maksimere marginen. Den bredere marginen indikerer bedre klassifiseringsytelse.Kjerne: Kjernen er den matematiske funksjonen, som brukes i SVM for å kartlegge de opprinnelige inngangsdatapunktene til høydimensjonale funksjonsrom, slik at hyperplanet lett kan bli funnet ut selv om datapunktene er ikke lineært separerbare i det opprinnelige inndatarommet. Noen av de vanlige kjernefunksjonene er lineær, polynom, radial basisfunksjon (RBF) og sigmoid. Hard margin: Hyperplanet med maksimal margin eller hyperplanet med hard margin er et hyperplan som skiller datapunktene til forskjellige kategorier riktig uten feilklassifiseringer. Myk margin: Når dataene ikke er perfekt separerbare eller inneholder uteliggere, tillater SVM en myk marginteknikk. Hvert datapunkt har en slakkvariabel introdusert av SVM-formuleringen med myk margin, som myker opp det strenge marginkravet og tillater visse feilklassifiseringer eller brudd. Den oppdager et kompromiss mellom å øke marginen og redusere brudd.C: Marginmaksimering og feilklassifiseringsbøter balanseres av regulariseringsparameteren C i SVM. Straffen for å gå over marginen eller feilklassifisere dataelementer bestemmes av den. Det ilegges en strengere straff med en større verdi på C, noe som gir mindre margin og kanskje færre feilklassifiseringer. Hengseltap: En typisk tapsfunksjon i SVM-er er hengseltap. Det straffer uriktige klassifiseringer eller marginbrudd. Den objektive funksjonen i SVM dannes ofte ved å kombinere den med regulariseringsbegrepet. Dobbelt problem: Et dobbelt problem med optimaliseringsproblemet som krever lokalisering av Lagrange-multiplikatorene relatert til støttevektorene kan brukes til å løse SVM. Den doble formuleringen muliggjør bruk av kjernetriks og mer effektiv databehandling.

Matematisk intuisjon av Support Vector Machine

Tenk på et binært klassifiseringsproblem med to klasser, merket som +1 og -1. Vi har et opplæringsdatasett som består av input-funksjonsvektorer X og deres tilsvarende klasseetiketter Y.

Ligningen for det lineære hyperplanet kan skrives som:

w^Tx+ b = 0

Vektoren W representerer normalvektoren til hyperplanet. dvs. retningen vinkelrett på hyperplanet. Parameteren b i ligningen representerer forskyvningen eller avstanden til hyperplanet fra origo langs normalvektoren I .

Avstanden mellom et datapunkt x_i og beslutningsgrensen kan beregnes som:

d_i = frac{w^T x_i + b}

hvor ||w|| representerer den euklidiske normen til vektvektoren w. Euklidisk normav normalvektoren W

For lineær SVM-klassifisering:

Optimalisering:

    For lineær SVM-klassifisering med hard margin:

underset{w,b}{	ext{minimisere}}frac{1}{2}w^Tw =underset{W,b}{	ext{minimisere}}frac{1}{2}venstre | w 
ight|^{2}  	ekst{med forbehold om}; y_i(w^Tx_i + b) geq 1 ;for; i = 1, 2,3, cdots,m

java strenglengde

Målvariabelen eller etiketten for ithtreningsforekomst er merket med symbolet tJegi denne uttalelsen. Og TJeg=-1 for negative forekomster (når yJeg= 0) og tJeg=1positive forekomster (når yJeg= 1) henholdsvis. Fordi vi krever beslutningsgrensen som tilfredsstiller begrensningen: underset{w,b}{	ext{minimer }}frac{1}{2}w^Tw+ C sum_{i=1}^m zeta_{i}  	ext{med forbehold om } y_i( w^Tx_i + b)ge 1-zeta_{i};; og ; zeta_{i} ge 0;; for ; i = 1, 2,3, cdots,m

    For lineær SVM-klassifisering med myk margin:

underset{alpha}{	ext{maksimer}}: 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

    Dobbeltproblem: Et dobbeltproblem med optimaliseringsproblemet som krever lokalisering av Lagrange-multiplikatorene relatert til støttevektorene kan brukes til å løse SVM. De optimale Lagrange-multiplikatorene α(i) som maksimerer følgende doble objektivfunksjon

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

hvor,

  • enJeger Lagrange-multiplikatoren assosiert med det ite treningsutvalget.
  • K(xJeg, xj) er kjernefunksjonen som beregner likheten mellom to samples xJegog xj. Det lar SVM håndtere ikke-lineære klassifiseringsproblemer ved å implisitt kartlegge prøvene til et høyere dimensjonalt funksjonsrom.
  • Begrepet ∑αJegrepresenterer summen av alle Lagrange-multiplikatorer.

SVM-beslutningsgrensen kan beskrives i form av disse optimale Lagrange-multiplikatorene og støttevektorene når det dobbelte problemet er løst og de optimale Lagrange-multiplikatorene er oppdaget. Treningsprøvene som har i> 0 er støttevektorene, mens beslutningsgrensen leveres av:

egin{aligned} 	ekst{Lineær : } K(w,b) &= w^Tx+b  	ext{Polynomial : } K(w,x) &= (gamma w^Tx+b)^ N  	ext{Gaussisk 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}

Typer støttevektormaskin

Basert på arten av beslutningsgrensen, kan Support Vector Machines (SVM) deles inn i to hoveddeler:

    Lineær SVM: Lineære SVM-er bruker en lineær beslutningsgrense for å skille datapunktene til forskjellige klasser. Når dataene kan separeres nøyaktig lineært, er lineære SVM-er veldig egnet. Dette betyr at en enkelt rett linje (i 2D) eller et hyperplan (i høyere dimensjoner) helt kan dele datapunktene inn i deres respektive klasser. Et hyperplan som maksimerer marginen mellom klassene er beslutningsgrensen. Ikke-lineær SVM: Ikke-lineær SVM kan brukes til å klassifisere data når den ikke kan skilles i to klasser med en rett linje (i tilfelle 2D). Ved å bruke kjernefunksjoner kan ikke-lineære SVM-er håndtere ikke-lineært separerbare data. De originale inngangsdataene blir transformert av disse kjernefunksjonene til et høyere dimensjonalt funksjonsrom, hvor datapunktene kan skilles lineært. En lineær SVM brukes til å lokalisere en ikke-lineær beslutningsgrense i dette modifiserte rommet.

Populære kjernefunksjoner i SVM

SVM-kjernen er en funksjon som tar lavdimensjonalt inndatarom og transformerer det til høyere dimensjonalt rom, dvs. den konverterer ikke-separerbare problemer til separerbare problemer. Det er mest nyttig i ikke-lineære separasjonsproblemer. Enkelt sagt kjernen, gjør noen ekstremt komplekse datatransformasjoner og finner deretter ut prosessen for å skille dataene basert på etikettene eller utgangene som er definert.

Brystkreftklassifiseringer med SVM RBF kjerne-Geeksforgeeks

Fordeler med SVM

  • Effektiv i høydimensjonale tilfeller.
  • Minnet er effektivt ettersom det bruker et undersett av treningspunkter i beslutningsfunksjonen kalt støttevektorer.
  • Ulike kjernefunksjoner kan spesifiseres for beslutningsfunksjonene og det er mulig å spesifisere egendefinerte kjerner.

SVM-implementering i Python

Forutsi om kreft er godartet eller ondartet. Ved å bruke historiske data om pasienter diagnostisert med kreft kan leger skille mellom ondartede tilfeller og godartede får uavhengige egenskaper.

Trinn

  • Last inn brystkreftdatasettet fra sklearn.datasets
  • Separate inndatafunksjoner og målvariabler.
  • Bygg og tren SVM-klassifiserere ved å bruke RBF-kjernen.
  • Plott spredningsplottet til inndatafunksjonene.
  • Tegn beslutningsgrensen.
  • Tegn beslutningsgrensen

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

Produksjon :

Brystkreftklassifiseringer med SVM RBF-kjerne