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

"Рыбак рыбака слетается в стаю"

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

Теперь вопрос в том, как измерить сходство между точками?

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

Измерение расстояния:-

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

Как теперь измерить расстояние между точками?

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

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

Он очень чувствителен к большим различиям. Так как он возводит в квадрат расстояния с большими различиями и оказывает огромное влияние на расчет.

Манхэттен Расстояние:-

Его также называют City Block, Taxi Cab Distance, Snake Distance или L1-Norm, где он подсчитывает сумму абсолютных разностей между координатами точек.

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

Обобщенная форма для нахождения расстояния между любыми двумя точками pи qзадается следующим образом и также называется 'Расстояние Минковского':

Разве эта форма не похожа на евклидову и манхэттенскую?

Вы можете назвать эту формулу корневой формулой для нахождения расстояния между двумя точками. Евклидов и Манхэттен являются потомками этой корневой формулы.

Если a = 1, то это называется манхэттенским расстоянием.

Если a = 2, то это называется евклидовым расстоянием.

если a =∞, то это называется расстоянием Чебышева.

Чебышев Расстояние:-

Для расстояния Чебышева расстояние между двумя точками равно наибольшей их разности по любому координатному измерению.

Алгоритм КНН: -

  • Загрузите набор данных с m примерами в обучающем наборе с n функциями и разными классами/метками.
  • Инициализируйте K (гиперпараметр), количество соседей.
  • Вычислите расстояние между точками тестовых данных и точками обучающих данных.
  • Добавьте расстояние и индекс примера в упорядоченную коллекцию.
  • Отсортируйте упорядоченный набор расстояний и индексов от наименьшего к наибольшему (в порядке возрастания) по расстояниям.
  • Выберите первые K записей из отсортированной коллекции.
  • Получите метки выбранных записей K.
  • Если регрессия, верните среднее значение K меток.
  • Если классификация, верните режим (класс, имеющий наибольшее количество голосов) меток K.

Как выбрать лучшее значение для K?

  • Если K = 1, посмотрите на соседа и сопоставьте точки данных с тем же классом (для классификации)/значением (для регрессии), что и сосед.
  • Если K = 100, то это сделает модель слишком обобщенной с высоким смещением и недообучение. Производительность как на тестовых, так и на обучающих данных будет невысокой.
  • если K = m (количество примеров в наборе данных), то сопоставьте все точки данных с самым большим классом в наборе данных.

Настройка параметра K:-

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

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

  • Вы также можете попробовать K =floor(sqrt(m)), где m — количество примеров в наборе данных. Это просто волшебное число, которое работает в большинстве случаев.

Важный :-

Перед использованием KNN убедитесь, что ваш набор данных полностью масштабирован.

Плюсы:-

  1. KNN — это простой способ классификации данных.
  2. KNN можно использовать как для классификации, так и для регрессии.
  3. Это непараметрическое обучение. Он не делает никаких предположений о базовом распределении и не пытается его оценить.

Минусы:-

  1. На него легко влияют выбросы или несбалансированный набор данных.
  2. Вычислительно дорого.
  3. Плохо работает с огромными наборами данных.

Достаточно, давайте закодируем это.

Выполнение:-