Изучите алгоритм K-ближайших соседей (KNN). Узнайте, как этот алгоритм контролируемого обучения работает для классификации и регрессии, его использование в визуальном поиске и интеграцию с Ultralytics .
K-ближайших соседей (KNN) — это надежный и интуитивно понятный алгоритм, используемый в области обучения с учителем для задач классификации и регрессии. Отличающийся своей простотой, KNN часто классифицируется как «ленивый ученик», поскольку он не строит модель и не изучает параметры на этапе обучения. Вместо этого он запоминает весь набор обучающих данных и выполняет вычисления только тогда, когда запрашивается прогноз. Основной принцип алгоритма основан на сходстве признаков: он предполагает, что точки данных с похожими атрибутами находятся в непосредственной близости друг от друга в многомерном пространстве признаков.
Механизм K-ближайших соседей основан на расчете расстояний. При вводе новой точки запроса алгоритм выполняет поиск в сохраненном наборе данных, чтобы найти K обучающих выборок, наиболее близких к новому вводу.
Выбор оптимального значения для «K» является критически важным шагом в настройке гиперпараметров. Выбор K значительно влияет на производительность модели и ее способность к обобщению на новые данные.
Несмотря на свою простоту по сравнению с глубокими нейронными сетями, KNN остается весьма актуальным в современном ИИ, особенно в сочетании с передовыми методами извлечения признаков.
Несмотря на свою эффективность, KNN сталкивается с проблемой размерности. По мере увеличения количества признаков (размерностей) точки данных становятся редкими, а метрики расстояния теряют свою эффективность. Кроме того, поскольку KNN хранит все обучающие данные, он может быть требовательным к памяти и страдать от высокой задержки вывода при работе с большими наборами данных. Чтобы решить эту проблему, специалисты часто предварительно обрабатывают данные с помощью методов уменьшения размерности, таких как анализ главных компонент (PCA), или используют специализированные структуры данных, такие как KD-деревья, для ускорения поиска. Для масштабирования наборов данных и обучения моделей на уровне предприятия использование Ultralytics может помочь в управлении вычислительными ресурсами, необходимыми для предварительной обработки сложных данных.
Важно отличать K-ближайших соседей от K-средних кластеров, так как их похожие названия часто вызывают путаницу.
Следующий фрагмент кода демонстрирует простой рабочий процесс классификации 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)")