logo

Support Vector Machine (SVM) algoritme

Support Vector Machine (SVM) er en kraftfuld maskinlæringsalgoritme, der bruges til lineær eller ikke-lineær klassificering, regression og endda afvigende detektionsopgaver. SVM'er kan bruges til en række opgaver, såsom tekstklassificering, billedklassificering, spamdetektion, håndskriftsidentifikation, genekspressionsanalyse, ansigtsdetektion og anomalidetektion. SVM'er er tilpasningsdygtige og effektive i en række forskellige applikationer, fordi de kan håndtere højdimensionelle data og ikke-lineære relationer.

SVM-algoritmer er meget effektive, da vi forsøger at finde det maksimale adskillende hyperplan mellem de forskellige klasser, der er tilgængelige i målfunktionen.



15 af 100,00

Support Vector Machine

Support Vector Machine (SVM) er en overvåget maskinlæring algoritme brugt til både klassificering og regression. Selvom vi også siger regressionsproblemer, er det bedst egnet til klassificering. Hovedformålet med SVM-algoritmen er at finde det optimale hyperplan i et N-dimensionelt rum, der kan adskille datapunkterne i forskellige klasser i feature-rummet. Hyperplanet forsøger, at marginen mellem de nærmeste punkter i forskellige klasser skal være så maksimal som muligt. Dimensionen af ​​hyperplanet afhænger af antallet af funktioner. Hvis antallet af inputfunktioner er to, så er hyperplanet kun en linje. Hvis antallet af inputfunktioner er tre, bliver hyperplanet et 2D-plan. Det bliver svært at forestille sig, når antallet af funktioner overstiger tre.

Lad os overveje to uafhængige variable x1, x2,og en afhængig variabel, som enten er en blå cirkel eller en rød cirkel.

Lineært adskillelige datapunkter



Fra figuren ovenfor er det meget tydeligt, at der er flere linjer (vores hyperplan her er en linje, fordi vi kun overvejer to inputfunktioner x1, x2), der adskiller vores datapunkter eller foretager en klassificering mellem røde og blå cirkler. Så hvordan vælger vi den bedste linje eller generelt det bedste hyperplan, der adskiller vores datapunkter?

Hvordan fungerer SVM?

Et rimeligt valg som det bedste hyperplan er det, der repræsenterer den største adskillelse eller margin mellem de to klasser.

Flere hyperplaner, der adskiller dataene fra to klasser

Flere hyperplaner adskiller dataene fra to klasser



Så vi vælger hyperplanet, hvis afstand fra det til det nærmeste datapunkt på hver side er maksimeret. Hvis et sådant hyperplan findes, er det kendt som maksimum-margin hyperplane/hard margin . Så fra ovenstående figur vælger vi L2. Lad os overveje et scenario som vist nedenfor

Valg af hyperplan for data med outlier

Valg af hyperplan for data med outlier

Her har vi én blå bold i grænsen af ​​den røde bold. Så hvordan klassificerer SVM dataene? Det er simpelt! Den blå bold i grænsen af ​​røde er en udligger af blå bolde. SVM-algoritmen har egenskaberne til at ignorere afvigelsen og finder det bedste hyperplan, der maksimerer marginen. SVM er robust over for outliers.

Hyperplane, som er den mest optimerede

Hyperplane, som er den mest optimerede

Så i denne type datapunkt er, hvad SVM gør, at finde den maksimale margen som gjort med tidligere datasæt sammen med, at den tilføjer en straf hver gang et punkt krydser marginen. Så marginalerne i disse typer sager kaldes bløde marginer . Når der er en blød margen til datasættet, forsøger SVM at minimere (1/margin+∧(∑straf)) . Hængseltab er en almindeligt brugt straf. Hvis ingen overtrædelser ingen hængseltab.Hvis overtrædelser hængseltab proportional med afstanden til overtrædelsen.

Indtil nu talte vi om lineært adskillelige data (gruppen af ​​blå bolde og røde bolde kan adskilles med en lige linje/lineær linje). Hvad skal man gøre, hvis data ikke kan adskilles lineært?

Originalt 1D-datasæt til klassificering

Originalt 1D-datasæt til klassificering

Lad os sige, vores data er vist i figuren ovenfor. SVM løser dette ved at oprette en ny variabel ved hjælp af en kerne . Vi kalder et punkt xjegpå linjen, og vi opretter en ny variabel yjegsom funktion af afstand fra oprindelse o.så hvis vi plotter dette får vi noget som vist nedenfor

anaconda vs python slange
Kortlægning af 1D-data til 2D for at blive i stand til at adskille de to klasser

Kortlægning af 1D-data til 2D for at blive i stand til at adskille de to klasser

I dette tilfælde oprettes den nye variabel y som funktion af afstanden fra oprindelsen. En ikke-lineær funktion, der opretter en ny variabel, kaldes en kerne.

Support Vector Machine Terminology

    Hyperplane: Hyperplane er beslutningsgrænsen, der bruges til at adskille datapunkterne for forskellige klasser i et funktionsrum. I tilfælde af lineære klassifikationer vil det være en lineær ligning, dvs. wx+b = 0. Støttevektorer: Støttevektorer er de nærmeste datapunkter til hyperplanet, hvilket spiller en afgørende rolle i at bestemme hyperplanet og marginen. Margin : Margin er afstanden mellem støttevektoren og hyperplanet. Hovedformålet med støttevektormaskinalgoritmen er at maksimere marginen. Den bredere margen indikerer bedre klassificeringsydelse. Kernel : Kernel er den matematiske funktion, som bruges i SVM til at kortlægge de originale inputdatapunkter til højdimensionelle funktionsrum, så hyperplanet let kan findes ud af, selvom datapunkterne er ikke lineært adskillelige i det oprindelige inputrum. Nogle af de almindelige kernefunktioner er lineær, polynomium, radial basisfunktion (RBF) og sigmoid.Hård margin: Hyperplanet med maksimal margin eller hyperplanet med hård margin er et hyperplan, der korrekt adskiller datapunkterne i forskellige kategorier uden nogen fejlklassificeringer. Soft margin: Når dataene ikke er perfekt adskillelige eller indeholder outliers, tillader SVM en blød margin-teknik. Hvert datapunkt har en slack-variabel introduceret af soft-margin SVM-formuleringen, som blødgør det strenge marginkrav og tillader visse fejlklassificeringer eller overtrædelser. Den opdager et kompromis mellem at øge marginen og reducere overtrædelser.C: Marginmaksimering og fejlklassificeringsbøder balanceres af regulariseringsparameteren C i SVM. Straffen for at gå over marginen eller fejlklassificere dataelementer afgøres af den. Der pålægges en strengere straf med en større værdi på C, hvilket resulterer i en mindre margin og måske færre fejlklassificeringer. Hængseltab: En typisk tabsfunktion i SVM'er er hængseltab. Det straffer forkerte klassifikationer eller marginovertrædelser. Den objektive funktion i SVM dannes ofte ved at kombinere den med regulariseringsbegrebet. Dobbelt problem: Et dobbelt problem med optimeringsproblemet, der kræver lokalisering af Lagrange-multiplikatorerne relateret til støttevektorerne, kan bruges til at løse SVM. Den dobbelte formulering muliggør brugen af ​​kernetricks og mere effektiv databehandling.

Matematisk intuition af Support Vector Machine

Overvej et binært klassifikationsproblem med to klasser, mærket som +1 og -1. Vi har et træningsdatasæt bestående af input-funktionsvektorer X og deres tilsvarende klasseetiketter Y.

Ligningen for det lineære hyperplan kan skrives som:

w^Tx+ b = 0

Vektoren W repræsenterer den normale vektor til hyperplanet. altså retningen vinkelret på hyperplanet. Parameteren b i ligningen repræsenterer forskydningen eller afstanden af ​​hyperplanet fra origo langs normalvektoren I .

Afstanden mellem et datapunkt x_i og beslutningsgrænsen kan beregnes som:

d_i = frac{w^T x_i + b}

hvor ||w|| repræsenterer den euklidiske norm for vægtvektoren w. Euklidisk normaf normalvektoren W

For lineær SVM-klassifikator:

Optimering:

    For Hard margin lineær SVM-klassifikator:

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

java polymorfi

Målvariablen eller etiketten for ithtræningsinstansen er angivet med symbolet tjegi denne udtalelse. Og Tjeg=-1 for negative forekomster (når yjeg= 0) og tjeg=1positive forekomster (når yjeg= 1) hhv. Fordi vi kræver beslutningsgrænsen, der opfylder begrænsningen: underset{w,b}{	ext{minimer }}frac{1}{2}w^Tw+ C sum_{i=1}^m zeta_{i}  	ext{med forbehold for } y_i( w^Tx_i + b)ge 1-zeta_{i};; og ; zeta_{i} ge 0;; til ; i = 1, 2,3, cdots,m

    For blød margin lineær SVM-klassifikator:

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

    Dobbelt problem: Et dobbelt problem med optimeringsproblemet, der kræver lokalisering af Lagrange-multiplikatorerne relateret til støttevektorerne, kan bruges til at løse SVM. De optimale Lagrange-multiplikatorer α(i), der maksimerer den følgende dobbelte objektivfunktion

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, der er forbundet med den ith-træningsprøve.
  • K(xjeg, xj) er kernefunktionen, der beregner ligheden mellem to samples xjegog xj. Det giver SVM mulighed for at håndtere ikke-lineære klassifikationsproblemer ved implicit at kortlægge prøverne til et højere dimensionelt funktionsrum.
  • Udtrykket ∑αjegrepræsenterer summen af ​​alle Lagrange-multiplikatorer.

SVM-beslutningsgrænsen kan beskrives i form af disse optimale Lagrange-multiplikatorer og støttevektorerne, når det dobbelte problem er blevet løst, og de optimale Lagrange-multiplikatorer er blevet opdaget. Træningsprøverne, der har i> 0, er støttevektorerne, mens beslutningsgrænsen leveres af:

egin{aligned} 	ext{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 af support vektormaskine

Baseret på karakteren af ​​beslutningsgrænsen kan Support Vector Machines (SVM) opdeles i to hoveddele:

    Lineær SVM: Lineære SVM'er bruger en lineær beslutningsgrænse til at adskille datapunkterne for forskellige klasser. Når dataene kan adskilles præcist lineært, er lineære SVM'er meget velegnede. Dette betyder, at en enkelt lige linje (i 2D) eller et hyperplan (i højere dimensioner) helt kan opdele datapunkterne i deres respektive klasser. Et hyperplan, der maksimerer marginen mellem klasserne, er beslutningsgrænsen. Ikke-lineær SVM: Ikke-lineær SVM kan bruges til at klassificere data, når det ikke kan adskilles i to klasser med en lige linje (i tilfælde af 2D). Ved at bruge kernefunktioner kan ikke-lineære SVM'er håndtere ikke-lineært adskillelige data. De originale inputdata omdannes af disse kernefunktioner til et højere dimensionelt funktionsrum, hvor datapunkterne kan adskilles lineært. En lineær SVM bruges til at lokalisere en ikke-lineær beslutningsgrænse i dette modificerede rum.

Populære kernefunktioner i SVM

SVM-kernen er en funktion, der tager lavdimensionelt inputrum og transformerer det til højeredimensionelt rum, dvs. den konverterer ikke-adskillelige problemer til adskillelige problemer. Det er mest nyttigt i ikke-lineære separationsproblemer. Kort sagt kernen, laver nogle ekstremt komplekse datatransformationer og finder derefter ud af processen for at adskille dataene baseret på de definerede etiketter eller output.

Brystkræftklassifikationer med SVM RBF kernel-Geeksforgeeks

Fordele ved SVM

  • Effektiv i højdimensionelle tilfælde.
  • Dens hukommelse er effektiv, da den bruger en delmængde af træningspunkter i beslutningsfunktionen kaldet støttevektorer.
  • Forskellige kernefunktioner kan specificeres for beslutningsfunktionerne og det er muligt at specificere brugerdefinerede kerner.

SVM implementering i Python

Forudsige om kræft er godartet eller ondartet. Brug af historiske data om patienter diagnosticeret med kræft gør det muligt for læger at skelne maligne tilfælde, og godartede får uafhængige egenskaber.

Trin

  • Indlæs brystkræftdatasættet fra sklearn.datasets
  • Adskil inputfunktioner og målvariabler.
  • Byg og træne SVM-klassifikatorerne ved hjælp af RBF-kerne.
  • Plot scatter-plottet for inputfunktionerne.
  • Tegn beslutningsgrænsen.
  • Tegn beslutningsgrænsen

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

Produktion :

Brystkræftklassifikationer med SVM RBF-kerne