Алгоритм k-ближайших соседей и локальные решения
Геометрическая интуиция, метрики расстояний.
Алгоритм k-ближайших соседей (k-Nearest Neighbors, k-NN) – один из самых интуитивных и при этом фундаментальных алгоритмов машинного обучения. Он почти не делает предположений о данных, не обучает параметрическую модель, а хранит обучающие данные и опирается на простую, почти геометрическую идею: похожие объекты должны иметь похожие ответы.
Именно поэтому k-NN особенно хорошо подходит для объяснения того, что такое локальные решения, почему геометрия данных важна и как выбор метрики расстояния напрямую влияет на результат.
Локальные решения вместо глобальной модели
В отличие от линейной или логистической регрессии, k-NN не пытается найти одну общую формулу для всех данных. У него нет коэффициентов, весов или оптимизируемой функции потерь в явном параметрическом виде.
Алгоритм работает иначе:
Мы сохраняем все обучающие данные.
Для нового объекта ищем k ближайших к нему примеров.
Принимаем решение, глядя только на этих соседей.
Это и есть локальное решение. Для каждой новой точки решение строится заново, исходя из её ближайшего окружения.
Можно сказать, что k-NN каждый раз отвечает на вопрос:
Что обычно происходит с объектами, похожими именно на этот?

Геометрическая интуиция k-NN
Рассмотрим самый простой случай – пространство из двух признаков. Каждый объект – это точка на плоскости. Тогда работа алгоритма выглядит буквально геометрически:
есть точка запроса
мы измеряем расстояния до всех остальных точек
выбираем k точек с минимальным расстоянием
Для классификации чаще всего используется голосование:
Для регрессии – усреднение:
Таким образом, решение определяется формой локального "облака" точек вокруг запроса.
Метрики расстояния: как мы определяем "близость"
Ключевой вопрос k-NN – что значит "ближайший"? Ответ задаётся метрикой расстояния.
Евклидово расстояние
Евклидово расстояние - самая распространённая метрика:
Она хорошо работает, когда:
признаки имеют одинаковый масштаб
пространство относительно низкой размерности (см. проклятие размерности ниже)
важна геометрическая форма облаков

Манхэттенское расстояние
Манхэттенское расстояние - это когда важнее не прямая линия, а сумма перемещений по осям:
Эта метрика часто используется, когда вклад каждого признака в расстояние аддитивен и имеет интерпретацию "стоимости шага".

Расстояние Минковского
Обобщающая форма для расстояния Минковского:
при p=2 получаем евклидово расстояние
при p=1 – манхэттенское
Выбор p позволяет плавно менять форму "окрестности" точки.

Косинусное расстояние
Когда важна не длина вектора, а направление. Формально это косинусное сходство, а не расстояние.
На практике в k-NN обычно используют косинусное расстояние:
Строго говоря, эта функция не является метрикой в математическом смысле, но широко используется на практике. Например: используется в задачах с текстами, эмбеддингами, рекомендациями, где абсолютные значения менее важны, чем относительные пропорции.

Выбор k, компромисс смещения и дисперсии
Параметр k определяет, насколько локальным будет решение.
Малое k (например, k=1):
очень чувствителен к шуму
низкое смещение, высокая дисперсия
Большое k:
решения более сглаженные
выше смещение, ниже дисперсия

k-NN – наглядный пример классического компромисса bias–variance.
Размерность и проклятие размерности
С ростом числа признаков возникает проблема, известная как проклятие размерности.
Интуитивно:
в высоких размерностях все точки становятся "далёкими"
различия между ближайшим и дальним соседом уменьшаются
метрики расстояния теряют выразительность
Для многих распределений в высоких размерностях наблюдается эффект, при котором отношение:
Это делает k-NN менее эффективным без:
нормализации признаков
отбора признаков
снижения размерности (PCA, autoencoders)
Почему k-NN важен концептуально
Несмотря на простоту и вычислительную дороговизну при прямом поиске на больших данных, k-NN остаётся ключевым алгоритмом для понимания машинного обучения:
он показывает разницу между локальными и глобальными моделями
делает геометрию данных зримой
подчёркивает роль метрик и масштабов
демонстрирует компромисс bias–variance без сложной математики
k-NN – это почти "честный" алгоритм. Он не прячет логику за весами и слоями, а напрямую говорит: посмотри на своих соседей.
Именно поэтому он так хорошо подходит для обучения интуиции, даже если в промышленном коде его используют не так часто.
Last updated