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

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

Mineração de Padrões Arborescentes

Apresentações semelhantes


Apresentação em tema: "Mineração de Padrões Arborescentes"— Transcrição da apresentação:

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

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

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

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

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

6 Exemplo T1 T2 suporte(P) = 0,66 T3 P: 3-padrão n0 n0 n0 1 1 2 n1 n3 n1
5 2 3 n4 n5 1 2 3 n2 n4 n3 2 1 n2 2 4 4 n3 T1 n5 2 T2 n6 3 n0 n7 4 1 suporte(P) = 0,66 n1 n2 T3 2 3 P: 3-padrão

7 Padrões Equivalentes Padrões possuem o mesmo prefixo de tamanho 4
3 3 3 n1 n1 n1 4 4 4 6 n4 2 4 n3 n3 n2 n3 n2 n2 2 4 7 n4 2 4 1 n4 Padrões possuem o mesmo prefixo de tamanho 4

8 Como são os elementos de uma classe de equivalência ?
Prefixo P comum = n0 3 x x -1 n1 4 x n2 2 4 n3 x -1 -1 x x x 3 4 2 x

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

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

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

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

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

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

15 Duplicatas não são geradas
Por que (4,0) não junta com (3,1) ? Classe de prefixo 1 2 1 1 2 2 4 3 (4,0) (3,1) 1 1 1 1 2 4 2 4 3 2 4 2 3 3 (4,0) (3,0) (3,0) (3,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 Se i = j : dois resultados são produzidos (y,i) (y,k) , k = posição do nó x em (x,i) Se i > j : um resultado é produzido (y,j)

17 Exercicio T3 T1 T2 1. Os padrões T1, T2, T3 são equivalentes ?
4 2 T3 T1 T2 4 1. 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).

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. 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.

19 Lista de escopos de um padrão
T = banco de dados de árvores P = k-padrão Lista de escopos de P com relação a T = conjunto de triplas (t,m,s): t = Id. de árvore T  T onde P ocorre 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

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

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

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

23 Exercicio n0 n0 1 1 2 n1 n3 n1 n2 n1 3 5 2 3 n4 n5 1 2 3 n3 n2 2 1 n4 n2 2 4 T1 4 n3 T3 T2 n5 2 n6 3 P1 n0 P2 n0 n7 1 4 1 n1 n2 2 3 n2 n1 2 4 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.

24 Exercicio P1 = (3,0) P2 = (4,0) L(P1) = (T1, (01), [2,3]) L(P2) = (T1, (01), [2,3]) (T3, (02), [6,7]) (T3, (45), [7,7]) (T3, (45), [6,7]) (T3, (02), [7,7]) (T2, (12), [3,3]) L(P1) x L(P1) = ɸ L(P1) x L(P2) = [2,3] está dentro de [2,3] , [7,7] está dentro de [6,7] Logo, L(P1) x L(P2) = (T1, (012), [2,3]) (T3, (026), [7,7]) (T3, (456), [7,7]) 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(P1) = ɸ [7,7] não vem antes de [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 let L(X) = lista de escopos de X L := L + {L(X)} For all [P] em F2 do Enumera-Freq([P],L);

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

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

28 Busca: Largura x Profundidade
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 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.

29 Implementação - Testes
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,25% TreeMiner é 20 vezes mais rápido do que TreeMinerH Implementação: disponível em

30 Aplicação: Web Mining LOGML [Zaki et al. 2001] Documento LOGML
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. Transforma arquivo de logs num documento LOGML Documento LOGML Um grafo principal Sumário de estatisticas (top hosts, n° de bytes acessados, etc) Lista de sessões de usuários (subgrafos do grafo principal) Sessões do usuário : uma ou várias árvores Cada nova URL entrada corresponde a uma nova raiz

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


Carregar ppt "Mineração de Padrões Arborescentes"

Apresentações semelhantes


Anúncios Google