Upload
nardo
View
23
Download
0
Embed Size (px)
DESCRIPTION
Associação: algoritmos (parte 2) prof. Luis Otavio Alvares INE/UFSC. CLOSET: An Efficient Algorithm for Mining Frequent Closed Itemsets. Utiliza uma representação comprimida do banco de dados usando uma FP-tree - PowerPoint PPT Presentation
Citation preview
Associação: algoritmos (parte 2)
prof. Luis Otavio Alvares
INE/UFSC
Utiliza uma representação comprimida do banco de dados usando uma FP-tree
Depois da construção da FP-tree utiliza a abordagem de dividir para conquistar para encontrar os conjuntos de itens fechados frequentes
CLOSET: An Efficient Algorithm for Mining Frequent Closed Itemsets
FP-Tree
FP-Tree é uma estrutura de dados compacta para a mineração eficiente de padrões freqüentes.
Considere o seguinte banco de dados transacional (duas primeiras colunas) e suporte = 3:
TID Itens Itens Freqüentes (Ordenados p/ frequência)
100 f, a, c, d, g, i, m, p f, c, a, m, p
200 a, b, c, f, l, m, o f, c, a, b, m
300 b, f, h, j, o f, b
400 b, c, k, s, p c, b, p
500 a, f, c, e, l, p, m, n f, c, a, m, p
FP-Tree - Observações
1. Como somente os itens freqüentes serão importantes na mineração de padrões freqüentes, é necessário realizar uma varredura no banco de dados para identificar o conjunto de itens freqüentes.
2. O armazenamento do conjunto de itens freqüentes em uma estrutura compacta pode evitar varreduras repetidas do banco de dados.
4
21/04/23
FP-Tree - Observações
3. Se múltiplas transações compartilham um conjunto de itens freqüentes idêntico, eles podem ser agrupados em um único conjunto com o número de ocorrências registrado em uma variável count.
– É fácil verificar se dois conjuntos são idênticos se os itens freqüentes de todas as transações estão ordenados conforme uma ordem fixada.
5
21/04/23
FP-Tree - Observações
4. Se duas transações compartilham um prefixo comum, conforme uma ordenação dos itens freqüentes, as partes compartilhadas podem ser agrupadas utilizando uma única estrutura de prefixo, desde que a variável count seja computada corretamente.
– Se os itens freqüentes estão ordenados de forma decrescente de valores de freqüência, existem melhores chances de que mais prefixos possam ser compartilhados.
6
21/04/23
FP-Tree - Execução
1. Primeira varredura no banco de dados para obter a lista ordenada L dos itens freqüentes:
– L = <(f:4), (c:4), (a:3), (b:3), (m:3), (p:3)>
TID Itens Itens Freqüentes (Ordenados)
100 f, a, c, d, g, i, m, p f, c, a, m, p
200 a, b, c, f, l, m, o f, c, a, b, m
300 b, f, h, j, o f, b
400 b, c, k, s, p c, b, p
500 a, f, c, e, l, p, m, n f, c, a, m, p
7
FP-Tree - Execução
2. Criação da raiz, nomeada com null.
TID Itens Itens Freqüentes (Ordenados)
100 f, a, c, d, g, i, m, p f, c, a, m, p
200 a, b, c, f, l, m, o f, c, a, b, m
300 b, f, h, j, o f, b
400 b, c, k, s, p c, b, p
500 a, f, c, e, l, p, m, n f, c, a, m, p
21/04/23
root
FP-Tree - Execução
3. Nova varredura do BD, transação por transação:
TID Itens Itens Freqüentes (Ordenados)
100 f, a, c, d, g, i, m, p f, c, a, m, p
200 a, b, c, f, l, m, o f, c, a, b, m
300 b, f, h, j, o f, b
400 b, c, k, s, p c, b, p
500 a, f, c, e, l, p, m, n f, c, a, m, p
Item Início da lista de nodos
f
c
a
b
m
p
9
21/04/23
f:1
c:1
a:1
m:1
p:1
root
FP-Tree - Execução
3. Nova varredura do BD, transação por transação:
TID Itens Itens Freqüentes (Ordenados)
100 f, a, c, d, g, i, m, p f, c, a, m, p
200 a, b, c, f, l, m, o f, c, a, b, m
300 b, f, h, j, o f, b
400 b, c, k, s, p c, b, p
500 a, f, c, e, l, p, m, n f, c, a, m, p
Item Início da lista de nodos
f
c
a
b
m
p
21/04/23
f:2
c:2
a:2
m:1
p:1
b:1
m:1
root
FP-Tree - Execução
3. Nova varredura do BD, transação por transação:
TID Itens Itens Freqüentes (Ordenados)
100 f, a, c, d, g, i, m, p f, c, a, m, p
200 a, b, c, f, l, m, o f, c, a, b, m
300 b, f, h, j, o f, b
400 b, c, k, s, p c, b, p
500 a, f, c, e, l, p, m, n f, c, a, m, p
Item Início da lista de nodos
f
c
a
b
m
p
11
21/04/23
f:3
c:2
a:2
m:1
p:1
b:1
b:1
m:1
root
FP-Tree - Execução
3. Nova varredura do BD, transação por transação:
TID Itens Itens Freqüentes (Ordenados)
100 f, a, c, d, g, i, m, p f, c, a, m, p
200 a, b, c, f, l, m, o f, c, a, b, m
300 b, f, h, j, o f, b
400 b, c, k, s, p c, b, p
500 a, f, c, e, l, p, m, n f, c, a, m, p
Item Início da lista de nodos
f
c
a
b
m
p
12
21/04/23
f:3
c:2
a:2
m:1
p:1
b:1
b:1
b:1
c:1
p:1
m:1
root
FP-Tree - Execução
3. Nova varredura do BD, transação por transação:
TID Itens Itens Freqüentes (Ordenados)
100 f, a, c, d, g, i, m, p f, c, a, m, p
200 a, b, c, f, l, m, o f, c, a, b, m
300 b, f, h, j, o f, b
400 b, c, k, s, p c, b, p
500 a, f, c, e, l, p, m, n f, c, a, m, p
Item Início da lista de nodos
f
c
a
b
m
p
13
21/04/23
f:4
c:3
a:3
m:2
p:2
b:1
b:1
b:1
c:1
p:1
m:1
root
FP-Tree - Análise
2 varreduras do banco de dados:1. Contar itens frequentes
2. Gerar a FP-tree
O custo para inserir uma transação Trans na FP-Tree é O(|Trans|), onde |Trans| é o número de itens freqüentes em Trans.
14
21/04/23
FP-Tree - Análise
Dado um banco de dados transacional DB e um suporte mínimo minSup, sua FP-Tree correspondente contém toda a informação necessária para a mineração de padrões freqüentes no DB (completeness).
Sem considerar a raiz, o tamanho de uma FP-Tree é limitado ao total de ocorrências dos itens freqüentes no DB e a altura é limitada pelo maior número de itens freqüentes em uma transação (compactness).
Diferentemente do método Apriori-like que pode gerar um número exponencial de candidatos no pior caso, sob nenhuma circunstância uma FP-Tree com um número exponencial de nodos será gerada.
15
21/04/23
CLOSET: An Efficient Algorithm for Mining Frequent Closed Itemsets. Jian Pei, Jiawei Han e Runying Mao
16
21/04/23
Seja o seguinte arquivo de dados e a respectiva FP-tree
(minsup=2)
TID Itens na transação
100 c, e, f, a, d
200 e, a
300 c, e, f
400 c, f, a, d
500 c, e, f
f:1
a:1
d:1
c:4
f:3
a:1
d:1
e:3
null
a:1
e:1
Lista de itens frequentes (minsup=2)
f_list = <c:4, e:4, f:4, a:3, d:2>
Os frequent closed itemsets podem ser divididos em 5 subconjuntos não sobrepostos:– Os subconjuntos que contém d
– Os subconjuntos que contém a mas não d
– Os subconjuntos que contém f mas não a nem d
– Os subconjuntos que contém e mas não f, a nem d
– Os subconjuntos que contém somente c
TID Itens
100 c, e, f, a, d
200 e, a
300 c, e, f
400 c, f, a, d
500 c, e, f
Os subconjuntos que contém d
f:1
a:1
d:1
c:4
f:3
a:1
d:1
e:3
null
a:1
e:1
f:1
a:1
c:2
f:1
a:1
e:1
null
sup(d) = 2
TDB|d = <cefa, cfa>
sup(cefad) = 1sup(cfad) = 2
cfad é um frequent closed itemset
FP-tree originald-conditional
Os subconjuntos que contém a mas não d
f:1
a:1
d:1
c:4
f:3
a:1
d:1
e:3
null
a:1
e:1
FP-tree original
f:1
c:2
f:1
e:1
null
e:1
sup(a) = 3
TDB|a = <cef, cf, e>Nenhum tem suporteigual ao de a:
sup(cefa) = 1sup(ea) = 2sup(cfa) = 1 , então
a é um frequent closed itemset
a-conditional
a-Conditional
f:1
c:2
f:1
e:1
null
e:1
f_list_a = <c : 2, e : 2, f : 2>
Os frequent closed itemsets podem ser divididos em 3 subconjuntos não sobrepostos:Os subconjuntos que contém af mas não dOs subconjuntos que contém ae mas não d nem fOs subconjuntos que contém ac mas não d, e ou f
c:2
e:1
null
af:2
c:1
null
ae:2 minsup=2
c:2
null
ac:2
TDB|ea = <c>
ae é um frequent closed itemset. af:2 e ac:2 não são porque tem o mesmo suporte que cfad:2, que é um CFI
Os subconjuntos que contém f mas não a nem d
f:1
a:1
d:1
c:4
f:3
a:1
d:1
e:3
null
a:1
e:1
FP-tree original
c:4
e:3
null
sup(f) = 4
TDB|f = <ce, c>
sup(cef) = 3sup(cf) = 4
cf é frequent closed itemset, poissup(f) = sup(cf)
cef é frequent closed itemset, poisnão é subconjunto de qquer itemsetencontrado com suporte idêntico.
f-conditional
Os subconjuntos que contém e mas não f, a
nem d
f:1
a:1
d:1
c:4
f:3
a:1
d:1
e:3
null
a:1
e:1
FP-tree original
c:3
null
sup(e) = 4
TDB|e = <c>
sup(ce) = 3
ce não é frequent closed itemset, poissup(ce) = sup(cef) que é FCI
e é frequent closed itemset, pois o seu suporte é 4 e não 3
e-conditional
Os subconjuntos que contém somente c
Não é necessário pesquisar no c-Conditional Database pois c é um Subconjunto de cf, que é um frequent closed itemset com o mesmo suporte de c.
Resumo
Mineração de Padrões Sequenciais
Agrawal, R.; Srikant, R., "Mining sequential patterns". Proceedings of the Eleventh International Conference on Data Engineering, pp.3-14, 1995
MP-Sequenciais
Mineração de Padrões– Quais itens são comprados juntos em uma transação?
Mineração de Padrões Sequenciais– Quais itens são comprados em sequência, mas em
ocasiões diferentes?
27
MP-Sequenciais
• Suporte mínimo: – Relativo a quantidade de clientes em relação ao
número total de clientes – Diferente do apriori que considera a quantidade total
de transações
• Comparando– MP:
•Ocorrência do item número de transações
– MP-Sequencial:•Número de clientes com a transação número total de clientes
28
MP-Sequenciais
Problema:1. Dado uma base de dados D com transações, quais
as associações das transações dos clientes com o passar do tempo?
29
MP-Sequenciais
• Definições:– Conjunto de Itens: itens comprados ao mesmo tempo (na
mesma transação)– Sequência: sequência de conjuntos de itens– Sequência máxima: Não está contida em nenhuma outra
sequência.• Exemplos:
– <(3) (4,5) (8)>– <(3) (4,5) (8)> está contido em <(7) (3,8) (9) (4,5,6) (8)>– A sequência <(3) (5)> não está contida em <(3,5)>
30
Notação: O que está entre parênteses representa uma transação e os números representam os itens comprados. A ordem das transações é da esquerda para a direita
MP-Sequenciais
Problema:1. Dada uma base de dados D com transações, quais
as associações das transações dos clientes com o passar do tempo?
2. Dado D, mineração de padrão sequencial é encontrar as sequências máximas entre todas as sequências que tem certo suporte mínimo.
3. Ex:
31
comprador Sequencia1 (30) (90)2 (10, 20) (30) (40, 60, 70)3 (30, 50, 70)4 (30) (40, 70) (90)5 (90)
Padrões sequenciais (minsup=25%)
(30) (90)(30) (40, 70)
MP-Sequenciais
Relembrando o suporte– MP:
Ocorrência do item número de transações
– MP-Sequencial:Número de clientes com a transação número de clientes
32
Fases
Sort Litemset Transformação Sequencia Maximal
33
Sort
Ordenar a base de dados por ID do comprador e por data da transação;
Realizado de forma simples por um comando SQL;
34
Sort
ID comprador
Data Itens
1 25/03/93 301 30/03/93 902 10/06/93 10, 205 12/06/93 902 15/06/93 302 20/06/93 40, 60, 70
3 25/06/93 30, 50, 70
4 25/06/93 304 30/06/93 40, 704 25/07/93 90
ID comprador
Data Itens
1 25/03/93 301 30/03/93 902 10/06/93 10, 202 15/06/93 302 20/06/93 40, 60, 70
3 25/06/93 30, 50, 70
4 25/06/93 304 30/06/93 40, 704 25/07/93 905 12/06/93 90
35
Arquivo original Após o sort
Fases
• Sort• Litemset• Transformação• Sequencia• Maximal
36
Litemset
• Encontrar o conjunto de todos os l-itemsets (itemsets frequentes).
• Passos:1. Agrupar dados por ID;2. Gerar itemsets frequentes;
37
Litemset – Agrupamento
ID comprador
Data Itens
1 25/03/93 301 30/03/93 902 10/06/93 10, 202 15/06/93 302 20/06/93 40, 60, 703 25/06/93 30, 50, 704 25/06/93 304 30/06/93 40, 704 25/07/93 905 12/06/93 90
ID comprador Itens1 <(30) (90)>2 <(10, 20) (30) (40, 60, 70)>3 <(30, 50, 70)>4 <(30) (40, 70) (90)>5 <(90)>
38
Litemset – encontrar os conjuntos frequentes
ID comprador Itens1 <(30) (90)>2 <(10,20) (30) (40,60, 70)>3 <(30, 50, 70)>4 <(30) (40, 70) (90)>5 <(90)>
39
Considerando minsup = 2, os conjuntos frequentes são:
(30), (40), (70), (90) e (40,70)
Fases
• Sort• Litemset• Transformação• Sequencia• Maximal
40
Transformação
• Em uma transformação de sequência de um comprador:
– Cada transação é substituída pelo conjunto de todos os l-itemsets contidos na transação;
• Passos:1. Transformação (considera minSup)2. Mapeamento;
41
Transformação – suporte mínimo
ID comprador Itens1 <{(30)} {(90)}>2 <{(30)} {(40), (70), (40 , 70)}>3 <{(30),(70)}>4 <{(30)} {(40), (70), (40, 70)} {(90)}>5 <{(90)}>
ID comprador Itens1 <(30) (90)>2 <(10,20) (30) (40, 60, 70)>3 <(30, 50, 70)>4 <(30) (40, 70) (90)>5 <(90)>
ID comprador
Itens
1 {1} {5}2 {1} {2, 3, 4}3 {1, 3}4 {1} {2, 3, 4} {5}5 {5}
Transformação – Mapeamento
Mapa
Item Símbolo
(30) 1
(40) 2
(70) 3
(40 70) 4
(90) 5
43
ID comprador Itens1 <{(30)} {(90)}>2 <{(30)} {(40), (70), (40 70)}>3 <{(30), (70)}>4 <{(30)} {(40), (70), (40 70)} {(90)}>5 <{(90)}>
Fases
• Sort• Litemset• Transformação• Sequencia• Maximal
44
Sequencia
Usa o conjunto de l-itemsets para encontrar as sequências máximas desejadas.
Conta todas as l-sequencias, incluindo as não máximas;Ex.: AprioriAll
45
Fases
• Sort• Litemset• Transformação• Sequencia• Maximal
46
Maximal
Encontrar as sequências máximas entre as sequências frequentes.
47
Maximal
l-sequências{1} {5}{1} {2, 3}{1}
l-sequências(30) (90)(30) (40 70)
48
Mapa
Item Símbolo
(30) 1
(40) 2
(70) 3
(40 70) 4
(90) 5
Exemplo de algoritmo: AprioriAll
A cada fase gera as k-sequências frequentes1. Recebe os dados da fase de transformação para
inicializar o 1-sequência
Base de exemplo (diferente da anterior): Suporte mínimo: 2
Base de Dados
{1 5} {2} {3} {4}
{1} {3} {4} {3 5}
{1} {2} {3} {4}
{1} {3} {5}
{4} {5}
1-sequencia Suporte1 42 23 44 45 4
49
AprioriAll
50
AprioriAll
Continuando com o exemplo para gerar
2-sequências frequentes: gera os candidatos
1-sequencia Suporte1 42 23 44 45 4
2-sequencia1 1 2 5 4 41 2 3 1 4 51 3 3 2 5 11 4 3 3 5 21 5 3 4 5 32 1 3 5 5 42 2 4 1 5 52 3 4 22 4 4 3
51
AprioriAll
52
AprioriAll
Verifica o suporte mínimo para as 2-sequências (Passando pelo banco):
Retira as que não possuem o suporte mínimo:
2-sequencia Suporte
1 2 2
1 3 4
1 4 3
1 5 3
2 3 2
2 4 2
3 4 3
3 5 2
4 5 2
Base de Dados
{1 5} {2} {3} {4}
{1} {3} {4} {3 5}
{1} {2} {3} {4}
{1} {3} {5}
{4} {5}
53
AprioriAll
54
AprioriAll
Continuando com o exemplo para gerar
3-sequências frequentes , inicialmente gera as 3-sequências candidatas
55
AprioriAll
2-sequencia Suporte
1 2 2
1 3 4
1 4 3
1 5 3
2 3 2
2 4 2
3 4 3
3 5 2
4 5 2
?
56
AprioriAll
2-sequencia Suporte
1 2 2
1 3 4
1 4 3
1 5 3
2 3 2
2 4 2
3 4 3
3 5 2
4 5 2
1 2 5 ?
5 2 1 ?
57
AprioriAll
2-sequencia Suporte
1 2 21 3 41 4 31 5 32 3 22 4 23 4 33 5 24 5 2
São candidatas as 3-sequências em que as 3 sequencias de 2 itens que a formam são frequentes
Ex: 1 2 3 é candidata porque 1 2, 1 3 e 2 3 são frequentes
58
3-sequência1 2 31 2 41 3 41 3 51 4 52 3 43 4 5
AprioriAll
59
AprioriAll
Agora sim! Vamos ao banco!
3-sequencia Suporte
1 2 3 2
1 2 4 2
1 3 4 3
1 3 5 2
1 4 5 1
2 3 4 2
3 4 5 1
Base de Dados
{1 5} {2} {3} {4})
{1} {3} {4} {3 5})
{1} {2} {3} {4})
{1} {3} {5})
{4} {5})
60
AprioriAll
61
AprioriAll
Continuando com o exemplo para gerar
4-sequências frequentes:
4-sequencia1 2 3 4
3-sequencia Suporte
1 2 3 2
1 2 4 2
1 3 4 3
1 3 5 2
2 3 4 2
62
AprioriAll
63
AprioriAll
Contando com o banco:
4-sequencia Suporte1 2 3 4 2
Base de Dados
{1 5} {2} {3} {4}
{1} {3} {4} {3 5}
{1} {2} {3} {4}
{1} {3} {5}
{4} {5}
64
L4
1 2 3 4
AprioriAll- sequências máximas
Passos forwardRemove as sequências que são sub-sequência
de outra sequência
C3
1 2 31 2 41 3 41 3 52 3 4
L2
1 21 31 41 52 32 43 43 54 5
Máximas1 2 3 4
65
L4
1 2 3 4
AprioriAll
Passos forwardRemove as sequências que são sub-sequência
de outra sequência
L3
1 2 31 2 41 3 41 3 52 3 4
L2
1 21 31 41 52 32 43 43 54 5
Máximas1 2 3 4
Sub-sequências
66
L4
1 2 3 4
AprioriAll
Passos forwardRemove as sequências que são sub-sequência
de outra sequência
L3
1 3 5L2
1 21 31 41 52 32 43 43 54 5
Máximas1 2 3 41 3 5
Sub-sequências
67
L4
1 2 3 4
AprioriAll
Passos forwardRemove as sequências que são sub sequência
de outra sequência
L3
1 3 5L2
4 5
Máximas1 2 3 41 3 54 5
68
Referências
Agrawal, R.; Srikant, R., Mining sequential patterns. Proceedings of the Eleventh International Conference on Data Engineering, pp.3-14, 1995.
Jiawei Han, Jian Pei, and Yiwen Yin. Mining Frequent Patterns without Candidate Generation , ACM-SIGMOD, 2000.
Jian Pei, Jiawei Han e Runying Mao. CLOSET: An Efficient Algorithm for Mining Frequent Closed Itemsets. ACM-SIGMOD DMKD workshop, 2000.