• Nenhum resultado encontrado

Acelerando as Consultas com M-trees

5.5 Imputa¸c˜ao com o Algoritmo k-Vizinhos mais Pr´ oximos

5.5.1 O Algoritmo k-Vizinhos mais Pr´ oximos

5.5.1.4 Acelerando as Consultas com M-trees

M-trees (Ciaccia, Patella & Zezula,1997) s˜ao estruturas de indexa¸c˜ao capazes de suportar a execu¸c˜ao de consultas de similaridades. Existem dois tipos b´asicos de consultas de similaridade:

Consulta por intervalo

Dada uma distˆancia m´axima de busca e um exemplo de consulta, esta consulta de similaridade retorna todos os exemplos do conjunto de treinamento que est˜ao a uma distˆancia menor ou igual `a distˆancia m´axima de busca do exemplo de consulta; Consulta k-vizinhos mais pr´oximos

Dado um exemplo de consulta e um n´umero k, essa consulta de similaridade retorna os k exemplos do conjunto de treinamento mais pr´oximos do exemplo de consulta. Uma estrutura M-tree ´e um ´arvore m´etrica (Uhlmann, 1991). ´Arvores m´etricas somente consideram as distˆancias relativas entre os exemplos (ao inv´es das posi¸c˜oes ab- solutas desses exemplos em um espa¸co multi-dimensional) para organizar e particionar o espa¸co m´etrico. Em um espa¸co m´etrico, a proximidade entre exemplos ´e definida por uma fun¸c˜ao de distˆancia que satisfaz os postulados de n˜ao negatividade, simetria e desigualdade triangular.

Uma M-tree ´e uma ´arvore de crescimento “bottom-up” com n´os de tamanho fixo, os quais correspondem a regi˜oes restritas do espa¸co m´etrico. Os n´os folhas armazenam todos os objetos indexados, isto ´e, todos os exemplos, e os n´os internos armazenam os chamados objetos de roteamento. Um objeto de roteamento ´e uma c´opia de um exemplo do conjunto de dados para o qual ´e atribu´ıdo um papel de roteamento.

Para cada objeto de roteamento Or existe um ponteiro associado, denotado por

ptr(T (Or)), o qual referencia a raiz de uma sub-´arvore, T (Or), chamada de ´arvore de

cobertura de Or. Todos os objetos na ´arvore de cobertura de Or est˜ao a uma distˆancia

m´axima r(Or) do objeto de roteamento Or, sendo r(Or) > 0. r(Or) ´e chamado de raio

de cobertura de Or. Cada entrada de um n´o interno de umz M-tree ´e composto por uma

tupla

(Or, ptr(T (Or)), r(Or)).

Uma entrada em um n´o folha de uma M-tree ´e mais simples do que uma entrada de um objeto de roteamento. Isso ocorre pois um objeto folha Ol n˜ao possui sub-´arvore

associada e, conseq¨uentemente, n˜ao possui raio de cobertura. Ciaccia, Patella & Zezula

(1997) provˆe informa¸c˜oes adicionais sobre a estrutura de uma M-tree e algoritmos deta- lhados para realizar consultas de similaridade e construir uma M-tree.

Na Figura 5.2 na p´agina oposta ´e apresentado um exemplo de uma M-tree com dois n´os de roteamento e trˆes n´os folhas, e na Figura 5.3 na p´agina 108 ´e mostrado uma representa¸c˜ao gr´afica para a estrutura dessa M-tree.

Como mencionado previamente, uma M-tree cresce de forma “bottom-up”. Quando um novo objeto ´e inserido, a M-tree tenta localizar o n´o folha mais adequado para acomod´a-lo. Se o n´o folha est´a cheio, ent˜ao um novo n´o folha ´e alocado. Os objetos do n´o folha cheio s˜ao particionados entre esse n´o e o novo n´o folha, e dois objetos s˜ao promovidos para o n´o pai. Se o n´o pai est´a cheio, ent˜ao um algoritmo similar ´e aplicado, isto ´e, um novo n´o ´e alocado no mesmo n´ıvel que o n´o cheio, os objetos s˜ao particionados, e dois objetos s˜ao promovidos para o n´o pai. Quando o n´o raiz ´e dividido, um novo n´o raiz ´e criado e a M-tree cresce em um n´ıvel.

As implementa¸c˜oes dos m´etodos respons´aveis por promover dois objetos para o n´o pai, e por particionar os objetos restantes entre os dois n´os filhos definem o que ´e chamado de pol´ıtica de divis˜ao. Existem diversas alternativas para implementar esses dois m´etodos. Na implementa¸c˜ao utilizada neste trabalho, foi escolhido utilizar um algoritmo baseado

Seção 5.6: Como os Sistemas de Aprendizado C4.5 e CN2 Tratam Valores Desconhecidos 107 Or Ol Ol Ol r(O )r A a B b C A B E D H G F ptr(T(O ))r Or r(O )r C c D d ptr(T(O ))r

Figura 5.2: Exemplo de uma estrutura M-tree.

em Minimal Spanning Trees — MST, como proposto por Jr., Traina, Seeger & Faloutsos

(2000) para ser utilizado em uma variante das M-trees conhecida como Slim-trees. Uma pol´ıtica de divis˜ao ideal deve promover e particionar os objetos de forma que duas regi˜oes obtidas tenham m´ınimo volume e m´ınima intersec¸c˜ao. Esses crit´erios tˆem como objetivo melhorar a efetividade dos algoritmos de busca, uma vez que regi˜oes com pouco volume levam a ´arvores bem agrupadas e reduzem a quantidade de espa¸co sem nenhum objeto presente, e pouca (possivelmente nenhuma) intersec¸c˜ao entre regi˜oes reduz o n´umero de caminhos que precisam ser percorridos para responder a uma consulta.

5.6

Como os Sistemas de Aprendizado C4.5 e CN2

Tratam Valores Desconhecidos

Os sistemas de aprendizado C4.5 (Quinlan, 1988) e CN2 (Clark & Boswell, 1991) s˜ao dois algoritmos de AM simb´olicos, amplamente conhecidos pela comunidade, que induzem conceitos proposicionais: ´arvores de decis˜ao e conjuntos de regras, respectivamente. Esses algoritmos foram selecionados neste trabalho por serem considerados dois dos melhores algoritmos de aprendizado com essas caracter´ısticas.

O sistema C4.5 possui um efetivo algoritmo interno para tratar valores desconhe- cidos, uma vez que um recente estudo comparativo com outros m´etodos simples para

A a C c D d E F H B b G

Figura 5.3: Representa¸c˜ao gr´afica da M-tree apresentada na Figura5.2.

tratamento de valores desconhecidos, concluiu que o C4.5 era um dos melhores m´eto- dos (Grzymala-Busse & Hu, 2000).

O sistema C4.5 utiliza uma abordagem probabil´ıstica para tratar valores desconhe- cidos. Os valores desconhecidos podem estar presentes em qualquer atributo, exceto no atributo classe, tanto no conjunto de treinamento quanto no conjunto de teste.

Dado um conjunto de exemplos de treinamento, T , o sistema C4.5 encontra um teste apropriado, com base em um ´unico atributo, que possua um ou mais resultados mutuamente exclusivos R1, R2, . . . Rs. T ´e particionado em sub-conjuntos T1, T2, . . . Ts,

tal que Ti cont´em todos os exemplos em T que satisfazem o teste com resultado Ri. O

mesmo algoritmo ´e aplicado para cada sub-conjunto Ti, i = 1 . . . s, at´e que um crit´erio de

parada seja satisfeito.

O C4.5 utiliza a medida information gain ratio para escolher um bom teste para particionar os exemplos. Se existem valores desconhecidos em um atributo A, ent˜ao o sistema C4.5 utiliza o sub-conjunto com todos os valores conhecidos de A para calcular o ganho de informa¸c˜ao.

Uma vez que um teste com base em um atributo A ´e escolhido, o sistema C4.5 utiliza uma abordagem probabil´ıstica para particionar os exemplos com valores desconhecidos no atributo A. Quando um exemplo em T com valor conhecido ´e associado a um sub-conjunto Ti, isso pode ser entendido como a probabilidade desse exemplo pertencer a Ti ser 1, e para

Seção 5.6: Como os Sistemas de Aprendizado C4.5 e CN2 Tratam Valores Desconhecidos 109

somente uma declara¸c˜ao probabil´ıstica mais fraca pode ser feita. O C4.5 associa a cada exemplo em Ti um peso representando a probabilidade desse exemplo pertencer a Ti. O

peso para a parti¸c˜ao Ti´e a probabilidade desse exemplo pertencer a Ti. Essa probabilidade

´e estimada por meio da soma dos pesos dos exemplos em T que satisfazem o teste com resultado Ri, dividido pela soma de pesos dos casos em T com valores conhecidos para o

atributo A.

O sistema CN2 utiliza uma abordagem similar `a abordagem adotada pelo sistema C4.5 para tratar valores desconhecidos. O sistema CN2 induz regras na forma

if <condi¸c˜oes> then <classe = Ci> [#C1, #C2, . . . , #CN cl]

na qual <condi¸c˜oes> ´e uma conjun¸c˜ao de condi¸c˜oes que envolvem os atributos do conjunto de dados, e <classe = Ci> ´e a predi¸c˜ao realizada pela regra. O n´umero entre colchetes,

#Cj, indica o n´umero de exemplos do conjunto de treinamento cobertos pela regra para

cada classe Cj.

Esses valores podem ser utilizados pelo CN2 para realizar uma classifica¸c˜ao proba- bil´ıstica, caso o usu´ario deseje. Nesse caso, o CN2 responde com as probabilidades de um novo exemplo pertencer a cada uma das classes. Tamb´em, esses valores s˜ao utilizados pelo algoritmo que avalia regras n˜ao ordenadas para verificar qual ´e a classe mais prov´avel com base em todas as regras que foram disparadas para um novo exemplo. Se mais de uma classe ´e predita pelas regras disparadas, ent˜ao os valores #Cj s˜ao somados separadamente

para cada classe utilizando somente as regras disparadas. O CN2 responde com a classe mais prov´avel, isto ´e, aquela que possui o maior valor total de exemplos cobertos pelo conjunto de todas as regras disparadas.

No caso da indu¸c˜ao de regras n˜ao ordenadas pelo CN2, se o conjunto de treinamento possui exemplos com valores desconhecidos, ent˜ao o indutor, ap´os a indu¸c˜ao do conjunto de regras, realiza uma segunda passagem sobre o conjunto de regras atualizando os va- lores #Cj. Para cada exemplo com valores desconhecidos, o CN2 verifica quais regras

cobrem esse exemplo. Para que uma regra cubra um exemplo com valores desconhecidos basta que o exemplo com valores desconhecidos satisfa¸ca as condi¸c˜oes da regra e, caso a regra possua condi¸c˜oes envolvendo atributos cujos valores n˜ao sejam conhecidos para esse exemplo, ent˜ao essas condi¸c˜oes s˜ao automaticamente satisfeitas. O exemplo com valores desconhecidos ´e, ent˜ao dividido em fra¸c˜oes iguais, as quais s˜ao contabilizadas nos valo- res #Cj. Por exemplo, se trˆes regras s˜ao disparadas para um determinado exemplo com

valor #Cj, o qual depende da classe a qual o exemplo pertence.