K-najbliższych sąsiadów (K-NN)

Czym jest algorytm K-NN?

K-najbliższych sąsiadów (ang. K-Nearest Neighbors, K-NN) to prosty, ale skuteczny algorytm uczenia maszynowego wykorzystywany do klasyfikacji i regresji. Działa na zasadzie „głosowania” lub średniej wartości cech jego \(k\)-najbliższych sąsiadów w przestrzeni cech, na podstawie zdefiniowanej metryki odległości.

Algorytm K-NN jest przykładem uczenia leniwego (ang. lazy learning), ponieważ nie buduje explicite modelu podczas treningu. Obliczenia są przeprowadzane dopiero podczas predykcji.

Kluczowe kroki algorytmu K-NN

  1. Definicja wartości \(k\):

    • Określenie liczby najbliższych sąsiadów, którzy będą brani pod uwagę przy klasyfikacji lub regresji.
  2. Obliczenie odległości:

    • Miara odległości między punktami w przestrzeni cech, np.:
      • Odległość euklidesowa: \[ d(x, y) = \sqrt{\sum_{i=1}^n (x_i - y_i)^2} \]
      • Odległość Manhattan: \[ d(x, y) = \sum_{i=1}^n |x_i - y_i| \]
      • Odległość Minkowskiego: \[ d(x, y) = \left( \sum_{i=1}^n |x_i - y_i|^p \right)^{1/p} \]
  3. Wybór najbliższych sąsiadów:

    • Znalezienie \(k\)-najbliższych punktów w zbiorze treningowym w stosunku do punktu, który chcemy sklasyfikować lub przewidzieć.
  4. Głosowanie lub predykcja:

    • Klasyfikacja: Punkt zostaje przypisany do klasy najczęściej występującej wśród sąsiadów.
    • Regresja: Punkt otrzymuje wartość będącą średnią wartości cech sąsiadów: \[ \hat{y} = \frac{1}{k} \sum_{i=1}^k y_i \]

Przykład działania K-NN (klasyfikacja)

Rozważmy zbiór danych z dwiema klasami: A i B. Dla nowego punktu obliczamy odległości do wszystkich punktów treningowych, wybieramy \(k = 3\) najbliższych sąsiadów i określamy klasę większościową.

Dane:

Punkt treningowy Klasa Współrzędne (x, y)
P1 A (1, 1)
P2 B (2, 2)
P3 A (3, 1)
P4 B (5, 5)

Nowy punkt:

Kroki:

  1. Oblicz odległości:

    • \(d(P_\text{new}, P1) = \sqrt{(3-1)^2 + (3-1)^2} = 2.83\)
    • \(d(P_\text{new}, P2) = \sqrt{(3-2)^2 + (3-2)^2} = 1.41\)
    • \(d(P_\text{new}, P3) = \sqrt{(3-3)^2 + (3-1)^2} = 2.00\)
    • \(d(P_\text{new}, P4) = \sqrt{(3-5)^2 + (3-5)^2} = 2.83\)
  2. Wybierz \(k = 3\) najbliższych sąsiadów:

    • \(P2, P3, P1\) (klasy: B, A, A).
  3. Głosowanie:

    • Klasa większościowa: A.

Wynik: Nowy punkt zostaje sklasyfikowany jako klasa A.

Zalety K-NN

Wady K-NN

Zastosowania K-NN

  1. Klasyfikacja obrazów:
    • Rozpoznawanie obiektów, takich jak cyfry czy twarze, na podstawie podobieństwa do obrazów treningowych.
  2. Rekomendacje produktów:
    • Sugerowanie produktów na podstawie zachowań użytkowników podobnych do użytkownika docelowego.
  3. Analiza zdrowotna:
    • Przewidywanie ryzyka chorób na podstawie danych pacjentów.
  4. Finanse:
    • Klasyfikacja klientów na podstawie ich historii kredytowej.

Wybór optymalnej wartości \(k\)

K-najbliższych sąsiadów to intuicyjny i skuteczny algorytm, szczególnie w problemach z dobrze zdefiniowaną metryką odległości. Jego prostota sprawia, że jest często wykorzystywany jako punkt wyjścia w analizie danych i budowie modeli uczenia maszynowego.