Основы ИИ

Что такое KNN (K-Ближайшие Соседи)?

mm
Добавьте Unite.AI в избранные источники в Google

Что такое K-Ближайшие Соседи (KNN)?

K-Ближайшие Соседи – это метод и алгоритм машинного обучения, который может быть использован для задач как регрессии, так и классификации. K-Ближайшие Соседи анализируют метки выбранного количества точек данных, окружающих целевую точку данных, чтобы сделать прогноз о классе, к которому принадлежит точка данных. K-Ближайшие Соседи (KNN) – это концептуально простой, но очень мощный алгоритм, и по этим причинам он является одним из наиболее популярных алгоритмов машинного обучения. Давайте глубже изучим алгоритм KNN и посмотрим, как он работает. Хорошее понимание того, как работает KNN, позволит вам оценить лучшие и худшие случаи использования KNN.

Обзор K-Ближайших Соседей (KNN)

Фото: Antti Ajanki AnAj via Wikimedia Commons, CC BY SA 3.0 (https://commons.wikimedia.org/wiki/File:KnnClassification.svg)

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

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

KNN – это алгоритм обучения с учителем, что означает, что примеры в наборе данных должны иметь присвоенные им метки/их классы должны быть известны. Есть два других важных аспекта, которые следует знать о KNN. Во-первых, KNN – это не-параметрический алгоритм. Это означает, что никаких предположений о наборе данных не делается при использовании модели. Вместо этого модель строится полностью из предоставленных данных. Во-вторых, нет разделения набора данных на обучающие и тестовые наборы при использовании KNN. KNN не делает обобщений между обучающим и тестовым наборами, поэтому все обучающие данные также используются, когда модель запрашивает сделать прогнозы.

Как работает алгоритм KNN

Алгоритм KNN проходит через три основные фазы, когда он выполняется:

  1. Установка K на выбранное количество соседей.
  2. Расчет расстояния между предоставленным/тестовым примером и примерами набора данных.
  3. Сортировка рассчитанных расстояний.
  4. Получение меток верхних K записей.
  5. Возвращение прогноза о тестовом примере.

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

Точные математические операции, используемые для выполнения KNN, различаются в зависимости от выбранной метрики расстояния. Если вы хотите узнать больше о том, как рассчитываются эти метрики, вы можете прочитать о некоторых из наиболее распространенных метрик расстояния, таких как евклидово, манхэттенское и минковское.

Почему значение K имеет значение

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

Фото: Agor153 via Wikimedia Commons, CC BY SA 3.0 (https://en.wikipedia.org/wiki/File:Map1NN.png)

Меньшие значения K означают, что прогнозы, которые делает KNN, менее стабильны и надежны. Чтобы понять, почему это так, рассмотрим случай, когда у нас есть 7 соседей вокруг целевой точки данных. Допустим, что модель KNN работает с значением K, равным 2 (мы просим ее посмотреть на двух ближайших соседей, чтобы сделать прогноз). Если подавляющее большинство соседей (пять из семи) принадлежат к классу Синий, но два ближайших соседа случайно являются Красными, модель предскажет, что запросный пример является Красным. Несмотря на прогноз модели, в таком сценарии Синий был бы лучшим прогнозом.

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

Преимущества и недостатки KNN

Давайте рассмотрим некоторые преимущества и недостатки модели KNN.

Преимущества:

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

KNN очень точен и прост в использовании. Он прост для интерпретации, понимания и реализации.

KNN не делает никаких предположений о данных, что означает, что его можно использовать для широкого спектра задач.

Недостатки:

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

KNN оказывается очень чувствительным к масштабу набора данных и может быть легко сбит с толку нерелевантными функциями по сравнению с другими моделями.

Сводка K-Ближайших Соседей (KNN)

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

Блогер и программист с специализацией в Machine Learning и Deep Learning темах. Daniel надеется помочь другим использовать силу ИИ для социального блага.