K-najbliżsi sąsiedzi: kto jest blisko ciebie?
jeśli chodzisz na studia, prawdopodobnie brałeś udział w co najmniej kilku organizacjach studenckich. Rozpoczynam pierwszy semestr jako absolwent Rochester Tech i jest tu ponad 350 organizacji. Są one posortowane w różnych kategoriach w zależności od zainteresowań ucznia. Co definiuje te kategorie i kto mówi, która organizacja wchodzi do jakiej kategorii? Jestem pewien, że gdybyś zapytał ludzi prowadzących te organizacje, nie powiedzieliby, że ich org jest tak samo jak czyjeś orgie, ale w pewien sposób wiesz, że są podobne., Bractwa i Bractwa mają takie samo zainteresowanie greckim życiem. Piłka nożna i tenis klubowy mają takie samo zainteresowanie sportem. Grupa latynoamerykańska i grupa Azjatycka mają takie samo zainteresowanie różnorodnością kulturową. Być może, gdybyś zmierzył wydarzenia i spotkania prowadzone przez te organizacje, mógłbyś automatycznie dowiedzieć się, do jakiej kategorii należy dana organizacja. Użyję organizacji studenckich do wyjaśnienia niektórych pojęć K-najbliżsi sąsiedzi, prawdopodobnie najprostszy algorytm uczenia maszynowego tam. Budowanie modelu polega wyłącznie na przechowywaniu zbioru danych treningowych., Aby przewidzieć nowy punkt danych, algorytm znajduje najbliższe punkty danych w zbiorze danych treningowych — jego ” najbliższych sąsiadów.”
Jak to działa
w najprostszej wersji algorytm k-NN uwzględnia tylko jednego najbliższego sąsiada, czyli najbliższy punkt danych treningowych do punktu, dla którego chcemy dokonać prognozy. Przewidywanie jest wtedy po prostu znanym wynikiem dla tego punktu treningowego., Poniższy rysunek ilustruje to dla przypadku klasyfikacji na zbiorze danych forge:
tutaj dodaliśmy trzy nowe punkty danych, pokazane jako gwiazdki. Dla każdego z nich zaznaczyliśmy najbliższy punkt w zestawie treningowym. Przewidywanie algorytmu jeden-najbliższy-sąsiad jest etykietą tego punktu (pokazaną przez kolor krzyża).
zamiast brać pod uwagę tylko najbliższego sąsiada, możemy również rozważyć dowolną liczbę, k, sąsiadów., Stąd pochodzi nazwa algorytmu K-najbliższych sąsiadów. Rozważając więcej niż jednego sąsiada, używamy głosowania, aby przypisać Etykietę. Oznacza to, że dla każdego punktu testowego liczymy, ilu sąsiadów należy do klasy 0, a ilu sąsiadów należy do klasy 1. Następnie przypisujemy klasę, która jest częstsza: innymi słowy, klasę większości wśród K-najbliższych sąsiadów., Poniższy przykład używa pięciu najbliższych sąsiadów:
Widać, że przewidywanie nowego punktu danych w lewym górnym rogu nie jest takie samo jak przewidywanie, gdy użyliśmy tylko jednego sąsiada.
chociaż ta ilustracja dotyczy problemu klasyfikacji binarnej, ta metoda może być stosowana do zbiorów danych z dowolną liczbą klas., W przypadku większej liczby klas liczymy, ilu sąsiadów należy do każdej klasy i ponownie przewidujemy najczęściej spotykaną klasę.,łatwiejsza kolejność
Kod Pythona dla funkcji znajduje się tutaj:
zagłębimy się nieco głębiej w kod:
- funkcja knnclassify pobiera 4 wejścia: wektor wejściowy do klasyfikacji zwany a, pełną macierz przykładów szkoleniowych zwanych dataset, wektor etykiet zwany etykietami oraz K — liczbę najbliższych sąsiadów, których można użyć w głosowaniu., Wektor etykiet powinien mieć w sobie tyle elementów, ile jest wierszy w macierzy zbioru danych.
- obliczamy odległości między A A aktualnym punktem używając odległości euklidesowej.
- następnie sortujemy odległości w rosnącej kolejności.
- następnie najniższe odległości k są używane do głosowania na klasę A.
- następnie bierzemy słownik classCount i rozkładamy go na listę krotek, a następnie sortujemy krotki według 2 pozycji w krotce. Sortowanie odbywa się na odwrót, więc mamy największy do najmniejszego.,
- na koniec zwracamy Etykietę elementu występującego najczęściej.
implementacja za pomocą Scikit-Learn
teraz przyjrzyjmy się, jak możemy zaimplementować algorytm kNN za pomocą scikit-learn: