Introdução a k-Nearest Neighbours: um poderoso algoritmo de aprendizado de máquina (com implementação em Python & R)

Observação: este artigo foi publicado originalmente em 10 de outubro de 2014 e atualizado em 27 de março de 2018

Visão geral

  • Entenda o vizinho mais próximo (KNN) – um dos algoritmos de aprendizado de máquina mais populares
  • Aprenda o funcionamento do kNN em python
  • Escolha o valor certo de k em termos simples

Introdução

Nos quatro anos da minha carreira em ciência de dados, construí mais de 80% de modelos de classificação e apenas 15-20% de modelos de regressão. Essas proporções podem ser mais ou menos generalizadas em todo o setor. A razão por trás dessa tendência para os modelos de classificação é que a maioria dos problemas analíticos envolve a tomada de decisão.

Por exemplo, um cliente atrai ou não, devemos ter como alvo o cliente X para campanhas digitais, quer o cliente tenha um alto potencial ou não, etc. Essas análises são mais perspicazes e diretamente vinculadas a um roteiro de implementação.

Neste artigo, falaremos sobre outra técnica de classificação de aprendizado de máquina amplamente usada, chamada de vizinhos K-mais próximos (KNN). Nosso foco será principalmente em como o algoritmo funciona e como o parâmetro de entrada afeta a saída / previsão.

Nota: Pessoas que preferem aprender por meio de vídeos podem aprender o mesmo por meio de nosso curso grátis – K- Algoritmo de vizinhos mais próximos (KNN) em Python e R. E se você for um iniciante em ciência de dados e aprendizado de máquina, confira nosso programa Certified BlackBelt –

  • Certified AI & Programa ML Blackbelt +

Índice

  • Quando usamos o algoritmo KNN?
  • Como o O algoritmo KNN funciona?
  • Como escolhemos o fator K?
  • Quebrando – Pseudo código de KNN
  • Implementação em Python desde o início
  • Comparando nosso modelo com o scikit-learn

Quando usamos o algoritmo KNN?

KNN pode ser usado para ambos problemas preditivos de classificação e regressão. No entanto, é mais amplamente utilizado em problemas de classificação na indústria. Para avaliar qualquer técnica, geralmente olhamos para 3 aspectos importantes:

1. Fácil de interpretar a saída

2. Tempo de cálculo

3. Poder preditivo

Vamos dar alguns exemplos para colocar KNN na escala:

Algoritmo KNN feiras em todos os parâmetros de considerações. É comumente usado por sua fácil interpretação e baixo tempo de cálculo.

Como funciona o algoritmo KNN?

Vamos pegar um caso simples para entender este algoritmo. A seguir está uma distribuição de círculos vermelhos (RC) e quadrados verdes (GS):

Você pretende descobrir a classe da estrela azul (BS). BS pode ser RC ou GS e nada mais. O algoritmo “K” é KNN é o vizinho mais próximo a partir do qual desejamos votar. Digamos K = 3. Portanto, faremos agora um círculo com BS como o centro, tão grande a ponto de incluir apenas três pontos de dados no plano . Consulte o diagrama a seguir para obter mais detalhes:

Os três pontos mais próximos do BS são todos RC. Portanto, com um bom nível de confiança, podemos dizer que o BS deve pertencer à classe RC. Aqui, a escolha tornou-se muito óbvia já que todos os três votos do vizinho mais próximo foram para RC. A escolha do parâmetro K é muito crucial neste algoritmo . A seguir, entenderemos quais são os fatores a serem considerados para concluir o melhor K.

Como escolhemos o fator K?

Primeiro, vamos tentar entender o que exatamente K influencia no algoritmo. Se virmos o último exemplo, dado que todas as 6 observações de treinamento permanecem constantes, com um dado valor de K podemos fazer limites de cada classe. Se os limites irão separar RC de GS. Da mesma forma, vamos tentar ver o efeito do valor “K” nos limites da classe. A seguir estão os diferentes limites que separam as duas classes com diferentes valores de K.

Se você observar com atenção, verá que o limite torna-se mais suave com o aumento do valor de K. Com K aumentando até o infinito, ele finalmente se torna todo azul ou todo vermelho, dependendo da maioria total. A taxa de erro de treinamento e a taxa de erro de validação são dois parâmetros que precisamos para acessar diferentes valores K. A seguir está a curva para a taxa de erro de treinamento com um valor variável de K:

Como você pode ver, o a taxa de erro em K = 1 é sempre zero para a amostra de treinamento.Isso ocorre porque o ponto mais próximo de qualquer ponto de dados de treinamento é ele mesmo. Portanto, a previsão é sempre precisa com K = 1. Se a curva de erro de validação fosse semelhante, nossa escolha de K seria 1. A seguir está a curva de erro de validação com valor variável de K:

Isso torna a história mais clara. Em K = 1, estávamos superando os limites. Portanto, a taxa de erro inicialmente diminui e atinge um mínimo. Após o ponto mínimo, ele aumenta com o aumento de K. Para obter o valor ideal de K, você pode separar o treinamento e a validação do conjunto de dados inicial. Agora plote a curva de erro de validação para obter o valor ideal de K. Este valor de K deve ser usado para todas as previsões.

O conteúdo acima pode ser entendido de forma mais intuitiva usando nosso curso livre – K-vizinhos mais próximos ( KNN) Algoritmo em Python e R

Dividindo – Pseudo Código de KNN

Podemos implementar um modelo KNN seguindo os passos abaixo:

  1. Carregue os dados
  2. Inicialize o valor de k
  3. Para obter a classe prevista, itere de 1 até o número total de pontos de dados de treinamento
    1. Calcule a distância entre o teste dados e cada linha de dados de treinamento. Aqui, usaremos a distância euclidiana como nossa métrica de distância, pois é o método mais popular. As outras métricas que podem ser usadas são Chebyshev, cosseno, etc.
    2. Classifique as distâncias calculadas em ordem crescente com base nos valores de distância
    3. Obtenha as k linhas principais da matriz classificada
    4. Obtenha a classe mais frequente dessas linhas
    5. Retorne a classe prevista

Implementação em Python do zero

Usaremos o popular conjunto de dados Iris para construir nosso modelo KNN. Você pode baixá-lo aqui.

Comparando nosso modelo com o scikit-learn

Podemos ver que ambos os modelos previram a mesma classe (Iris- virginica ) e os mesmos vizinhos mais próximos (). Portanto, podemos concluir que nosso modelo funciona como esperado.

Implementação de kNN em R

Etapa 1: Importando os dados

Etapa 2: Verificando os dados e calculando o resumo dos dados

Saída

Etapa 3: Dividindo os dados

Etapa 4: Calculando a distância euclidiana

Etapa 5: escrever a função para prever kNN

Etapa 6: calcular o rótulo (nome) para K = 1

Saída

For K=1 "Iris-virginica"

Da mesma forma, você pode calcular para outros valores de K.

Comparando nossa função de previsão kNN com a biblioteca “Class”

Saída

For K=1 "Iris-virginica"

Podemos ver que ambos modelos previram a mesma classe (Iris-virginica).

Notas finais

O algoritmo KNN é um dos algoritmos de classificação mais simples. Mesmo com tal simplicidade, pode fornecer resultados altamente competitivos. O algoritmo KNN também pode ser usado para problemas de regressão. A única diferença da metodologia discutida usará médias dos vizinhos mais próximos, em vez de votar nos vizinhos mais próximos. KNN pode ser codificado em uma única linha em R. Ainda estou para explorar como podemos usar o algoritmo KNN no SAS.

Você achou o artigo útil? Você usou alguma outra ferramenta de aprendizado de máquina recentemente? Você planeja usar KNN em algum dos seus problemas de negócios? Em caso afirmativo, compartilhe conosco como você pretende fazer isso.

Se você gostou do que acabou de ler & deseja continuar seu aprendizado de análise, inscreva-se em nosso e-mails, siga-nos no twitter ou curta nossa página no facebook.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *