Explore o K-Nearest Neighbors (KNN). Saiba como esse algoritmo de aprendizagem supervisionada funciona para classificação e regressão, sua utilização na pesquisa visual e integração com Ultralytics .
K-Nearest Neighbors (KNN) é um algoritmo robusto e intuitivo usado no campo da aprendizagem supervisionada para tarefas de classificação e regressão. Distinguido pela sua simplicidade, o KNN é frequentemente categorizado como um "aprendiz preguiçoso" porque não constrói um modelo nem aprende parâmetros durante a fase de treino. Em vez disso, ele memoriza todo o conjunto de dados de treino e realiza cálculos apenas quando uma previsão é solicitada. O princípio central do algoritmo baseia-se na similaridade de características: ele assume que pontos de dados com atributos semelhantes existem próximos uns dos outros dentro de um espaço de características multidimensional.
O mecanismo do K-Nearest Neighbors é impulsionado por cálculos de distância. Quando um novo ponto de consulta é introduzido, o algoritmo pesquisa o conjunto de dados armazenado para encontrar o número 'K' de amostras de treino mais próximas da nova entrada.
Selecionar o valor ideal para 'K' é uma etapa crítica no ajuste de hiperparâmetros. A escolha de K influencia significativamente o desempenho do modelo e sua capacidade de generalizar para novos dados.
Apesar da sua simplicidade em comparação com as redes neurais profundas, o KNN continua a ser altamente relevante na IA moderna, particularmente quando combinado com técnicas avançadas de extração de características.
Embora eficaz, o KNN enfrenta a maldição da dimensionalidade. À medida que o número de características (dimensões) aumenta, os pontos de dados tornam-se esparsos e as métricas de distância perdem a sua eficácia. Além disso, como armazena todos os dados de treino, o KNN pode consumir muita memória e sofrer de alta latência de inferência em grandes conjuntos de dados. Para resolver isso, os profissionais costumam pré-processar os dados usando técnicas de redução de dimensionalidade, como Análise de Componentes Principais (PCA), ou usar estruturas de dados especializadas, como KD-Trees, para acelerar a pesquisa. Para dimensionamento de conjuntos de dados e treinamento de modelos em nível empresarial, a utilização da Ultralytics pode ajudar a gerenciar os recursos de computação necessários para o pré-processamento de dados complexos.
É importante diferenciar K-Nearest Neighbors (K-Vizinhos Mais Próximos) de K-Means clustering(Agrupamento K-Means), pois os seus nomes semelhantes muitas vezes causam confusão.
O seguinte trecho de código demonstra um fluxo de trabalho simples de classificação KNN usando a popular biblioteca Scikit-learn. Num contexto de visão computacional, as "características" de entrada seriam normalmente extraídas por um modelo de aprendizagem profunda como o YOLO26 antes de serem passadas para o classificador 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)")