Support vector machines svm
Lineaire en niet-lineaire SVM
Support Vector Machine (SVM) is een supervised learning-algoritme dat oorspronkelijk is ontwikkeld voor binaire classificatie. Het doel is om een hypervlak te vinden dat de klassen zo goed mogelijk scheidt. Bij lineair scheidbare data wordt het hypervlak gekozen dat de afstand (marge) tussen de dichtstbijzijnde datapunten van beide klassen maximaliseert. Deze datapunten worden support vectors genoemd en bepalen de positie van het hypervlak. Een grote marge leidt tot betere generalisatie. Vaak zijn data niet lineair scheidbaar. In dat geval wordt een kernel-truc toegepast: de data wordt naar een hogerdimensionale ruimte getransformeerd waarin een lineaire scheiding wel mogelijk is. Populaire kernels zijn polynomiale, radial basis function (RBF) en sigmoid. De RBF-kernel is het meest gebruikt en kan complexe, niet-lineaire grenzen modelleren. SVM is effectief in hoogdimensionale ruimtes, zelfs als het aantal features groter is dan het aantal samples. Het is ook robuust tegen overfitting, vooral met een goede regularisatieparameter C. Nadelen zijn de gevoeligheid voor de keuze van kernel en hyperparameters, en de slechte schaalbaarheid naar zeer grote datasets. SVM wordt veel gebruikt in tekstclassificatie, beeldherkenning en bio-informatica.
Hyperparameters en toepassingen
De prestaties van een SVM hangen sterk af van de keuze van hyperparameters. De regularisatieparameter C bepaalt de trade-off tussen een brede marge en het correct classificeren van alle trainingspunten. Een kleine C staat een grotere marge toe maar tolereert meer fouten; een grote C probeert alle punten correct te classificeren, wat tot overfitting kan leiden. Bij niet-lineaire kernels is er ook de gamma-parameter, die de invloed van een enkel trainingspunt bepaalt. Een lage gamma betekent een verre invloed, een hoge gamma een nabije invloed. Het kiezen van de juiste kernel en parameters gebeurt meestal via grid search met cross-validatie. SVM's zijn bijzonder geschikt voor problemen met veel features en weinig samples, zoals genomische data of tekstclassificatie. Ze zijn ook gebruikt voor gezichtsherkenning, handschriftherkenning en het detecteren van ziektes. Een nadeel is dat SVM's geen directe probabilistische uitvoer geven; men kan wel Platt scaling toepassen om kansen te schatten. Bovendien zijn ze rekenintensief bij grote datasets, omdat de complexiteit minimaal kwadratisch is in het aantal samples. Voor grote data zijn benaderingen zoals LinearSVC of SGDClassifier nodig. Desondanks blijft SVM een krachtig en elegant algoritme in het machine learning-arsenaal.