Entenda o funcionamento do K- Nearest Neighbors (KNN)

Natalia Gonçalves
7 min readAug 19, 2023

O K-Nearest Neighbors, ou vizinhos mais próximos é uma algoritmo de machine learning simples, porém poderoso. Mas o que isso significa?

  1. Ideia simples: A base do KNN é fácil de entender. Ele se apoia no princípio de que pontos de dados semelhantes tendem a estar próximos no espaço de características. Isso se alinha com o senso comum e torna o algoritmo acessível a pessoas com diferentes níveis de conhecimento em machine learning.
  2. Capacidade de lidar com diversidade de dados: Alguns algoritmos, como, por exemplo, a Regressão Linear assume que a relação entre a variável dependente e independentes é linear. A Regressão Logística assume que a relação entre as variáveis independentes e a probabilidade de pertencer à uma classe é logística. O Support Vector Machine assume que os dados são linearmente separáveis em um espaço de maior dimensão. O KNN é conhecido por sua falta de suposições restritivas sobre a distribuição dos dados e, portanto, pode ser uma opção viável quando outras técnicas podem não ser apropriadas devido a suposições mais específicas.
  3. Não Paramétrico: Ao contrário de certos algoritmos que requerem um estágio de treinamento para otimizar parâmetros específicos, como no caso da Regressão Linear em que os coeficientes devem ser ajustados para minimizar o erro, os métodos não paramétricos seguem uma abordagem diferente. No caso do KNN, ele “memoriza” (armazena) os dados de treinamento e faz previsões com base na similaridade entre pontos.
  4. Boa performance em dados de alta dimensão: O KNN pode funcionar bem mesmo em dados de alta dimensionalidade (muitas colunas), desde que o número de amostras seja suficientemente grande para evitar “the curse of dimensionality”.
  5. Bom desempenho em conjunto de dados pequenos: Diferente de alguns algoritmos que requerem grandes quantidades de dados para treinamento, o KNN pode fornecer boas previsões mesmo em conjuntos de dados pequenos.
  6. Facilidade de Implementação: A implementação do KNN é relativamente simples. Não involve etapas complexas de otimização ou ajuste de hiperparâmetros, o que agiliza o processo de implementação e experimentação.
  7. Aplicação em diversas áreas: O KNN é aplicável a uma ampla gama de problemas, incluindo classificação, regressão, detecção de anomalias e recomendação. Sua versatilidade o torna uma ferramenta valiosa em diferentes campos.

Embora o KNN seja conceitualmente simples, sua capacidade de realizar previsões precisas em uma variedade de situações o torna um algoritmo poderoso no conjunto de ferramentas de aprendizado de máquina.

Convencido dos benefícios desse algoritmo? Então, vamos nos aprofundar um pouco mais no seu conceito.

Compreendendo a Ideia Central do KNN

A intuição por trás desse algoritmo parte do princípio de que os pontos de dados semelhantes tendem a pertencer à mesma classe ou compartilhar características semelhantes. Essa ideia deriva do conceito de distância na matemática. O algoritmo calcula a distância entre os pontos de dados para quantificar sua similaridade, orientando assim o processo de previsão.

Distância Euclidiana: Uma medida de similaridade

A distância Euclidiana é uma medida da distância em linha reta entre dois pontos em um espaço multidimensional. É comumente usada para calcular distâncias entre pontos em vários campos, incluindo matemática, física e aprendizado de máquina.

Dados 2 pontos em um espaço n-dimensional:

Diagamos que as coordenadas do ponto A sejam (x₁, y₁, z₁, …) e as coordenadas do ponto B sejam (x₂, y₂, z₂, …).

A distância Euclidiana entre esses dois pontos é calculada da seguinte forma:

  • Para cada dimensão (x, y, z…), subtraia os valores de coordenada correspondentes do ponto A do ponto B (x₂ — x₁, y₂ — y₁, z₂ — z₁, …).
  • Eleve ao quadrado cada uma das diferenças obtidas na etapa anterior.
  • Some todas as diferenças ao quadrado.
  • Por fim, tire a raíz quadrada da soma para obter a Distância Euclidiana.

Matematicamente, isso pode ser expresso como:

Distância Euclidiana = √((x₂ — x₁)² + (y₂ — y₁)² + (z₂ — z₁)² + …)

Essa fórmula garante que as distâncias negativas não afetem o cálculo geral da distância, e a raiz quadrada no final traz a distância de volta à escala original.

Ajustando o modelo

Ao contrário de outros algoritmos nos quais treinar o modelo consiste na otimização de parâmetros, o KNN não constrói um modelo tradicional durante a fase de ajuste. Em vez disso, ele “memoriza” os dados de treinamento. O algoritmo armazena o conjunto de dados com os valores referente à sua classe, criando uma referência para previsões.

Como o algoritmo faz previsões

Para fazer previsões, o KNN identifica os vizinhos mais próximos ao novo ponto de dados com base em suas distâncias calculadas. É aqui que o embasamento matemático se torna crucial. Ao comparar as distâncias, o KNN localiza os pontos de dados mais semelhantes.

Para tarefas de classificação, o KNN realiza uma “votação majoritária” entre os vizinhos para determinar a classe do novo ponto de dados. A classe com mais representantes entre os vizinhos é escolhida como a previsão.

Para tarefas de regressão, o KNN calcula a média dos valores-alvo dos vizinhos k vizinhos e atribui como o valor previsto para o novo ponto de dados.

Escolhendo o k ótimo

O valor de k, o número de vizinhos a considerar, é um parâmetro crítico no KNN.

Um valor de “k” grande no algoritmo K-Nearest Neighbors (KNN) pode resultar em previsões ruidosas, pois ele considera um número maior de vizinhos para fazer a previsão. Isso pode incluir pontos que não são realmente semelhantes ao ponto de consulta, o que leva a resultados menos confiáveis.

Por outro lado, um valor de “k” pequeno pode levar à perda de detalhes importantes nos dados, já que considera apenas um número limitado de vizinhos mais próximos. Isso pode resultar em uma previsão excessivamente sensível aos pontos de dados específicos que são selecionados como vizinhos próximos.

Acabamos de descrever o famoso “trade-off” entre viés e variância. O trade-off entre viés e variância envolve encontrar um equilíbrio entre dois tipos de erros que um modelo pode cometer:

  1. Viés: É o erro introduzido pelo modelo ao fazer suposições simplificadas sobre a relação entre os atributos e a variável de saída. Um modelo com alto viés tende a subestimar a complexidade dos dados, podendo não se ajustar bem nem mesmo aos dados de treinamento.
  2. Variância: É o erro decorrente da sensibilidade excessiva do modelo às variações nos dados de treinamento. Um modelo com alta variância se ajusta muito bem aos dados de treinamento, mas pode não generalizar bem para novos dados, levando a previsões instáveis e sensíveis a ruídos.

O objetivo é encontrar um valor de “k” que equilibre esses dois tipos de erros, minimizando tanto o viés quanto a variância, para obter previsões confiáveis e precisas em dados não vistos.

Agora que entendemos o conceito, vamos ver um exmplo simples para ilustrar o que foi discutido até agora.

Suponha que estamos lidando com um conjunto de dados de produtos online, onde cada produto é caracterizado por duas características: preço e avaliação média dos clientes. Queremos classificar os produtos em duas categorias: “Eletrônicos” e “Roupas”.

Vamos calcular a distância entre o novo produto (Preço: R$ 300, Avaliação Média: 4.7) e cada produto no conjunto de treinamento usando a distância Euclidiana:

  1. Distância entre o novo produto e o produto 1 (Eletrônicos): Distância = √((300–500)² + (4.7–4.5)²) = 200.2
  2. Distância entre o novo produto e o produto 2 (Roupas): Distância = √((300–40)² + (4.7–3.8)²) = 262.07
  3. Distância entre o novo produto e o produto 3 (Eletrônicos): Distância = √((300–1200)² + (4.7–4.9)²) = 900.14
  4. Distância entre o novo produto e o produto 4 (Roupas): Distância = √((300–80)² + (4.7–4.2)²) = 220.27

Os três produtos mais próximos ao novo produto (com as menores distâncias) são: Produto 1 (Distância: 200.2), Produto 4 (Distância: 220.27) e Produto 2 (Distância: 262.07).

Agora, observamos as categorias dos produtos vizinhos:

  • Produto 1: Eletrônicos
  • Produto 4: Roupas
  • Produto 2: Roupas

A categoria mais frequente entre os três produtos vizinhos é “Roupas”. Portanto, o novo produto é previsto como pertencente à categoria “Roupas”.

Nesse exemplo, aplicamos o algoritmo KNN para classificar o novo produto com base nas categorias dos produtos vizinhos. O resultado depende das características escolhidas, da métrica de distância e do valor de “k” utilizado.

Chegamos ao final de mais um post!

Vimos como o KNN ao calcular distâncias Euclidianas, identificar vizinhos mais próximos e fazer previsões com base em votação majoritária ou média, mostra como princípios matemáticos são utilizados para resolver problemas do mundo real. Compreender a matemática por trás do KNN não apenas enriquece nossa compreensão do algoritmo, mas também nos capacita a aplicá-lo de forma mais eficaz em diversas aplicações.

Eu espero que o post tenha te ajudado. Se tiver alguma coisa que eu tenha esquecido ou alguma informação incorreta, por favor me avise nos comentários. Agradeço muito por sua atenção. Obrigada e até o próximo post!

--

--