Свържете се с нас

Какво е KNN (K-най-близки съседи)?

AI 101 г

Какво е KNN (K-най-близки съседи)?

mm
Обновено on

Какво е K-най-близки съседи (KNN)?

K-Nearest Neighbors е техника за машинно обучение и алгоритъм, който може да се използва както за задачи за регресия, така и за класификация. K-най-близки съседи изследва етикетите на избран брой точки от данни около целева точка от данни, за да направи прогноза за класа, в който попада точката от данни. K-Nearest Neighbors (KNN) е концептуално прост, но много мощен алгоритъм и поради тези причини е един от най-популярните алгоритми за машинно обучение. Нека се потопим дълбоко в алгоритъма на KNN и да видим как точно работи. Доброто разбиране на това как работи KNN ще ви позволи да оцените най-добрите и най-лошите случаи на използване на KNN.

Преглед на K-най-близките съседи (KNN)

Снимка: Antti Ajanki AnAj чрез Wikimedia Commons, CC BY SA 3.0 (https://commons.wikimedia.org/wiki/File:KnnClassification.svg)

Нека визуализираме набор от данни в 2D равнина. Представете си куп точки с данни върху графика, разпръснати по дължината на графиката в малки клъстери. KNN изследва разпределението на точките от данни и в зависимост от аргументите, дадени на модела, разделя точките от данни в групи. След това на тези групи се присвоява етикет. Основното предположение, което KNN моделът прави, е, че точки от данни/инстанции, които съществуват в непосредствена близост една до друга, са много сходни, докато ако точка от данни е далеч от друга група, тя е различна от тези точки от данни.

KNN модел изчислява сходството, като използва разстоянието между две точки на графика. Колкото по-голямо е разстоянието между точките, толкова по-малко си приличат. Има много начини за изчисляване на разстоянието между точките, но най-често срещаният показател за разстояние е просто евклидовото разстояние (разстоянието между две точки по права линия).

KNN е алгоритъм за контролирано обучение, което означава, че примерите в набора от данни трябва да имат присвоени етикети/техните класове трябва да са известни. Има още две важни неща, които трябва да знаете за KNN. Първо, KNN е непараметричен алгоритъм. Това означава, че не се правят предположения относно набора от данни, когато се използва моделът. По-скоро моделът е изграден изцяло от предоставените данни. Второ, няма разделяне на набора от данни на набори за обучение и тестове при използване на KNN. KNN не прави обобщения между набор за обучение и тестване, така че всички данни за обучение се използват и когато от модела се иска да прави прогнози.

Как работи KNN алгоритъм

Алгоритъмът KNN преминава през три основни фази, докато се изпълнява:

  1. Задаване на K на избрания брой съседи.
  2. Изчисляване на разстоянието между предоставен/тестов пример и примерите за набор от данни.
  3. Сортиране на изчислените разстояния.
  4. Получаване на етикетите на водещите K записи.
  5. Връща прогноза за тестовия пример.

В първата стъпка K се избира от потребителя и той казва на алгоритъма колко съседи (колко околни точки от данни) трябва да се вземат предвид, когато се прави преценка за групата, към която принадлежи целевият пример. Във втората стъпка имайте предвид, че моделът проверява разстоянието между целевия пример и всеки пример в набора от данни. След това разстоянията се добавят в списък и се сортират. След това сортираният списък се проверява и се връщат етикетите за горните K елемента. С други думи, ако K е зададено на 5, моделът проверява етикетите на първите 5 най-близки точки от данни до целевата точка от данни. Когато изобразявате прогноза за целевата точка от данни, има значение дали задачата е a регресия or класификация задача. За задача за регресия се използва средната стойност на горните K етикети, докато режимът на най-горните K етикети се използва в случай на класификация.

Точните математически операции, използвани за извършване на KNN, се различават в зависимост от избраната метрика на разстоянието. Ако искате да научите повече за това как се изчисляват показателите, можете да прочетете за някои от най-често срещаните показатели за разстояние, като напр. евклидов, Манхатън, и Минковски.

Защо стойността на K има значение

Основното ограничение при използване на KNN е, че може да бъде избрана неправилна стойност на K (грешен брой съседи, които трябва да се вземат предвид). Ако това се случи, прогнозите, които се връщат, могат да бъдат значително отклонени. Много е важно, когато използвате алгоритъм KNN, да бъде избрана правилната стойност за K. Искате да изберете стойност за K, която увеличава максимално способността на модела да прави прогнози върху невидяни данни, като същевременно намалява броя на грешките, които прави.

Снимка: Agor153 чрез Wikimedia Commons, CC BY SA 3.0 (https://en.wikipedia.org/wiki/File:Map1NN.png)

По-ниските стойности на K означават, че прогнозите, направени от KNN, са по-малко стабилни и надеждни. За да получите интуиция защо това е така, помислете за случай, в който имаме 7 съседи около целева точка от данни. Да приемем, че моделът KNN работи със стойност на K 2 (ние го молим да погледне двата най-близки съседа, за да направи прогноза). Ако по-голямата част от съседите (пет от седем) принадлежат към синия клас, но двамата най-близки съседи просто са червени, моделът ще предвиди, че примерът на заявката е червен. Въпреки предположението на модела, в такъв сценарий Blue би било по-добро предположение.

Ако случаят е такъв, защо просто не изберем най-високата стойност на K, която можем? Това е така, защото казването на модела да вземе предвид твърде много съседи също ще намали точността. Тъй като радиусът, който моделът KNN разглежда, се увеличава, той в крайна сметка ще започне да разглежда точки от данни, които са по-близо до други групи, отколкото са целевата точка от данни, и ще започне да се случва грешна класификация. Например, дори ако първоначално избраната точка е била в една от червените области по-горе, ако K е зададено твърде високо, моделът ще достигне до другите региони, за да вземе предвид точките. Когато се използва KNN модел, се опитват различни стойности на K, за да се види коя стойност дава на модела най-добра производителност.

Плюсове и минуси на KNN

Нека разгледаме някои от плюсовете и минусите на модела KNN.

Плюсове:

KNN може да се използва както за задачи за регресия, така и за класификация, за разлика от някои други алгоритми за контролирано обучение.

KNN е много точен и лесен за използване. Лесно е за тълкуване, разбиране и прилагане.

KNN не прави никакви предположения относно данните, което означава, че могат да се използват за голямо разнообразие от проблеми.

Минуси:

KNN съхранява повечето или всички данни, което означава, че моделът изисква много памет и е скъп от изчисления. Големите набори от данни също могат да доведат до това, че прогнозите отнемат много време.

KNN се оказва много чувствителен към мащаба на набора от данни и може да бъде отхвърлен от неподходящи функции доста лесно в сравнение с други модели.

Резюме на K-най-близките съседи (KNN)

K-Nearest Neighbors е един от най-простите алгоритми за машинно обучение. Независимо от това колко прост е KNN, в концепцията си той също е мощен алгоритъм, който дава доста висока точност при повечето проблеми. Когато използвате KNN, не забравяйте да експериментирате с различни стойности на K, за да намерите числото, което осигурява най-висока точност.

Блогър и програмист със специалности в Machine Learning намлява Дълбоко обучение теми. Даниел се надява да помогне на другите да използват силата на ИИ за социално благо.