Menu
CoddyTech

Introdução ao KNN

Lição 6 de 19 do curso Introdução ao aprendizado de máquina da Coddy.

K-Nearest Neighbors (KNN) é um algoritmo de aprendizado supervisionado que é usado tanto para problemas de classificação quanto de regressão. Ele é simples, porém poderoso, e é frequentemente usado como uma linha de base para modelos mais complexos.

O algoritmo KNN encontra a similaridade de características usando métricas de distância para identificar os vizinhos mais próximos de um ponto. Por exemplo, ele pode classificar vinhos comparando-os com os mais próximos, como agrupar vinhos com sabores semelhantes. É como ter um guia que ajuda você a encontrar quais vinhos são parecidos com base em seus traços mais comuns. 🍷
A ideia por trás do KNN é bastante direta:

  1. Cálculo de Distância: Para um dado ponto de teste, o algoritmo calcula a distância entre esse ponto e todos os outros pontos no conjunto de dados de treinamento. A distância pode ser calculada de várias maneiras, como a distância Euclidiana ou de Manhattan.
  2. Encontrar os Vizinhos Mais Próximos: O algoritmo então seleciona os k pontos nos dados de treinamento que estão mais próximos do ponto de teste. k é uma constante definida pelo usuário e pode ser qualquer número inteiro.
  3. Fazer Predição: Para classificação, o algoritmo atribui o rótulo de classe mais comum entre os k vizinhos mais próximos ao ponto de teste. Para regressão, ele atribui a média dos ‘k’ vizinhos mais próximos.

O KNN é um algoritmo de aprendizado preguiçoso (lazy learning), o que significa que ele não aprende de fato um modelo. Em vez disso, ele memoriza as instâncias de treinamento e as utiliza para predição (a próxima lição cobrirá a fase de treinamento). Isso torna o KNN computacionalmente caro durante a fase de teste.

Apesar de sua simplicidade, o KNN pode alcançar um desempenho surpreendentemente bom. No entanto, ele é sensível à escolha de k e ao tipo de métrica de distância, e não apresenta um bom desempenho com dados de alta dimensão devido à maldição da dimensionalidade.

quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

challenge icon

Desafio

Fácil

Neste desafio, aprenderemos diferentes cálculos de distância.

Crie uma função chamada distances_option_calculator que recebe três variáveis: X, y e distance_type. A função retornará a distância entre X e y de acordo com o distance_type.

Aqui está uma lista de cálculos de distância comuns:

Distância Euclidian (A mais comum) A distância em linha reta entre dois pontos. A raiz quadrada da soma dos quadrados das diferenças entre cada coordenada correspondente dos pontos:

equação da distância euclidiana

A distância Manhattan também é conhecida como distância de Taxicab ou City Block. A soma das diferenças absolutas entre os pontos em todas as dimensões. Para dois pontos ( P ) e ( Q ), com coordenadas ( (p_1, p_2, …, p_n) ) e ( (q_1, q_2, …, q_n) ) respectivamente:

distância manhattan
exemplo visual de distâncias

Distância Hamming: O número de posições nas quais os símbolos correspondentes são diferentes. É frequentemente usada para dados categóricos.
Por exemplo, vamos pegar duas strings binárias:

String 1: 1101
String 2: 1001

Comparando-as posição por posição, vemos que a segunda posição tem bits diferentes (1 na String 1 e 0 na String 2). Todas as outras posições são iguais. Portanto, a distância Hamming entre essas duas strings é 1.

O distance_type pode ter os seguintes itens: "hamming", "manhattan", "euclidian".

Experimente você mesmo

def distances_option_calculator(X, y, distance_type):
    # Escreva o código aqui
    if distance_type == "euclidian":
        pass
    elif distance_type == "manhattan":
        pass
    elif distance_type == "hamming":
        pass

Todas as lições de Introdução ao aprendizado de máquina

Pratique por conta própria: Compilador de Python online