O K-Nearest Neighbors (KNN) é um algoritmo fundamental na aprendizagem automática (ML) utilizado para tarefas de classificação e regressão. Destaca-se pela sua simplicidade e abordagem intuitiva. O KNN é classificado como um método não paramétrico porque não faz suposições sobre a distribuição de dados subjacente. Também é conhecido como um algoritmo de "aprendizagem preguiçosa" porque não constrói um modelo geral durante a fase de dados de treino; em vez disso, armazena todo o conjunto de dados e efectua cálculos apenas quando é necessária uma previsão.
Como funciona o KNN
A ideia central do KNN baseia-se na semelhança, frequentemente definida utilizando métricas de distância como a distância euclidiana. Ao prever um ponto de dados novo e inédito, o algoritmo identifica os 'K' pontos de dados mais próximos (vizinhos) a partir do conjunto de dados de treino armazenado. O valor "K" é um número inteiro definido pelo utilizador e representa o número de vizinhos considerados.
- Para a classificação: O novo ponto de dados é atribuído à classe que é mais comum entre os seus K vizinhos mais próximos. Se K=3, e dois vizinhos pertencem à classe A e um à classe B, o novo ponto é classificado como classe A.
- Para Regressão: A previsão para o novo ponto de dados é tipicamente a média (ou por vezes a mediana) dos valores dos seus K vizinhos mais próximos.
A escolha da métrica de distância e o valor de 'K' são hiperparâmetros cruciais que influenciam significativamente o desempenho do modelo.
Escolher o valor de 'K'
A seleção do valor ótimo de 'K' é fundamental. Um valor "K" pequeno torna o modelo sensível ao ruído e aos valores anómalos, podendo conduzir a um sobreajuste. Inversamente, um valor 'K' elevado pode suavizar demasiado os limites de decisão, conduzindo potencialmente a uma subadaptação e a um elevado custo computacional. Técnicas como a validação cruzada são frequentemente utilizadas para encontrar um valor "K" adequado que equilibre a relação entre a polarização e a variância.
Aplicações do KNN
A simplicidade do KNN presta-se a várias aplicações, particularmente quando a interpretabilidade é valorizada:
- Sistemas de recomendação: O KNN pode sugerir itens (como filmes ou produtos) aos utilizadores com base nas preferências dos seus vizinhos "mais próximos" (utilizadores com gostos semelhantes). Serviços como o Netflix exploraram métodos semelhantes baseados em instâncias.
- Reconhecimento de imagens: Em tarefas básicas de classificação de imagens, o KNN pode classificar uma imagem com base nas classes das imagens mais semelhantes no conjunto de treino (por exemplo, identificar dígitos manuscritos com base na semelhança de pixéis). Embora seja eficaz para conjuntos de dados mais simples como o MNIST, as tarefas mais complexas exigem frequentemente modelos sofisticados.
- Deteção de anomalias: Ao identificar pontos de dados distantes de qualquer grupo de vizinhos, o KNN pode ser utilizado para detetar valores atípicos ou anomalias, úteis em áreas como a deteção de fraudes ou a identificação de itens defeituosos no fabrico. Explora mais sobre os métodos de deteção de anomalias.
- Análise de expressão de genes: Na bioinformática, o KNN ajuda a classificar amostras com base em padrões de expressão de genes, agrupando perfis genéticos semelhantes. Sabe mais sobre a IA em aplicações de cuidados de saúde.
Vantagens e desvantagens do KNN
O KNN oferece vários benefícios, mas também tem limitações:
Vantagens:
- Simplicidade e intuição: Fácil de entender e implementar.
- Não tem fase de treinamento: Aprende instantaneamente armazenando o conjunto de dados, tornando-o adaptável a novos dados.
- Flexibilidade: Lida naturalmente com a classificação multi-classe e pode ser adaptado para regressão.
Desvantagens:
- Custo computacional: A previsão pode ser lenta e computacionalmente dispendiosa, especialmente com grandes conjuntos de dados, uma vez que requer o cálculo de distâncias para todos os pontos de treino.
- Sensibilidade a caraterísticas irrelevantes: O desempenho degrada-se significativamente com dados de elevada dimensão (maldição da dimensionalidade) ou quando estão presentes caraterísticas irrelevantes. Poderão ser necessárias técnicas como a redução da dimensionalidade.
- Necessidade de escalonamento de caraterísticas: É sensível à escala dos dados; as caraterísticas com intervalos maiores podem dominar os cálculos de distância, necessitando de normalização.
- Determinação de 'K' ótimo: Encontrar o melhor valor para 'K' requer um ajuste cuidadoso dos hiperparâmetros.
KNN vs. Conceitos relacionados
É importante distinguir o KNN de outros algoritmos:
- Agrupamento K-Means: Embora ambos utilizem 'K' e medidas de distância, o K-Means é um algoritmo de aprendizagem não supervisionado para agrupar dados em grupos com base na semelhança. O KNN é um algoritmo de aprendizagem supervisionado para classificação ou regressão com base em vizinhos rotulados.
- Máquina de vetor de suporte (SVM): O SVM é um algoritmo supervisionado que encontra um hiperplano ótimo para separar classes. Ao contrário da abordagem baseada em instâncias do KNN, o SVM constrói um modelo explícito, tendo frequentemente um melhor desempenho com dados de elevada dimensão.
- Árvores de decisão: As árvores de decisão constroem um modelo baseado em divisões de caraterísticas, fornecendo regras claras para classificação ou regressão. O KNN baseia-se na semelhança local em vez de regras explícitas.
Embora o KNN seja útil para determinadas tarefas e para compreender os conceitos fundamentais de ML, os problemas complexos, como a deteção de objectos em tempo real, beneficiam frequentemente de modelos mais avançados, como o Ultralytics YOLOque oferecem velocidade e precisão superiores, especialmente em conjuntos de dados de visão computacional em grande escala. Podes treinar e implementar esses modelos utilizando plataformas como o Ultralytics HUB.