Support Vector Machines blev udviklet af Vladimir Vapnik og Corinna Cortes i 1990'erne og var en af de dominerende machine learning-algoritmer indtil deep learning tog over i midten af 2010'erne. SVM er stadig relevant i dag, særligt i domæner med mindre datasæt og højdimensionelle features.
Grundtanken i SVM er at finde det hyperplan der bedst adskiller to klasser i feature-rummet. Med to features er hyperplanet en linje, med tre features et plan, og med flere features et abstrakt hyperplan. Det optimale hyperplan er ikke bare et hvilket som helst der adskiller klasserne - det er det der maksimerer marginen, altså afstanden fra hyperplanet til de nærmeste datapunkter fra hver klasse.
Disse nærmeste punkter kaldes support vectors og giver algoritmen dens navn. Kun disse få punkter definerer det endelige hyperplan - de øvrige datapunkter er irrelevante for beslutningen. Dette gør SVM særligt memory-effektiv efter træning, da kun support vectors skal gemmes.
Den geometriske intuition er kraftfuld: ved at maksimere marginen skaber SVM den mest robuste grænse mellem klasser. Datapunkter der ligger tæt på grænsen er de sværeste at klassificere, og ved at holde disse så langt væk som muligt reducerer man risikoen for fejlklassifikation af nye, usete datapunkter.
I virkelige datasæt er klasser sjældent perfekt lineært adskillelige. Soft margin SVM tillader nogle datapunkter at bryde marginen eller endda blive fejlklassificeret, mod en straf i loss-funktionen. Hyperparameteren C styrer balancen mellem margin-størrelse og accept af fejlklassifikationer. Høj C betyder streng straf og potentielt overfitting, lav C giver bredere margin og bedre generalisering.
Kernel-tricket er SVM's virkelige superkraft. Ved at anvende en kernel-funktion kan algoritmen implicit projicere data ind i højere-dimensionelle rum hvor lineær adskillelse bliver mulig, uden faktisk at beregne koordinaterne i det højere rum. Populære kernels inkluderer: lineær kernel (til lineært adskillelige data), polynomial kernel (til polynomielle sammenhænge), RBF/Gaussian kernel (den mest fleksible, håndterer komplekse ikke-lineære grænser) og sigmoid kernel.
RBF-kernelen er standardvalget i de fleste tilfælde. Den har en hyperparameter gamma der styrer hvor langt indflydelsen af et enkelt træningseksempel når. Lav gamma giver en bred, glat beslutningsgrænse, mens høj gamma skaber en mere kompleks, snoet grænse der kan overfitte.
SVM er særligt stærk i højdimensionelle rum hvor antallet af features overstiger antallet af observationer. Dette gør den populær i tekstklassifikation (hvor hvert ord er en feature) og bioinformatik (genekspressions-analyse). Algoritmen håndterer godt små datasæt (100-10.000 datapunkter) og er teoretisk velfunderet gennem statistisk læringsteori.
Til multiclass-problemer bruges enten one-vs-rest (én binær klassifikator pr. klasse) eller one-vs-one (én klassifikator pr. klassepar). Support Vector Regression (SVR) udvider konceptet til regressionsproblemer ved at forsøge at holde forudsigelser inden for en epsilon-margin fra de faktiske værdier.
Praktiske anvendelser inkluderer: e-mail spam-detektion, ansigtsgenkendelse, håndskriftsgenkendelse (SVM er stadig konkurrencedygtig på MNIST), proteinklassifikation og sentimentanalyse. Scikit-learns SVC-implementering og LibSVM er de mest udbredte biblioteker.
Begrænsninger ved SVM er tydelige: træningstiden skalerer dårligt med datasætstørrelse (typisk O(n²) til O(n³)), hvilket gør algoritmen upraktisk på meget store datasæt. Den er også følsom over for feature-skalering, så StandardScaler eller MinMaxScaler bør altid anvendes før træning. Fortolkeligheden er begrænset ved brug af ikke-lineære kernels, da beslutningsgrænsen ikke længere kan udtrykkes med simple regler.
Matematisk formuleres SVM som et konvekst optimeringsproblem. Målet er at minimere ½||w||² underlagt betingelsen at yᵢ(w·xᵢ + b) ≥ 1 for alle træningseksempler. Denne formulering løses via Lagrange-multiplikatorer og fører til det duale problem hvor kernel-tricket kan anvendes. Sekventielle Minimale Optimering (SMO), udviklet af John Platt hos Microsoft i 1998, er den standard-algoritme der bruges i praksis. SMO opdeler det store optimeringsproblem i mange små to-variabel-problemer der kan løses analytisk.
Hyperparameter-tuning er kritisk for SVM's præstation. C og gamma skal typisk søges over flere størrelsesordener (10⁻³ til 10³) via grid search kombineret med cross-validation. En vigtig observation er at optimale C- og gamma-værdier er koblede - ændring af den ene kræver ofte justering af den anden. Automatiseret hyperparameter-optimering med Bayesian metoder som Gaussian Processes har vist sig at være markant mere effektiv end grid search for SVM.
Sammenligning med moderne alternativer viser hvor SVM stadig er relevant. På strukturerede data med under 10.000 observationer og over 100 features kan SVM med RBF-kernel matche eller overgå gradient boosting. På tekstklassifikation med bag-of-words eller TF-IDF features er lineær SVM stadig konkurrencedygtig med deep learning, særligt når træningsdata er begrænset. På billeder er SVM blevet komplet erstattet af CNN'er - forsøg på SVM med håndlavede features (HOG, SIFT) er sjældne i moderne systemer.
Historisk betydning må ikke undervurderes. Fra midten af 1990'erne til begyndelsen af 2010'erne var SVM den mest citerede ML-algoritme i videnskabelige publikationer. Vapniks statistiske læringsteori, der ligger bag SVM, gav machine learning et solidt matematisk fundament og inspirerede senere teoretiske frameworks. Selv i deep learning-æraen er SVM stadig pensum på universiteter som en fundamental algoritme der lærer studerende om marginer, kernels og konvekse optimeringsproblemer.
Praktiske implementeringer af SVM findes i alle store ML-biblioteker. Scikit-learns SVC og LinearSVC dækker de fleste use cases i Python. LibSVM er den originale C-implementation der bruges internt af mange biblioteker. ThunderSVM tilbyder GPU-accelereret træning der kan være 10-100 gange hurtigere end CPU-baserede implementeringer på mellemstore datasæt.