You are on page 1of 19

KNN K Nearest Neighbor

(K Vizinhos mais Prximos)

Prof. Alexandre Monteiro


Recife

Contatos

Prof. Guilherme Alexandre Monteiro Reinaldo

Apelido: Alexandre Cordel

E-mail/gtalk: alexandrecordel@gmail.com
greinaldo@fbv.edu.br

Site: http://www.alexandrecordel.com.br/fbv

Celular: (81) 9801-1878

Histria

Mtodo introduzido nos anos 50.

Muito dispendioso computacionalmente.

S ganhou popularidade a partir dos anos 60, como o


aumento da capacidadecomputacional dos computadores.
Muito usado na rea de Reconhecimento de Padres.

Descrio do Mtodo KNN

Dados: Banco de Dados de m tuplas classificadas


(a1,...,an,C)

Uma tupla X = (x1,...,xn) no classificada

Os valores dos atributos so normalizados.


Valor normalizado = (v.real - MinA)/(MaxA MinA)

Calcula-se a distncia de X a cada uma das tuplas do


banco de dados.
Pega-se as k tuplas do banco de dados mais prximas
de X.
A classe de X a classe que aparece com mais
frequncia entre as k tuplas mais prximas de X.

Diferentes valores de K

K=1

K=2

K=3

Algumas questes

Como calcular a distncia entre duas tuplas ?


Para atributos contnuos : distncia Euclidiana
d(x,y) = ni=1 (xi yi)2
Para atributos categricos
Se xi = yi ento xi yi = 0
Se xi e yi so distintos: xi yi = 1

Como lidar com valores incompletos (ausentes) ao calcular


a distncia entre duas tuplas X e Y ?
Se xi e yi so ausentes: xi yi = 1
Se xi ausente e yi no: xi yi = max { |1 yi|, |0 yi| }

Como determinar o melhor valor de K (=nmero de


vizinhos) ?
Obtido repetindo-se os experimentos.

Vantagens e Desvantagens

Performance

No constri um modelo de classificao.


Processo de classificao de uma tupla lento.
Classificadores Eager (espertos) gastam tempo para
construir o modelo. O processo de classificao de
uma tupla rpido.

Sensvel a rudos

KNN faz predio baseando-se em informaes


locais tupla sendo classificada.
rvores de deciso, redes neurais e bayesianas
encontram modelo global que se leva em conta todo
o banco de dados de treinamento.

Exemplo

Compra-computador

ID

IDADE

RENDA

ESTUDANTE

CREDITO

CLASSE

30

Alta

No

Bom

No

30

Alta

Sim

Bom

No

31...40

Alta

No

Bom

Sim

> 40

Mdia

No

Bom

Sim

> 40

Baixa

Sim

Bom

Sim

> 40

Baixa

Sim

Excelente

No

31...40

Baixa

Sim

Excelente

Sim

30

Mdia

No

Bom

No

30

Baixa

Sim

Bom

Sim

10

> 40

Mdia

Sim

Bom

Sim

11

30

Mdia

Sim

Excelente

Sim

12

31...40

Mdia

No

Excelente

Sim

13

31...40

Alta

Sim

Bom

Sim

14

> 40

Mdia

No

Excelente

No

X = ( 30, Mdia,Sim,Bom)

Exemplo
Distncia

VALOR

d(X,1)

1,41

d(X,2)

d(X,3)

1,73

d(X,4)

1,41

d(X,5)

1,41

d(X,6)

1,73

d(X,7)

1,73

d(X,8)

d(X,9)

d(X,10)

d(X,11)

d(X,12)

1,73

d(X,13)

1,41

d(X,14)

1,73

Exemplo

K=5

Os 5 vizinhos mais prximos so

X1 = ( 30

Alta Sim Bom)

X2 = ( 30

Mdia

No Bom)

Classe = No

X3 = ( 30

Baixa

Sim Bom)

Classe = Sim

X4 = ( > 40

Mdia

Sim Bom)

Classe = Sim

X5 = ( 30

Mdia

Sim Exc. )

Clase = Sim

Logo, X classificada na classe = Sim

Classe = No

Acurcia de
Classificadores
Como medir ?

Holdout

Mtodo Holdout
Considera-se um banco de dados de amostras
Divide-se em 2 partes : D1 e D2
D1 2 vezes maior do que D2
Acurcia= nmero de tuplas de D2 bem classificadas
dividido pelo total de tuplas de D2

Subamostragem Randmica
Variao do mtodo Holdout
Mtodo Holdout repetido k vezes
Acurcia geral = mdia das acurcias em cada
rodada

Cross-Validation

Validao Cruzada (k-fold Cross-validation)


Dados iniciais so particionados em k partes D1,..., Dk de
tamanhos aproximados
Treinamento e testes so executados k vezes.
Em cada iterao i (i=1...k) Di escolhido para teste e o
restante das parties so utilizadas como treinamento.
Cada tupla de amostra utilizada o mesmo nmero de vezes
como tupla de treinamento e uma nica vez como tupla de
teste.
Acurcia de um classificador = nmero total de tuplas bem
classificadas nas k iteraes dividido pelo total de tuplas no
banco de dados original.
Acurcia de um preditor = Soma dos erros dividido nas k
iteraes dividido pelo total de tuplas no banco de dados
original.

Variantes do Cross-validation

Leave-one-out
Caso especial de k-fold cross validation
Cada Di tem um nico elemento
Em cada iterao somente 1 tupla utilizada para
teste.

Cross-validation estratificada
As folhas D1, ... , Dk so tais que a distribuio
das classes em cada folha aproximadamente igual
distribuio nos dados iniciais.
Ex: se em D a proporo de tuplas das classes C1 e
C2 de 2 para 1 ento esta proporo mantida
em cada folha Di.

Bootstrap

A cada vez que uma tupla selecionada para participar do


grupo de treinamento, ela volta novamente para o banco
inicial, podendo ser novamente selecionada na prxima
vez.
Bancos de treinamento e testes podem conter tuplas
repetidas.

.632 Bootstrap

Banco de dados original com d tuplas

Os sorteios de tuplas so realizados d vezes.

Ao final de d sorteios temos um banco D1 de treinamento


(boostrap sample) e um banco D2 de testes.
A amostra de treinamento D1 tem exatamente d elementos.

.632 Bootstrap

bem provvel que alguma tupla t do banco


original ocorre repetida em D1.
Qual a probabilidade de uma tupla no estar no
banco de treinamento D1 no final dos d sorteios ?
(1 1/d)d
lim (1 1/d)d = 1/e (para d infinito)
e = 2.718
1/e = 0,368
36,8% das tuplas no so escolhidas: formam o conj. D2
63,2% das tuplas so escolhidas: formam o boostrap D1

Acurcia medida com o Boostrap

Repete-se o processo de amostragem k vezes


Em cada vez construmos D1 e D2 e medimos a
acurcia do classificador (ou preditor) M
Acc(Mi)test-set = acurcia de M calculada na iterao i,
com D2 como teste e D1 como treinamento
Acc(Mi)train-set = acurcia de M calculada na iterao i,
com dados originais como teste e D1 como
treinamento.
Acurcia(M) =
k (0.632*Acc(Mi)test-set + 0.368*Acc(Mi)train-set )
i=1

Referncias
Machine Learning. Tom Mitchell. McGraw-Hill.1997.