K-Vizinhos Mais Próximos (KNN)


Dificuldade ★★★

5 minutos de Leitura 🕒

O quê é o KNN?

O K-Nearest Neighbors (KNN), ou K-Vizinhos Mais Próximos, é um algoritmo de aprendizado de máquina supervisionado que pode ser usado tanto para classificação quanto regressão. Esse algoritmo foi introduzido por Evelyn Fix e Joseph Hodges em 1951 e revisitado por Thomas Cover, em 1967.

No caso da classificação, o KNN determina a classe de um ponto de dados desconhecido com base nas classes dos pontos de dados conhecidos mais próximos a ele. No caso da regressão, o KNN determina o valor de uma variável de destino para um ponto de dados desconhecido com base nos valores dessa variável nos pontos de dados conhecidos mais próximos a ele.

Quais são as características do KNN?

  • O KNN é um algoritmo de máquina supervisionado.
  • O KNN é um algoritmo que pode ser usado para classificação e regressão.
  • O KNN é um algoritmo não-paramétrico, ele não faz suposições sobre a distribuições de dados subadjacentes.
  • O KNN é sensível à escolha da métrica de distância usada.
  • O KNN é sensível ao parâmetro K, que representa o número de vizinhos mais próximos a serem considerados.

Quais as aplicações do KNN?

  • Classificação de Texto - O KNN pode ser usado para classificar documentos de texto em diferentes categorias com base no conteúdo do documento.
  • Recomendações de Produtos - O KNN pode ser usado para recomendar produtos com base nas preferências do usuário e nas compras anteriores.
  • Análise de Sentimentos - O KNN pode ser usado para classificar opiniões de usuários em positivas, negativas ou neutras com base no texto da opinião.
  • Reconhecimento de Imagem - O KNN pode ser usado para reconhecer images com base em características específicas da imagem, como forma, cor e textura.
  • Previsão de Valores - O KNN pode ser usado para prever valores numéricos, como o preço de uma casa, ou o valor de uma ação na bolsa de valores com base em dados históricos.

Quais são os passos do algoritmo KNN?

  1. Carregar o conjunto de treinamento. O conjunto de treinamento contém os dados de entrada e as respectivas classes ou valores de saída.
  2. Escolher um valor para K. O valor de K representa o que representa o número de vizinhos mais próximos que serão considerados aou classificar ou prever um ponto de dados desconhecido.
  3. Calcular a distância. Calcular a distância entre o ponto de dados desconhecido e todos os pontos de dados conhecidos no conjunto de treinamento. Existem várias métricas de distância que pode ser usadas, como a distância euclidiana e a distância de Manhattan.
  4. Selecionar os K vizinhos mais próximos. Selecionar os K vizinhos mais próximos com base nas distâncias calculas no passo anterior.
  5. Calcular a classe ou valor médio. Se o KNN for usado para classificação, a classe mais comum entre os K vizinhos mais próximos é atribuída ao ponto de dados desconhecido. Se o KNN for usado para regressão, o valor médio dos K vizinhos mais próximos é atribuído ao ponto de dados desconhecido.
  6. Retornar a classe ou valor do ponto de dados desconhecido como predição final do modelo.

Como melhorar a precisão do algoritmo KNN?

  • Normalização de Dados - A normalização dos dados pode ajudar a reduzir o impacto de características com escalas muito diferentes nos cálculos de distância. Existem várias técnicas de normalização de dados, como a normalização min-max e a normalização z-score.
  • Seleção de Características - A seleção de características, ou redução de dimensionalidade, envolve a escolha das características mais relevantes par ao modelo e a exclusão das características menos importantes. Isso pode ajudar a reduzir o ruído nos dados e melhorar a precisão do modelo.
  • Ajuste de Parâmetros. O valor de K é um parâmetro que pode ser ajustado para melhorar a precisão do modelo. Isso envolve testar diferentes valores de K e selecionar aquele que produz melhor precisão.
  • KNN Ponderado - O KNN ponderado leva em consideração a distância dos vizinhos mais próximos ao fazer a predição final. Vizinhos mais próximos recebem um peso maior na predição final do que os vizinhos mais distantes.
  • Remoção de Outliers - Outliers são valores extremos que podem afetar negativamente a precisão do modelo. A remoção de outliers pode melhorar a precisão do modelo, eliminando pontos de dados que não são representativos do conjunto de dados como um todo.
  • Ajuste de Distância - O KNN pode ser ajustado para usar diferentes métricas de distância, como a distância euclidiana e a distância de Manhattan. Testar diferentes métricas de distância pode ajudar a determinar qual métrica produz a melhor precisão para o conjunto de dados específico.

Qual o desempenho do KNN?

O desempenho do algoritmo KNN depende do número de pontos de dados no conjunto de treinamento, do número de características dos pontos de dados e do valor de K.

Para classificar ou prever um único ponto de dados desconhecido, o algoritmo KNN precisa calcular a distância entre o ponto desconhecido e todos os pontos de dados conhecidos no conjunto de treinamento, o que resulta em uma complexidade computacional de O(nd), onde n é o número de pontos de dados no conjunto de treinamento e d é o número de características de um ponto de dados.

O algoritmo também precisa selecionar os K vizinhos mais próximos com base nas distâncias calculadas, o que pode ser feito usando uma estrutura de dados como uma fila de prioridade ou uma árvore de busca binária. Usando uma estrutura de dados eficiente, a complexidade computacional para selecionar os K vizinhos mais próximos é O(K log N).

Como implementar o algoritmo KNN?

Veja o código completo no GitHub.