📊 k найближчих сусідів
Класифікуйте точку голосуванням k найближчих позначених сусідів. Області рішення оновлюються наживо при зміні k, метрики чи даних — побачите перенавчання при k=1 і згладження зі зростанням k.
Про цю симуляцію
Ця симуляція — інтерактивний класифікатор k найближчих сусідів (k-NN): клацайте, щоб додавати позначені точки, спостерігайте, як формуються області рішення, опитуйте тестову точку та стежте за точністю LOOCV. Це «лінивий» алгоритм навчання без явної фази тренування — він просто зберігає всі точки та класифікує нові за голосуванням найближчих сусідів.
🔬 Що це показує
Двовимірну площину, розфарбовану областями рішення класифікатора k-NN: колір кожної ділянки відповідає класу, який отримає більшість голосів серед k найближчих позначених точок у цій зоні. Змінюючи k, метрику відстані чи саму точку запиту, ви одразу бачите, як переформовуються межі між класами.
🎮 Як користуватися
Оберіть готовий набір даних або клас для нових точок і клацайте на полотні, щоб додавати позначені точки. Налаштуйте k, метрику відстані (евклідова, Манхеттен тощо), увімкніть зважене голосування або перемикніть відображення областей рішення. Кнопки очищення й рандомізації дозволяють швидко перебудувати набір даних і спостерігати, як точність LOOCV (leave-one-out cross-validation) змінюється залежно від параметрів.
💡 Чи знали ви?
k-NN — один із найстаріших і найпростіших алгоритмів машинного навчання: він взагалі не «навчається» у звичному сенсі, а лише запам'ятовує всі приклади й відкладає всі обчислення до моменту прогнозування, тому його називають «лінивим навчанням» (lazy learning). Це робить його інтуїтивно зрозумілим, але дорогим у обчисленні на великих наборах даних, оскільки кожен прогноз вимагає порівняння з усіма збереженими точками.
Поширені запитання
Як k-NN робить прогноз для нової точки даних?
k-NN обчислює відстань від нової точки до кожної точки навчального набору, визначає k найближчих із них і присвоює клас за голосуванням більшості серед їхніх міток. Для регресії він усереднює цільові значення k сусідів. Вибір k визначає компроміс між недонавчанням (велике k, дуже гладка межа) і перенавчанням (мале k, «шумна» межа).
Як обрати найкраще значення k?
k обирають за допомогою крос-валідації: навчають модель на частині даних, перевіряють на відкладеній валідаційній вибірці й оцінюють точність для різних значень k. Зазвичай k беруть непарним, щоб уникнути нічиїх при голосуванні, а k=√n (де n — розмір навчального набору) — поширене емпіричне правило. Оптимальне k балансує зміщення (занадто велике k надто згладжує межу) та дисперсію (занадто мале k дає «шумну» межу).
Які метрики відстані використовуються в k-NN?
Евклідова відстань (пряма лінія між точками) використовується за замовчуванням. Манхеттенська відстань (сума модулів різниць) корисна, коли ознаки мають різні одиниці виміру або дані мають сітчасту структуру. Відстань Мінковського узагальнює обидві. Для текстових чи категоріальних даних доречнішими можуть бути відстань Геммінга або косинусна подібність. Масштабування ознак (нормалізація чи стандартизація) є обов'язковим кроком перед обчисленням відстаней.
Що таке прокляття вимірності і як воно впливає на k-NN?
У просторах високої вимірності всі точки даних стають приблизно рівновіддаленими одна від одної, через що саме поняття «найближчих сусідів» втрачає сенс. Зі зростанням кількості вимірів об'єм простору зростає експоненційно, тоді як обсяг даних лишається тим самим, тож околиці мають розширюватися до величезних розмірів, щоб охопити хоч якісь точки. Без зменшення розмірності якість k-NN різко падає вже приблизно після 10–20 вимірів.
Чим k-NN відрізняється від кластеризації k-means?
k-NN — це алгоритм навчання з учителем для класифікації або регресії: він використовує позначені навчальні дані, щоб прогнозувати мітки для нових точок. K-means — це алгоритм кластеризації без учителя: він знаходить природні групи в непозначених даних. Попри спільну літеру k (і те, що обидва методи оперують відстанями та сусідами), вони вирішують абсолютно різні задачі з різними припущеннями та методами.