Алгоритм KNN предполагает, что подобные вещи существуют в непосредственной близости. KNN отражает идею сходства (иногда называемого расстоянием, близостью или близостью) с некоторыми математическими выражениями, которые мы, возможно, изучали в детстве, например, вычислением расстояния между точками на графике.

Алгоритм K-NN предполагает сходство между новым случаем/данными и доступными случаями и помещает новый случай в категорию, наиболее похожую на доступные категории.

Есть несколько показателей расстояния, которые мы можем вычислить для измерения близости. Вот три основных типа показателей расстояния:

  1. Евклидово расстояние:

2. Манхэттенское расстояние:

3. Расстояние Минковского:

Алгоритм K-NN:

  1. Выберите количество соседей K (значение по умолчанию: 5).
  2. Возьмите K ближайших соседей новой точки данных, используя любую метрику расстояния, описанную выше.
  3. Среди K соседей подсчитайте количество точек данных в каждой категории.
  4. Назначьте новую точку данных категории, в которой мы насчитали наибольшее количество соседей.

Вот о чем следует помнить:

  1. Когда мы уменьшаем значение K до 1, наши прогнозы становятся менее стабильными. Просто задумайтесь на минутку, представьте, что K=1, и у нас есть точка запроса, окруженная несколькими красными и одним зеленым, но зеленый — единственный ближайший сосед. Разумно было бы подумать, что точка запроса, скорее всего, красная, но поскольку K=1, KNN неправильно предсказывает, что точка запроса зеленая.
  2. И наоборот, по мере того, как мы увеличиваем значение K, наши прогнозы становятся более стабильными из-за голосования большинства / усреднения и, следовательно, с большей вероятностью делают более точные прогнозы (до определенного момента). В конце концов, мы начинаем наблюдать растущее число ошибок. Именно в этот момент мы знаем, что слишком далеко задвинули значение K.
  3. В тех случаях, когда мы получаем большинство голосов (например, выбираем режим в задаче классификации) среди меток, мы обычно делаем K нечетным числом, чтобы иметь возможность разрешения конфликтов.

Преимущества K-ближайших соседей:

  1. Алгоритм прост и легко реализуем.
  2. Нет необходимости строить модель, настраивать несколько параметров или делать дополнительные предположения.
  3. Алгоритм универсальный. Его также можно использовать для классификации, регрессии и поиска.
  4. Простота реализации для многоклассовых задач.

Недостатки K-ближайших соседей:

  1. Алгоритм становится значительно медленнее по мере увеличения количества примеров и/или предикторов/независимых переменных.
  2. Масштабирование объектов или однородные данные необходимы для вычисления и сравнения расстояний между точками данных.
  3. Оптимальный выбор K или ближайших соседей важен для классификации новой точки данных.
  4. Склонен к пропущенным значениям.

Реализация.Перейдите по следующей ссылке, чтобы узнать о реализации K-ближайших соседей в Python и R:

К-Ближайшие соседи