K-Nearest Neighbors (KNN)

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:

  1. Oblicz odległość między nowym przykładem a wszystkimi punktami w zbiorze treningowym
  2. Wybierz K najbliższych sąsiadów
  3. W przypadku klasyfikacji: dokonaj głosowania większościowego
  4. 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ń.