1 k-Nearest Neighbor

Transcrição

1 k-Nearest Neighbor
Curso de Data Mining
Sandra de Amo
Aula 12N - Classificadores Preguiçosos: Método k-NN
Os classificadores que vimos até o momento, baseados em árvores de decisão, redes neurais, redes bayesianas, são caracterizados pelo fato de utilizarem os dados de treinamento para
construı́rem um modelo de classificação, que uma vez encontrado e testado, estará pronto para
ser utilizado para classificar qualquer objeto novo. O processo de encontrar o modelo é lento,
mas uma vez encontrado, o ato de classificar um novo objeto é realizado de forma rápida.
Tais classificadores são chamados de Classificadores Apressados (Eager Classifiers). Existem
diversos métodos de classificação, amplamente utilizados na prática, que diferem dos métodos
apresentados até agora pelo fato de não utilizarem os dados de treinamento para produzirem
um modelo de classificação. O processo de classificação utilizado por estes classificadores, ditos
preguiçosos, pode ser descrito suscintamente da seguinte forma: a cada novo objeto que se quer
classificar, utiliza-se os dados de treinamento para verificar quais são os objetos nesta base de
dados que mais se assemelham ao novo objeto que se quer classificar. O objeto será classificado dentro da classe mais comum a que pertencem os objetos mais similares a ele. Assim,
a classificação é feita por analogia. Nenhum modelo de classificação é criado. Ao invés disto,
a cada novo objeto a ser classificado, os dados de treinamento são escaneados. Obviamente,
classificadores preguiçosos são computacionalmente dispendiosos. Eles requerem técnicas eficientes de armazenamento e são adequados para implementação em ambientes de computação
paralela. Uma qualidade de tais classificadores é que suportam aprendizado incremental. Dois
exemplos de classificadores preguiçosos são o k-Nearest Neighbor (k vizinhos mais próximos) e
o Case-based Reasoning (racionı́nio baseado em casos). Nesta aula, vamos discutir somente o
k-Nearest Neighbor.
1
k-Nearest Neighbor
Este método foi descrito primeiramente nos anos 1950. Mas foi somente a partir dos anos
60, quando computadores mais potentes surgiram, que o método ganhou popularidade. Ele tem
sido muito usado, desde então, principalmente em reconhecimento de padrões.
Descrição do Método. Suponhamos um conjunto D de tuplas de treinamento. Cada elemento de D é uma tupla (x1 ,x2 ,...,xn ,c), onde c é a classe à qual pertence a tupla (x1 ,...,xn ). A
tupla (x1 ,...,xn ) pode ser vista como um ponto num espaço n-dimensional. Seja Y = (y1 ,...,yn )
uma nova tupla, ainda não classificada. A fim de classificá-la, calcula-se as distâncias de Y a
todas as tuplas de treinamento e considera-se as k tuplas de treinamento mais próximas de Y .
Dentre estas k tuplas, verifica-se qual a classe que aparece com mais frequência. A tupla Y será
classificada dentro desta classe mais frequente.
Como é calculada a distância. A distância entre duas tuplas é calculada utilizando uma
noção de distância, por exemplo, a distância euclidiana:
1
d(X,Y ) =
p
Σni=1 (xi − yi )2
Geralmente, é preciso normalizar os valores de cada atributo, a fim de que todos caiam num
mesmo intervalo de variação, não havendo muita discrepância entre os valores dos diferentes
atributos, que poderia influir tendenciosamente no cálculo da distância. O processo de normalização é simples: seja v um valor do atributo A que aparece na tupla Y . Para normalizar v
consideramos o valor v 0 ∈ [0,1] calculado como:
v − minA
maxA − minA
onde minA e maxA são os valores mı́nimos e máximos que pode assumir o atributo A. Por
exemplo, seja A o atributo Renda-Mensal, e suponhamos que a renda mensal mı́nima é R$
300,00 e a máxima é R$ 20.000,00. O valor de R$ 1200,00 é normalizado para 0,045.
v0 =
2
Questões diversas
Algumas questões surgem naturalmente ao se utilizar o método k-NN na prática:
– Como calcular a distância quando existem atributos cujos valores não são numéricos, por
exemplo o atributo Cor ? Um método simples é o seguinte: se xi 6= yi então xi − yi = 1,
se xi = yi então xi − yi = 0. Outros métodos mais sofisticados podem ser utilizados, onde
se utiliza esquemas de graduação das diferentes cores. Por exemplo, (vermelho - azul) =
0,5 e (azul - preto) = 0,2.
– O que fazer quando a tupla a ser classificada é incompleta, isto é, alguns campos estão
faltando ? Em geral, se o valor de um atributo A está faltando tanto na tupla X (do
conjunto de treinamento) quanto na tupla Y (a ser classificada), consideramos a diferença
máxima, isto é (xi − yi ) = 1. Para atributos categóricos, sempre consideramos a diferença
máxima (=1) caso o valor do atributo está faltando em uma ou ambas as tuplas. Para
atributos numéricos (normalizados), quando os valores estão faltando em ambas as tuplas,
considera-se a diferença máxima. Se o valor (v) está presente numa das tuplas e faltando
na outra, considera-se a diferença como sendo o máximo entre 1 − v e v − 0.
– Como determinar o melhor valor de k ? O melhor valor de k pode ser determinado experimentalmente. Começa-se com k = 1, e utiliza-se um conjunto de testes, para estimar o
taxa de erro do classificador. Para cada k, classifica-se as tuplas do conjunto de testes e
verifica-se quantas tuplas foram bem classificadas. O valor de k que dá a menor
taxa de
√
erro será o escolhido. Normalmente, os valores de k escolhidos são 1, 2, 3 e n, onde n é
o tamanho da base de treinamento.
3
Questões de Complexidade
Seja n o tamanho da base de treinamento e k = 1. Para classificar uma nova tupla são
necessários O(n) comparações. Ordenando e armazenando as tuplas de treinamento numa árvore
de busca (B-tree), o número de comparações pode ser reduzido para O(log n). Técnicas de
2
computação paralela reduzem o número de comparações a uma constante, independente do
valor de n.
Uma implementação do método k-NN está disponı́vel em
http://www-users.cs.umn.edu/˜kumar/dmbook/resources.htm
3