Você está na página 1de 8

Aprimoramento do KNN utilizando Algoritmo Genético

Gustavo S. Costa1 , Hugo Gustavo V. O. da Cunha1


1
Universidade Federal de Uberlândia (UFU)

Resumo. O k-Nearest Neighbor (KNN) é um dos mais populares algoritmos


de classificação supervisionado conhecido, no qual pode-se encontrar vários
estudos que descrevem a sua boa performance para diferente conjunto de dados.
Porém, é de fácil identificação três limitações do algoritmo: (i) complexidade
do cálculo devido ao uso de todas as amostras de treinamento, (ii) Desempenho
intimamente ligado ao conjunto de treinamento, (iii) não há diferenças de pesos
entre as amostras. Para superar essas limitações uma versão que combina KNN
com algoritmo genético (AG) é proposta neste artigo. Ao invés de considerar
todas as amostras de treinamento e aceitar os k-vizinhos mais próximos, o AG
desempenha a função de encontrar os elementos mais similares de uma amostra.
O desempenho foi comparado com diversos parâmetros do AG e com o KNN sem
modificações.

1. Introdução
Algoritmos de aprendizado de máquinas visam melhorar com experiências alguma tarefa
[Mitchell 1997], comumente são representados por duas classes, os supervisionados e os
não supervisionados. Para este trabalho atentaremos apenas aos algoritmos supervisio-
nados, que são algoritmos para classificação de novas instancias de hipóteses com base
em instancias previamente classificadas, tendo seu uso mais adequados para problemas
de regressão e classificação
O algoritmo supervisionado apresentado neste artigo é o k-Nearest Neighbor
(KNN), apresentado por [Fix and Hodges 1989], é um dos mais populares algoritmos de
classificação supervisionados conhecidos, que provou ser uma ferramenta simples e po-
derosa, diante de problemas de classificação mostrou que a regra de decisão tem um bom
desempenho [Cover and Hart 1967], considerando que nenhum conhecimento explı́cito
dos dados está disponı́vel.
Apesar de dispor de toda simplicidade o algoritmo KNN apresenta três limitações
[Wang and Wang 2007a]:
1. Alta complexidade de cálculo: Para encontrar os K vizinhos mais próximos de
uma amostra, deve calcular a similaridade da amostra para com todos os dados
da base de treinamento. Quando a quantidade de amostras de treinamento é
pequena, o classificador tem um bom funcionamento, mas se o número amostras
for relativamente grande, o classificador dependerá de um pouco mais de tempo
para calcular todas similaridades. Existem algumas técnicas para diminuir esse
tempo [Wang and Wang 2007a];

2. Dependência do conjunto de treinamento: O classificador é gerado apenas


com as amostras de treinamento e não usa dados adicionais. Isso faz com
que o algoritmo dependa excessivamente do conjunto de treinamento, ou seja,
precisa ser recalculado mesmo se houver uma pequena alteração no conjunto de
treinamento;

3. Não apresenta diferenças de pesos entre as amostras: Nenhuma diferença de peso


entre as amostras: todas as amostras de treinamento são tratadas igualmente; não
há diferença entre as amostras com pequeno número de dados e grande número de
dados. Portanto, ele não corresponde ao fenômeno real em que as amostras têm
distribuição desigual normalmente;

Neste trabalho, o Algoritmo Genético (AG) é combinado com o KNN com a fi-
nalidade de suprir as limitações apresentada acima. No algoritmo KNN tradicional, ini-
cialmente a similaridade entre todas as amostras de teste e treinamento é calculada e os
k-vizinhos com maiores similaridade são selecionados para classificação. O método pro-
posto usa o GA para selecionar os k-vizinhos mais semelhantes, não sendo necessário
calcular a similaridades à todas amostras de treinamento.
Para melhor exposição do conteúdo o artigo está desenvolvido da seguinte ma-
neira: na seção seguinte está uma analise de trabalhos relacionados, seguindo na seção 3
do desenvolvimento proposto, sendo que a seção 4 é apresentado os resultados obtidos,
encerrando com uma conclusão para a abordagem realizada neste artigo.

2. Trabalhos relacionados
Desde de sua publicação [Fix and Hodges 1989], tem-se estudado o KNN com vários ob-
jetivos. Como demonstrado por [Duda and Hart 1973], que realizou o uso do KNN para
obter boas estimativas do erro de Bayes e sua probabilidade de erro assintóticamente.
Além de estudos de uso prático do KNN foram realizadas pesquisas para o aprimoramento
do KNN sem alterar suas propriedades [Suguna and Thanushkodi 2010, Ghosh 2006,
Zhou and Chen 2006, Davis 1991].
[Lindenbaum et al. 2004] propõe um algoritmo loolmhead, por exemplo seleção
e aborda o problema da aprendizagem ativa no contexto dos classificadores vizinhos mais
próximos. A abordagem proposta baseia-se no uso de um modelo de campo aleatório para
a rotulagem de exemplo, que implica uma mudança dinâmica das estimativas do rótulo
durante o processo de amostragem. O algoritmo proposto foi avaliado empiricamente em
conjuntos de dados artificiais e reais. o experimentos mostram que o método proposto
supera outros métodos na maioria dos casos.
[Muni et al. 2006] Este artigo apresenta uma seleção de caracterı́sticas on-line al-
goritmo usando programação genética (GP). O GP proposto seleciona simultaneamente
um bom subconjunto de caracterı́sticas e constrói um classificador usando as carac-
terı́sticas selecionadas. Para uma classe de problema, ele fornece um classificador com
árvores. Neste contexto, introduziu-se duas novas operações de crossover para se ade-
quar as caracterı́sticas do processo de seleção. Como subproduto, o algoritmo produz um
esquema de classificação de caracterı́sticas.
[Wang and Wang 2007b] apresenta um método chamado TFKNN (Tree-Fast-
K-Nearest-Neighbor-Neighbor), que pode pesquisar exatamente os k vizinhos mais
próximos rapidamente. No método, uma árvore é usada para pesquisar K vizinhos mais
próximos é criado, no qual todos os nós filho de cada nó não-folha são classificados de
acordo com a distâncias entre seus pontos centrais e o ponto central da seus pais. Em
seguida, o escopo da pesquisa é reduzido com base no árvore. Posteriormente, o tempo
de computação por similaridade é diminuı́do drasticamente.
[Chen 2018] apresenta um método de otimização representativa da amostra. Com
base nisso, apresentando um algoritmo rápido QKNN (Vizinho k-mais próximo rápido)
para encontrar as amostras de k vizinho mais próximo, reduzindo o cálculo da similari-
dade. Os resultados experimentais mostram que esse algoritmo pode efetivamente reduzir
o número de amostras e acelerar a busca pelo k mais próximo amostras vizinhas para me-
lhorar o desempenho do algoritmo.
2.1. Aprimoramento do KNN baseado em Algoritmo Genético
O algoritmo genético (AG) é uma técnica de busca a otimização não-determinı́stica guiada
pelos princı́pios da evolução e da genética natural [Goldberg 1989]. Os AGs realizam
pesquisas em panoramas complexos, com grande volumes de dados e vários atributos
além de fornecerem soluções quase ideais para a função objetiva ou de adequação de um
problema de otimização.
No AG, os parâmetros do espaço de pesquisa são codificados na maneira que me-
lhor se adeque ao problemas, comumente são representados por um vetor (chamado cro-
mossomo). Uma coleção desses vetores têm o nome de população. Inicialmente cria-se
uma população com valeres aleatórios que representa diferentes soluções para o problema.
Uma função de aptidão está relacionada a cada cromossomo da população, essa função
mede o quão bom aquele indivı́duo é para o objetivo da busca. Com base no prı́ncipio
de sobrevivência do mais apto, algumas das sequências são selecionadas para realizar o
cruzamento entre elas. Para o cruzamento, operações de princı́pios biológicos como o
crossover e mutação, são aplicado nesses cromossomos, para produzir uma nova geração
de cromossomos. O processo de seleção, cruzamento e mutação continua por um número
fixo de gerações ou até que uma condição de aptidão seja satisfeita.
Para o melhoramento do KNN o AG foi manipulado da seguinte maneira:
1. Representação do cromossomo: O cromossomo foi codificado da seguinte
maneira; o número de gene no cromossomo representa a quantidade de amostras
da base de teste a considerar, ou seja, o tamanho do cromossomo é igual ao
número de k-vizinhos. Por exemplo se k for igual a 5 um cromossomo deve
seguir a seguinte representação:
[00100, 10010, 00256, 01875, 00098]
Onde o gene 00100 representa o 100o elemento da base de teste, analogamente
essa representação se estende aos demais genes.

2. Função de aptidão: A função de aptidão é calculada em relação aos k genes


representados no cromossomo, sendo que o calculo se resulta no somatório
da similaridade de todas amostras representada no cromossomo em relação a
amostra a ser classificada.

3. Seleção: O processo de seleção aplicado neste trabalho obece a técnica da roleta


sendo que a chance de selecionar um elemento é proporcional a qualidade da
amostra em relação a população.
4. Crossover: O crossover é um processo probabilı́stico que troca informações entre
dois genes selecionados, para essa melhoria proposta, o crossover utilizado foi a
técnica OX presente em [Gen and Cheng 1997].

5. Mutação: Cada cromossomo tem uma probabilidade fixa de receber mutação, ou


seja, existe a chance de um gene em um cromossomo ser alterado. Para o presente
projeto, dado um indivı́duo cujo operador deve ser aplicado, seleciona um gene
aleatoriamente, trocando o valor presente por um valor entre 1 e o tamanho da
base de treinamento.

3. Testes e Resultados

Os testes foram realizados com as seguintes amostras de testes, Poker1 , CovType2 e Skin3 ,
para isso diferentes configurações para o AG e KNN foram testadas.
A Tabela 1 representa a configuração do AG para o teste de variança de vizinhos.
Para as três bases de teste, o valor que K que alcançou a maior precisão, foi para um K
valendo 5 (Tabela 2), sendo que em negrito está o melhor resultado para cada uma das
bases.

Base de dados Poker CovType Skin


Tamanho da Base 500000 250000 100000
Elitismo 0.9 0.9 0.9
Probabilidade Crossover 0.95 0.95 0.95
Probabilidade Mutação 0.03 0.03 0.03
Tamanho População 10 10 10
Número Gerações 50 50 50
Tabela 1. Configuração do AG para variação de K vizinhos

O segundo teste foi realiza sobre da o número de gerações, a configuração é dado


pela tabela 3 para isso o AG foi configurado para considerar um número de 5 vizinhos e
tamanho da população 50, mantendo toda a sua configuração anterior. Todo resultado é
apresentado pela Tabela 4, sendo que em negrito está o melhor resultado para cada uma
das bases.
O terceiro teste foi realizado sobre da variação do tamanho da população, a
configuração é dado pela tabela 5 para isso o AG foi configurado para considerar um
número de 5 vizinhos e o número de gerações que melhor apresentou resultado do teste
anterior. Os resultados podem ser vistos na tabela 6
Portanto para o algoritmo proposto, a Tabela 7 mostra o resumo da melhor
configuração encontrada. Além disso a Tabela 8 mostra o melhor resultado encontrado
para as mesmas instâncias utilizando o KNN puro.

1
https://bit.ly/34bu68P
2
https://bit.ly/2YGj76n
3
https://bit.ly/2EagfFg
Base de Dados Variação de K Acurácia Tempo Total Desvio Médio Distância Média
Poker 5 0.48 95488.00 1.26 9.87
10 0.32 200103.00 1.05 10.55
15 0.37 283491.00 1.14 10.84
20 0.44 392788.00 1.11 10.98
CoverType 5 0.34 73702.00 9.06 5.58
10 0.32 142857.00 1.03 6.49
15 0.25 192953.00 1.04 6.58
20 0.24 242387.00 1.03 6.61
Skin 5 0.75 13258.00 15.18 53.38
10 0.65 25352.00 13.43 79.04
15 0.64 35340.00 12.00 84.34
20 0.66 44926.00 12.49 88.17
Tabela 2. Variação de k-vizinhos

Base de dados Poker CovType Skin


Tamanho da Base 500000 250000 100000
Elitismo 0.9 0.9 0.9
Probabilidade Crossover 0.95 0.95 0.95
Probabilidade Mutação 0.03 0.03 0.03
Valor de K 5 5 5
Tamanho da população 50 50 50
Tabela 3. Configuração do AG para variação de gerações

4. Conclusão
Com base nos testes realizados, identifica-se uma maior precisão em casos que a base
de dados de treinamento é menor, isto é, com um número de amostras e de atributos
relativamente pequeno. Além disso, a utilização do Algoritmo Genético apresentou uma
a acurácia melhor em relação ao KNN puro. Portanto, para casos maiores, deve-se partir
para abordagens mais complexas e robustas, a saber, clusterização, algoritmo genético
baseado em ilhas, técnicas de indexação dentre outras.

Referências
Chen, S. (2018). K-nearest neighbor algorithm optimization in text categorization. IOP
Conference Series: Earth and Environmental Science, 108:052074.
Cover, T. and Hart, P. (1967). Nearest neighbor pattern classification. IEEE Transactions
on Information Theory, 13(1):21–27.
Davis, L. (1991). Handbook of genetic algorithms.
Duda, R. O. and Hart, P. E. (1973). Pattern Classification and Scene Analysis. John
Willey & Sons, New Yotk.
Fix, E. and Hodges, J. L. (1989). Discriminatory analysis. nonparametric discrimina-
tion: Consistency properties. International Statistical Review / Revue Internationale
de Statistique, 57(3):238–247.
Gen, M. and Cheng, R. (1997). Genetic Algorithms and Engineering Design. Engineering
Design and Automation. Wiley.
Ghosh, A. K. (2006). On optimum choice of k in nearest neighbor classification. Compu-
tational Statistics Data Analysis, 50(11):3113 – 3123.
Goldberg, D. E. (1989). Genetic Algorithms in Search, Optimization and Machine Lear-
ning. Addison-Wesley Longman Publishing Co., Inc., Boston, MA, USA, 1st edition.
Lindenbaum, M., Markovitch, S., and Rusakov, D. (2004). Selective sampling for nearest
neighbor classifiers. Machine Learning, 54:125–152.
Mitchell, T. M. (1997). Machine Learning. McGraw-Hill, Inc., New York, NY, USA, 1
edition.
Muni, D. P., Pal, N. R., and Das, J. (2006). Genetic programming for simultaneous feature
selection and classifier design. IEEE Transactions on Systems, Man, and Cybernetics,
Part B (Cybernetics), 36(1):106–117.
Suguna, N. and Thanushkodi, K. (2010). A novel rough set reduct algorithm for medical
domain based on bee colony optimization. CoRR, abs/1006.4540.
Wang, Y. and Wang, Z. (2007a). A fast knn algorithm for text categorization. In 2007 In-
ternational Conference on Machine Learning and Cybernetics, volume 6, pages 3436–
3441.
Wang, Y. and Wang, Z. (2007b). A fast knn algorithm for text categorization. In 2007 In-
ternational Conference on Machine Learning and Cybernetics, volume 6, pages 3436–
3441.
Zhou, C. and Chen, Y. (2006). Improving nearest neighbor classification with cam weigh-
ted distance. Pattern Recognition, 39:635–645.
Base de Dados Número de gerações Acurácia Tempo Total Desvio Médio Distância Média
Poker 50 0.48 95488.00 1.26 9.87
100 0.4 100757.00 1.21 9.83
200 0.4 96567.00 1.29 9.96
300 0.46 96096.00 1.22 9.86
400 0.33 94551.00 1.17 9.79
500 0.38 99836.00 1.1 9.86
600 0.32 97514.00 1.17 9.90
700 0.41 103312.00 1.27 9.82
800 0.39 95206.00 1.19 9.80
900 0.44 95728.00 1.32 9.94
1000 0.39 100487.00 1.21 9.77
CoverType 50 0.38 73702.00 9.06 5.58
100 0.26 74183.00 9.22 5.73
200 0.27 68037.00 9.31 5.77
300 0.3 66286.00 9.35 5.82
400 0.34 70927.00 9.55 5.95
500 0.26 70793.00 9.46 5.91
600 0.27 69361.00 9.46 5.89
700 0.27 68864.00 9.53 5.95
800 0.28 73027.00 9.61 6.04
900 0.26 73853.00 9.41 5.89
1000 0.32 81257.00 9.14 5.65
Skin 50 0.75 13258.00 15.18 63.38
100 0.69 14859.00 15.74 64.73
200 0.7 14297.00 15.52 65.13
300 0.76 13926.00 16.03 66.11
400 0.69 16149.00 15.18 63.55
500 0.72 15614.00 14.51 66.4
600 0.7 16063.00 15.66 65.25
700 0.77 14341.00 15.44 63.35
800 0.75 14437.00 13.96 62.68
900 0.75 14182.00 15.66 65.4
1000 0.74 14951.00 14.89 64.06
Tabela 4. Variação de gerações

Base de dados Poker CovType Skin


Tamanho da Base 500000 250000 100000
Elitismo 0.9 0.9 0.9
Probabilidade Crossover 0.95 0.95 0.95
Probabilidade Mutação 0.03 0.03 0.03
Valor de K 5 5 5
Número Gerações 50 50 700
Tabela 5. Configuração do AG para variação da população
Base de Dados Tamanho da população Acurácia Tempo Total Desvio Médio Distância Média
Poker 50 0.40 508720.00 1.00 8.86
100 0.42 991333.00 0.97 8.52
150 0.46 1430167.00 1.09 8.33
200 0.48 1347503.00 0.95 8.33
250 0.41 2071587.00 0.91 8.14
CoverType 50 0.35 312399.00 8.22 5.12
100 0.26 507102.00 7.76 4.83
150 0.38 783365.00 7.32 4.46
200 0.28 896234.00 6.89 4.31
250 0.4 1131100.00 6.36 3.87
Skin 50 0.77 14341.00 15.44 63.35
100 0.86 99815.00 10.39 45.39
150 0.88 150167.00 10.04 42.94
200 0.89 1839936.00 8.57 39.91
250 0.89 194241.00 9.23 39.90
Tabela 6. Variação da população

Base de Dados Valor de K Número de Gerações Tamanho da População Acurácia


Poker 5 50 200 0.48
Covtype 5 50 150 0.38
Skin 5 700 200 0.89
Tabela 7. Resumo da melhor configuração para o KNN com Algoritmo Genético

Base de Dados Valor de K Acurácia


Poker 20 0.44
Covtype 20 0.20
Skin 20 0.50
Tabela 8. KNN puro

Você também pode gostar