Ultralytics YOLO27: Entre na lista de espera.
Licenciar o YOLO
Voltar ao glossário da Ultralytics

K-Nearest Neighbors (KNN)

Os k vizinhos mais próximos (KNN) fazem previsões por votação ou média dos k exemplos de treino mais semelhantes. Como funcionam a distância, k, a normalização e a pesquisa rápida.

K-vizinhos mais próximos (KNN) é um algoritmo de aprendizado supervisionado que prevê o rótulo de um novo exemplo com base nos k exemplos rotulados mais próximos: uma votação majoritária entre esses vizinhos para classificação ou a média deles para regressão. O KNN é não paramétrico e "preguiçoso": não aprende pesos, simplesmente armazena os dados de treinamento e só realiza todo o trabalho quando uma previsão é solicitada. Evelyn Fix e Joseph Hodges apresentaram o método em 1951 e, em 1967, Thomas Cover e Peter Hart provaram que, com dados ilimitados, a regra do vizinho mais próximo tem uma taxa de erro no máximo duas vezes maior que a do melhor classificador possível. A mesma busca por vizinhos mais próximos agora funciona em grande escala em bancos de dados vetoriais e sistemas de recuperação de imagens que comparam embeddings de redes neurais.

Como o KNN faz uma previsão#

Para cada ponto de consulta, o KNN executa três etapas:

  1. Medir a distância: Calcula a distância entre a consulta e cada exemplo armazenado. A distância euclidiana é o padrão; as distâncias de Manhattan e Minkowski são alternativas comuns, e a similaridade de cosseno é padrão para embeddings, nos quais a direção de um vetor carrega seu significado.
  2. Selecionar os vizinhos: Mantém os k exemplos com as menores distâncias.
  3. Combinar os rótulos: Na classificação, escolhe a classe mais comum entre os vizinhos; na regressão, calcula a média dos valores. Com ponderação por distância (weights="distance" no scikit-learn), os vizinhos mais próximos têm mais peso.

Cada característica contribui para a distância, então características em escalas maiores predominam: a renda em dólares ofuscaria a idade em anos. Por isso, os pipelines de KNN padronizam as características primeiro ou comparam embeddings de um modelo de extração de características, para que cada dimensão contribua em uma escala comparável.

Escolha de k#

O valor de k define o equilíbrio entre sobreajuste e subajuste. Com k = 1, cada ponto de treinamento, inclusive os ruidosos e rotulados incorretamente, ocupa sua própria região, e a fronteira de decisão fica irregular. Com um k muito grande, cada votação alcança muito longe da consulta e apaga fronteiras reais entre classes. Para duas classes, um k ímpar evita empates, e a validação cruzada é a forma padrão de escolher k. No conjunto de dados ruidoso two-moons do scikit-learn, a compensação aparece em três valores:

from sklearn.datasets import make_moons
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier

# Two interleaving half-moons with overlapping, noisy points
X, y = make_moons(n_samples=1000, noise=0.35, random_state=0)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=0)

# Fitting only stores the points; each prediction is a vote among the k nearest ones
for k in (1, 15, 300):
    knn = KNeighborsClassifier(n_neighbors=k)
    knn.fit(X_train, y_train)
    print(f"k={k}: train {knn.score(X_train, y_train):.2f}, test {knn.score(X_test, y_test):.2f}")

Com k = 1, o classificador memoriza seus pontos de treinamento, obtendo 1.00 neles e 0.83 nos pontos reservados para teste. Com k = 15, obtém 0.90 e 0.89, o melhor resultado de teste entre os três; com k = 300, quase metade dos 700 pontos de treinamento, a fronteira fica tão suavizada que ambas as pontuações caem para 0.84 e 0.81.

Uma busca por força bruta compara a consulta com todos os n pontos armazenados em d dimensões, então cada previsão custa na ordem de n × d operações, e a memória cresce com o conjunto de dados. Estruturas de particionamento espacial, como árvores k-d e árvores ball, ignoram a maioria das comparações em poucas dimensões, e algorithm="auto" do scikit-learn escolhe entre força bruta, árvore k-d e árvore ball. Em dimensões elevadas, a maldição da dimensionalidade faz com que as distâncias entre pontos sejam quase iguais, a poda da árvore deixa de compensar e sistemas grandes passam a usar índices aproximados de vizinhos mais próximos (ANN), como grafos HNSW e índices de arquivo invertido (IVF) com quantização de produto, implementados em bibliotecas como FAISS. Esses índices retornam a maioria dos vizinhos mais próximos verdadeiros comparando a consulta com apenas uma pequena fração dos vetores armazenados:

  • Agrupamento k-means: Um algoritmo não supervisionado que agrupa pontos sem rótulo em k agrupamentos em torno de centroides aprendidos. Os nomes compartilham uma letra por coincidência: em k-means, k conta os agrupamentos.
  • Busca vetorial: A forma de recuperação da mesma operação: retorna os itens armazenados mais próximos de um embedding de consulta, geralmente por meio de um índice aproximado, e a aplicação usa esses itens diretamente.
  • Máquinas de vetores de suporte e regressão logística: Modelos paramétricos que aprendem uma fronteira de decisão durante o treinamento, de modo que o custo da previsão permanece constante à medida que o conjunto de treinamento cresce.

Aplicações no mundo real#

  • Sistemas de recomendação: A filtragem colaborativa baseada em itens recomenda produtos cujos vetores de avaliações ou compras estejam mais próximos dos itens de que um usuário já gostou.
  • Detecção de anomalias: A distância de um ponto até seu k-ésimo vizinho mais próximo serve como pontuação de anomalia, destacando transações ou leituras de sensores distantes de todos os exemplos normais.
  • Imputação de valores ausentes: KNNImputer do scikit-learn preenche cada lacuna com a média daquela característica entre as k linhas mais semelhantes.
  • Recuperação de imagens e reidentificação: Os sistemas comparam o embedding de uma imagem com uma galeria para encontrar o mesmo produto, rosto ou pessoa visto por outra câmera. A solução de busca por similaridade da Ultralytics gera embeddings de uma pasta de imagens com o CLIP da OpenAI, calcula a similaridade de cosseno entre cada imagem indexada e uma consulta de texto como "carro vermelho" por meio de uma busca exata por força bruta e retorna as mais próximas, até 30 por padrão.

Explore as soluções

Visão computacional no desporto

Visão computacional no desporto

Descubra como o Ultralytics YOLO impulsiona a visão computacional no esporte com rastreamento de jogadores e bolas, análise de desempenho, insights para treinadores e reabilitação de atletas.
Saiba mais
Visão computacional para imagens aéreas

Visão computacional para imagens aéreas

Transforma imagens de drones e aéreas em informações em tempo real para a agricultura, a aquacultura, a conservação e a análise geoespacial com Ultralytics YOLO.
Saiba mais
Visão computacional no setor aeroespacial

Visão computacional no setor aeroespacial

Aplica visão computacional na indústria aeroespacial com Ultralytics YOLO para inspecionar aeronaves, detetar objetos estranhos na pista (FOD), apoiar operações aeroportuárias em terra e detetar defeitos em materiais compósitos.
Saiba mais
Visão computacional na segurança

Visão computacional na segurança

Protege todas as instalações com os modelos Ultralytics YOLO. A IA visual permite monitorizar perímetros, detetar ameaças, reconhecer matrículas e melhorar a segurança no local de trabalho.
Saiba mais
Visão computacional na robótica

Visão computacional na robótica

Potencia máquinas mais inteligentes com os modelos Ultralytics YOLO. A IA visual na robótica permite navegação autónoma, perceção, rastreamento de objetos e controlo em tempo real.
Saiba mais
Visão computacional na logística

Visão computacional na logística

Otimize a logística com os modelos Ultralytics YOLO. A IA de visão permite inspecionar pacotes, fazer triagem, rastrear veículos e monitorar a segurança em tempo real nos armazéns.
Saiba mais
Visão computacional no varejo

Visão computacional no varejo

Reinvente o varejo com os modelos Ultralytics YOLO. A IA de visão permite rastrear o estoque, monitorar prateleiras, gerenciar filas e obter insights mais inteligentes sobre clientes.
Saiba mais
Visão computacional na área da saúde

Visão computacional na área da saúde

Desenvolva soluções de saúde com os modelos Ultralytics YOLO. A IA de visão na área da saúde permite obter imagens médicas mais rapidamente, diagnósticos mais inteligentes e monitoramento de pacientes.
Saiba mais
Visão computacional na manufatura

Visão computacional na manufatura

Otimize a manufatura com modelos Ultralytics YOLO. A IA visual impulsiona o controle de qualidade, a detecção de defeitos, a conformidade com o uso de EPI e a automação da linha de montagem.
Saiba mais
Visão computacional no setor automotivo

Visão computacional no setor automotivo

Aplique visão computacional no setor automotivo com modelos Ultralytics YOLO. A IA visual aumenta a segurança viária, aprimora a assistência ao condutor e viabiliza a automação de veículos para estradas mais inteligentes.
Saiba mais
Visão computacional na agricultura

Visão computacional na agricultura

Leve a IA de visão à agricultura inteligente com os modelos Ultralytics YOLO. Aprimore o monitoramento de plantações, o rastreamento de animais e a agricultura de precisão para obter safras maiores e mais inteligentes.
Saiba mais

Vamos construir juntos o futuro da IA!

Comece sua jornada rumo ao futuro do aprendizado de máquina