Глоссарий

Ближайшие соседи (K-Nearest Neighbors, KNN)

Узнай, как K-Nearest Neighbors (KNN) упрощает машинное обучение благодаря интуитивно понятному непараметрическому подходу для задач классификации и регрессии.

Обучай модели YOLO просто
с помощью Ultralytics HUB.

Узнай больше

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

Как работает KNN

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

При классификации новая точка относится к тому классу, который наиболее часто встречается среди ее K соседей (голосование по большинству). Для регрессии предсказание обычно представляет собой среднее значение K соседей. Выбор метрики расстояния (например, Манхэттен, Минковский) и значение 'K' - важнейшие гиперпараметры, которые существенно влияют на производительность модели. Эффективная реализация часто опирается на структуры данных вроде KD-деревьев или деревьев Болла, чтобы ускорить поиск соседей, особенно при работе с большими наборами данных.

Выбор значения 'K'

Выбор оптимального значения 'K' очень важен. Малое значение K (например, K=1) делает модель очень чувствительной к шуму и выбросам в данных, что потенциально может привести к переподгонке, когда модель хорошо работает на обучающих данных, но плохо - на невидимых. И наоборот, большое значение 'K' может слишком сгладить границы принятия решений, делая модель менее чувствительной к локальным закономерностям и потенциально приводя к недоподгонке и большим вычислительным затратам при прогнозировании. Такие техники, как кросс-валидация (см. руководство по кросс-валидации в Scikit-learn), часто используются для поиска подходящего значения 'K', которое уравновешивает компромисс между смещением и дисперсией. Библиотека Scikit-learn предоставляет инструменты для реализации KNN и выполнения поиска гиперпараметров, а общие советы ты можешь найти в Ultralytics Hyperparameter Tuning Guide.

Применение KNN

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

  • Рекомендательные системы: KNN может определять пользователей со схожими вкусами на основе прошлого поведения, чтобы рекомендовать товары, что в принципе похоже на методы, используемые такими платформами, как Netflix, для своей рекомендательной системы.
  • Базовая классификация изображений: Его можно использовать для решения простых задач классификации изображений, например, для распознавания рукописных цифр из наборов данных вроде MNIST dataset.
  • Обнаружение аномалий: Выявление необычных точек данных, которые удалены от своих соседей, полезно в таких областях, как сетевая безопасность(OWASP Anomaly Detection Project).
  • Здравоохранение: Классификация пациентов на основе признаков для прогнозирования исходов или диагностики заболеваний, что способствует развитию ИИ в здравоохранении (см. коллекцию Nature Medicine AI in Health and Medicine).

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

KNN предлагает несколько преимуществ, но также имеет и ограничения:

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

Недостатки:

KNN против родственных понятий

Важно отличать KNN от других алгоритмов:

Хотя KNN ценен для решения определенных задач и понимания фундаментальных концепций ML, в сложных проблемах, таких как обнаружение объектов в реальном времени, часто используются более продвинутые модели, такие как Ultralytics YOLOкоторые обеспечивают превосходную скорость и производительность, особенно на масштабных наборах данных компьютерного зрения. Ты можешь обучать и разворачивать такие модели с помощью платформ вроде Ultralytics HUB.

Читать полностью