AI 101
Vad är Support Vector Machines?

Vad är Support Vector Machines?
Support vector machines är en typ av maskinlärningsklassificerare, som kan anses vara en av de mest populära typerna av klassificerare. Support vector machines är särskilt användbara för numerisk prediktion, klassificering och mönsterigenkänning.
Support vector machines fungerar genom att rita beslutsgränser mellan datapunkter, med målet att hitta den beslutsgräns som bäst separerar datapunkterna i klasser (eller är den mest allmängiltiga). Målet när man använder en support vector machine är att beslutsgränsen mellan punkterna ska vara 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 support vector machines (SVMs) fungerar, men låt oss ta lite tid att gräva djupare i hur SVMs fungerar och förstå logiken bakom deras funktion.
Målet med Support Vector Machines
Föreställ er en graf med ett antal datapunkter på den, baserat på funktioner som specificeras av X- och Y-axlarna. Datapunkterna på grafen kan grovt delas in i två olika kluster, och klustret som en datapunkt tillhör indikerar klassen för datapunkten. Anta nu att vi vill rita en linje genom grafen som separerar 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å andra sidan av linjen. Denna separerande linje kallas en hyperplan.
Du kan tänka på en support vector machine som skapar “vägar” genom en stad, som separerar staden i distrikt på båda sidor av vägen. Alla byggnader (datapunkter) som finns på ena sidan av vägen tillhör ett distrikt.

Målet med en support vector machine är inte bara att rita hyperplaner och dela datapunkter, utan att rita hyperplanen som separerar datapunkter med den största marginalen, eller med mest utrymme mellan den separerande linjen och en given datapunkt. Återgå till “väg”-metaforen, om en stadsplanerare ritare planer för en motorväg, vill de inte att motorvägen ska vara för nära hus eller andra byggnader. Ju större marginalen är 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. I fallet med binär klassificering innebär att rita den rätta hyperplanen att välja en hyperplan som ligger mitt emellan de två olika klasserna. Om beslutsgränsen/hyperplanen är längre ifrån en klass, kommer den att vara närmare en annan. Därför måste hyperplanen balansera marginalen mellan de två olika klasserna.
Beräkning av den separerande hyperplanen
Hur bestämmer en support vector machine den bästa separerande hyperplanen/beslutsgränsen? Detta uppnås genom att beräkna möjliga hyperplaner med en matematisk formel. Vi kommer inte att täcka formeln för att beräkna hyperplaner i extrem detalj, men linjen beräknas med den berömda lutnings/linjeformeln:
Y = ax + b
Medan linjer består av punkter, vilket innebär att varje hyperplan kan beskrivas som: mängden punkter som löper parallellt med den föreslagna hyperplanen, som bestäms av modellens vikter gånger mängden funktioner modifierade med en specificerad offset/bias (“d”).
SVMs ritar många hyperplaner. Till exempel är gränslinjen en hyperplan, men datapunkterna som klassificeraren överväger är också på hyperplaner. Värdena för x bestäms baserat på funktionerna i datamängden. Till exempel, om du hade en datamängd med höjder och vikter för många människor, skulle “höjd” och “vikt” vara funktionerna som används för att beräkna “X”. Marginalerna mellan den föreslagna hyperplanen och de olika “stödvektorerna” (datapunkter) som finns på båda sidor av den separerande hyperplanen beräknas med följande formel:
W * X – b
Medan du kan läsa mer om matematiken bakom SVMs, om du letar efter en mer intuitiv förståelse av dem, veta att målet är att maximera avståndet mellan den föreslagna separerande hyperplanen/gränslinjen och de andra hyperplanerna som löper parallellt med den (och på vilka 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 beskrivs hittills gäller för binära klassificeringsuppgifter. Men SVM-klassificerare kan också användas för icke-binära klassificeringsuppgifter. När du utför SVM-klassificering på en datamängd 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å gränslinjer att användas för att dela upp datapunkter i klasser och området som utgör en enda klass kommer att ligga mellan två gränslinjer 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 överväga marginalerna mellan beslutsgränserna och de flera klasserna inom datamängden.
Icke-linjära separationer
Processen som beskrivs ovan gäller för fall där data är linjärt separerbara. Notera att, i verkligheten, är datamängder nästan aldrig helt linjärt separerbara, vilket innebär att när du använder en SVM-klassificerare kommer du ofta att behöva använda två olika tekniker: mjuk marginal och kernel-tricks. Överväg en situation där datapunkter av olika klasser är blandade, med några instanser som tillhör en klass i “klustret” av en annan klass. Hur kunde du ha klassificeraren hantera dessa instanser?
En taktik som kan användas för att hantera icke-linjärt separerbara datamängder är att använda en “mjuk marginal” SVM-klassificerare. En mjuk marginal-klassificerare fungerar genom att acceptera några felklassificerade datapunkter. Den kommer att försöka rita en linje som bäst separerar klustren av datapunkter från varandra, eftersom de innehåller de flesta instanserna som tillhör deras respektive klasser. Mjuk marginal-SVM-klassificeraren försöker skapa en gräns som balanserar de två kraven på klassificeraren: noggrannhet och marginal. Den kommer att försöka minimera felklassificeringen samtidigt som den maximerar marginalen.
SVMs tolerans för fel kan justeras genom manipulation av en hyperparameter som kallas “C”. C-värdet kontrollerar hur många stödvektorer klassificeraren överväger när den ritar beslutsgränser. C-värdet är en straff som tillämpas på felklassificeringar, vilket innebär att ju större C-värdet är, desto färre stödvektorer klassificeraren tar i beaktande och desto smalare marginalen är.

Kernel-tricken transformerar datat och transformerar det 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)
Kernel-tricken fungerar genom att tillämpa icke-linjära transformationer på funktionerna i datamängden. Kernel-tricken tar de befintliga funktionerna i datamängden och skapar nya funktioner genom att tillämpa icke-linjära matematiska funktioner. Vad som resulterar från tillämpningen av dessa icke-linjära transformationer är en icke-linjä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 omfattar den verkliga fördelningen av stödvektorerna och bringar felklassificeringar till ett minimum. Två av de mest populära SVM-icke-linjära kärnorna är Radial Basis Function och Polynomial. Den polynomiska funktionen skapar polynomiska kombinationer av alla befintliga funktioner, medan Radial Basis Function genererar nya funktioner genom att mäta avståndet mellan en central punkt/punkter till alla andra punkter.












