Wat zijn support vector machines en hoe werken ze?

support vector machines

Tegenwoordig hoor je steeds meer over algoritmes en de wetenschappelijke discipline die zich bezighoudt met de ontwikkeling ervan: machine learning. Algoritmes leren van structuren in de data. Een support vector machine (SVM) is een voorbeeld van zo’n algoritme. Dit type algoritme is supervised: in dit geval wordt een model getraind met een historische dataset. Je laadt heel veel historische data in het model, zodat het model patronen in deze data gaat ontdekken en herkennen. Op deze manier leert het model van de data, zodat het model door middel van de ontdekte patronen voorspellingen kan doen over de toekomst. Om een duidelijker beeld te creëren van hoe een algoritme precies functioneert, gaan we in op de werking van de support vector machine.

 

Support vector machines

De support vector machine is een binaire classificeerder. Dit komt erop neer dat het algoritme de ingevoerde dataset verdeelt in 2 klassen, aan de hand van vooraf geselecteerde kenmerken. Voordat de machine dit onderscheid kan maken, moet het bijbehorende model getraind worden met historische data. Een support vector machine wordt meestal gebruikt voor classificatiedoeleinden, maar kan ook worden gebruikt voor regressiedoeleinden.

 

Het hypervlak

Support vector machines zijn gebaseerd op het vinden van het zogenaamde ‘hyperplane’, de rechte of het hypervlak. Dit hypervlak verdeelt de dataset uiteindelijk in 2 klassen. Een hypervlak is een lijn die of een vlak dat een dataset scheidt en dus classificeert. Om dit voorstelbaar te maken, moet je je een grafiek voorstellen met allerlei datapunten. Deze punten zijn de vectoren; de grafiek is de zogenaamde vectorruimte. Een vectorruimte is een wiskundige structuur die dus bestaat uit een verzameling vectoren. Deze ruimte bevat een dimensie die het aantal onafhankelijke richtingen in de ruimte specificeert. In 2 dimensies is het hypervlak een rechte lijn; in 3 dimensies is dit een vlak.

 

Kritische elementen

De support vector machine probeert een scheiding te maken tussen 2 klassen, door een hypervlak te creëren waarbij de datapunten zo ver mogelijk van deze lijn of dit vlak verwijderd zijn. De datapunten die het dichtstbij liggen, bepalen uiteindelijk de positie van het hypervlak. Deze datapunten zijn de ‘support vectors’. Indien deze support vectors verwijderd worden uit de dataset, zal de positie van het hypervlak ook veranderen. De support vectors zijn dus niet voor niets de kritische elementen in een dataset. Hoe verder de datapunten van het hypervlak verwijderd zijn, des te zekerder we kunnen zeggen dat deze datapunten op de juiste wijze geclassificeerd zijn.

 

Het classificeerproces

Maar hoe creëer je een zo goed mogelijke scheiding? Dit doe je door een maximale marge te creëren: de afstand tussen de 2 support vectors. Hierdoor neemt de kans toe dat de classificatie van nieuwe data goed verloopt. We moeten ons echter wel realiseren dat datasets vaak gecompliceerd zijn en dat het niet altijd eenvoudig is om het hypervlak te bepalen. De oplossing hiervoor is de vectorruimte vanuit driedimensionaal perspectief analyseren. Door de wirwar aan datapunten vanuit dit perspectief te bekijken, wordt het eenvoudiger om een hypervlak te creëren. Dit houdt in dat de datapunten zich niet langer op een plat vlak bevinden, zoals op papier. De datapunten ‘zweven’ nu in de lucht; het ene datapunt bevindt zich ‘dieper’ in de vectorruimte dan het andere datapunt. Hoe hoger de dimensie, des te makkelijker de classificatie. Dit driedimensionale proces wordt de ‘kernel trick’ genoemd.

 

Support vector machines in de praktijk

Een eerste voordeel van support vector machines is dat deze accuraat zijn. Bovendien werken deze algoritmes heel goed bij smallere, ‘schonere’ datasets. Daarnaast kunnen support vector machines heel efficiënt zijn, omdat het een dataset automatisch verdeelt in kleinere subsets. Dit betekent echter dat support vector machines niet geschikt zijn voor grotere datasets, omdat de trainingstijd van support vector machines in dit geval extreem lang duurt. Daarnaast zijn support vector machines minder effectief bij datasets met meer ruis en overlappende categorieën. Vanwege deze redenen worden support vector machines voornamelijk ingezet bij het detecteren van spam en bij sentimentanalyse. Daarnaast gebruikt men deze algoritmes vaak voor het herkennen van afbeeldingen. Ook spelen support vector machines een belangrijke rol als het gaat om (handgeschreven) cijferherkenning.

Kortom, support vector machines kunnen worden ingezet op diverse datasets, maar werken het beste bij een kleine en schone dataset.

Posted on 28 november 2018

Share the Story

Back to Top