Glossário

K-Nearest Neighbors (KNN)

Descobre como o K-Nearest Neighbors (KNN) simplifica a aprendizagem automática com a sua abordagem intuitiva e não paramétrica para tarefas de classificação e regressão.

Treina os modelos YOLO simplesmente
com Ultralytics HUB

Aprende mais

O K-Nearest Neighbors (KNN) é um algoritmo de aprendizagem automática simples, mas poderoso, utilizado para tarefas de classificação e regressão. É considerado um algoritmo de aprendizagem não paramétrico e preguiçoso, o que significa que não faz suposições fortes sobre a distribuição de dados subjacente e adia o cálculo até ao momento da previsão. O KNN é particularmente intuitivo e fácil de implementar, o que o torna uma ferramenta valiosa para compreender os conceitos básicos da aprendizagem automática.

Como funciona o KNN

Na sua essência, o algoritmo K-Nearest Neighbors funciona com base no princípio da semelhança. Quando lhe é apresentado um novo ponto de dados não classificado, o KNN identifica os seus 'K' vizinhos mais próximos a partir do conjunto de dados de treino. O valor de 'K' é uma constante definida pelo utilizador e determina quantos vizinhos influenciam a classificação. O processo desenrola-se da seguinte forma:

  1. Cálculo da distância: O KNN calcula a distância entre o novo ponto de dados e todos os outros pontos no conjunto de dados de treino. As métricas de distância comuns incluem a distância euclidiana, a distância de Manhattan e a distância de Minkowski.
  2. Seleção do vizinho: Seleciona os 'K' pontos de dados do conjunto de treino que estão mais próximos do novo ponto de dados, com base na distância calculada no passo anterior. Estes "K" pontos são os "vizinhos mais próximos".
  3. Classificação ou Regressão:
    • Classificação: Para tarefas de classificação, o KNN atribui o novo ponto de dados à classe que é mais frequente entre os seus "K" vizinhos mais próximos. Trata-se essencialmente de uma votação por maioria entre os vizinhos.
    • Regressão: Para tarefas de regressão, o KNN prevê o valor para o novo ponto de dados calculando a média (ou mediana) dos valores dos seus 'K' vizinhos mais próximos.

Aplicações do KNN

A versatilidade do KNN torna-o aplicável em vários domínios. Aqui tens alguns exemplos do mundo real:

  • Sistemas de recomendação: Em plataformas como a Netflix ou a Amazon, o KNN pode ser utilizado para criar sistemas de recomendação de filtragem colaborativa. Por exemplo, se quiseres recomendações de filmes, o KNN pode encontrar utilizadores que sejam "vizinhos mais próximos" de ti com base em históricos de visualização semelhantes e, em seguida, recomendar filmes de que esses vizinhos tenham gostado. Isto aproveita a ideia de que os utilizadores com preferências semelhantes no passado terão provavelmente preferências semelhantes no futuro. Sabe mais sobre sistemas de recomendação e outras aplicações de IA na análise de dados.
  • Diagnóstico médico: O KNN pode ajudar na análise de imagens médicas para diagnosticar doenças. Ao analisar os dados dos pacientes (sintomas, resultados de testes, etc.), o KNN pode encontrar 'K' pacientes semelhantes numa base de dados e, com base nos seus diagnósticos, prever o diagnóstico de um novo paciente. Por exemplo, na deteção do cancro, podem ser utilizadas caraterísticas extraídas de imagens médicas e o KNN pode classificar novas imagens com base na semelhança com casos benignos ou malignos conhecidos.

Vantagens e desvantagens do KNN

Como todos os algoritmos, o KNN tem os seus pontos fortes e fracos:

Vantagens:

  • Simplicidade: O KNN é fácil de compreender e implementar.
  • Versatilidade: Pode ser utilizado tanto para classificação como para regressão.
  • Não paramétrico: Não faz suposições sobre a distribuição dos dados, o que pode ser benéfico em muitos cenários do mundo real.
  • Não tem fase de treino: Uma vez que o KNN é um aprendiz preguiçoso, não existe uma fase de formação explícita, o que faz com que se adapte rapidamente a novos dados.

Desvantagens:

  • Computacionalmente dispendioso: No momento da previsão, o KNN precisa de calcular as distâncias para todos os pontos de dados de treino, o que pode ser lento para grandes conjuntos de dados.
  • É sensível a caraterísticas irrelevantes: O KNN tem um desempenho fraco se estiverem presentes caraterísticas irrelevantes, uma vez que estas podem distorcer os cálculos de distância. Poderão ser necessárias técnicas de seleção de caraterísticas ou de redução da dimensionalidade.
  • Valor 'K' ótimo: Escolher o valor correto para 'K' é crucial e requer frequentemente experimentação. Um 'K' demasiado pequeno pode levar a uma sensibilidade ao ruído, enquanto um 'K' demasiado grande pode esbater as fronteiras das classes. Técnicas como a afinação de hiperparâmetros podem ajudar a encontrar o valor ótimo de 'K'.
  • Dados desequilibrados: O KNN pode ser tendencioso para a classe maioritária em conjuntos de dados desequilibrados porque as amostras da classe maioritária dominam a vizinhança.

Conceitos relacionados

Compreender o KNN em relação a outros conceitos de aprendizagem automática ajuda a apreciar o seu nicho e quando é mais adequado utilizá-lo:

  • Comparação com outros algoritmos de classificação: Ao contrário da regressão logística ou das máquinas de vectores de apoio, que são paramétricas e aprendem um limite de decisão, o KNN é não paramétrico e baseado em instâncias. Por exemplo, enquanto a regressão logística modela a probabilidade de pertencer a uma classe, o KNN utiliza diretamente os próprios pontos de dados para a classificação.
  • Relação com algoritmos de agrupamento: Embora o KNN seja um algoritmo de aprendizagem supervisionada, partilha o conceito de semelhança baseada na distância com algoritmos de aprendizagem não supervisionada como o agrupamento K-Means. No entanto, o K-Means é utilizado para agrupar dados não rotulados em clusters, enquanto o KNN é utilizado para classificar ou prever valores para pontos de dados novos, rotulados ou não rotulados, com base em dados de treino rotulados.

Em resumo, o K-Nearest Neighbors é um algoritmo fundamental na aprendizagem automática, valorizado pela sua simplicidade e eficácia numa variedade de aplicações, especialmente quando o conjunto de dados é de tamanho moderado e os padrões de dados são discerníveis por proximidade. Para conjuntos de dados mais complexos ou aplicações em tempo real que exijam uma inferência mais rápida, podem ser preferidos modelos mais sofisticados, como o Ultralytics YOLO para a deteção de objectos podem ser preferidos.

Lê tudo