Základy AI
Co je K-Nearest Neighbors (KNN)?
Co je K-Nearest Neighbors (KNN)?
K-Nearest Neighbors je technika a algoritmus strojového učení, který lze použít pro regresní i klasifikační úkoly. K-Nearest Neighbors zkoumá označení vybrané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 patří. K-Nearest Neighbors (KNN) je konceptuálně jednoduchý, ale velmi silný algoritmus, a právě z toho důvodu je jedním z nejpopulárnějších algoritmů strojového učení. Pojďme se podívat na KNN algoritmus a uvidíme, jak přesně funguje. Dobré pochopení toho, jak KNN funguje, vám umožní ocenit nejlepší a nejhorší 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, rozdělí datové body do skupin. Tyto skupiny jsou poté označeny štítkem. 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ěch 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álenostní metrikou 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/jejich třídy musí být známy. Existují dvě další důležité věci, které je třeba vědět o KNN. První, KNN je neparametrický algoritmus. To znamená, že nejsou učiněny žádné předpoklady o datasetu, když se model používá. Místo toho je model vytvořen 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í a testovací sadou, takže všechna trénovací data se také používají, když se model žádá o předpověď.
Jak KNN algoritmus funguje
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 zadaným/testovacím příkladem a příklady v 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ím kroku je K zvoleno uživatelem a říká algoritmu, kolik sousedů (kolik okolních datových bodů) by mělo být zvažováno, když je učiněna předpověď o skupině, do které cílový příklad patří. Ve druhém kroku 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 poté přidány do seznamu a seřazeny. Poté je seřazený seznam zkontrolován a štítky pro top K prvků jsou vráceny. Jinými slovy, pokud je K nastaveno na 5, model zkontroluje štítky 5 nejbližších datových bodů k cílovému datovému bodu. Když je učiněna předpověď o cílovém datovém bodu, záleží na tom, zda je úkol regresní nebo klasifikační. 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ů.
Precizní matematické operace použité pro provedení KNN se liší v závislosti na zvolené vzdálenostní metrice. 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álenostních metrikách, jako je Euclidean, Manhattan a Minkowski.
Proč hodnota K záleží
Hlavní omezení 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é činí.

Foto: Agor153 via Wikimedia Commons, CC BY SA 3.0 (https://en.wikipedia.org/wiki/File:Map1NN.png)
Nízké hodnoty K znamenají, že předpovědi učiněné KNN jsou méně stabilní a spolehlivé. Abychom získali představu, proč tomu tak je, zvažme 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 zkontroloval 2 nejbližší sousedy, aby učinil předpověď). Pokud většina sousedů (5 z 7) patří do třídy Modrá, ale 2 nejbližší sousedi náhodou patří do třídy Červená, model předpoví, že cílový příklad patří do třídy Červená. Přes předpověď modelu by však Modrá byla lepší předpověď.
Pokud je tomu tak, proč nevybrat nejvyšší hodnotu K, kterou můžeme? To je proto, že říci modelu, aby zvažoval příliš mnoho sousedů, také sníží přesnost. Jak se zvyšuje poloměr, který model KNN zvažuje, 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 vyskytovat nesprávná klasifikace. Například i když byl původně zvolen bod v jedné z červených oblastí výše, pokud je K nastaveno 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 poskytuje modelu nejlepší výkon.
Výhody a nevýhody KNN
Požďme se podívat na některé z výhod a nevýhod modelu KNN.
Výhody:
KNN lze použít pro regresní i 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 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 dlouho.
KNN se ukáže jako 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 jedním z nejjednodušších algoritmů strojového učení. Přes svou jednoduchost je KNN silný algoritmus, který poskytuje poměrně vysokou přesnost na většině problémů. Když používáte KNN, měli byste experimentovat s různými hodnotami K, aby jste našli číslo, které poskytuje nejvyšší přesnost.












