Алгоритм K-ближайших соседей в R [Полное руководство с примерами]
Опубликовано: 2020-03-20Алгоритм KNN в R довольно популярен благодаря своей универсальности и функциональности. Так что вы, должно быть, слышали это имя время от времени, если изучаете машинное обучение. И вы, должно быть, задавались вопросом: «Что такое KNN в R?» или «Как это работает?».
В этой статье мы найдем ответы именно на эти вопросы и поможем вам досконально разобраться в этой теме. Итак, без лишних слов, давайте погрузимся.
Оглавление
Что такое алгоритм KNN?
KNN расшифровывается как K ближайший сосед. Это контролируемый алгоритм машинного обучения, который классифицирует точки данных по целевым классам в соответствии с особенностями соседних точек данных.
Предположим, вы хотите, чтобы ваша машина распознавала изображения яблок и апельсинов и различала их. Для этого вам нужно ввести набор данных изображений яблок и апельсинов. Затем вам нужно будет обучить свою модель данных, позволив ей обнаруживать каждый фрукт по его уникальным характеристикам. Например, он мог распознавать яблоки по их красному цвету и апельсины по их цвету.
После того, как вы обучили свою модель данных, вы можете протестировать ее, предоставив ей новый набор данных с другими изображениями яблок и апельсинов. Теперь алгоритм KNN будет разделять яблоки и апельсины, классифицируя их в соответствии с признаками, обнаруженными в обучающей модели.
Он будет сравнивать характеристики точки данных с соседними, чтобы увидеть, насколько они похожи. И он будет классифицировать их в соответствии с этими выводами.

Во многих случаях вы будете наносить точки на график. А чтобы вычислить расстояние между двумя точками, вам нужно будет использовать разные формулы. Наиболее распространенным методом расчета расстояния между двумя точками данных является евклидово расстояние. Он вычисляет расстояние независимо от свойств или атрибутов, присутствующих в точках.
Особенности алгоритма KNN
Ниже приведены особенности алгоритма KNN в R:
- Это контролируемый алгоритм обучения. Это означает, что он использует помеченные входные данные для прогнозирования выходных данных.
- Это простой алгоритм машинного обучения
- Вы можете использовать алгоритм KNN для решения различных задач.
- Это непараметрическая модель. Это означает, что он не делает никаких предположений о данных, что делает его весьма полезным для решения проблем, связанных с реальными данными.
- Он классифицирует данные, сравнивая точки данных с соседними. Проще говоря, работа алгоритма KNN основана на сходстве атрибутов.
- Он относится к категории ленивых алгоритмов. Ленивый алгоритм запоминает обучающие данные вместо того, чтобы изучать дискриминационную функцию на их основе. Узнайте больше о типах алгоритмов машинного обучения.
- Вы можете использовать KNN для решения проблем регрессии, а также задач классификации.
Алгоритм KNN беспристрастен, и из-за функций, которые мы обсуждали выше, он является предпочтительным выбором для многих задач. Однако у всего есть свои проблемы, и KNN не исключение.
Этот алгоритм бесполезен для решения слишком сложных задач. Его модель также не имеет процесса абстракции. Для адекватной модели вам потребуются высококачественные данные, поскольку иногда они могут упускать ценную информацию из-за ленивого алгоритма. Это быстро, но вам придется потратить значительное количество времени на очистку данных.
Как это работает?
Чтобы понять, как работает KNN в R, рассмотрим другой пример.
Предположим, ваш набор данных имеет два класса. Класс 1 имеет прямоугольники, а класс 2 - круги. Вы должны назначить новую точку данных, которую вы вводите, одному из этих двух классов, используя этот алгоритм. Для этого вам сначала нужно определить значение «K» для вашего алгоритма. K обозначает количество ближайших соседних точек, которые будет учитывать алгоритм.
Предположим, что вы вводите K как 4 в этом примере. А для K = 4 соседями являются три окружности и один прямоугольник. В этом случае вы отнесете точку данных к классу 2, так как количество кругов, окружающих точку, больше, чем прямоугольников.
Если бы соседями были три прямоугольника и один круг, вы бы отнесли его к классу 1. Мы уже обсуждали, как алгоритм KNN вычисляет расстояние между двумя точками, чтобы определить, кто является ближайшим соседом. Для этого используется формула Евклидова расстояния .

Формула евклидова расстояния выглядит следующим образом:
d( p ,q) = d(q, p ) = ( q1 – p1 ) 2 + ( q2 – p2 ) 2 … ( qn – pn ) 2
Здесь p = (p1, p2, p3, …. pn) и q = (q1, q2, q3, … qn). В этом уравнении «d» обозначает евклидово расстояние между точками p и q.
Как видите, это довольно просто. А его простота делает его очень универсальным, благодаря чему он является одним из самых популярных алгоритмов. Вы можете использовать его для решения различных проблем.
Пример KNN в R
Вам может быть интересно, где мы видим применение алгоритмов KNN в реальной жизни. Для этого вам нужно посмотреть на Amazon.
Огромный успех Amazon зависит от множества факторов, но самым важным из них является использование передовых технологий. Одной из таких технологий является машинное обучение. Их система рекомендаций помогла им получить сотни миллионов доходов. И эта рекомендательная система использует для этой цели алгоритм KNN.
Читайте также: Идеи проекта машинного обучения

Предположим, вы покупаете черные джинсы Wrangler с кожаной курткой на Amazon. Несколько недель спустя другой человек покупает те же джинсы на Amazon, но не покупает эту кожаную куртку. Amazon порекомендует этому человеку купить куртку, поскольку он показал модель покупки, похожую на вашу.
Итак, система рекомендаций Amazon работает на основе моделей покупок людей. И чтобы понять это сходство, вы можете использовать алгоритм KNN, поскольку он основан на этом принципе. Теперь вы знаете основы этого алгоритма, а также его практическое применение. Есть много других примеров его использования, но пока давайте остановимся на этом.
Изучите курсы по науке о данных в лучших университетах мира. Участвуйте в программах Executive PG, Advanced Certificate Programs или Master Programs, чтобы ускорить свою карьеру.
Заключительные мысли
Алгоритм KNN в R имеет множество применений. И после прочтения этой статьи мы уверены, что вы знакомы с этим алгоритмом. Если вы хотите узнать больше о таких алгоритмах машинного обучения, вам следует ознакомиться с нашим подробным курсом по машинному обучению .
Вы узнаете много нового о машинном обучении и различных алгоритмах, используемых в нем, помимо других его аспектов.
Для чего используется язык программирования R?
Язык программирования R был создан для вычислений, связанных со статистикой и визуализацией данных. Сегодня R широко используется статистиками, исследователями данных, данными и бизнес-аналитиками. Ядро R поставляется со многими встроенными статистическими функциями, поэтому сторонние библиотеки не требуются для большей части основного анализа данных, который может выполнить R. В отличие от многих других языков программирования, R не является языком общего назначения. Таким образом, он в основном используется для достижения определенных функций, с которыми он справляется исключительно хорошо. Тем не менее, R широко используется предприятиями во всех отраслях для извлечения полезной информации из огромных объемов ежедневных данных, генерируемых пользователями.
Каковы преимущества программирования на R?
Язык программирования R предлагает различные преимущества как новичкам, так и опытным программистам. Его основные преимущества включают функции и простоту построения статистических вычислительных моделей. Далее, R — это язык программирования с открытым исходным кодом, который поддерживает параллельные распределенные вычисления. Любой может использовать его без необходимости приобретать лицензии или плату за использование. Кроме того, он поставляется с массивной библиотекой для поддержки различных функций, а его независимая от платформы структура также повышает удобство. R также можно использовать для эффективной очистки данных, просмотра веб-страниц и обработки данных, а также для разработки моделей машинного обучения.
Почему KNN называют алгоритмом ленивого ученика?
Алгоритм K-ближайших соседей — один из самых простых алгоритмов, используемых в машинном обучении. Однако его часто называют ленивым учеником. Причина этого в том, что, когда вы предоставляете все данные, связанные с обучением, этому алгоритму, он не работает для обучения самого себя. Вместо того, чтобы изучать различительные функции, он запоминал весь обучающий набор данных. С каждым добавлением новой точки данных этот алгоритм ищет ее ближайших соседей во всем обучающем наборе, что неизменно увеличивает время, необходимое для прогнозирования. Это часто делает его вычислительно дорогим и очень трудоемким.