Yolo Vision Shenzhen
Shenzhen
Únete ahora
Glosario

K-Nearest Neighbors (KNN)

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.

Cómo funciona el algoritmo

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.

  1. Medición de distancia: El sistema calcula la distancia entre el punto de consulta y todos los demás puntos de la base de datos. La métrica más común es la distancia euclidiana, que mide la distancia en línea recta entre puntos. Se pueden utilizar otras métricas como la distancia de Manhattan (geometría de taxi) o la distancia de Minkowski, dependiendo del tipo de datos .
  2. Selección de vecinos: Después de calcular las distancias, el algoritmo las ordena e identifica las «K» entradas más cercanas.
  3. Toma de decisiones:
    • Para la clasificación: El algoritmo utiliza un sistema de «votación por mayoría». La etiqueta de clase que aparece con mayor frecuencia entre los K vecinos se asigna al punto de consulta. Esto se utiliza ampliamente en tareas básicas de clasificación de imágenes.
    • Para regresión: La predicción se calcula promediando los valores de los K vecinos más cercanos para estimar una variable continua.

Elegir la «K» adecuada

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.

  • Valor K bajo: Un K pequeño (por ejemplo, K=1) hace que el modelo sea muy sensible al ruido y a los valores atípicos en los datos, lo que puede provocar un sobreajuste.
  • Valor K alto: un K grande suaviza los límites de decisión, reduciendo el efecto del ruido, pero potencialmente difuminando patrones distintos, lo que da lugar a un subajuste.

Aplicaciones en el mundo real

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.

  • Sistemas de recomendación: KNN facilita el filtrado colaborativo en la transmisión de medios y el comercio electrónico. Al identificar a los usuarios con historiales de visualización o comportamientos de compra similares (vecinos), las plataformas pueden sugerir productos que es probable que le gusten a un usuario basándose en las preferencias de sus «vecinos más cercanos».
  • Detección de anomalías: En ciberseguridad y finanzas, KNN se utiliza para la detección de anomalías. Las transacciones o actividades de red se mapean en un espacio de características; cualquier nuevo punto de datos que se aleje de los densos grupos de actividad «normal» se marca como posible fraude o violación de seguridad.
  • Búsqueda visual: Los modernos motores de búsqueda vectorial suelen basarse en algoritmos de vecino más cercano aproximado (ANN), una variante optimizada de KNN, para recuperar rápidamente imágenes similares basándose en incrustaciones de alta dimensión generadas por modelos como YOLO26.

Desafíos y consideraciones

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.

Distinguir KNN de K-Means

Es importante diferenciar K-vecinos más cercanos de agrupamiento K-medias, ya que sus nombres similares a menudo causan confusión.

  • KNN es un algoritmo de aprendizaje supervisado que utiliza datos etiquetados para realizar predicciones.
  • K-Means es un algoritmo de aprendizaje no supervisado que se utiliza para agrupar datos sin etiquetar en clústeres basándose en similitudes estructurales.

Ejemplo de aplicació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)")

Únase a la comunidad Ultralytics

Únete al futuro de la IA. Conecta, colabora y crece con innovadores de todo el mundo

Únete ahora