Wprowadzenie
K-Nearest Neighbors (KNN), czyli K-najbliższych sąsiadów, to jeden z najprostszych i najbardziej intuicyjnych algorytmów uczenia maszynowego. Należy do rodziny algorytmów lazy learning – nie buduje modelu podczas treningu, tylko zapamiętuje wszystkie dane i oblicza predykcje dopiero w momencie zapytania.
Jak działa KNN?
Algorytm opiera się na zasadzie podobieństwa:
- Oblicz odległość między nowym przykładem a wszystkimi punktami w zbiorze treningowym
- Wybierz K najbliższych sąsiadów
- W przypadku klasyfikacji: dokonaj głosowania większościowego
- W przypadku regresji: oblicz średnią (lub ważoną średnią) wartości sąsiadów
Miary odległości
- Euclidean Distance (najpopularniejsza)
- Manhattan Distance
- Minkowski Distance
- Cosine Similarity (dla danych tekstowych/high-dimensional)
Zalety KNN
- Bardzo prosty i łatwy do zrozumienia
- Nie wymaga treningu (model jest danymi)
- Działa zarówno na klasyfikację, jak i regresję
- Dobrze radzi sobie z danymi nieliniowymi
- Łatwo dodać nowe dane
Ograniczenia
- Wolny przy dużych zbiorach danych (oblicza odległości do wszystkich przykładów)
- Przekleństwo wymiarowości (curse of dimensionality) – w wysokich wymiarach odległości tracą sens
- Wymaga skalowania cech (Standaryzacja / Normalizacja)
- Czuły na szum i dane odstające
- Duże zużycie pamięci (przechowuje cały zbiór treningowy)
Wybór parametru K
Wartość K jest hiperparametrem:
- Małe K (np. 1–5) → bardziej wrażliwy na szum
- Duże K → bardziej gładkie decyzje, ale może tracić lokalne wzorce
- Najczęściej dobiera się przez walidację krzyżową
Zastosowania
- Rozpoznawanie wzorców (np. systemy rekomendacyjne)
- Diagnostyka medyczna
- Wykrywanie anomalii
- Filtry spamowe
- Analiza obrazów (jako prosty baseline)
Aktualny status (2026)
Mimo rozwoju zaawansowanych algorytmów (XGBoost, LightGBM, sieci neuronowe), KNN nadal jest powszechnie używany jako szybki baseline i w sytuacjach, gdzie interpretowalność jest kluczowa. W praktyce często łączy się go z redukcją wymiarowości (PCA, UMAP) lub przybliżonymi metodami wyszukiwania sąsiadów (Annoy, FAISS, HNSW). Dla małych i średnich zbiorów danych KNN pozostaje jednym z najprostszych i najbardziej skutecznych rozwiązań.