logo

Support Vector Machine (SVM) Algoritm

Support Vector Machine (SVM) är en kraftfull maskininlärningsalgoritm som används för linjär eller olinjär klassificering, regression och till och med avvikande detekteringsuppgifter. SVM:er kan användas för en mängd olika uppgifter, såsom textklassificering, bildklassificering, skräppostdetektering, handskriftsidentifiering, genuttrycksanalys, ansiktsdetektering och anomalidetektering. SVM är anpassningsbara och effektiva i en mängd olika applikationer eftersom de kan hantera högdimensionella data och olinjära relationer.

SVM-algoritmer är mycket effektiva då vi försöker hitta det maximala separerande hyperplanet mellan de olika klasserna som finns tillgängliga i målfunktionen.

np.unik

Stöd Vector Machine

Support Vector Machine (SVM) är en övervakad maskininlärning algoritm som används för både klassificering och regression. Även om vi också säger regressionsproblem är det bäst lämpat för klassificering. Huvudsyftet med SVM-algoritmen är att hitta det optimala hyperplanet i ett N-dimensionellt utrymme som kan separera datapunkterna i olika klasser i funktionsutrymmet. Hyperplanet försöker att marginalen mellan de närmaste punkterna i olika klasser ska vara så maximal som möjligt. Hyperplanets dimension beror på antalet funktioner. Om antalet indatafunktioner är två, är hyperplanet bara en linje. Om antalet inmatningsegenskaper är tre, blir hyperplanet ett 2D-plan. Det blir svårt att föreställa sig när antalet funktioner överstiger tre.



Låt oss betrakta två oberoende variabler x1, x2,och en beroende variabel som antingen är en blå cirkel eller en röd cirkel.

Linjärt separerbara datapunkter

Från figuren ovan är det mycket tydligt att det finns flera linjer (vårt hyperplan här är en linje eftersom vi bara överväger två indatafunktioner x1, x2) som separerar våra datapunkter eller gör en klassificering mellan röda och blå cirklar. Så hur väljer vi den bästa linjen eller i allmänhet det bästa hyperplanet som separerar våra datapunkter?

Hur fungerar SVM?

Ett rimligt val som det bästa hyperplanet är det som representerar den största separationen eller marginalen mellan de två klasserna.

Flera hyperplan som skiljer data från två klasser

Flera hyperplan separerar data från två klasser

Så vi väljer hyperplanet vars avstånd från det till närmaste datapunkt på varje sida är maximerat. Om ett sådant hyperplan existerar är det känt som maximal marginal hyperplan/hård marginal . Så från ovanstående figur väljer vi L2. Låt oss överväga ett scenario som visas nedan

Välja hyperplan för data med extremvärde

Välja hyperplan för data med extremvärde

Här har vi en blå boll i gränsen för den röda bollen. Så hur klassificerar SVM data? Det är enkelt! Den blå bollen i gränsen för röda är en utstickare av blå bollar. SVM-algoritmen har egenskaperna att ignorera extremvärdet och hittar det bästa hyperplanet som maximerar marginalen. SVM är robust mot extremvärden.

Hyperplane som är den mest optimerade

Hyperplane som är den mest optimerade

Så i den här typen av datapunkt är vad SVM gör att hitta den maximala marginalen som gjorts med tidigare datamängder tillsammans med att den lägger till ett straff varje gång en punkt passerar marginalen. Så marginalerna i dessa typer av fall kallas mjuka marginaler . När det finns en mjuk marginal till datamängden försöker SVM att minimera (1/marginal+∧(∑straff)) . Gångjärnsförlust är ett vanligt förekommande straff. Om inga överträdelser ingen gångjärnsförlust.Om överträdelser gångjärnsförlust proportionell mot avståndet till överträdelsen.

Hittills har vi pratat om linjärt separerbara data (gruppen av blå bollar och röda bollar är separerbara med en rak linje/linjär linje). Vad ska man göra om data inte är linjärt separerbara?

Original 1D-dataset för klassificering

Original 1D-dataset för klassificering

typer av for loop

Säg, vår data visas i figuren ovan. SVM löser detta genom att skapa en ny variabel med hjälp av en kärna . Vi kallar en punkt för xipå raden och vi skapar en ny variabel yisom funktion av avstånd från ursprung o.så om vi plottar detta får vi något liknande som visas nedan

Kartläggning av 1D-data till 2D för att kunna separera de två klasserna

Kartläggning av 1D-data till 2D för att kunna separera de två klasserna

I detta fall skapas den nya variabeln y som en funktion av avståndet från origo. En icke-linjär funktion som skapar en ny variabel kallas en kärna.

Stöd vektor maskinterminologi

    Hyperplan: Hyperplane är beslutsgränsen som används för att separera datapunkterna för olika klasser i ett funktionsutrymme. I fallet med linjära klassificeringar kommer det att vara en linjär ekvation dvs wx+b = 0. Stödvektorer: Stödvektorer är de närmaste datapunkterna till hyperplanet, vilket spelar en avgörande roll för att bestämma hyperplanet och marginalen. Marginal: Marginal är avståndet mellan stödvektorn och hyperplanet. Huvudsyftet med stödvektormaskinalgoritmen är att maximera marginalen. Den bredare marginalen indikerar bättre klassificeringsprestanda. Kärna : Kärnan är den matematiska funktionen, som används i SVM för att mappa de ursprungliga indatapunkterna till högdimensionella funktionsutrymmen, så att hyperplanet lätt kan hittas även om datapunkterna är inte linjärt separerbara i det ursprungliga inmatningsutrymmet. Några av de vanliga kärnfunktionerna är linjära, polynomiska, radiella basfunktioner (RBF) och sigmoid.Hård marginal: Hyperplanet med maximal marginal eller hyperplanet med hård marginal är ett hyperplan som korrekt separerar datapunkterna för olika kategorier utan några felklassificeringar. Mjuk marginal: När data inte är perfekt separerbara eller innehåller extremvärden tillåter SVM en teknik med mjuk marginal. Varje datapunkt har en slack-variabel som introduceras av SVM-formuleringen med mjuk marginal, vilket mildrar det strikta marginalkravet och tillåter vissa felklassificeringar eller överträdelser. Den upptäcker en kompromiss mellan att öka marginalen och minska överträdelserna.C: Marginalmaximering och felklassificeringsböter balanseras av regulariseringsparametern C i SVM. Straffet för att gå över marginalen eller felklassificera dataposter bestäms av den. Ett strängare straff utdöms med ett högre värde på C, vilket resulterar i en mindre marginal och kanske färre felklassificeringar. Gångjärnsförlust: En typisk förlustfunktion i SVM är gångjärnsförlust. Det straffar felaktiga klassificeringar eller marginalöverträdelser. Den objektiva funktionen i SVM bildas ofta genom att den kombineras med regulariseringstermen. Dubbelt problem: Ett dubbelt problem med optimeringsproblemet som kräver lokalisering av Lagrange-multiplikatorerna relaterade till stödvektorerna kan användas för att lösa SVM. Den dubbla formuleringen möjliggör användning av kärnknep och effektivare datoranvändning.

Matematisk intuition av Support Vector Machine

Tänk på ett binärt klassificeringsproblem med två klasser, märkta som +1 och -1. Vi har en träningsdatauppsättning som består av indatafunktionsvektorer X och deras motsvarande klassetiketter Y.

Ekvationen för det linjära hyperplanet kan skrivas som:

w^Tx+ b = 0

Vektorn W representerar normalvektorn till hyperplanet. dvs riktningen vinkelrät mot hyperplanet. Parametern b i ekvationen representerar förskjutningen eller avståndet för hyperplanet från origo längs normalvektorn I .

Avståndet mellan en datapunkt x_i och beslutsgränsen kan beräknas som:

d_i = frac{w^T x_i + b}

där ||w|| representerar den euklidiska normen för viktvektorn w. Euklidisk normav normalvektorn W

För linjär SVM-klassificerare:

Optimering:

    För Hard margin linjär SVM-klassificerare:

underset{w,b}{	ext{minimera}}frac{1}{2}w^Tw =underset{W,b}{	ext{minimera}}frac{1}{2}vänster | w 
ight|^{2}  	ext{med förbehåll för}; y_i(w^Tx_i + b) geq 1 ;för; i = 1, 2,3, cdots,m

Målvariabeln eller etiketten för ithträningsinstansen betecknas med symbolen tii detta uttalande. Och ti=-1 för negativa förekomster (när yi= 0) och ti=1positiva instanser (när yi= 1) respektive. Eftersom vi kräver beslutsgränsen som uppfyller begränsningen: underset{w,b}{	ext{minimera }}frac{1}{2}w^Tw+ C sum_{i=1}^m zeta_{i}  	ext{med förbehåll för } y_i( w^Tx_i + b)ge 1-zeta_{i};; och ; zeta_{i} ge 0;; för ; i = 1, 2,3, cdots,m

    För linjär SVM-klassificerare med mjuk marginal:

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

    Dubbelt problem: Ett dubbelt problem med optimeringsproblemet som kräver lokalisering av Lagrange-multiplikatorerna relaterade till stödvektorerna kan användas för att lösa SVM. De optimala lagrangemultiplikatorerna α(i) som maximerar följande dubbla 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

var,

  • aiär Lagrange-multiplikatorn associerad med det i:te träningsprovet.
  • K(xi, xj) är kärnfunktionen som beräknar likheten mellan två sampel xioch xj. Det tillåter SVM att hantera icke-linjära klassificeringsproblem genom att implicit kartlägga proverna till ett högre dimensionellt funktionsutrymme.
  • Termen ∑αirepresenterar summan av alla Lagrange-multiplikatorer.

SVM-beslutsgränsen kan beskrivas i termer av dessa optimala Lagrange-multiplikatorer och stödvektorerna när det dubbla problemet har lösts och de optimala Lagrange-multiplikatorerna har upptäckts. De träningsprover som har i> 0 är stödvektorerna, medan beslutsgränsen tillhandahålls av:

egin{aligned} 	ext{Linjä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 av supportvektormaskin

Baserat på beslutsgränsens karaktär kan Support Vector Machines (SVM) delas in i två huvuddelar:

    Linjär SVM: Linjär SVM använder en linjär beslutsgräns för att separera datapunkterna för olika klasser. När data kan separeras exakt linjärt är linjära SVM:er mycket lämpliga. Detta innebär att en enda rak linje (i 2D) eller ett hyperplan (i högre dimensioner) helt kan dela upp datapunkterna i sina respektive klasser. Ett hyperplan som maximerar marginalen mellan klasserna är beslutsgränsen. Icke-linjär SVM: Icke-linjär SVM kan användas för att klassificera data när den inte kan separeras i två klasser med en rät linje (i fallet med 2D). Genom att använda kärnfunktioner kan olinjära SVM:er hantera olinjärt separerbar data. Den ursprungliga indata omvandlas av dessa kärnfunktioner till ett högre dimensionellt funktionsutrymme, där datapunkterna kan separeras linjärt. En linjär SVM används för att lokalisera en icke-linjär beslutsgräns i detta modifierade utrymme.

Populära kärnfunktioner i SVM

SVM-kärnan är en funktion som tar lågdimensionellt indatautrymme och omvandlar det till högredimensionellt utrymme, dvs den omvandlar icke-separerbara problem till separerbara problem. Det är mest användbart i icke-linjära separationsproblem. Enkelt uttryckt kärnan, gör några extremt komplexa datatransformationer och tar sedan reda på processen för att separera data baserat på de definierade etiketterna eller utdata.

Bröstcancerklassificeringar med SVM RBF kernel-Geeksforgeeks

Fördelar med SVM

  • Effektiv i högdimensionella fall.
  • Dess minne är effektivt eftersom det använder en delmängd av träningspunkter i beslutsfunktionen som kallas stödvektorer.
  • Olika kärnfunktioner kan specificeras för beslutsfunktionerna och det är möjligt att specificera anpassade kärnor.

SVM-implementering i Python

Förutsäg om cancer är godartad eller malign. Att använda historiska data om patienter som diagnostiserats med cancer gör det möjligt för läkare att särskilja maligna fall och godartade ges oberoende attribut.

Steg

  • Ladda bröstcancerdataset från sklearn.datasets
  • Separat indatafunktioner och målvariabler.
  • Bygg och träna SVM-klassificerare med RBF-kärna.
  • Rita spridningsdiagrammet för indatafunktionerna.
  • Rita beslutsgränsen.
  • Rita beslutsgrä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 :

java sträng konkat

Bröstcancerklassificeringar med SVM RBF-kärna