Ближайшие соседи? Насколько близко эти соседи? Что ж, надеюсь, они не кусаются!

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

KNN, что означает K-ближайшие соседи, представляет собой алгоритм машинного обучения, широко используемый для классификации. Это работает подобно поговорке: «Рыбаки одного полета слетаются в стаю».
Ну вот и все. Вот что такое KNN и как он работает в двух словах.
Просто. Пока!

Чувак?
~
Хорошо Хорошо!

СХЕМА:

  • Что такое КНН?
  • Свойства КНН
  • Алгоритм KNN
  • Выбор оптимального К
  • Метрики расстояния
  • Подготовка данных для КНН
  • Плюсы и минусы использования KNN

1. Итак, что такое КНН?

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

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

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

На приведенном выше рисунке нам нужно классифицировать новую контрольную точку в любом из классов A или B на основе признаков/предикторов — x1 и x2. Предположим, мы выбираем значение K, равное 5. Выбираются 5 ближайших к контрольной точке точек. Поскольку среди этих 5 ближайших точек большинство (3) попадают в категорию B, то новая контрольная точка будет помечена как категория B.

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

2. Свойства КНС

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

  1. Обучение на основе памяти или обучение на основе экземпляров.Алгоритм KNN работает таким образом, что он использует/запоминает весь набор обучающих данных для прогнозирования. Когда приходит экземпляр новой контрольной точки, он обобщает этот новый экземпляр на основе сходства данных обучения. Он называется основанным на экземплярах, потому что он строит гипотезы на основе обучающих экземпляров.
  2. Ленивый ученик: KNN часто называют ленивым учеником, поскольку модель не изучается во время обучения. Обучение происходит, когда запрашивается прогноз для новой контрольной точки. Это делает процесс обучения быстрым, а процесс тестирования — медленным и требующим памяти из-за вычислений, происходящих под капотом во время прогнозирования.
  3. Непараметрический обучаемый алгоритм. KNN — это непараметрический алгоритм. Это означает, что ему не нужно оценивать или минимизировать/максимизировать какие-либо параметры — коэффициенты и константы, как в линейной регрессии/логистической регрессии, например: (a, b; for y = ax +b)

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

3. Алгоритмическая работа KNN

Алгоритм KNN довольно прост и понятен:

  • Для каждой точки в наборе обучающих данных рассчитайте расстояние от контрольной точки (для этой цели чаще всего используется евклидово расстояние).
  • сохранить эти расстояния в упорядоченном списке dict/list
  • отсортировать расстояния в порядке возрастания их значений
  • выберите первые K точек (k-ближайшие к тестовым данным) из списка
  • на основе типа проблемы (регрессия/классификация) сделайте соответствующие прогнозы из этих k ближайших точек

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

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

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

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

Будучи непараметрическим учащимся, этот алгоритм также не имеет функций потерь или затрат.

О-о-о!!!
~Да, да, я знаю!

4. Выбор оптимального значения K

Теперь самое интересное!

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

Вот некоторые моменты, которые нам необходимо рассмотреть перед выбором оптимального K:

  • Предпочтителен выбор нечетного значения K. Потому что легче найти моду и медиану данных с нечетными числами.
  • По мере того, как K уменьшается, модель имеет тенденцию иметь меньшую погрешность и высокую дисперсию и, следовательно, может переоснащать данные. .
    Для небольшого K алгоритм выберет точки, наиболее близкие к контрольной точке. Это, в свою очередь, уменьшит ошибку прогнозирования, поскольку более близкие точки будут классифицировать контрольную точку в абсолютной окрестности.
    Под абсолютной близостью я подразумеваю, что для контрольной точки, окруженной 1000 точками, маленький K (скажем, 2) будет смотреть только на две ближайшие точки к контрольной точке. Это означает, что мы не обобщаем нашу модель, а улавливаем шум вместе с информацией. Это уменьшит ошибку (смещение), но увеличит изменчивость нашей модели (дисперсию) для новой контрольной точки. Следовательно, модель переоснащена.
  • По мере увеличения K модель имеет тенденцию к высокому смещению и низкой дисперсии и, следовательно, может недостаточно соответствовать data.
    По мере увеличения K модель начинает терять шум и имеет тенденцию становиться более общей для новых контрольных точек. Но после определенного момента модель начинает упускать информацию. Под этим я подразумеваю, что для высокого значения K модель будет обобщаться до такой степени, что точки будут неправильно классифицированы. И, следовательно, модель не соответствует данным.

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

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

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

Ну, вы можете проверить перекрестную проверку в Интернете, и вот отличная ссылка для этого:



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

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

Шаги для метода локтя указаны ниже:

  • Мы выбираем K в диапазоне (скажем, от 1 до 10)
  • Для каждого значения K в этом диапазоне мы подгоняем модель KNN к обучающему набору и получаем результат/ошибку на тестовом наборе.
  • Этот «результат/ошибка» может быть чем угодно — оценка точности, оценка отзыва, MAE, RMSE и т. д. в зависимости от постановки задачи.
  • Затем результат/ошибка наносится на график с K на оси x.
  • Выбирается К, после которого ошибка/результат становится постоянной или незначительно уменьшается.
  • Точка, в которой это происходит, называется точкой локтя, потому что она имеет форму локтя. И мы выбираем K на этом локте.

5. Метрики расстояния

Обычно мы используем следующие метрики расстояния для измерения расстояния между точками в KNN:

1 . Евклидово расстояние —наиболее часто используемое, обычно называемое нормой L2, определяется по формуле:

2.Манхэттенское расстояние — называемое нормой L1, определяется по формуле:

3. Расстояние Минковского — называемое нормой LP, определяется по формуле:

~Ну вот и вся математика, которую нужно сделать для KNN!

6. Подготовка данных для КНН

  1. Масштабированные данные — поскольку мы используем метрику расстояния для расчетов, нам нужно, чтобы данные были масштабированы.
  2. Уменьшение размерности —поскольку большее количество функций увеличивает сложность, это тем самым увеличивает объем вычислений, что плохо для KNN, потому что это ленивое обучение и, следовательно, потребует больше времени и больше памяти. Следовательно, мы должны попытаться уменьшить размерность, используя методы выбора признаков, такие как PCA, LDA, SFS и т. д.
  3. Вменение пропущенных значений — пропущенная точка могла быть оптимальным ответом для новой контрольной точки, поэтому мы всегда должны заранее вводить пропущенные значения.
  4. Обработка выбросов — приводит к неверным прогнозам, поскольку точка рядом с выбросом может быть классифицирована/прогнозирована так же, как и выброс, что может быть неверным. Поэтому мы всегда должны обрабатывать выбросы, прежде чем двигаться вперед с алгоритмом.

7. Предположения КНН

  1. Данные находятся в пространстве признаков —KNN предполагает, что расстояние между точками данных в пространстве признаков можно оценить с помощью различных показателей расстояния, таких как евклидово, манхэттенское и т. д.
  2. Точки данных представляют собой вектор с метками классов.KNN предполагает, что каждая точка данных является вектором с метками классов +ve или -ve. Но KNN также может работать с произвольным количеством классов.
  3. Подобные вещи существуют в непосредственной близости —KNN предполагает, что подобные вещи существуют в пространстве признаков с непосредственной близостью

7 . Плюсы и минусы использования KNN

Плюсы:

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

Минусы:

  • требует больше времени на тестирование (ленивый ученик)
  • для больших наборов данных требуются высокие вычисления, поскольку тестирование требует времени
  • высокое потребление памяти для больших наборов данных
  • чувствителен к масштабу данных
  • чувствительны к выбросам в данных

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

И всегда помни, Томас Шелби занят больше, чем ты, так что лучше найди какую-нибудь работу, а!

Проверьте это также: