A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Mineração de Padrões Arborescentes Sandra de Amo FACOM - UFU Mestrado em Ciência da Computação.

Apresentações semelhantes


Apresentação em tema: "Mineração de Padrões Arborescentes Sandra de Amo FACOM - UFU Mestrado em Ciência da Computação."— Transcrição da apresentação:

1 Mineração de Padrões Arborescentes Sandra de Amo FACOM - UFU Mestrado em Ciência da Computação

2 Algoritmos de Mineração de Arvores Técnica Apriori Técnica Apriori Myahara et al. [PAKDD 2001] Myahara et al. [PAKDD 2001] Classes de Equivalência – Busca em Profundidade Classes de Equivalência – Busca em Profundidade TreeMiner [M. Zaki, KDD 2002] TreeMiner [M. Zaki, KDD 2002] Sem geração de candidatos – crescimento dos padrões Sem geração de candidatos – crescimento dos padrões XSpanner, Chopper [Han+, PAKDD 2004] XSpanner, Chopper [Han+, PAKDD 2004] Expansão mais à direita Expansão mais à direita FREQT [Asai et al. ICDM 2002] FREQT [Asai et al. ICDM 2002]

3 Mineração de Árvores – Definições Padrão arborescente sobre um alfabeto = Padrão arborescente sobre um alfabeto = uma árvore com labels em uma árvore com labels em Tamanho de um padrão = Tamanho de um padrão = número de nós do padrão. número de nós do padrão. Banco de dados de árvores = Banco de dados de árvores = conjunto de árvores conjunto de árvores = padrão de tamanho 3

4 Inclusão de padrão numa árvore Padrão arborescente mergulhado numa árvore de dados Padrão arborescente mergulhado numa árvore de dados n0 n1 n2 n5 n6 n3 n Match label = (1,3,4) Matchlabel = (1,3,5) Match label = (1,3,5) Árvore T Padrão arborescente S

5 Suporte e Frequência Suporte de um padrão S com relação a um banco de dados de árvores T Suporte de um padrão S com relação a um banco de dados de árvores T T | { T em T | S mergulhado em T } | T| T |T| T | Suporte(S) = Padrão Frequente com relação a um banco de dados de árvores T e um suporte mínimo N, Padrão Frequente com relação a um banco de dados de árvores T e um suporte mínimo N, 1 N > 0 Suporte(S) N 1 N > 0 Suporte(S) N

6 Exemplo n0 n1n2 4n n0 n1 n2 n4 3 n n0 n1 n4 n n7 n2 T1 T2 T3 n5 n n0 n1n2 suporte(P) = 0,66 P: 3-padrão

7 Padrões Equivalentes n1 n2 n3 n0 1 n n1 n2 n3 n0 7 n n1 n2n3 n0 6 n Padrões possuem o mesmo prefixo de tamanho 4

8 Como são os elementos de uma classe de equivalência ? Prefixo P comum = n1 n0 x x x x n3 n x x x x

9 Como caracterizar as posições de extensões válidas ? Nó mais à direita de um nó n i : a última folha da sub-árvore com raiz em n i Nó mais à direita de um nó n i : a última folha da sub-árvore com raiz em n i Escopo(n i ) = [i, r], Escopo(n i ) = [i, r], n r = nó mais à direita de n i n r = nó mais à direita de n i Nós extensíveis : escopo(n i ) = [i,k-1] Nós extensíveis : escopo(n i ) = [i,k-1] k = tamanho do padrão k = tamanho do padrão

10 Exemplo n1 n0 x x x x n3 n2 k = 4 Padrão S de tamanho k = 4 Escopo de n0 = [0,3] Escopo de n1 = [1,3] Escopo de n2 = [2,2] Escopo de n3 = [3,3]

11 Exploração do Espaço de Busca ABC K = 1 Classe A B -1 A B Classe B B Classe A A K = 2 Classe A A -1 A A K = 3

12 Ordem dos elementos de uma classe de equivalência Classe do prefixo n0 n1 n2 n n0 n1 n2 x (x,3) n3 Ordem: (x,0) < (x,1) < (x,3) < (y,0) … n0 n1 n2 x (x,1) n n0 n1 n2 x (x,0) n3

13 Geração de Candidatos Expansão otimizada evita geração de candidatos duplicados evita geração de candidatos não frequentes c a c b a b 4-padrão frequente 3-padrão frequente c a c b a bd a b a bd 3-padrão frequente equivalentes Prefixo a b

14 Geração de Candidatos Classe de prefixo (3,1) (4,0) (3,2) (4,0) (3,1) (4,0) (4,2)

15 Duplicatas não são geradas Classe de prefixo (3,1) (3,2) (4,0) Por que (4,0) não junta com (3,1) ? (3,0) (4,0) 4 1 2

16 Geração dos Candidatos Regras de Junção de (x,i) com (y,j) de tamanho k, equivalentes (x,i) junta com (y,j) somente se i j (x,i) junta com (y,j) somente se i j Se i = j : dois resultados são produzidos Se i = j : dois resultados são produzidos (y,i) (y,i) (y,k), k = posição do nó x em (x,i) (y,k), k = posição do nó x em (x,i) Se i > j : um resultado é produzido Se i > j : um resultado é produzido (y,j) (y,j)

17 Exercicio Os padrões T1, T2, T3 são equivalentes ? 2. Qual o prefixo comum de tamanho 2 ? 3. Dê a notação abreviada de cada padrão (na forma (a,n)) 4. Calcule a classe de equivalência de prefixo T1. 5. Dê a notação de cada padrão gerado de tamanho 3 na forma (a,n). T1 T2 T3

18 Cálculo do Suporte Lista de escopos de um padrão: guarda informação suficiente para calcular seu suporte de forma rápida, sem varrer o banco de dados. Lista de escopos de um padrão: guarda informação suficiente para calcular seu suporte de forma rápida, sem varrer o banco de dados. Banco de dados só é varrido nas iterações 1 e 2 – onde são calculadas listas de escopos de padrões de tamanho 2. Banco de dados só é varrido nas iterações 1 e 2 – onde são calculadas listas de escopos de padrões de tamanho 2. Listas de escopos de padrões de tamanho k, k >2 são calculadas a partir da junção das listas de escopos dos padrões de tamanho k-1. Listas de escopos de padrões de tamanho k, k >2 são calculadas a partir da junção das listas de escopos dos padrões de tamanho k-1.

19 Lista de escopos de um padrão T = banco de dados de árvores T = banco de dados de árvores P = k-padrão P = k-padrão Lista de escopos de P com relação a T = Lista de escopos de P com relação a T = conjunto de triplas (t,m,s): conjunto de triplas (t,m,s): t = Id. de árvore T T onde P ocorre t = Id. de árvore T T onde P ocorre m = match label da ocorrência do prefixo (k-1) de P m = match label da ocorrência do prefixo (k-1) de P s = escopo da ocorrência do último nó de P dentro de T s = escopo da ocorrência do último nó de P dentro de T

20 Exemplo n0 n1n2 4n n0 n1 n2 n4 3 n n0 n1 n4 n n7 n2 T1 T2 T3 n5 n n0 n1n2 P: 3-padrão (1, (0,1), [2,3] ) (3, (0,2), [6,7] ) (3, (4,5), [6,7] )

21 Junção de listas de escopos 1 2 x y x y Árvore 1 n0 n1 n2 n3 n4 n5 n6 n7 n8 n9 n10 n11 [4,6][9,11]4[9,11] (1, (0 1), [4,6] ) X (1, (0,1), [9,11] ) = (1, (0 1 4), [9,11] ) P1 P2 (1, (0,1), [9,11]) L(P2) (1, (0,1), [4,6]) L(P1) fora do escopo O nó y está fora do escopo do nó x, à direita Y é primo de x, à direita (ambos são descendentes de um mesmo nó) 6 < 9antes Teste : 6 < 9 Intervalo [4,6] vem antes do intervalo [9,11] 1 2 x y

22 Junção de listas de escopos 1 2 x y y Árvore 1 n0 n1 n2 n3 n5 n4 n6 n8 [2,8][3,5]2[3,5] (1, (0 1), [2,8] ) X (1, (0,1), [3,5] ) = (1, (0 1 2), [3,5] ) P1 P2 (1, (0,1), [3,5]) L(P2) (1, (0,1), [2,8]) L(P1) dentro do escopo O nó y está dentro do escopo do nó x y é descendente de x 2 3 e 8 5 : intervalo [3,5] ocorre durante intervalo [3,5] Teste : 2 3 e 8 5 : intervalo [3,5] ocorre durante intervalo [3,5] 1 2 x y x n7

23 Exercicio n0 n1n2 4n n0 n1 n2 n4 3 n n1 n4 n n7 n2 T1 T2 n5 n n0 n1n n0 n1 n2 T3 1. Calcular listas de escopos de cada padrão com respeito a T1, T2, T3 2. Calcular a lista de escopos dos padrões obtidos combinando-se os padrões L1 e L2 dois a dois. P1P2

24 Exercicio P1 = (3,0) P2 = (4,0) L(P1) = (T1, (01), [2,3]) L(P2) = (T1, (01), [2,3]) L(P1) = (T1, (01), [2,3]) L(P2) = (T1, (01), [2,3]) (T3, (02), [6,7]) (T3, (45), [7,7]) (T3, (02), [6,7]) (T3, (45), [7,7]) (T3, (45), [6,7]) (T3, (02), [7,7]) (T3, (45), [6,7]) (T3, (02), [7,7]) (T2, (12), [3,3]) (T2, (12), [3,3]) L(P1) x L(P1) = ɸ L(P1) x L(P1) = ɸ L(P1) x L(P2) = L(P1) x L(P2) = [2,3] está dentro de [2,3], [7,7] está dentro de [6,7] [2,3] está dentro de [2,3], [7,7] está dentro de [6,7] Logo, L(P1) x L(P2) = (T1, (012), [2,3]) Logo, L(P1) x L(P2) = (T1, (012), [2,3]) (T3, (026), [7,7]) (T3, (026), [7,7]) (T3, (456), [7,7]) (T3, (456), [7,7]) lista de escopos de padrões compostos de P1 com P2 quando y lista de escopos de padrões compostos de P1 com P2 quando y é descendente de x L(P2) x L(P2) = ɸ L(P2) x L(P2) = ɸ L(P2) x L(P1) = ɸ L(P2) x L(P1) = ɸ [7,7] não vem antes de [6,7] [7,7] não vem antes de [6,7] [7,7] não contém [6,7] [7,7] não contém [6,7]

25 Algoritmo TreeMiner [KDD 2002] TreeMiner(D,minsup) F1= {1- padrões frequentes} F2= {Classes [P] de 2-padrões frequentes} L = vazio For all X em F2 do For all X em F2 do let L(X) = lista de escopos de X let L(X) = lista de escopos de X L := L + {L(X)} L := L + {L(X)} For all [P] em F2 do Enumera-Freq([P],L); For all [P] em F2 do Enumera-Freq([P],L);

26 Algoritmo TreeMiner Enumera-Freq([ P ], L ) for each (x,i) em [P] do [P x ] = vazio; [P x ] = vazio; L x = vazio; L x = vazio; for each (y,j) em [P] do for each (y,j) em [P] do R = Junta((x,i), (y,j)); R = Junta((x,i), (y,j)); L(R) = Junta-listas(L(x,i), L(y,j)) L(R) = Junta-listas(L(x,i), L(y,j)) R = R – {p in R: p não é frequente} R = R – {p in R: p não é frequente} L x = L x + { L(r) : r em R } L x = L x + { L(r) : r em R } [P x ] = [P x ] + R [P x ] = [P x ] + R Enumera-Freq([P x ], L x ) Enumera-Freq([P x ], L x )

27 Exercício Execute o algoritmo TreeMiner no banco de dados {T1,T2,T3} até obter todos os padrões de tamanho 3. Execute o algoritmo TreeMiner no banco de dados {T1,T2,T3} até obter todos os padrões de tamanho 3. Suporte minimo = 2/3 Suporte minimo = 2/3

28 Busca: Largura x Profundidade TreeMinerH : Variante de TreeMiner com busca em largura tipo Apriori TreeMinerH : Variante de TreeMiner com busca em largura tipo Apriori A cada iteração todos os padrões candidatos são gerados e seus suportes calculados. A cada iteração todos os padrões candidatos são gerados e seus suportes calculados. A poda de candidatos é importante neste caso. A poda de candidatos é importante neste caso. O cálculo do suporte é feito varrendo-se o banco de dados a cada iteração – não se utiliza listas de escopos. O cálculo do suporte é feito varrendo-se o banco de dados a cada iteração – não se utiliza listas de escopos.

29 Implementação - Testes Testes em dados reais (logs de navegação) Testes em dados reais (logs de navegação) Para suporte 0,5% TreeMiner é até 2 vezes mais rápido do que TreeMinerH Para suporte 0,5% TreeMiner é até 2 vezes mais rápido do que TreeMinerH Para suporte 0,25% TreeMiner é 20 vezes mais rápido do que TreeMinerH Para suporte 0,25% TreeMiner é 20 vezes mais rápido do que TreeMinerH Implementação: disponível em Implementação: disponível em

30 Aplicação: Web Mining LOGML [Zaki et al. 2001] LOGML [Zaki et al. 2001] LOGML: aplicação XML para descrição de logs web provenientes de servidores web LOGML: aplicação XML para descrição de logs web provenientes de servidores web Expressa o conteúdo dos arquivos de logs de uma forma compactada. Expressa o conteúdo dos arquivos de logs de uma forma compactada. Transforma arquivo de logs num documento LOGML Transforma arquivo de logs num documento LOGML Documento LOGML Documento LOGML 1.Um grafo principal 2.Sumário de estatisticas (top hosts, n° de bytes acessados, etc) 3.Lista de sessões de usuários (subgrafos do grafo principal) Sessões do usuário : uma ou várias árvores Sessões do usuário : uma ou várias árvores Cada nova URL entrada corresponde a uma nova raiz Cada nova URL entrada corresponde a uma nova raiz

31 Referências M. J. Zaki. Efficiently mining frequent trees in a forest, KDD'02 M. J. Zaki. Efficiently mining frequent trees in a forest, KDD'02Efficiently mining frequent trees in a forestEfficiently mining frequent trees in a forest


Carregar ppt "Mineração de Padrões Arborescentes Sandra de Amo FACOM - UFU Mestrado em Ciência da Computação."

Apresentações semelhantes


Anúncios Google