Você está na página 1de 6

Curso de Data Mining

Sandra de Amo Aula 19 - Minerao de padres em caminhos percorridos por usurios da Internet ca o a - os algoritmos FS e SS Nesta aula, vamos dar os detalhes dos algoritmos FS e SS para mineraao de padres em c o caminhos percorridos por usurios da Internet. Tais algoritmos utilizam uma verso otimizada a a do algoritmo Apriori (o algoritmo DHP [1]), para minerao de sequncias de endereos. Repare ca e c que uma sequncia < a1 , a2 , ..., an >, onde cada ai um s e e mbolo representando o endereo de c uma pgina, pode ser visto como uma generalizaao de um itemset: a unica diferena que a c c e aqui os itens (endereos) so ordenados e a incluso de uma sequncia s em uma sequncia t c a a e e e diferente da incluso de um itemset I num itemset J (veja esta deniao na aula anterior). As a c referncias para a aula de hoje so [1] e [2]. e a

O algoritmo DHP (Direct Hashing and Pruning)

Vamos apresentar aqui o algoritmo DHP para minerar itemsets. O algoritmo DHP deve ser adaptado para ser utilizado no caso de sequncias de referncias. Voc deve fazer isto como e e e exerc (ver exerc 3 no nal destas notas). cio cio

1.1

Idia geral do algoritmo e

e Iterao 1: E idntica ` iterao 1 de Apriori, onde o conjunto de candidatos C1 gerado ca a ca e e depois testado no banco de dados D, para calcular L1 . A unico ponto que muda que ao e mesmo tempo que se varre o banco de dados para contar o suporte dos candidatos C1 , vai-se construindo uma tabela hash para indexar os 2-itemsets contidos em transaoes de D. c Por exemplo, consideremos a situao ilustrada na gura 1 abaixo. A seguinte funo hash ca ca utilizada para indexar os 2-itemsets: e h({a, b}) = h({a, c}) = h({b, c}) = 1, h({c, e}) = 2, h({a, d}) = h({c, d}) = h({b, e}) = 3. A funo N (m) conta o nmero de transaoes do banco de dados que suporta itemsets x tais ca u c que h(x) = m. A gura 1 abaixo ilustra esta construo. ca A idia central de utilizar a tabela H2 para uma podagem extra nos candidatos C2 da e prxima iteraao a seguinte : o c e (*) Se N (m) for inferior ao suporte m nimo para algum m ento nenhum itemset a indexado por m poder ser frequente. Logo, ser podado de C2 na iteraao a a c 2. Isto , alm da poda habitual que se faz em C2 utilizando a propriedade e e Apriori, faremos uma poda a mais, utilizando a tabela hash H2 , constru da na iteraao precedente (iterao 1) no momento de se varrer o banco de dados c ca para o clculo de L1 . a

b,c a,b h(x) 1 c, e 2 3 N(h(x)) 5 2 3 a,c Banco de Dados < a, b, c > < b, c, e > < a, c, d, e > ... ... a,d c,d b,e

FIGURA 1 De aqui em diante, para cada iterao k 2, vamos testar a seguinte condio : ca ca

Condk : Seja X = o nmero de grupos x para os quais N (x) , onde = suporte m u nimo. X , onde um limite dado ? e

Caso Condk seja satisfeita, utilizamos Rotina 1 para calcular Lk , caso contrrio utilizamos a Rotina 2. Rotina 1 Iterao 2: Nesta iteraao o banco de dados D2 = D (banco de dados original). Temos ca c e duas fases distintas : 1. Fase de Gerao e Poda : nesta fase vamos calcular os candidatos C2 : para isto, vamos ca calcular os candidatos a partir de L1 e pod-los utilizando a tabela hash H2 constru a da na iterao anterior. Veja que na iterao 2, a poda usual de Apriori no efetuada, pois ca ca a e no tem nenhum efeito. a A construo de C2 feita da mesma maneira como era feita em Apriori. S que depois da ca e o poda usual, poda-se tambm os itemsets c tais que H2 (h2 (c)) < . Veja que aqui, estamos e utilizando a propriedade (*) acima mencionada : itemsets c para os quais H2 (h2 (c)) < no tm chance nenhuma de serem frequentes ! a e 2

2. Fase de Clculo do Suporte : nesta fase vamos : a calcular o suporte dos candidatos C2 que sobraram da fase anterior, podar o banco de dados, transformando-o num banco de dados D3 que ser utilizado a na prxima iterao, para o clculo do suporte dos candidatos C3 , o ca a construir a tabela hash H3 que servir para podar os candidatos C3 na prxima a o iterao. ca Todos estes 3 passos so realizados simultaneamente, numa unica varrida do banco de a dados. Construimos um array A com tantas casas quantos forem os itens que aparecem no banco de dados. Vamos supor que os items esto enumerados : a0 , a1 , .... O elemento a A[i] vai conter um contador correspondente ao item ai . No in cio, tais contadores so a inicializados como zero. O procedimento para realizar os 3 passos acima o seguinte : para cada transao t e ca de D2 : (a) Incrementamos os contadores dos candidatos c C2 (que esto armazenados numa a rvore-hash como de hbito) para os quais c t. a a (b) Ao mesmo tempo que um candidato c est sendo avaliado, aumentamos os contadores a individuais A[i] de cada item ai de c. (c) Itens ai tais que A[i] inferior a 2 podem ser podados de t, pois com certeza no sero e a a utilizados no clculo do suporte na prxima iterao. Por que ? Ora, se t contm a o ca e um 3-itemset frequente, ento dever conter exatamente trs 2-itemsets frequentes. a a e Logo, cada item de um 3-itemset frequente dever aparecer em pelo menos dois 2a itemsets frequentes. Logo, se, no total, um item aparece em menos de dois itemsets de C2 , ele no aparecer em nenhum 3-itemset frequente no futuro. Logo, pode ser a a retirado de t sem nenhum preju zo. (d) Aps esta limpeza preliminar da transaao t, vamos utilizar a tabela hash H2 a m o c de construir a tabela hash H3 para a iteraao seguinte e ao mesmo tempo podar c mais a transaao t. c A idia da podagem extra a seguinte : se um item a de t s aparece em e e o 3-itemsets de t tais que algum 2-subitemset no est em C2 ento este item a com a a a certeza nunca poder aparecer num 3-itemset frequente suportado por t. Logo, pode a ser podado de t sem preju algum para a contagem do suporte na prxima iterao. zo o ca Logo, s vo car em t aqueles itens que esto contidos em algum 3-itemset para o o a a qual todos os trs 2-subitemsets contidos em C2 . e Assim, constru mos H3 , ao mesmo tempo que aumentamos os contadores dos itens de t: para cada 3-itemset x = {a, b, c} de t, vericamos se todos os trs subitemsets e {a, b}, {a, c} e {b, c} esto em grupos de H2 com suporte . Se for o caso: (1) a aumentamos o contador de H3 (h3 (x)), onde h3 a funao hash que vai distribuir os e c 3-itemsets em grupos e (2) aumentamos os contadores de a, b e c. Aqueles itens para os quais os contadores so nulos sero podados de t. a a 3

(e) O novo banco de dados, depois que cada transao podada, denotado D3 . Ser ca e e a este banco de dados podado que ser utilizado na iterao seguinte para o clculo a ca a do suporte de C3 . As prximas iteraoes so anlogas ` iterao 2 : o c a a a ca 1. Constri-se os candidatos Ck utilizando o conjunto Lk1 , faz-se a podagem costumeira e o depois a podagem extra de Ck utilizando a tabela hash Hk constru na fase anterior. da 2. Para cada transao t de Dk , aumenta-se o contador de cada candidato c Ck que ca e suportado por t e ao mesmo tempo aumenta-se os contadores dos itens de t que aparecem em c. So podados aqueles itens cujos contadores so inferiores a k, isto , que aparecem a a e no mximo em k 1 candidatos. a 3. Para cada transaao t, analisa-se cada (k + 1)-itemset x de t. Para cada um destes c (k + 1)-itemsets, verica-se se todos os seus k-itemsets aparecem em grupos m de Hk com Hk (m) . Caso isto acontea para um (k + 1)-itemset x, incrementa-se os conc tadores individuais de todos os items de x e ao mesmo tempo aumenta-se o contador de Hk+1 (hk+1 (x). Elimina-se de t aqueles itens a tais que seu contador A[a] nulo. Estes e itens no pertencem a nenhum (k + 1)-itemset potencialmente frequente e portanto so a a inteis em t. u Rotina 2 A primeira iterao k desta rotina : ca 1. Fase de Gerao e Poda : nesta fase vamos calcular os candidatos Ck utilizando Lk1 ca e Hk da etapa anterior, exatamente como na Rotina 1. 2. Fase de Clculo do Suporte : nesta fase vamos calcular o suporte dos candidatos Ck a que sobraram da fase anterior e ao mesmo tempo podar o banco de dados (a primeira podagem somente). No se constri a tabela hash Hk+1 e nem se realiza a segunda a o podagem (que normalmente feita no momento da construao desta tabela). A partir da e c prxima iterao k + 1, os candidatos Ck+1 sero constru o ca a dos como no algoritmo Apriori, sem a utilizao da tabela hash Hk+1 . ca As prximas iteraoes da Rotina 2 : o c 1. Fase de Gerao e Poda : nesta fase vamos calcular os candidatos Ck utilizando Lk1 ca como em Apriori. No h mais a tabela Hk nesta fase. a a 2. Fase de Clculo do Suporte : esta fase idntica ` primeira iteraao da rotina 2 : a e e a c calcula-se o suporte dos candidatos Ck que sobraram da fase anterior e ao mesmo tempo poda-se o banco de dados (a primeira podagem somente). No se constri a tabela hash a o Hk+1 e nem se realiza a segunda podagem (que normalmente feita no momento da e construao desta tabela). c

Repare que : DHP no reduz o nmero de varridas no banco de dados. A otimizaao consiste em podar a u c mais candidatos a cada iteraao (mais do que a poda usual de Apriori) e eventualmente diminuir c o nmero de transaoes do banco de dados que sero testadas a cada varrida. u c a Resultados experimentais indicam que a Rotina 1 deve ser utilizada somente nas primeiras iteraoes, onde o nmero de candidatos realmente muito grande e que a podagem obtida c u e utilizando a tabela hash seja substancial, que compense o tempo gasto construindo-se a tabela hash. Normalmente, isto s vale a pena at k = 2, depois melhor utilizar a Rotina 2. Sugerimos o e e fortemente ao leitor de ver a anlise detalhada de performance deste algoritmo, apresentada no a artigo [1].

1.2

Exemplo de uso
TID 100 200 300 400 Items ACD BCE ABCE BE

Consideremos o seguinte banco de dados D inicial :

Vamos supor uma ordem nos items : o(A) = 0, o(B) = 1, etc. Suponhamos a seguinte funao hash : c h2 ({x, y}) = (o(x) 10 + o(y)) mod 7 Temos a seguinte tabela hash H2 : 0 1 2 3 4 5 6 3 1 2 0 3 1 3 itemsets itemsets itemsets itemsets itemsets itemsets itemsets contados contados contados contados contados contados contados : : : : : : : {C,E}, {C,E}, {A,D} {A,E} {B,C}, {B,C} {B,E}, {B,E}, {B,E} {A,B} {A,C}, {C,D}, {A,C}

Suponhamos que o suporte m nimo seja 50%. Uma anlise premiliminar nos d : L1 = a a {{A}, {B}, {C}, {D}}. Vamos analisar o que acontece na fase da gerao dos candidatos C2 : ca a Os pr-candidatos C2 (como calculado por Apriori) so : {A,B}, {A,C}, {A,D}, {B,C}, e {B,D}, {C,D}. Com a ajuda da tabela H2 , podemos fazer uma podagem extra : (1) h2 ({A, B}) = 5, cujo contador H2 (5) 1. Logo, deve ser descartado. (2) h2 ({A, E}) = 5, cujo contador e H2 (1) 1. Logo, deve ser descartado. Assim, utilizando somente Apriori no podamos nada. e a Utilizando DHP, podamos 2 pr-candidatos. e Vamos agora ver o que acontece na Fase do Clculo do Suporte : a transaao 100 contm a c e somente o candidato {A, C}. Assim, A[0] = 1, A[1] = 0, A[2] = 1. Como todos os valores de A[i] 5

so menores do que 2, esta transaao eliminada do banco de dados para a prxima iteraao, a c e o c isto , todos os seus itens so eliminados. Por outro lado, a transao 300 contm 4 candidatos e a ca e de tamanho 2 ({A,C}, {B,C}, {B,E}, {C,E}) e a correspondente ocorrncia dos itens so : e a A[0] = 0, A[1] = 2, A[2] = 2, A[3] = 0, A[4] = 2 O item A ser descartado desta transaao aps a primeira podagem das transaoes. Repare a c o c que no tem sentido falar em podar o item D correpondente a A[3], pois este no aparece em a a t. Consideremos uma outra situao : suponhamos que tenhamos uma transao t = {A, B, C, D, E, F } ca ca e C2 contm cinco 2-itemsets {AC, AE, AF, CD, EF}. Neste caso : e A[0] = 3, A[1] = 0, A[2] = 2, A[3] = 1, A[4] = 2, A[5] = 2 Logo, na primeira podagem de t so eliminados os itens B e D. a Na segunda podagem : repare que temos trs poss e veis 3-itemsets de {A,C,E,F} contendo C : {A,C,E}, {A,C,F} e {C,E,F}. O primeiro contm {C,E} que no est em C2 , o segundo e a a contm {C,F} que no est em C2 e o terceiro tambm contm {C,F} que no est em C2 . e a a e e a a Logo, C eliminado de t na segunda podagem. e Exercicio 1 : Analisar quais os itens que so eliminados de t = {A, B, C, D, E, F } no exemplo a anterior, na iteraao 2. c Exercicio 2 : Execute com detalhes o algoritmo DHP no banco de dados D do exemplo anterior, supondo = 0, 5 e = 4. Exercicio 3 : Adaptar DHP para ser utilizado no problema da mineraao de sequncias c e frequentes de pginas visitadas por usurios, como parte preliminar dos algoritmos FS e SS. a a

Referncias e
[1] M.S. Chen, J. S. Park, P.S. Yu : An Eective Hash-Based Algorithm for Mining Association Rules. In ACM SIGMOD International Conference on Management of Data, May 1995. [2] M.S. Chen, J. S. Park, P.S. Yu : Ecient Data Mining for Path Traversal Patterns. IEEE Transactions on Knowledge Discovery and Data Engineering 10(2), 209-221, Mars 1998.

Você também pode gostar