Yolo Vision Shenzhen
Шэньчжэнь
Присоединиться сейчас
Глоссарий

Метод K-ближайших соседей (KNN)

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

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

Как работает алгоритм

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

  1. Измерение расстояния: система вычисляет расстояние между точкой запроса и каждой другой точкой в базе данных. Наиболее распространенной метрикой является евклидово расстояние, которое измеряет расстояние по прямой линии между точками. В зависимости от типа данных могут использоваться другие метрики, такие как манхэттенское расстояние (геометрия такси) или расстояние Минковского. .
  2. Выбор соседей: после вычисления расстояний алгоритм сортирует их и определяет 'K' ближайших записей.
  3. Принятие решений:
    • Для классификации: алгоритм использует систему «голосования большинством». Метка класса, которая чаще всего встречается среди K соседей, присваивается точке запроса. Это широко используется в базовых задачах классификации изображений.
    • Для регрессии: прогноз рассчитывается путем усреднения значений K ближайших соседей для оценки непрерывной переменной.

Выбор правильного «K»

Выбор оптимального значения для «K» является критически важным шагом в настройке гиперпараметров. Выбор K значительно влияет на производительность модели и ее способность к обобщению на новые данные.

  • Низкое значение K: Небольшое значение K (например, K=1) делает модель очень чувствительной к шуму и выбросам в данных, что может привести к переобучению.
  • Высокое значение K: Большое значение K сглаживает границы принятия решений, уменьшая влияние шума, но потенциально размывая четкие паттерны, что приводит к недостаточной подгонке.

Применение в реальном мире

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

  • Рекомендательные системы: KNN облегчает совместную фильтрацию в потоковом медиа и электронной коммерции. Идентифицируя пользователей с похожей историей просмотров или покупок (соседи), платформы могут предлагать продукты, которые могут понравиться пользователю, основываясь на предпочтениях его «ближайших соседей».
  • Обнаружение аномалий: В сфере кибербезопасности и финансов KNN используется для обнаружения аномалий. Транзакции или сетевая активность отображаются в пространстве характеристик; любая новая точка данных, которая находится далеко от плотных кластеров «нормальной» активности, помечается как потенциальное мошенничество или нарушение безопасности.
  • Визуальный поиск: современные векторные поисковые системы часто используют алгоритмы приближенного ближайшего соседа (ANN) — оптимизированную версию KNN — для быстрого поиска похожих изображений на основе высокоразмерных вложений, сгенерированных такими моделями, как YOLO26.

Проблемы и соображения

Несмотря на свою эффективность, KNN сталкивается с проблемой размерности. По мере увеличения количества признаков (размерностей) точки данных становятся редкими, а метрики расстояния теряют свою эффективность. Кроме того, поскольку KNN хранит все обучающие данные, он может быть требовательным к памяти и страдать от высокой задержки вывода при работе с большими наборами данных. Чтобы решить эту проблему, специалисты часто предварительно обрабатывают данные с помощью методов уменьшения размерности, таких как анализ главных компонент (PCA), или используют специализированные структуры данных, такие как KD-деревья, для ускорения поиска. Для масштабирования наборов данных и обучения моделей на уровне предприятия использование Ultralytics может помочь в управлении вычислительными ресурсами, необходимыми для предварительной обработки сложных данных.

Отличие KNN от K-Means

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

  • KNN — это алгоритм обучения с учителем, который использует помеченные данные для прогнозирования.
  • K-Means — это неконтролируемый алгоритм обучения , используемый для группировки немеченых данных в кластеры на основе структурных сходств.

Пример реализации

Следующий фрагмент кода демонстрирует простой рабочий процесс классификации KNN с использованием популярной библиотеки Scikit-learn. В контексте компьютерного зрения входные «особенности» обычно извлекаются с помощью модели глубокого обучения, такой как YOLO26, перед передачей в классификатор KNN.

from sklearn.neighbors import KNeighborsClassifier

# Simulated feature vectors (e.g., extracted from YOLO26) and labels
# Features: [Size, Redness], Labels: 0=Apple, 1=Orange
features = [[0.8, 0.9], [0.9, 0.8], [0.2, 0.3], [0.3, 0.2]]
labels = [0, 0, 1, 1]

# Initialize KNN with 3 neighbors
knn = KNeighborsClassifier(n_neighbors=3)
knn.fit(features, labels)

# Predict the class of a new object [Size=0.85, Redness=0.85]
prediction = knn.predict([[0.85, 0.85]])
print(f"Predicted Class: {prediction[0]} (0=Apple, 1=Orange)")

Присоединяйтесь к сообществу Ultralytics

Присоединяйтесь к будущему ИИ. Общайтесь, сотрудничайте и развивайтесь вместе с мировыми новаторами

Присоединиться сейчас