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

Post on 17-Apr-2015

109 views 4 download

Transcript of Mineração de Padrões Arborescentes Sandra de Amo deamo@ufu.br FACOM - UFU Mestrado em Ciência da...

Mineração de Padrões Mineração de Padrões ArborescentesArborescentes

Sandra de AmoSandra de Amo

deamo@ufu.brdeamo@ufu.br

FACOM - UFUFACOM - UFU

Mestrado em Ciência da Computação

Algoritmos de Mineração de Algoritmos de Mineração de ArvoresArvores

Técnica Apriori Técnica Apriori Myahara et al. [PAKDD 2001]Myahara et al. [PAKDD 2001]

Classes de Equivalência – Busca em Classes de Equivalência – Busca em ProfundidadeProfundidade TreeMiner [M. Zaki, KDD 2002]TreeMiner [M. Zaki, KDD 2002]

Sem geração de candidatos – crescimento dos Sem geração de candidatos – crescimento dos padrõespadrões XSpanner, Chopper [Han+, PAKDD 2004]XSpanner, Chopper [Han+, PAKDD 2004]

Expansão mais à direitaExpansão mais à direita FREQT [Asai et al. ICDM 2002]FREQT [Asai et al. ICDM 2002]

Mineração de Mineração de ÁÁrvores – Definiçõesrvores – Definições Padrão arborescentePadrão arborescente sobre um alfabeto sobre um alfabeto = =

uma uma áárvore com labels em rvore com labels em

Tamanho de um padrãoTamanho de um padrão = =

nnúúmero de nmero de nóós do padrão.s do padrão.

Banco de dados de árvoresBanco de dados de árvores = =

conjunto de conjunto de áárvoresrvores

1

1

2

= padrão de tamanho 3

Inclusão de padrão numa Inclusão de padrão numa áárvorervore Padrão arborescente Padrão arborescente mergulhadomergulhado numa árvore numa árvore

de dadosde dados

01

2

23

1 2

n0

n1

n2 n5

n6

n3 n4

0 1 3 1 0 1 3 1 -1-1 2 2 -1 -1-1 -1 2 2 -1 -1-1 -1 2 2 -1-1

1

1

2

Match label = (1,3,4)Match label = (1,3,4)

MatchMatch label = (1,3,5)label = (1,3,5)

1 1 -1 2 -1

Árvore T

Padrão arborescente S

Suporte e FrequênciaSuporte e Frequência Suporte de um padrãoSuporte de um padrão S com relação a um S com relação a um

banco de dados de banco de dados de áárvores rvores TT

| { T em T T | S mergulhado em T } |

| TT | Suporte(S) = Suporte(S) =

Padrão Frequente Padrão Frequente com relação a um banco de dados de com relação a um banco de dados de áárvores rvores TT e um suporte me um suporte míínimo N, nimo N,

1 1 ≥ ≥ N > 0 N > 0 Suporte(S) Suporte(S) ≥ ≥ NN

ExemploExemplo

1

2 3

n0

n1 n2

4 n3

2

1 2

42

n0

n1

n2

n4 3 n5

1

3 5

2

n0

n1

n4

n3

1

2 3

n3

4n7

n2

T1 T2

T3

n5n6

1

2 3

n0

n1 n2

suporte(P) = 0,66

P: 3-padrão P: 3-padrão

Padrões Equivalentes Padrões Equivalentes 3

4

42

n1

n2 n3

n0

1 n4

3

4

42

n1

n2 n3

n0

7 n4

3

4

42

n1

n2 n3

n0

6 n4

3 4 2 -1 4 3 4 2 -1 4

3 4 2 -1 4

1 -1 -1 -1 -1 7 -1 -1

-1 -1 -1 6

3 4 2 -1 4 3 4 2 -1 4

3 4 2 -1 4

Padrões possuem o mesmo prefixo de tamanho 4

Como são os elementos de uma Como são os elementos de uma classe de equivalência ?classe de equivalência ?

Prefixo P comum = 3 4 2 -1 4

3

4

42

n1

n0

x

x

xx

n3n2

3 4 2 -1 4 x -1 -1 -1

3 4 2 -1 4 -1 x -1 -1

3 4 2-1 4 -1 -1 x -1

3 4 2 x -1 -1 4 -1 -1

Como caracterizar as posições de Como caracterizar as posições de extensões válidas ?extensões válidas ?

Nó mais à direita de um nó Nó mais à direita de um nó nnii : a : a úúltima ltima folha da sub-folha da sub-áárvore com raiz em rvore com raiz em nnii

Escopo(Escopo(nnii) = ) = [i, r], [i, r],

nnrr = nó mais à direita de = nó mais à direita de nnii

Nós extensíveis :Nós extensíveis : escopo( escopo(nnii ) = [i,k-1] ) = [i,k-1]

k = tamanho do padrão k = tamanho do padrão

ExemploExemplo

3

4

42

n1

n0

x

x

xx

n3n2

Padrão S de tamanho k = 4k = 4

Escopo de Escopo de n0 = [0,3]n0 = [0,3]

Escopo de n1 = [1,3]Escopo de n1 = [1,3]

Escopo de n2 = [2,2]

Escopo de n3 = [3,3]Escopo de n3 = [3,3]

Exploração do Espaço de BuscaExploração do Espaço de Busca

A B CK = 1

Classe A B -1A

B

Classe B B

Classe AA

K = 2

Classe A A -1A

A

K = 3

Ordem dos elementos de uma Ordem dos elementos de uma classe de equivalênciaclasse de equivalência

4

3

1

42

Classe do prefixo 3 2 4 -1 13 2 4 -1 1

n0

n1

n2

n3

4

3

1

42

n0

n1

n2

x

(x,3)

n3

Ordem:Ordem: (x,0) < (x,1) < (x,3) < (y,0) … (x,0) < (x,1) < (x,3) < (y,0) …

4

3

1

42

n0

n1

n2x

(x,1)

n3

4

3

1

42

n0

n1

n2

x

(x,0)

n3

Geração de CandidatosGeração de Candidatos

Expansão otimizadaExpansã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ãofrequente

c

a

c

b

a

b d

a

b

a

b d

3-padrãofrequente

equivalentesequivalentes

Prefixo

a

b

Geração de CandidatosGeração de Candidatos

Classe de prefixo 1 21

2

3

4

1

2

(3,1)

(4,0)

1

2

3

3(3,2)

1

2

3

4

(4,0)

1

2

3 3(3,1)

4

1

2 4

(4,0)

4

1

2

4

(4,2)

Duplicatas não são geradasDuplicatas não são geradas

Classe de prefixo 1 21

2

3

4

1

2

(3,1)

4

1

2

33

1

2

(3,2)

(4,0)

Por que (4,0) não junta com (3,1) ?

4

1

2 3

(3,0)(3,0)(4,0)

4

1

2

Geração dos CandidatosGeração dos Candidatos

Regras de Junção de (x,i) com (y,j) de Regras de Junção de (x,i) com (y,j) de tamanho k, equivalentestamanho k, equivalentes (x,i) junta com (y,j) somente se i (x,i) junta com (y,j) somente se i ≥≥ j j Se i = j : dois resultados são produzidosSe i = j : dois resultados são produzidos

(y,i) (y,i) (y,k) , k = posição do n(y,k) , k = posição do nóó x em (x,i) x em (x,i)

Se i > j : um resultado é produzidoSe i > j : um resultado é produzido (y,j)(y,j)

ExercicioExercicio

1

2 3

1

2 4

1

2

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

T1 T2 T3

Cálculo do Suporte Cálculo do Suporte Lista de escopos de um padrãoLista de escopos de um padrão: guarda : guarda

informação suficiente para calcular seu suporte de informação suficiente para calcular seu suporte de forma rforma ráápida, sem varrer o banco de dados.pida, sem varrer o banco de dados.

Banco de dados sBanco de dados sóó é varrido nas iterações 1 e 2 – é varrido nas iterações 1 e 2 – onde são calculadas listas de escopos de padrões onde são calculadas listas de escopos de padrões de tamanho 2.de tamanho 2.

Listas de escopos de padrões de tamanho k, k >2 Listas de escopos de padrões de tamanho k, k >2 são calculadas são calculadas a partir da a partir da junçãojunção das listas de das listas de escoposescopos dos padrões de tamanho k-1. dos padrões de tamanho k-1.

Lista de escopos de um padrãoLista de escopos de um padrão

TT = banco de dados de = banco de dados de áárvoresrvores P = k-padrãoP = k-padrão Lista de escopos de P com relação a Lista de escopos de P com relação a T T = =

conjunto de triplas conjunto de triplas (t,m,s):(t,m,s): t t = Id. de = Id. de áárvore T rvore T TT onde P ocorre onde P ocorre mm = match label da ocorrência do prefixo (k-1) = match label da ocorrência do prefixo (k-1)

de Pde P ss = escopo da ocorrência do = escopo da ocorrência do úúltimo nltimo nóó de P de P

dentro de T dentro de T

ExemploExemplo

1

2 3

n0

n1 n2

4 n3

2

1 2

42

n0

n1

n2

n4 3 n5

1

3 5

2

n0

n1

n4

n3

1

2 3

n3

4n7

n2

T1T2T2

T3T3

n5n6

1

2 3

n0

n1 n2

P: 3-padrão P: 3-padrão

(1, (0,1) , [2,3] )

(3, (0,2) , [6,7] )

(3, (4,5) , [6,7] )

Junção de listas de escoposJunção de listas de escopos1

2

x

y

1

2

1

2

x

y

Árvore 1n0

n1

n2

n3 n4

n5n6

n7

n8 n9

n10n11

(1, (0 1), [4,6][4,6] ) X (1, (0,1), [9,11][9,11] ) = (1, (0 1 44), [9,11][9,11] )

P1 P2

(1, (0,1), [9,11]) L(P2)

(1, (0,1), [4,6]) L(P1)

O nó y está fora do escopofora do escopo do nó x, à direitaY é primo de x, à direita (ambos são descendentes de um mesmo nó)Teste : 6 < 96 < 9 Intervalo [4,6] vem antesantes do intervalo [9,11]

1

2

x

y

Junção de listas de escoposJunção de listas de escopos1

2

x y

1

2

1

2

y

Árvore 1n0

n1

n2

n3

n5n4

n6

n8

(1, (0 1), [2,8][2,8] ) X (1, (0,1), [3,5][3,5] ) = (1, (0 1 22), [3,5][3,5] )

P1 P2

(1, (0,1), [3,5]) L(P2)

(1, (0,1), [2,8]) L(P1)

O nó y está dentro do escopodentro do escopo do nó x y é descendente de xTeste : 2 2 ≤≤ 3 e 8 3 e 8 ≥≥ 5 : 5 : intervalo [3,5] ocorre intervalo [3,5] ocorre durantedurante intervalo [3,5] intervalo [3,5]

1

2

x

y

x

n7

ExercicioExercicio1

2 3

n0

n1 n2

4 n3

2

1 2

42

n0

n1

n2

n4 3 n5

1

3 5

2

n1

n4

n3

1

2 3

n3

4n7

n2

T1T2 n5

n6

1

2 3

n0

n1 n21

2 4

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.

P1 P2

ExercicioExercicioP1 = (3,0) P2 = (4,0)P1 = (3,0) P2 = (4,0) L(P1) = (T1, (01), L(P1) = (T1, (01), [2,3]) L(P2) = (T1, (01), [2,3])[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[2,3] está dentro de [2,3] , [7,7] está dentro de [6,7]á 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é 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]

Algoritmo TreeMiner [KDD 2002]Algoritmo TreeMiner [KDD 2002]TreeMiner(D,minsup)TreeMiner(D,minsup)

F1= {1- padrões frequentes}F1= {1- padrões frequentes}

F2= {Classes [P] de 2-padrões frequentes}F2= {Classes [P] de 2-padrões frequentes}

L = vazioL = vazio

For allFor all X em F2 X em F2 dodo

let L(X) = lista de escopos de Xlet L(X) = lista de escopos de X

L := L + {L(X)} L := L + {L(X)}

For allFor all [P] em F2 [P] em F2 do do Enumera-Freq([P],L);Enumera-Freq([P],L);

Algoritmo TreeMinerAlgoritmo TreeMinerEnumera-Freq([Enumera-Freq([PP],],LL))

for eachfor each (x,i) em [P] (x,i) em [P] do do [P[Pxx] = vazio;] = vazio; LLx x = vazio;= vazio; for eachfor each (y,j) em [P] (y,j) em [P] dodo R = R = JuntaJunta((x,i), (y,j));((x,i), (y,j));

L(R) L(R) = = Junta-listasJunta-listas(L(x,i), L(y,j)) (L(x,i), L(y,j)) R = R – {p in R: p não é frequente}R = R – {p in R: p não é frequente} LLx x = L= Lx x + { L(r) : r em R }+ { L(r) : r em R }

[P[Pxx] = [P] = [Pxx] + R] + R Enumera-Freq([PEnumera-Freq([Pxx], L], Lxx) )

ExercícioExercício

Execute o algoritmo TreeMiner no banco Execute o algoritmo TreeMiner no banco de dados {T1,T2,T3} até obter todos os de dados {T1,T2,T3} até obter todos os padrões de tamanho 3. padrões de tamanho 3.

Suporte minimo = 2Suporte minimo = 2/3/3

Busca: Largura x ProfundidadeBusca: Largura x Profundidade

TreeMinerH :TreeMinerH : Variante de TreeMiner Variante de TreeMiner com busca em com busca em larguralargura tipo Apriori tipo Apriori A cada iteração A cada iteração todostodos os padrões candidatos os padrões candidatos

são gerados e seus suportes calculados.são gerados e seus suportes calculados. A poda de candidatos é importante neste A poda de candidatos é importante neste

caso.caso. O cO cáálculo do suporte é feito varrendo-se o lculo do suporte é feito varrendo-se o

banco de dados a cada iteração – não se banco de dados a cada iteração – não se utiliza listas de escopos.utiliza listas de escopos.

Implementação - TestesImplementaçã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 Para suporte ≥ 0,5% TreeMiner é até 2 vezes mais rmais ráápido do que TreeMinerHpido do que TreeMinerH

Para suporte 0,25% TreeMiner é 20 vezes mais Para suporte 0,25% TreeMiner é 20 vezes mais rráápido do que TreeMinerHpido do que TreeMinerH

ImplementaçãoImplementação: dispon: disponível em ível em

http://www.cs.rpi.edu/~zaki/software/http://www.cs.rpi.edu/~zaki/software/

Aplicação: Web MiningAplicação: Web Mining LOGML [Zaki et al. 2001]LOGML [Zaki et al. 2001]

LOGML: aplicação XML para descrição de logs web LOGML: aplicação XML para descrição de logs web provenientes de servidores webprovenientes de servidores web

Expressa o conteExpressa o conteúúdo dos arquivos de logs de uma forma do dos arquivos de logs de uma forma compactada.compactada.

Transforma arquivo de logs num documento LOGMLTransforma arquivo de logs num documento LOGML

Documento LOGMLDocumento LOGML1.1. Um grafo principalUm grafo principal2.2. SumSumáário de estatisticas (top hosts, n° de bytes acessados, etc)rio de estatisticas (top hosts, n° de bytes acessados, etc)3.3. Lista de sessões de usuLista de sessões de usuáários (subgrafos do grafo principal)rios (subgrafos do grafo principal)

Sessões do usuSessões do usuáário : uma ou vrio : uma ou váriasárias áárvoresrvores Cada nova URL entrada corresponde a uma nova raizCada nova URL entrada corresponde a uma nova raiz

ReferênciasReferências

M. J. Zaki.M. J. Zaki. “ “Efficiently mining frequent trees in a forestEfficiently mining frequent trees in a forest”, ”, KDD'02KDD'02