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

Следующие два свойства хорошо определяют KNN:

· Алгоритм ленивого обучения. KNN – это алгоритм ленивого обучения, поскольку он не имеет специальной фазы обучения и использует все данные для обучения во время классификации.

· Алгоритм непараметрического обучения — KNN также является алгоритмом непараметрического обучения, поскольку он ничего не предполагает о базовых данных.

Просто для справки, это то место, где KNN позиционируется в алгоритме обучения scikit. Проверьте документацию scikit-learn. Я предлагаю пойти и посмотреть.

РАБОТА KNN:

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

Например:

Представьте, что у нас есть воображаемые данные о собаках и лошадях с их ростом и весом. Если мы нарисуем их, это будет выглядеть примерно так.

Итак, это мнимые данные, поэтому не беспокойтесь о весе и росте. Очевидно, что у вас не будет собаки весом 500 фунтов. Но здесь у нас есть красные точки, обозначающие лошадей, и синие точки, обозначающие собак. Это наши тренировочные данные, но мы хотим знать, получаем ли мы животное, для которого мы знаем только рост и вес, мы хотим предсказать, является ли эта новая точка данных лошадью или собакой (прогнозирование средней зеленой точки). Здесь мы просто пытаемся классифицировать эту новую точку данных. Предсказать некоторые моменты несложно. Например, эта верхняя точка зеленого цвета, вероятно, будет лошадью, поскольку все точки вокруг нее являются точками красной лошади. Точно так же все точки в левом нижнем углу этого зеленого цвета, вероятно, будут собакой, поскольку все ближайшие точки к ней - все синие точки, указывающие на их головорезов. Итак, здесь вступает в игру алгоритм K-ближайшего.

Алгоритм прогнозирования работает следующим образом:

  1. Вы вычисляете расстояние от X до всех точек в ваших данных X, указывающих на эту конкретную новую точку данных.
  2. Отсортируйте точки в ваших данных по возрастанию расстояния от x.
  3. Предсказать метку большинства ближайших точек «k».

Выбор значения K повлияет на то, к какому классу относится новая точка:

Если мы оглянемся назад на нашу лошадь и собаку, мы увидим эффект аплодисментов от различных значений k.

Если мы выберем k=1, мы увидим, что присутствует много шума. Однако, если мы будем увеличивать значение k, мы заметим более гладкую кривую и создадим большее смещение в этой модели. Итак, выберите то значение k, которое дает наилучший результат.

КАК ВЫБРАТЬ ЗНАЧЕНИЕ K!!

Прямого метода для нахождения наилучшего значения K не существует. Нам нужно выяснить это с помощью различных значений методом проб и ошибок, предполагая, что обучающие данные неизвестны.

Лучше всего мне нравится использовать метод локтя. По сути, это график между частотой ошибок и k числами. Пример на гитхабе

Итак, здесь лучшее значение k лежит где-то между 20 и 30. Нам нужно сначала попробовать их. Скорее всего, они дают лучший результат в вашей системе прогнозирования.

Плюсы и минусы КНН:

Плюсы:

  1. Легко реализовать.
  2. Обучение банальное.
  3. Работает с любым количеством классов.
  4. Легко добавить больше данных

Минусы:

  1. Высокая стоимость прогноза (хуже для больших наборов данных)
  2. Плохо с многомерными данными.
  3. Категориальные функции работают плохо.

Я надеюсь, что это поможет понять, что такое алгоритм K-Nearest Neighbor. Для лучшего понимания и тестирования на вашем устройстве ознакомьтесь с моей ссылкой на github.

ЗАКЛЮЧЕНИЕ:

Итак, здесь мы узнали об алгоритме K-ближайшего соседа и о том, как этот алгоритм работает. Мы также узнали, как выбрать лучшее значение k для вашей модели.

Это мой первый средний пост. Я надеюсь, вы поняли то, что объяснил выше. По любым вопросам или сомнениям не стесняйтесь комментировать ниже.