Klassifikation & RegressionO: O(n*d) per forudsigelse

K-Nearest Neighbors

K-Nearest Neighbors (KNN) klassificerer et datapunkt baseret på hvad dens K nærmeste naboer i træningsdataen er. Algoritmen er intuitiv, kræver ingen egentlig træning og bruges bredt til anbefalingssystemer, mønstergenkendelse og som baseline i ML-projekter.

K-Nearest Neighbors er en af de ældste og mest intuitive algoritmer i machine learning. Grundidéen er så simpel at den kan forklares på ét minut: for at forudsige klassen af et nyt datapunkt findes de K punkter fra træningsdataen der ligger tættest på, og den mest almindelige klasse blandt dem vælges. Algoritmen blev formaliseret af Evelyn Fix og Joseph Hodges i 1951, og har været en fast bestanddel af statistik- og ML-litteraturen siden.

KNN adskiller sig fra de fleste andre algoritmer ved at være en instance-based eller lazy learner. Der er ingen egentlig træningsfase i klassisk forstand: algoritmen gemmer bare hele træningsdataen og udfører al beregningen ved forudsigelsestidspunktet. Dette gør træningen triviel, men gør inferens langsommere jo større træningsdataen bliver. Denne trade-off er central at forstå før KNN vælges til et produktionssystem.

Valget af afstandsmål påvirker resultatet markant. Euklidisk afstand er standardvalget for kontinuerte features og fungerer godt når alle dimensioner har sammenlignelig skala. Manhattan-afstand (også kaldet L1-afstand) er mere robust over for outliers og bruges ofte i højdimensionelle rum. Minkowski-afstand generaliserer begge to. For kategoriske features bruges Hamming-afstand, og for tekstdokumenter cosinus-lighed. Feature-skalering med StandardScaler eller MinMaxScaler er næsten altid nødvendig, da euklidisk afstand ellers domineres af features med stor numerisk rækkevidde.

Valget af K er den vigtigste hyperparameter. Et lille K (for eksempel K=1) gør modellen meget følsom over for støj og outliers, og skaber komplekse beslutningsgrænser der overfitter. Et stort K glatter grænserne ud, men risikerer at overse lokale mønstre og bias modellen mod majoritetsklassen. Standardpraksis er at teste K-værdier fra 1 til 20 med cross-validation og vælge den værdi der maksimerer valideringspræstationen. Et ulige K anbefales i binære klassifikationsproblemer for at undgå uafgjorte stemmer.

For regressionsproblemer beregnes forudsigelsen som gennemsnittet af de K nærmeste naboers target-værdier, eventuelt vægtet efter inverse afstand. Weighted KNN giver naboer der ligger tættere større indflydelse på forudsigelsen, hvilket ofte forbedrer præstationen på datasæt med varierende datatæthed.

KNN har alvorlige svagheder i højdimensionelle rum. Curse of dimensionality betyder at afstandsberegninger bliver mindre meningsfulde jo flere dimensioner data har: i 100 dimensioner er alle punkter nogenlunde lige langt fra hinanden, hvilket ødelægger algoritmens grundlogik. I praksis fungerer KNN bedst med under 30-50 features. Dimensionsreduktion med PCA eller feature selection kan afhjælpe dette, men i mange højdimensionelle domæner som tekst og billeder er andre algoritmer overlegne.

Beregningskompleksiteten ved forudsigelse er O(n*d) hvor n er antal træningspunkter og d er antal dimensioner. Dette bliver hurtigt en flaskehals: en model med 1 million træningspunkter og 50 features kræver 50 millioner beregninger for én forudsigelse. Approksimative nearest neighbor-strukturer som KD-trees, Ball trees og HNSW (Hierarchical Navigable Small World) reducerer denne kompleksitet til O(log n) på bekostning af eksakthed. Biblioteker som FAISS fra Meta og Annoy fra Spotify implementerer disse strukturer og gør KNN skalerbar til milliarder af vektorer.

Anvendelsesområder hvor KNN excellerer inkluderer anbefalingssystemer baseret på collaborative filtering, hvor lignende brugere eller produkter identificeres via nabosøgning i et embedding-rum. Semantisk søgning i moderne AI-systemer bruger KNN over embeddings genereret af transformer-modeller til at finde relevant kontekst. Retrieval-Augmented Generation (RAG) er i virkeligheden KNN oven på tekst-embeddings gemt i vektordatabaser som Pinecone, Weaviate eller Milvus.

Praktisk implementering i Python er triviel via scikit-learns KNeighborsClassifier og KNeighborsRegressor. Standardarbejdsflowet er: skalér features, split data i træning og test, træn modellen med fit-metoden (som blot gemmer data), forudsig med predict-metoden. Cross-validation via GridSearchCV finder optimalt K og optimalt afstandsmål. Hele processen tager sjældent mere end 20 linjer kode.

KNN forbliver relevant i 2026 primært på grund af embedding-revolutionen. Alle moderne AI-systemer med semantic search, RAG-pipelines eller similarity-based anbefalinger bruger KNN i deres kerne. Selvom algoritmen sjældent bruges direkte til klassifikation på strukturerede data hvor gradient boosting dominerer, er nabosøgning over vektorrepræsentationer blevet en af de mest udbredte ML-teknikker i produktion.

Sammenligning med konkurrerende algoritmer viser hvor KNN passer bedst ind. På strukturerede datasæt med under 10.000 rækker og et rimeligt antal features kan KNN konkurrere med Random Forest og gradient boosting, særligt hvis beslutningsgrænserne er komplekse og lokale. På meget store datasæt over 1 million rækker bliver KNN upraktisk uden approksimative nabosøgnings-strukturer. På tekst- og billeddata brugte man tidligere KNN med håndlavede features som bag-of-words eller SIFT, men transformer-baserede embeddings kombineret med approksimativ KNN har erstattet denne tilgang næsten helt.

Særtilfælde og variationer af KNN inkluderer flere praktisk relevante metoder. Radius-based neighbors bruger en fast afstandsradius i stedet for et fast K, hvilket kan være bedre når datatætheden varierer i feature-rummet. Metric learning kombinerer KNN med lærte afstandsfunktioner via neurale netværk, hvor modellen selv lærer hvilke features der er relevante for nabosøgning. Local outlier factor (LOF) er en anomalidetektions-algoritme baseret på KNN der identificerer punkter hvis lokale tæthed afviger markant fra deres naboers.

Historisk betydning af KNN må ikke undervurderes. Algoritmen har været fast pensum på universiteter siden 1970'erne og bruges stadig i moderne ML-kurser som den første klassifikationsmetode studerende møder. Dens intuitivitet gør den ideel til at introducere begreber som feature-skalering, cross-validation og bias-variance tradeoff uden at studerende først skal lære kompleks matematik. Selv i produktion fungerer KNN ofte overraskende godt som baseline der andre algoritmer skal slå, og en model der ikke kan overgå simpel KNN-klassifikation er sjældent klar til deployment.

// anvendelsesområder

Hvor bruges K-Nearest Neighbors?

AnbefalingssystemerSemantisk søgningRAG-pipelinesAnomalidetektion