stub Vad är Support Vector Machines? - Unite.AI
Anslut dig till vårt nätverk!

AI 101

Vad är Support Vector Machines?

mm
Uppdaterad on

Vad är Support Vector Machines?

Stödvektormaskiner är en typ av maskininlärningsklassificerare, utan tvekan en av de mest populära typerna av klassificerare. Stödvektormaskiner är särskilt användbara för uppgifter för numerisk förutsägelse, klassificering och mönsterigenkänning.

Stödvektormaskiner fungerar genom att dra beslutsgränser mellan datapunkter och siktar på den beslutsgräns som bäst separerar datapunkterna i klasser (eller är den mest generaliserbara). Målet när man använder en stödvektormaskin är att beslutsgränsen mellan punkterna är så stor som möjligt så att avståndet mellan en given datapunkt och gränslinjen maximeras. Det är en snabb förklaring av hur stödja vektormaskiner (SVM) fungerar, men låt oss ta lite tid att gräva djupare i hur SVM fungerar och förstå logiken bakom deras verksamhet.

Målet att stödja vektormaskiner

Föreställ dig en graf med ett antal datapunkter på, baserat på funktioner som specificeras av X- och Y-axlarna. Datapunkterna på grafen kan löst delas upp i två olika kluster, och klustret som en datapunkt tillhör indikerar klassen för datapunkten. Antag nu att vi vill rita en linje längs grafen som skiljer de två klasserna från varandra, med alla datapunkter i en klass på ena sidan av linjen och alla datapunkter som tillhör en annan klass på den andra sidan av linjen. Denna skiljelinje är känd som ett hyperplan.

Du kan tänka på en stödvektormaskin som att skapa "vägar" genom en stad och separera staden i distrikt på vardera sidan av vägen. Alla byggnader (datapunkter) som finns på ena sidan av vägen tillhör en stadsdel.

Målet med en stödvektormaskin är inte bara att rita hyperplan och dela datapunkter, utan att rita hyperplanet separerar datapunkterna med den största marginalen, eller med mest utrymme mellan delningslinjen och en given datapunkt. För att återgå till metaforen "vägar", om en stadsplanerare ritar planer för en motorväg, vill de inte att motorvägen ska vara för nära hus eller andra byggnader. Ju mer marginal mellan motorvägen och byggnaderna på båda sidor, desto bättre. Ju större denna marginal är, desto mer "säker" kan klassificeraren vara på sina förutsägelser. När det gäller binär klassificering innebär att rita rätt hyperplan att välja ett hyperplan som ligger precis i mitten av de två olika klasserna. Om beslutsgränsen/hyperplanet är längre bort från en klass kommer den att ligga närmare en annan. Därför måste hyperplanet balansera marginalen mellan de två olika klasserna.

Beräknar det separerande hyperplanet

Så hur bestämmer en stödvektormaskin den bästa separerande hyperplan/beslutsgränsen? Detta uppnås genom att beräkna möjliga hyperplan med hjälp av en matematisk formel. Vi kommer inte att täcka formeln för att beräkna hyperplan i extrem detalj, men linjen beräknas med den berömda lutning/linjeformeln:

Y = axe + b

Samtidigt är linjer gjorda av punkter, vilket innebär att vilket hyperplan som helst kan beskrivas som: uppsättningen av punkter som löper parallellt med det föreslagna hyperplanet, som bestäms av modellens vikter gånger uppsättningen av egenskaper modifierade av en specificerad offset/bias ("d").

SVM ritar många hyperplan. Till exempel är gränslinjen ett hyperplan, men de datapunkter som klassificeraren anser finns också på hyperplan. Värdena för x bestäms baserat på funktionerna i datamängden. Till exempel, om du hade en datauppsättning med höjder och vikter för många människor, skulle funktionerna "höjd" och "vikt" vara de funktioner som används för att beräkna "X". Marginalerna mellan det föreslagna hyperplanet och de olika "stödvektorerna" (datapunkter) som finns på vardera sidan av det delande hyperplanet beräknas med följande formel:

W * X – b

Även om du kan läsa mer om matematiken bakom SVM:er, om du letar efter en mer intuitiv förståelse av dem vet du bara att målet är att maximera avståndet mellan det föreslagna separerande hyperplanet/gränslinjen och de andra hyperplanen som löper parallellt med den ( och där datapunkterna finns).

Foto: ZackWeinberg via Wikimedia Commons, CC BY SA 3.0 (https://commons.wikimedia.org/wiki/File:Svm_separating_hyperplanes_(SVG).svg)

Flerklassklassificering

Processen som beskrivits hittills gäller binära klassificeringsuppgifter. SVM-klassificerare kan dock också användas för icke-binära klassificeringsuppgifter. När man gör SVM-klassificering på en datauppsättning med tre eller fler klasser används fler gränslinjer. Till exempel, om en klassificeringsuppgift har tre klasser istället för två, kommer två skiljelinjer att användas för att dela upp datapunkter i klasser och regionen som omfattar en enda klass kommer att hamna mellan två skiljelinjer istället för en. Istället för att bara beräkna avståndet mellan bara två klasser och en beslutsgräns, måste klassificeraren nu överväga marginalerna mellan beslutsgränserna och de multipla klasserna inom datamängden.

Icke-linjära separationer

Processen som beskrivs ovan gäller fall där data är linjärt separerbara. Observera att datauppsättningar i verkligheten nästan aldrig är helt linjärt separerbara, vilket innebär att när du använder en SVM-klassificerare kommer du ofta behöva använda två olika tekniker: mjuk marginal och kärnknep. Tänk på en situation där datapunkter från olika klasser blandas ihop, med vissa instanser som tillhör en klass i "klustret" av en annan klass. Hur kunde du låta klassificeraren hantera dessa instanser?

En taktik som kan användas för att hantera icke-linjärt separerbara datauppsättningar är tillämpningen av en SVM-klassificerare med "mjuk marginal". En klassificerare med mjuk marginal fungerar genom att acceptera några felaktigt klassificerade datapunkter. Den kommer att försöka dra en linje som bäst skiljer klustren av datapunkter från varandra, eftersom de innehåller majoriteten av instanserna som tillhör deras respektive klasser. SVM-klassificeraren med mjuk marginal försöker skapa en skiljelinje som balanserar klassificerarens två krav: noggrannhet och marginal. Den kommer att försöka minimera felklassificeringen samtidigt som den maximerar marginalen.

SVM:s tolerans för fel kan justeras genom att manipulera en hyperparameter som kallas "C". C-värdet styr hur många stödvektorer klassificeraren beaktar när beslutsgränser dras. C-värdet är en påföljd som tillämpas på felklassificeringar, vilket innebär att ju större C-värdet är desto färre stödvektorer tar klassificeraren hänsyn till och desto mindre marginal.

Kärnan lurar data och omvandlar dem på ett icke-linjärt sätt. Foto: Shiyu Ju via Wikmedia Commons, CC BY SA 4.0 (https://commons.wikimedia.org/wiki/File:Kernel_trick_idea.svg)

Kärntricket fungerar genom att tillämpa ickelinjära transformationer på funktionerna i datamängden. Kernel Trick tar de befintliga funktionerna i datamängden och skapar nya funktioner genom tillämpning av icke-linjära matematiska funktioner. Det som blir resultatet av tillämpningen av dessa olinjära transformationer är en olinjär beslutsgräns. Eftersom SVM-klassificeraren inte längre är begränsad till att rita linjära beslutsgränser kan den börja rita krökta beslutsgränser som bättre kapslar in den sanna fördelningen av stödvektorerna och minimerar felklassificeringar. Två av de mest populära ickelinjära SVM-kärnorna är Radial Basis Function och Polynomial. Polynomfunktionen skapar polynomkombinationer av alla befintliga särdrag, medan den radiella basfunktionen genererar nya särdrag genom att mäta avståndet mellan en central punkt/punkter till alla andra punkter.

Bloggare och programmerare med specialiteter inom Maskininlärning och Deep Learning ämnen. Daniel hoppas kunna hjälpa andra att använda kraften i AI för socialt bästa.