i den här artikeln, du kommer att lära dig om SVM eller support vector machine, som är en av de mest populära ai-algoritmerna (det är en av de 10 bästa AI-algoritmerna) och om kärntricket, som handlar om icke-linjäritet och högre dimensioner., Vi kommer att beröra ämnen som hyperplaner, Lagrange multiplikatorer, vi kommer att ha visuella exempel och kodexempel (liknande kodexempel som används i KNN-kapitlet) för att bättre förstå denna mycket viktiga algoritm.
SVM förklarade
Supportvektormaskinen är en övervakad inlärningsalgoritm som oftast används för klassificering, men den kan också användas för regression. Huvudidén är att algoritmen, baserat på de märkta data (träningsdata), försöker hitta den optimala hyperplan som kan användas för att klassificera nya datapunkter. I två dimensioner är hyperplanet en enkel linje.,
vanligtvis försöker en inlärningsalgoritm att lära sig de vanligaste egenskaperna (vad som skiljer en klass från en annan) i en klass och klassificeringen baseras på de representativa egenskaper som man lärt sig (så klassificeringen baseras på skillnader mellan klasser). SVM arbetar tvärtom. Den finner de mest liknande exemplen mellan klasserna. De kommer att vara stödvektorerna.
som ett exempel, låt oss överväga två klasser, äpplen och citroner.,
andra algoritmer kommer att lära sig de mest uppenbara, mest representativa egenskaperna hos äpplen och citroner, som äpplen är gröna och rundade medan citroner är gula och har elliptisk form.
däremot söker SVM efter äpplen som är mycket lik citroner, till exempel äpplen som är gula och har elliptisk form. Detta kommer att vara en stödvektor. Den andra stödvektorn kommer att vara en citron som liknar ett äpple (grön och rundad). Så andra algoritmer lär sig skillnaderna medan SVM lär sig likheter.,
om vi visualiserar exemplet ovan i 2D kommer vi att ha något så här:
När vi går från vänster till höger kommer alla exempel att klassificeras som äpplen tills vi når det gula äpplet. Från denna punkt ökar förtroendet för att ett nytt exempel är ett äpple droppar medan citronklassens förtroende ökar., När citronklassens förtroende blir större än äppelklassens förtroende, kommer de nya exemplen att klassificeras som citroner (någonstans mellan det gula äpplet och den gröna citronen).
baserat på dessa stödvektorer försöker algoritmen hitta det bästa hyperplanet som skiljer klasserna. I 2D är hyperplane en linje, så det skulle se ut så här:
ok, men varför ritade jag den blå gränsen som på bilden ovan?, Jag skulle också kunna rita gränser så här:
som du kan se kan vi se att vi kan dra gränser så här:
ar ett oändligt antal möjligheter att dra beslutsgränsen. Så hur kan vi hitta den optimala?
hitta den optimala Hyperplane
intuitivt den bästa linjen är den linje som är långt ifrån både äpple och citron exempel (har den största marginalen)., För att få optimal lösning måste vi maximera marginalen på båda sätten (om vi har flera klasser måste vi maximera det med tanke på var och en av klasserna).
så om vi jämför bilden ovan med bilden nedan, kan vi enkelt observera att den första är den optimala hyperplanen (linjen) och den andra är en suboptimal lösning, eftersom marginalen är mycket kortare.,
eftersom vi vill maximera marginalerna som tar hänsyn till alla klasser, i stället för att använda en marginal för varje klass använder vi en ”global” marginal, som tar hänsyn till alla klasser., Denna marginal skulle se ut som den lila linjen i följande bild:
denna marginal skulle se ut som den lila linjen i följande bild:
som vi kan se och som vi har lärt oss i avsnittet inställningsparametrar, eftersom C har ett litet värde (0,1) är beslutsgränsen jämn.
Nu om vi ökar C från 0.,1 till 100 Vi kommer att ha fler kurvor i beslutsgränsen:
vad skulle hända om vi använder C=0.1 men nu ökar vi gamma från 0,1 till 10? Låt se!
vad hände här? Varför har vi en så dålig modell?, Som du har sett i avsnittet inställningsparametrar betyder high gamma att vid beräkning av det trovärdiga hyperplanet betraktar vi bara punkter som är nära. Nu för att densiteten hos de gröna punkterna är hög endast i den valda gröna regionen, i den regionen är punkterna tillräckligt nära det troliga hyperplanet,så de hyperplanerna valdes. Var försiktig med gamma-parametern, eftersom det kan ha ett mycket dåligt inflytande över resultaten av din modell om du ställer in det till ett mycket högt värde (vad är ett ”mycket högt värde” beror på datapunkternas densitet).,
för detta exempel är de bästa värdena för C och Gamma 1,0 och 1,0. Nu om vi kör vår modell på testuppsättningen får vi följande diagram:
och Förvirringsmatrisen ser ut så här:
som du kan se har vi bara 3 falska positiva och endast 4 falska negativa. – herr talman!, Noggrannheten i denna modell är 93% vilket är ett riktigt bra resultat, vi fick en bättre poäng än att använda KNN (som hade en noggrannhet på 80%).
OBS: noggrannhet är inte det enda mätvärdet som används i ML och inte heller det bästa mätvärdet för att utvärdera en modell, på grund av Noggrannhetsparadoxen. Vi använder detta mått för enkelhet, men senare, i kapitlet mätvärden för att utvärdera AI-algoritmer kommer vi att prata om Noggrannhetsparadoxen och jag kommer att visa andra mycket populära mätvärden som används inom detta område.,
slutsatser
i den här artikeln har vi sett en mycket populär och kraftfull övervakad inlärningsalgoritm, Supportvektormaskinen. Vi har lärt oss den grundläggande idén, vad är en hyperplan, vad är stödvektorer och varför är de så viktiga. Vi har också sett massor av visuella representationer, vilket hjälpte oss att bättre förstå alla begrepp.
ett annat viktigt ämne som vi berörde är Kärntricket, vilket hjälpte oss att lösa icke-linjära problem.
för att få en bättre modell såg vi tekniker för att ställa in algoritmen., I slutet av artikeln hade vi ett kodexempel i Python, som visade oss hur kan vi använda KNN-algoritmen.
som slutliga tankar skulle jag vilja ge några fördelar & nackdelar och några populära användningsfall.,
proffsen
SVN kan vara mycket effektiv, eftersom den endast använder en delmängd av träningsdata, fungerar bara stödvektorerna
mycket bra på mindre datamängder, på icke-linjära datamängder och högdimensionella utrymmen
är mycket effektiv i fall där antalet dimensioner är större än antalet prover
Det kan ha hög noggrannhet, ibland kan prestera ännu bättre än neurala nätverk
inte särskilt känsliga för att overfitting
cons
träningstiden är hög när vi har stora datamängder
när datamängden har mer brus (i.,e. målklasser överlappar) SVM fungerar inte bra