Title: Associa
1Associação algoritmos (parte 2)prof. Luis
Otavio AlvaresINE/UFSC
2CLOSET An Efficient Algorithm for Mining
Frequent Closed Itemsets
- 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
3FP-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
4FP-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.
5FP-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.
6FP-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.
7FP-Tree - Execução
- 1. Primeira varredura no banco de dados para
obter a lista ordenada L dos itens freqüentes - L lt(f4), (c4), (a3), (b3), (m3), (p3)gt
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
8FP-Tree - Execução
- 2. Criação da raiz, nomeada com null.
root
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
9FP-Tree - Execução
- 3. Nova varredura do BD, transação por transação
Item Início da lista de nodos
f
c
a
b
m
p
root
f1
c1
a1
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
m1
p1
10FP-Tree - Execução
- 3. Nova varredura do BD, transação por transação
Item Início da lista de nodos
f
c
a
b
m
p
root
f2
c2
a2
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
b1
m1
m1
p1
11FP-Tree - Execução
- 3. Nova varredura do BD, transação por transação
Item Início da lista de nodos
f
c
a
b
m
p
root
f3
b1
c2
a2
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
b1
m1
m1
p1
12FP-Tree - Execução
- 3. Nova varredura do BD, transação por transação
Item Início da lista de nodos
f
c
a
b
m
p
root
c1
f3
b1
b1
c2
a2
p1
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
b1
m1
m1
p1
13FP-Tree - Execução
- 3. Nova varredura do BD, transação por transação
Item Início da lista de nodos
f
c
a
b
m
p
root
c1
f4
b1
b1
c3
a3
p1
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
b1
m2
m1
p2
14FP-Tree - Análise
- 2 varreduras do banco de dados
- Contar itens frequentes
- 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.
15FP-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.
16Mineraçã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
17MP-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?
18MP-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
19MP-Sequenciais
- Problema
- Dado uma base de dados D com transações, quais
as associações das transações dos clientes com o
passar do tempo?
20MP-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
- lt(3) (4,5) (8)gt
- lt(3) (4,5) (8)gt está contido em lt(7) (3,8) (9)
(4,5,6) (8)gt - A sequência lt(3) (5)gt não está contida em lt(3,5)gt
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
21MP-Sequenciais
- Problema
- Dada uma base de dados D com transações, quais
as associações das transações dos clientes com o
passar do tempo? - 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. - Ex
Padrões sequenciais (minsup25)
(30) (90)
(30) (40, 70)
comprador Sequencia
1 (30) (90)
2 (10, 20) (30) (40, 60, 70)
3 (30, 50, 70)
4 (30) (40, 70) (90)
5 (90)
22MP-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
23Fases
- Sort
- Litemset
- Transformação
- Sequencia
- Maximal
24Sort
- Ordenar a base de dados por ID do comprador e por
data da transação - Realizado de forma simples por um comando SQL
25Sort
Arquivo original
Após o sort
ID comprador Data Itens
1 25/03/93 30
1 30/03/93 90
2 10/06/93 10, 20
5 12/06/93 90
2 15/06/93 30
2 20/06/93 40, 60, 70
3 25/06/93 30, 50, 70
4 25/06/93 30
4 30/06/93 40, 70
4 25/07/93 90
ID comprador Data Itens
1 25/03/93 30
1 30/03/93 90
2 10/06/93 10, 20
2 15/06/93 30
2 20/06/93 40, 60, 70
3 25/06/93 30, 50, 70
4 25/06/93 30
4 30/06/93 40, 70
4 25/07/93 90
5 12/06/93 90
26Fases
- Sort
- Litemset
- Transformação
- Sequencia
- Maximal
27Litemset
- Encontrar o conjunto de todos os l-itemsets
(itemsets frequentes). - Passos
- Agrupar dados por ID
- Gerar itemsets frequentes
28Litemset Agrupamento
ID comprador Data Itens
1 25/03/93 30
1 30/03/93 90
2 10/06/93 10, 20
2 15/06/93 30
2 20/06/93 40, 60, 70
3 25/06/93 30, 50, 70
4 25/06/93 30
4 30/06/93 40, 70
4 25/07/93 90
5 12/06/93 90
ID comprador Itens
1 lt(30) (90)gt
2 lt(10, 20) (30) (40, 60, 70)gt
3 lt(30, 50, 70)gt
4 lt(30) (40, 70) (90)gt
5 lt(90)gt
29Litemset encontrar os conjuntos frequentes
ID comprador Itens
1 lt(30) (90)gt
2 lt(10,20) (30) (40,60, 70)gt
3 lt(30, 50, 70)gt
4 lt(30) (40, 70) (90)gt
5 lt(90)gt
Considerando minsup 2, os conjuntos frequentes
são (30), (40), (70), (90) e (40,70)
30Fases
- Sort
- Litemset
- Transformação
- Sequencia
- Maximal
31Transformaçã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
- Transformação (considera minSup)
- Mapeamento
32Transformação suporte mínimo
ID comprador Itens
1 lt(30) (90)gt
2 lt(10,20) (30) (40, 60, 70)gt
3 lt(30, 50, 70)gt
4 lt(30) (40, 70) (90)gt
5 lt(90)gt
ID comprador Itens
1 lt(30) (90)gt
2 lt(30) (40), (70), (40 , 70)gt
3 lt(30),(70)gt
4 lt(30) (40), (70), (40, 70) (90)gt
5 lt(90)gt
33Transformação Mapeamento
ID comprador Itens
1 lt(30) (90)gt
2 lt(30) (40), (70), (40 70)gt
3 lt(30), (70)gt
4 lt(30) (40), (70), (40 70) (90)gt
5 lt(90)gt
Mapa Mapa
Item Símbolo
(30) 1
(40) 2
(70) 3
(40 70) 4
(90) 5
ID comprador Itens
1 ?1 5?
2 ?1 2, 3, 4?
3 ?1, 3?
4 ?1 2, 3, 4 5?
5 ?5?
34Fases
- Sort
- Litemset
- Transformação
- Sequencia
- Maximal
35Sequencia
- 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
36Fases
- Sort
- Litemset
- Transformação
- Sequencia
- Maximal
37Maximal
- Encontrar as sequências máximas entre as
sequências frequentes.
38Maximal
l-sequências
?1 5?
?1 2, 3?
?1?
Mapa Mapa
Item Símbolo
(30) 1
(40) 2
(70) 3
(40 70) 4
(90) 5
l-sequências
?(30) (90)?
?(30) (40 70)?
39Exemplo de algoritmo AprioriAll
- A cada fase gera as k-sequências frequentes
- 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 Suporte
?1? 4
?2? 2
?3? 4
?4? 4
?5? 4
40AprioriAll
41AprioriAll
- Continuando com o exemplo para gerar
- 2-sequências frequentes gera os candidatos
2-sequencia 2-sequencia 2-sequencia
?1 1? ?2 5? ?4 4?
?1 2? ?3 1? ?4 5?
?1 3? ?3 2? ?5 1?
?1 4? ?3 3? ?5 2?
?1 5? ?3 4? ?5 3?
?2 1? ?3 5? ?5 4?
?2 2? ?4 1? ?5 5?
?2 3? ?4 2?
?2 4? ?4 3?
1-sequencia Suporte
?1? 4
?2? 2
?3? 4
?4? 4
?5? 4
42AprioriAll
43AprioriAll
- 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?
44AprioriAll
45AprioriAll
- Continuando com o exemplo para gerar
- 3-sequências frequentes , inicialmente gera as
3-sequências candidatas
46AprioriAll
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
?
47AprioriAll
?5 2 1? ?
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? ?
48AprioriAll
- 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 -
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
3-sequência
?1 2 3?
?1 2 4?
?1 3 4?
?1 3 5?
?1 4 5?
?2 3 4?
?3 4 5?
49AprioriAll
50AprioriAll
- 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)?
51AprioriAll
52AprioriAll
- Continuando com o exemplo para gerar
- 4-sequências frequentes
3-sequencia Suporte
?1 2 3? 2
?1 2 4? 2
?1 3 4? 3
?1 3 5? 2
?2 3 4? 2
4-sequencia
?1 2 3 4?
53AprioriAll
54AprioriAll
Base de Dados
?1 5 2 3 4?
?1 3 4 3 5?
?1 2 3 4?
?1 3 5?
?4 5?
4-sequencia Suporte
?1 2 3 4? 2
55AprioriAll- sequências máximas
L4
?1 2 3 4?
Passos forward
Remove as sequências que são sub-sequência de outra sequência
C3
?1 2 3?
?1 2 4?
?1 3 4?
?1 3 5?
?2 3 4?
Máximas
?1 2 3 4?
L2
?1 2?
?1 3?
?1 4?
?1 5?
?2 3?
?2 4?
?3 4?
?3 5?
?4 5?
56AprioriAll
L4
?1 2 3 4?
Passos forward
Remove as sequências que são sub-sequência de outra sequência
L3
?1 2 3?
?1 2 4?
?1 3 4?
?1 3 5?
?2 3 4?
Sub-sequências
Máximas
?1 2 3 4?
L2
?1 2?
?1 3?
?1 4?
?1 5?
?2 3?
?2 4?
?3 4?
?3 5?
?4 5?
57AprioriAll
L4
?1 2 3 4?
Passos forward
Remove as sequências que são sub-sequência de outra sequência
L3
?1 3 5?
L2
?1 2?
?1 3?
?1 4?
?1 5?
?2 3?
?2 4?
?3 4?
?3 5?
?4 5?
Sub-sequências
Máximas
?1 2 3 4?
?1 3 5?
58AprioriAll
L4
?1 2 3 4?
Passos forward
Remove as sequências que são sub sequência de outra sequência
L3
?1 3 5?
L2
?4 5?
Máximas
?1 2 3 4?
?1 3 5? ?4 5?
59Referê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.