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