Vous êtes sur la page 1sur 5

Estudo Comparativo de Desempenho dos Algoritmos KNN e

FairKNN
Pedro Dias de Oliveira Carvalho
UFMG, PPGEE Programa de Ps-Graduao em Engenharia Eltrica
Av. Pres. Antnio Carlos, 6627 -- 31270-901 Belo Horizonte - MG Brasil
pedrodoc@ppgee.ufmg.br

Resumo. Este trabalho compara o desempenho do algoritmo KNN padro


com uma verso modificada para classificao de uma base artificial.

1. Introduo
Esse trabalho tem como objetivo analisar o desempenho de uma modificao no
algoritmo K Nearest Neighbors (KNN), para isso foram realizados experimentos com o
algoritmo KNN modificado e com o KNN padro para fins de comparao. Ambos os
algoritmos foram implementados no software Matlab. Todos os experimentos foram
realizados com uma nica base de dados artificial. As sees a seguir descrevem o
funcionamento dos algoritmos implementados, a base de dados utilizada e os
experimentos realizados.

2. Base de Dados
A base de dados utilizada foi gerada com o Matlab, possui 10mil amostras com 10
caractersticas cada, sendo apenas 5 delas teis para a classificao das amostras em
uma das duas classes possveis. A base foi gerada com a seguinte funo:
Y = sign(2./(1+exp(-2*X1))-1+sin(X2)+X7+X8+X3),
onde X1 e X3 so gaussianas contnua de mdia nula e varincia unitria, X2 contnua
uniforme entre 0 e 2*PI, X7 uma gaussiana discreta de mdia nula e varincia unitria,
X8 uniforme discreta entre -2 e 2.
Alm dessas 5 caractersticas existem, no conjunto de entrada, mais outras 5
caractersticas que no contribuem para a deciso de classificao.

3. KNN
O algoritmo KNN, assim como sugere o nome, considera os K vizinhos mais prximos
da amostra a ser classificada. A amostra ento considerada da classe que for maioria
nesse conjunto de K vizinhos. Para uma base com apenas duas classes, basta que K seja

sempre impar para que no haja possibilidade de empate. O desempenho do KNN pode
variar de acordo com o valor escolhido para K. Essa escolha no trivial e difere para
cada base de dados. Muitas vezes o valor de K ajustado com auxlio da fase de
validao do classificador.

4. FairKNN
O algoritmo aqui chamado de FairKNN baseado no KNN original. A diferena que
no FairKNN so considerados os K vizinhos mais prximos para cada classe, ou seja, o
nmero de amostras a ser considerada pelo algoritmo igual pra cada classe. Dessa
forma o critrio para classificao tambm deve ser alterado, pois no existe uma classe
que seja maioria no conjunto de K vizinhos. O novo critrio a soma das distncias, o
ponto de teste considerado pertencente classe que possuir a menor soma das
distncias de suas K amostras mais prximas. Para o caso da base com duas classes, o
nmero total de vizinhos considerados sempre par.
Essa proposta de modificao no KNN surgiu mediante uma hiptese de que em
uma base de dados desbalanceada, isto uma base em que uma classe possui mais
amostras de treino do que outra, o mtodo KNN padro poderia privilegiar a classe mais
frequente. A proposta ento encontrar uma modificao que minimize os efeitos desse
desbalanceamento. Espera-se que tomando sempre um nmero igual de amostras para
cada classe, o critrio de classificao seja influenciado mais pela regio de cada classe
do que pela frequncia delas.

5. Experimentos e Resultados
Uma srie de experimentos foi realizada com ambos algoritmos, variando-se parmetros
como: quantidade de dados para treinamento, nmero de vizinhos e caractersticas
consideradas. A seguir descrito com detalhes cada experimento realizado.
Para analisar o comportamento dos algoritmos com o nmero de dados de
treinamento, escolheu-se um valor abitrrio para o nmero de vizinhos K (101 para o
KNN e 100 para o FairKNN), tambm foram selecionadas todas as caractersticas.
Ento com esses dois parmetros fixo, testou-se os algoritmos com 3 configuraes de
dados para teste. Os testes utilizaram 30% da base disponvel para treinamento, depois
50% e finalmente 70%.
O desempenho de classificao dos algoritmos verificado com a mtrica de
erro de classificao percentual. importante ressaltar que no existe dado em comum
nas bases de treinamento e teste, se 30% da base utilizada para treino, ento o teste
executado com os outros 70%.
Para analisar o comportamento dos algoritmos com a variao do nmero de
vizinhos K, manteve-se fixo a quantidade de dados para treinamento em 50%.
Os experimentos acima foram repetidos, mas dessa vez ao invs de usar todas as
caractersticas, foram utilizadas apenas as 5 caractersticas teis.

Os experimentos e seus respectivos resultados esto representados na Tabela 1.


Tabela 1 - Comparao de desempenho do KNN e FairKNN para diferentes cenrios.

experimento
1
2
3
4
5
6
7
8
9
10
11
12

numero de vizinhos k (knn/fairknn) dados pra treino


101/100
30%
101/100
50%
101/100
70%
11/10
50%
1001/1000
50%
2501/2490
50%
101/100
30%
101/100
50%
101/100
70%
11/10
50%
1001/1000
50%
2501/2490
50%

caractersticas
todas (10)
todas (10)
todas (10)
todas (10)
todas (10)
todas (10)
uteis (5)
uteis (5)
uteis (5)
uteis (5)
uteis (5)
uteis (5)

Erro percentual
Knn %
fairKnn %
12.81
11.83
12.38
11.4
11.87
10.8
11.24
11.5
16.02
14.12
17.28
15.96
7.09
5.64
6.72
5.48
5.83
4.73
5.1
4.52
13.7
10.42
19.56
14.9

Como pode ser observado, na Tabela 1, ambos os algoritmos obtiveram erro percentual
menor para valores pequenos de K, portanto uma anlise mais detalhada em torno de
valores pequenos foi feita, o resultado dessa ltima anlise pode ser visto na Figura 1
para o caso com todas as caractersticas e na Figura 2 para o caso com apenas as 5
caractersticas teis.

Figura 1 - Erro percentual x K considerando todas as caractersticas.

Figura 2 - Erro percentual x K considerando apenas as 5 caractersticas teis.

6. Concluso
Foi proposta e testada uma modificao do algoritmo KNN, nomeada aqui neste
trabalho de FairKNN. Vrios experimentos foram realizados para comparar os
algoritmos em diferentes situaes.
Os resultados mostram que para ambos algoritmos o erro percentual de
classificao diminui a medida que se utilizam mais dados para treinamento.
Esperava-se que o erro diminusse tambm com o aumento do nmero de
vizinhos considerados no critrio de classificao. Mas o erro de ambos os algoritmos
aumentou para valores grandes de K, revelando uma peculiaridade da base de dados
utilizada.
O algoritmo proposto FairKNN quando comparado com o KNN obteve erro
percentual menor em praticamente todos os testes. Para o caso em que todas as
caractersticas foram consideradas na classificao, o FairKNN reduziu o erro de
classificao em mdia de 7%. J no caso em que apenas as 5 caractersticas teis foram
consideradas para classificao, o FairKNN reduziu em mdia 20% do erro de
classificao.
A proposta inicial do FairKNN era obter resultado semelhante ao do KNN para
bases balanceadas e resultados melhores do que o KNN para bases desbalanceadas, nas
quais uma classe aparece com muito mais freqncia que outra. No entanto, a base
utilizada nesse trabalho uma base balanceada, possui menos de 1% de diferena entre
o nmero de amostras de cada classe, e mesmo assim o FairKNN apresentou melhorias
significativas reduzindo em mdia 20% do erro de classificao.
Um ponto interessante observado nos resultados de ambos os algoritmos a
reduo de 50% do erro de classificao ao selecionar as caractersticas teis antes da

classificao. Esse resultado mostra a dependncia que mtodos de classificao mais


simples, como o KNN, tm de uma etapa de seleo de caractersticas eficiente.

Referncias
Duda, R. O., Hart, E. P., e Stork, D. G. Pattern Classification. Wiley, New York, 2nd.
Edition, 2000.

Vous aimerez peut-être aussi