Алгоритм K-ближайших соседей, обычно называемый просто KNN, представляет собой алгоритм классификации. А классификация определяет, к какой группе должен быть отнесен элемент. Например, тип опухоли. Чтобы KNN работал, во-первых, нам нужны примеры с правильной группой, и это будет использоваться для прогнозирования будущих групп. то есть: в какой группе находятся будущие данные. Мы обычно упоминаем их как справочные данные.

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

K-NN для классификации.

Допустим, у нас есть две группы данных в обучающих данных (красный и зеленый). Желтый — это точка тестовых данных, которую необходимо классифицировать как красную или зеленую.

Давайте выберем K = 3, что означает, что нас интересует только поиск данных о трех верхних соседях. Во-первых, нам нужно найти расстояние между обучающими выборками и тестовыми данными. Для нахождения близости мы можем использовать любую из метрик расстояния, это: евклидово расстояние, манхэттен и т.д.

Пошаговый подход к K-NN (классификация).

1. Определить «К».

2. Оценить расстояние ч/б новых данных и обучающей выборки.

3. Отсортируйте расстояние.

4. Собрать класс топовых «К элементов».

5. Выберите большинство.

Пример. Допустим, у нас есть задача классификации документов с обучающими данными, имеющими два разных класса (c1, c2), обучающими данными x1,x2,x3,x4, и у нас есть новый документ xn с двумерной функцией (3,7 ). Давайте посмотрим, как мы можем назначить документ xn на c1 или c2.

Найдем евклидово расстояние между обучающими данными и тестовыми данными:

Теперь давайте отсортируем значения расстояния между xn и остальными обучающими данными. Верхние 3 точки данных — это x4,x3 и x1 с классом c1. Класс «c1» получает большинство, и новый документ xn относится к типу класса «c1».

Пример регрессии.

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

Шаг 1: Расстояние между p8 и остальной частью обучающего набора вычисляется с использованием евклидовой метрики.

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

Шаг 2: Отсортируйте 3 лучших ближайших соседа (K = 3).

Шаг 3: Предсказать вес p8, взяв среднее значение весов p7,p1,p8.

Как выбрать значение K в алгоритме K-NN?

Задача, связанная с алгоритмом K-NN, заключается в фиксации значения «K». Она не должна быть слишком высокой или слишком низкой! Небольшое значение k означает, что шум будет иметь большее влияние на результат, а большое значение делает его вычислительно затратным. Специалисты по данным обычно выбирают нечетное число, если количество классов равно 2, а другой простой подход к выбору k — установить k=sqrt(n).

следует учитывать несколько моментов:

  1. Значение K должно быть нечетным
  2. Значение K не должно быть кратно количеству классов
  3. Не должен быть слишком маленьким или слишком большим

K-значение и шум.

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

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

Почему шум?

Шум возникает, когда некоторые из помеченных точек обучающих данных могут быть окружены точками данных из других классов. это может быть по разным причинам:

  • Случайная ошибка в данных.
  • Недостаточно точек данных в определенном классе (изолированные точки данных).
  • Несбалансированные данные (слишком много примеров других классов).
  • Неполная система признаков в наборе данных, где данные связаны неизвестным признаком.

Как справиться с шумом?

Самый простой способ справиться с шумом — удалить выбросы, но это неэффективное решение. Затем идет метод локтя, чтобы найти оптимальное значение k. Поскольку обработка шума — это отдельная тема, я напишу статью о том, как справиться с шумом, и добавлю сюда ссылку как можно скорее.

Вы также можете подписаться на меня в LinkedIn, отправить мне электронное письмо напрямую, и я буду рад услышать от вас.