DEV Community

João Cláudio (joaoclaudio)
João Cláudio (joaoclaudio)

Posted on

KNN e Inteligência Artificial: Um Algoritmo Simples com Resultados Poderosos - João Cláudio Nunes Carvalho

KNN e Inteligência Artificial: Um Algoritmo Simples com Resultados Poderosos

Resumo

O algoritmo K-Nearest Neighbors (KNN) é uma técnica clássica e intuitiva da área de aprendizado de máquina supervisionado, frequentemente utilizada para tarefas de classificação e regressão. Apesar de sua simplicidade, o KNN pode apresentar alto desempenho em diversos contextos, desde sistemas de recomendação até diagnósticos médicos. Neste artigo, exploramos seu funcionamento, aplicações práticas e vantagens e desvantagens, com uma implementação básica em Python.


1. Introdução

Em tempos de hype com redes neurais profundas e modelos generativos como os LLMs, é fácil esquecer os algoritmos que formam a base da IA tradicional. O KNN (K-Nearest Neighbors) é um desses algoritmos: simples, eficaz e fácil de entender. Baseado no conceito de "proximidade", ele classifica ou prediz um valor com base nos vizinhos mais próximos do ponto de interesse em um espaço métrico.


2. Como Funciona o KNN

O algoritmo segue estes passos básicos:

  1. Recebe um novo dado (ex: uma flor a ser classificada).
  2. Calcula a distância desse ponto em relação a todos os pontos do conjunto de treino.
  3. Seleciona os K vizinhos mais próximos (menores distâncias).
  4. Classifica (ou prediz) com base na maioria (classificação) ou média (regressão) dos vizinhos.

A fórmula mais comum de distância é a Euclidiana:

d(p, q) = sqrt(∑(p_i - q_i)²)
Enter fullscreen mode Exit fullscreen mode

3. Aplicações Práticas

O KNN é versátil. Algumas aplicações:

  • Reconhecimento de padrões (escrita, imagem, som)
  • Diagnóstico médico (doenças com base em exames)
  • Recomendação de produtos (similaridade entre usuários)
  • Sistemas preditivos simples (análise de crédito, churn de clientes)

4. Vantagens e Desvantagens

Vantagens Desvantagens
Simples de implementar Alto custo computacional (distâncias)
Não-paramétrico (sem suposições) Sensível a dados irrelevantes ou ruído
Funciona bem com dados bem separados Dificuldade em grandes volumes de dados

5. Implementação Básica em Python

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import accuracy_score

# Carregar dataset Iris
data = load_iris()
X_train, X_test, y_train, y_test = train_test_split(
    data.data, data.target, test_size=0.2, random_state=42
)

# Instanciar modelo
knn = KNeighborsClassifier(n_neighbors=3)
knn.fit(X_train, y_train)

# Predição e acurácia
y_pred = knn.predict(X_test)
print("Acurácia:", accuracy_score(y_test, y_pred))
Enter fullscreen mode Exit fullscreen mode

6. Escolha do K Ideal

A escolha de K é crítica:

  • Um K muito pequeno pode levar ao overfitting.
  • Um K muito grande pode levar ao underfitting.

Uma boa prática é usar validação cruzada para encontrar o melhor valor de K.


7. Considerações Finais

O KNN é um ótimo ponto de partida para quem está aprendendo sobre IA e aprendizado supervisionado. Apesar das limitações de escalabilidade, sua intuição simples e poder de generalização o tornam valioso em muitos cenários práticos. Com os avanços em processamento paralelo e otimização de busca em vizinhança (como KD-Trees e Ball Trees), o KNN ainda tem seu espaço garantido na caixa de ferramentas de um cientista de dados.


Escrito por João Cláudio Nunes Carvalho — Professor, Cientista de Dados e apaixonado por IA aplicada ao mundo real.

Top comments (0)