Explora K-Nearest Neighbors (KNN). Descubre cómo funciona este algoritmo de aprendizaje supervisado para la clasificación y la regresión, su uso en la búsqueda visual y su integración con Ultralytics .
K-Nearest Neighbors (KNN) es un algoritmo robusto e intuitivo utilizado en el campo del aprendizaje supervisado tanto para tareas de clasificación como de regresión. KNN, que se distingue por su simplicidad, a menudo se clasifica como un «aprendiz perezoso» porque no construye un modelo ni aprende parámetros durante la fase de entrenamiento. En su lugar, memoriza todo el conjunto de datos de entrenamiento y realiza cálculos solo cuando se solicita una predicción. El principio básico del algoritmo se basa en la similitud de características: asume que los puntos de datos con atributos similares existen muy próximos entre sí dentro de un espacio de características multidimensional.
El mecanismo de K vecinos más cercanos se basa en cálculos de distancia. Cuando se introduce un nuevo punto de consulta, el algoritmo busca en el conjunto de datos almacenados para encontrar el número «K» de muestras de entrenamiento más cercanas a la nueva entrada.
Seleccionar el valor óptimo para «K» es un paso crítico en el ajuste de hiperparámetros. La elección de K influye significativamente en el rendimiento del modelo y su capacidad para generalizar a nuevos datos.
A pesar de su simplicidad en comparación con las redes neuronales profundas, KNN sigue siendo muy relevante en la IA moderna, especialmente cuando se combina con técnicas avanzadas de extracción de características.
Aunque es eficaz, KNN se enfrenta a la maldición de la dimensionalidad. A medida que aumenta el número de características (dimensiones), los puntos de datos se vuelven escasos y las métricas de distancia pierden su eficacia. Además, debido a que almacena todos los datos de entrenamiento, KNN puede consumir mucha memoria y sufrir una alta latencia de inferencia en conjuntos de datos grandes. Para solucionar esto, los profesionales suelen preprocesar los datos utilizando técnicas de reducción de dimensionalidad, como el análisis de componentes principales (PCA), o utilizan estructuras de datos especializadas, como los árboles KD, para acelerar la búsqueda. Para el escalado de conjuntos de datos y el entrenamiento de modelos a nivel empresarial, el uso de Ultralytics puede ayudar a gestionar los recursos informáticos necesarios para el preprocesamiento de datos complejos.
Es importante diferenciar K-vecinos más cercanos de agrupamiento K-medias, ya que sus nombres similares a menudo causan confusión.
El siguiente fragmento de código muestra un sencillo flujo de trabajo de clasificación KNN utilizando la popular biblioteca Scikit-learn. En un contexto de visión por ordenador , las «características» de entrada suelen extraerse mediante un modelo de aprendizaje profundo como YOLO26 antes de pasar al clasificador 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)")