AI 101
Co je KNN (K-Nearest Neighbors)?

Co je K-Nearest Neighbors (KNN)?
K-Nearest Neighbors je technika a algoritmus strojového učení, který může být použit pro regresní a klasifikační úkoly. K-Nearest Neighbors zkoumá štítky zvoleného počtu datových bodů obklopujících cílový datový bod, aby mohl učinit předpověď o třídě, do které datový bod spadá. K-Nearest Neighbors (KNN) je konceptuálně jednoduchý, ale velmi silný algoritmus, a právě z těchto důvodů je jedním z nejpopulárnějších algoritmů strojového učení. Pojďme se podívat na algoritmus KNN a uvidíme, jak přesně funguje. Dobré pochopení toho, jak KNN funguje, vám umožní ocenit nejlepší a nejhorší případy použití KNN.
Přehled K-Nearest Neighbors (KNN)

Foto: Antti Ajanki AnAj via Wikimedia Commons, CC BY SA 3.0 (https://commons.wikimedia.org/wiki/File:KnnClassification.svg)
Pojďme si představit dataset na 2D rovině. Představte si skupinu datových bodů na grafu, rozložených po grafu v malých klastrách. KNN zkoumá rozložení datových bodů a v závislosti na argumentech daných modelu je rozděluje do skupin. Tyto skupiny jsou pak přiřazeny štítek. Hlavní předpoklad, který model KNN činí, je, že datové body/instance, které existují v blízkosti nhau, jsou velmi podobné, zatímco pokud je datový bod daleko od jiné skupiny, je odlišný od těchto datových bodů.
Model KNN počítá podobnost pomocí vzdálenosti mezi dvěma body na grafu. Čím větší je vzdálenost mezi body, tím méně jsou podobné. Existuje několik způsobů, jak počítat vzdálenost mezi body, ale nejčastěji používanou vzdáleností je Euclidean vzdálenost (vzdálenost mezi dvěma body v přímé linii).
KNN je algoritmus supervizovaného učení, což znamená, že příklady v datasetu musí mít přiřazeny štítky/svoje třídy musí být známy. Existují dvě další důležité věci, které je třeba znát o KNN. První, KNN je neparametrický algoritmus. To znamená, že nejsou učiněny žádné předpoklady o datasetu, když je model použit. Místo toho je model sestaven zcela z poskytnutých dat. Druhé, není rozdělení datasetu na trénovací a testovací sady, když se používá KNN. KNN nečiní žádné generalizace mezi trénovacím a testovacím souborem, takže všechna trénovací data jsou také použita, když je model požádán o předpověď.
Jak funguje algoritmus KNN
Algoritmus KNN prochází třemi hlavními fázemi, když je prováděn:
- Nastavení K na zvolený počet sousedů.
- Počítání vzdálenosti mezi poskytnutým/testovacím příkladem a příklady datasetu.
- Řazení vypočtených vzdáleností.
- Získání štítků top K položek.
- Vrácení předpovědi o testovacím příkladu.
V první fázi je K zvolen uživatelem a říká algoritmu, kolik sousedů (kolik okolních datových bodů) by mělo být zvažováno při renderování soudů o skupině, do které cílový příklad patří. Ve druhé fázi si všimněte, že model zkontroluje vzdálenost mezi cílovým příkladem a každým příkladem v datasetu. Vzdálenosti jsou pak přidány do seznamu a seřazeny. Poté je seřazený seznam zkontrolován a štítky pro top K prvky jsou vráceny. Jinými slovy, pokud je K nastaven na 5, model zkontroluje štítky top 5 nejbližších datových bodů k cílovému datovému bodu. Při renderování předpovědi o cílovém datovém bodu záleží na tom, zda je úkol regresní nebo klasifikační úkol. Pro regresní úkol se používá průměr top K štítků, zatímco pro klasifikační úkol se používá mód top K štítků.
Exactní matematické operace použité k provedení KNN se liší v závislosti na zvolené vzdálenosti. Pokud chcete se dozvědět více o tom, jak jsou metriky počítány, můžete si přečíst o některých z nejčastěji používaných vzdáleností, jako je Euclidean, Manhattan a Minkowski.
Proč je hodnota K důležitá
Hlavní limitací při použití KNN je, že může být zvolena nesprávná hodnota K (špatný počet sousedů, které mají být zvažovány). Pokud k tomu dojde, předpovědi, které jsou vráceny, mohou být podstatně odlišné. Je velmi důležité, aby při použití algoritmu KNN byla zvolena správná hodnota pro K. Chcete zvolit hodnotu K, která maximalizuje schopnost modelu učinit předpovědi na neviditelná data, zatímco snižuje počet chyb, které dělá.

Foto: Agor153 via Wikimedia Commons, CC BY SA 3.0 (https://en.wikipedia.org/wiki/File:Map1NN.png)
Nižší hodnoty K znamenají, že předpovědi renderované KNN jsou méně stabilní a spolehlivé. Abychom získali představu, proč tomu tak je, zvažte případ, kdy máme 7 sousedů kolem cílového datového bodu. Předpokládejme, že model KNN pracuje s hodnotou K 2 (žádáme ho, aby se podíval na 2 nejbližší sousedy, aby učinil předpověď). Pokud většina sousedů (pět ze sedmi) patří do třídy Blue, ale 2 nejbližší sousedi náhodou patří do třídy Red, model předpovědí, že dotazovaný příklad je Red. Přesto by Blue byla lepší předpověď.
Pokud je tomu tak, proč nevybrat nejvyšší hodnotu K, kterou můžeme? To je proto, že když modelu řekneme, aby zvažoval příliš mnoho sousedů, také sníží přesnost. Jakmile se radius, který KNN model zvažuje, zvětší, začne zvažovat datové body, které jsou blíže k jiným skupinám než k cílovému datovému bodu, a začne se objevovat nesprávná klasifikace. Například i když byl původně zvolen bod v jedné z červených oblastí výše, pokud je K nastaven příliš vysoko, model dosáhne do ostatních oblastí, aby zvažoval body. Při použití modelu KNN se zkoušejí různé hodnoty K, aby se zjistilo, která hodnota dává modelu nejlepší výkon.
Výhody a nevýhody KNN
Pojďme se podívat na některé z výhod a nevýhod modelu KNN.
Výhody:
KNN lze použít pro regresní a klasifikační úkoly, na rozdíl od některých jiných algoritmů supervizovaného učení.
KNN je velmi přesný a jednoduchý na použití. Je snadno interpretovatelný, pochopitelný a implementovatelný.
KNN nečiní žádné předpoklady o datech, což znamená, že jej lze použít pro širokou škálu problémů.
Nevýhody:
KNN ukládá většinu nebo všechna data, což znamená, že model vyžaduje大量 paměti a je výpočetně nákladný. Velké datasety mohou také způsobit, že předpovědi budou trvat dlouhou dobu.
KNN je velmi citlivý na měřítko datasetu a může být snadno ovlivněn irelevantními funkcemi ve srovnání s jinými modely.
Shrnutí K-Nearest Neighbors (KNN)
K-Nearest Neighbors je jeden z nejzákladnějších algoritmů strojového učení. Navzdory tomu, jak je KNN jednoduchý, je také velmi silný algoritmus, který poskytuje poměrně vysokou přesnost ve většině problémů. Když používáte KNN, ujistěte se, že experimentujete s různými hodnotami K, aby jste našli hodnotu, která poskytuje nejvyšší přesnost.












