В тази статия ще говорим за много известен алгоритъм за машинно обучение, който се използва както за класификация, така и за регресия.

„Птиците от перушина се събират заедно“

Алгоритъмът KNN работи при предположението, че данните с подобни входове ще имат подобни изходи. Алгоритъмът KNN предполага, че подобни неща съществуват в непосредствена близост. С други думи, подобни неща са по-близо едно до друго.

Сега въпросът е как да се измерват приликите между точките?

Има много техники за намиране на това и може би сте запознати с някои от тях. Но това, което се използва по-често, е разстоянието между точките.

Измерване на разстояние:-

Един от елементарните методи за намиране на подобни точки от данни е да се намери разстоянието между тях, ако са близо, разстоянието ще бъде по-малко, което означава, че те принадлежат към един и същи клас. Напротив, ако разстоянието е много голямо, това означава, че те са различни и не принадлежат към един и същи клас.

Сега как да измерим разстоянието между точките?

Евклидово разстояние: -

Сега, изчакайте, не сме ли използвали това преди? Да, прав сте, ние го използваме от векове. Това е най-основната и най-къса техника за намиране на разстояние, дефинирана както следва:

Той е силно чувствителен към големи разлики. Тъй като квадратира разстоянията с големи разлики и оказва огромно влияние върху изчислението.

Разстояние до Манхатън: -

Нарича се още Градски блок, разстояние на такси такси, змийско разстояние или L1-норма, където отчита сумата от абсолютните разлики между координатите на точките.

Разстояние Минковски:-

Обобщената форма за намиране на разстояние между произволни две точки pи qе дадена по следния начин и се нарича също „Разстояние Минковски“:

Тази форма не прилича ли на Евклидова и Манхатън?

Можете да наречете тази формула коренна формула за намиране на разстояние между две точки. Euclidean и Manhattan са деца на тази коренна формула.

Ако тогава =1, то се нарича разстояние Манхатън.

Ако a =2 тогава, то се нарича Евклидово разстояние.

ако a =∞ тогава, то се нарича Чебишевско разстояние.

Чебишев Разстояние:-

За разстоянието на Чебишев разстоянието между две точки е най-голямата от техните разлики по всяко координатно измерение.

KNN алгоритъм: -

  • Заредете набора от данни с m примера в набора за обучение с n характеристики и различни класове/етикети.
  • Инициализирайте K (хиперпараметър), броя на съседите.
  • Изчислете разстоянието между точките от тестови данни и точките от данни за обучение.
  • Добавете разстоянието и индекса на примера към подредена колекция.
  • Сортирайте подредената колекция от разстояния и индекси от най-малкото към най-голямото (във възходящ ред) по разстоянията.
  • Изберете първите K записа от сортираната колекция.
  • Вземете етикетите на избраните K записи.
  • Ако е регресия, върнете средната стойност на K етикетите.
  • Ако класификация, върнете режима (клас с най-много гласове) на K етикетите.

Как да избера най-добрата стойност за K?

  • Ако K = 1 тогава, погледнете съседа и картографирайте точките от данни към същия клас (за класификация)/стойност (за регресия) като съседа.
  • Ако тогава K = 100, това ще направи модела твърде обобщен, с високо отклонение и недостатъчно оборудване. Ефективността на данните от теста и обучението няма да е добра.
  • ако K = m (брой примери в набора от данни), тогава съпоставете всички точки от данни към най-големия клас в набора от данни.

Настройка на параметъра K:-

  • Винаги се опитвайте да избирате странни стойности за K. Това помага да се развали връзката между класовете.
  • Опитайте да нанесете графика на процента на грешки в точките с данни за валидиране спрямо различните стойности за K.

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

  • Можете също да опитате за K =floor(sqrt(m)), където m е броят на примерите в набора от данни. Това е просто магическо число, което изглежда работи в повечето случаи.

Важно:-

Преди да използвате KNN, се уверете, че вашият набор от данни е напълно мащабиран.

Професионалисти:-

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

Минуси: -

  1. Лесно се влияе от отклонения или небалансиран набор от данни.
  2. Изчислително скъпо.
  3. Не се представя добре при огромни набори от данни.

Стига, нека го кодираме.

Изпълнение: -