Grunderna i AI

Vad ÃĪr Support Vector Machines?

mm
LÃĪgg till Unite.AI bland dina fÃķredragna kÃĪllor pÃĨ Google

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ÃĪnsen ÃĪr maximalt. Det ÃĪr en snabb fÃķrklaring av hur Support Vector Machines (SVMs) fungerar, men lÃĨt oss ta nÃĨgon tid att dyka djupare in i hur SVMs fungerar och fÃķrstÃĨ logiken bakom deras funktion.

MÃĨlet med Support Vector Machines

TÃĪnk dig 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 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 dig 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 separera 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. Om vi ÃĨtergÃĨr 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 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 prediktioner. 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

SÃĨ 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 gÃĨ in pÃĨ formeln fÃķr att berÃĪkna hyperplaner i extrem detalj, men linjen berÃĪknas med den berÃķmda lutnings-/linjeformeln:

Y = ax + b

Samtidigt bestÃĨr linjer av punkter, vilket innebÃĪr att varje hyperplan kan beskrivas som: uppsÃĪttningen punkter som lÃķper parallellt med den fÃķreslagna hyperplanen, som bestÃĪms av modellens vikter gÃĨnger uppsÃĪttningen funktioner modifierad av 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. Om du till exempel 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ÃĪnsen 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 beskrivits hittills gÃĪller fÃķr binÃĪra klassificeringsuppgifter. Men SVM-klassificerare kan ocksÃĨ anvÃĪndas fÃķr icke-binÃĪra klassificeringsuppgifter. NÃĪr man 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 separera 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 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 beskrivits ovan gÃĪller fÃķr fall dÃĪr data ÃĪr linjÃĪrt separerbara. Observera 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 vissa 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 ett fÃĨtal felklassificerade datapunkter. Den kommer att fÃķrsÃķka rita en linje som bÃĪst separerar datapunktsklustren 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 maximalt utnyttjar 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.

Kernel-tricken transformerar data i en icke-linjÃĪr form. 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 icke-linjÃĪra kÃĪrnorna fÃķr SVM ÃĪr Radial Basis Function och Polynom. Polynomfunktionen skapar polynomkombinationer 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.

Blogger och programmerare med specialomrÃĨden inom Machine Learning och Deep Learning ÃĪmnen. Daniel hoppas pÃĨ att hjÃĪlpa andra att anvÃĪnda kraften frÃĨn AI fÃķr socialt vÃĪl.