Алгоритм k-ближайших соседей (k-NN) — это простой, но мощный метод контролируемого машинного обучения, используемый для классификации и регрессии. Основная интуиция, стоящая за k-NN, заключается в том, что похожие точки данных, вероятно, принадлежат к одному и тому же классу или имеют схожие выходные значения.

Алгоритм k-NN работает следующим образом:

  1. Определите количество рассматриваемых соседей, обозначенное «k».
  2. Для заданной точки входных данных рассчитайте расстояние между точкой входных данных и всеми другими точками данных в обучающем наборе данных. Общие показатели расстояния включают евклидово расстояние, манхэттенское расстояние и расстояние Минковского.
  3. Выберите точки данных «k» в наборе обучающих данных, которые находятся ближе всего к точке входных данных (т. е. имеют наименьшее расстояние).
  4. Для классификации назначьте точку входных данных классу, наиболее распространенному среди ее ближайших «k» соседей. Для регрессии назначьте точке входных данных среднее (или другое подходящее агрегирование) целевых значений ее ближайших соседей «k».

Алгоритм k-NN является непараметрическим, то есть он не делает никаких предположений об основном распределении данных. Это делает его гибким и способным обрабатывать сложные и нелинейные данные. Однако k-NN может быть чувствителен к выбору «k» и используемой метрики расстояния. Выбор подходящего значения для «k» и правильной метрики расстояния имеют решающее значение для производительности алгоритма.