mineração de padrões arborescentes sandra de amo [email protected] facom - ufu mestrado em ciência da...
TRANSCRIPT
Mineração de Padrões Mineração de Padrões ArborescentesArborescentes
Sandra de AmoSandra de Amo
[email protected]@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