Лого на 91. НЕГ „Проф. Константин Гълъбов“

Избираем модул · Урок 13

k най-близки съседа

Алгоритъм без обучение: новият пример получава етикета на съседите си. Избор на k, значението на мащаба и защо простото понякога стига.

Алгоритъм, който не се обучава

Всички модели дотук търсеха параметри. k-NN не търси нищо. Той просто пази данните и когато дойде нов пример, поглежда кои примери са най-близо до него.

k най-близки съседа (k-NN)

За нов пример намери k-те най-близки примера от обучаващия набор и му дай етикета, който преобладава сред тях.

При k = 3 съседите са 2 червени и 1 син → новият пример е червен.
Единственото, което алгоритъмът прави, е да мери разстояния и да брои.

Обучението се състои в запомняне на данните — затова методът се нарича мързелив. Цялата работа се върши в момента на предсказването.

Целият алгоритъм в четири реда

  1. Пресметни разстоянието от новия пример до всеки обучаващ пример.
  2. Подреди по разстояние.
  3. Вземи първите k.
  4. Върни най-често срещания етикет сред тях (при регресия — средното от стойностите им).

Затова го пишем сами

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

Изборът на k

Малко k (например 1)Голямо k (например 50)
Границата между класоветенакъсана, следва всяка точкагладка
Шум и грешни етикетивлияят силносе заглушават
Рискпренастройваненедостатъчно обучение
Краен случайзапаметява даннитевръща най-многобройния клас винаги
  • k се избира с проби върху валидационна част, не наизуст.
  • При два класа се предпочита нечетно k, за да няма равен резултат.
  • Добра отправна точка е k около корен квадратен от броя примери.

Къде се проваля

Мащабът на признаците

k-NN е изцяло базиран на разстояние, затова е най-чувствителният към мащаба алгоритъм. Ако единият признак е заплата (хиляди), а другият — брой деца (единици), заплатата решава всичко. Нормализирането тук не е препоръка, а условие.

Много признаци

При десетки признаци всички точки започват да са приблизително еднакво далече една от друга и понятието „най-близък“ губи смисъл. Това явление се нарича проклятие на размерността.

Скорост

Обучението е мигновено, но всяко предсказание изисква обхождане на целия набор. При 100 000 примера и хиляди заявки в секунда това е неприемливо. Има ускорения (специални дървовидни структури), но границите остават.

Кога все пак е добър избор

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