Sei sulla pagina 1di 68

Técnicas de associação:

algoritmos (parte 2)

Prof. Me. Ricardo Ávila ricardo.avila@outlook.com.br

CLOSET: An Efficient Algorithm for Mining Frequent Closed Itemsets

CLOSET: 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

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.

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.

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.

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

FP-Tree - Execução

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

FP-Tree - Execução

FP-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 TID Itens Itens
Item
Início da lista de nodos
f
c
a
b
m
p
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

f:1

c:1

a:1

m:1

p:1

root

b, c, k, s, p c, b, p 500 a, f, c, e, l, p, m,

9

FP-Tree - Execução

FP-Tree - Execução

3. Nova varredura do BD, transação por transação:

Item Início da lista de nodos f c f:2 a b m c:2 p a:2
Item
Início da lista de nodos
f
c
f:2
a
b
m
c:2
p
a:2
TID
Itens
Itens Freqüentes (Ordenados)
100
f, a, c, d, g, i, m, p
f, c, a, m, p
m:1
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
p:1
500
a, f, c, e, l, p, m, n
f, c, a, m, p

root

b:1

m:1

FP-Tree - Execução

FP-Tree - Execução

3. Nova varredura do BD, transação por transação:

Item Início da lista de nodos f root c f:3 a b:1 b m c:2
Item
Início da lista de nodos
f
root
c
f:3
a
b:1
b
m
c:2
p
a:2
TID
Itens
Itens Freqüentes (Ordenados)
100
f, a, c, d, g, i, m, p
f, c, a, m, p
b:1
m:1
200
a, b, c, f, l, m, o
f, c, a, b, m
300
b, f, h, j, o
f, b
m:1
400
b, c, k, s, p
c, b, p
p:1
500
a, f, c, e, l, p, m, n
f, c, a, m, p

11

FP-Tree - Execução

FP-Tree - Execução
 3. Nova varredura do BD, transação por transação: Item Início da lista de nodos
 3. Nova varredura do BD, transação por transação:
Item
Início da lista de nodos
f
root
c
c:1
f:3
a
b:1
b
b:1
m
c:2
p
a:2
p:1
TID
Itens
Itens Freqüentes (Ordenados)
100
f, a, c, d, g, i, m, p
f, c, a, m, p
b:1
m:1
200
a, b, c, f, l, m, o
f, c, a, b, m
300
b, f, h, j, o
f, b
m:1
400
b, c, k, s, p
c, b, p
p:1
500
a, f, c, e, l, p, m, n
f, c, a, m, p

12

FP-Tree - Execução

FP-Tree - Execução
 3. Nova varredura do BD, transação por transação: Item Início da lista de nodos
 3. Nova varredura do BD, transação por transação:
Item
Início da lista de nodos
f
root
c
c:1
f:4
a
b:1
b
b:1
m
c:3
p
a:3
p:1
TID
Itens
Itens Freqüentes (Ordenados)
100
f, a, c, d, g, i, m, p
f, c, a, m, p
b:1
m:2
200
a, b, c, f, l, m, o
f, c, a, b, m
300
b, f, h, j, o
f, b
m:1
400
b, c, k, s, p
c, b, p
p:2
500
a, f, c, e, l, p, m, n
f, c, a, m, p

13

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.

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.

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

e:3

f:3

a:1

d:1

null c:4 e:1 a:1 f:1 a:1 d:1
null
c:4
e:1
a:1
f:1
a:1
d:1

Lista de itens frequentes (minsup=2)

f_list = <c:4, e:4, f:4, a:3, d:2>

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

Os subconjuntos que contém d

e:3

f:3

a:1

d:1

FP-tree original

null c:4 e:1 a:1 f:1 a:1 d:1
null
c:4
e:1
a:1
f:1
a:1
d:1

d-conditional

sup(d) = 2

TDB|d = <cefa, cfa>

sup(cefad) = 1 sup(cfad) = 2

e:1

f:1

a:1

null c:2 f:1 a:1
null
c:2
f:1
a:1

cfad é um frequent closed itemset

Os subconjuntos que contém a mas não d

e:3

f:3

a:1

d:1

FP-tree original

null c:4 e:1 a:1 f:1 a:1 d:1
null
c:4
e:1
a:1
f:1
a:1
d:1

a-conditional

null

c:2 f:1
c:2
f:1

e:1

f:1

sup(a) = 3

TDB|a = <cef, cf, e> Nenhum tem suporte igual ao de a:

sup(cefa) = 1 sup(ea) = 2 sup(cfa) = 1 ,

então

e:1

a é um frequent closed itemset

a-Conditional

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 d

Os subconjuntos que contém ae mas não d nem f

Os subconjuntos que contém ac mas não d, e ou f

af:2 ac:2 ae:2 null null null c:2 c:2 c:1 e:1
af:2
ac:2
ae:2
null
null
null
c:2
c:2
c:1
e:1

minsup=2

TDB| e a = <c>

e:1

f:1

null c:2 f:1
null
c:2
f:1

e:1

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

e:3

f:3

a:1

d:1

FP-tree original

null c:4 e:1 a:1 f:1 a:1 d:1
null
c:4
e:1
a:1
f:1
a:1
d:1

f-conditional

sup(f) = 4

TDB|f = <ce, c>

sup(cef) = 3 sup(cf) = 4

e:3

null c:4
null
c:4

cf é frequent closed itemset, pois sup(f) = sup(cf)

cef é frequent closed itemset, pois não é subconjunto de qquer itemset encontrado com suporte idêntico.

Os subconjuntos que contém e mas não f, a nem d

e:3

f:3

a:1

d:1

FP-tree original

null c:4 e:1 a:1 f:1 a:1 d:1
null
c:4
e:1
a:1
f:1
a:1
d:1

e-conditional

sup(e) = 4

TDB|e = <c>

sup(ce) = 3

c:3

null

sup(e) = 4 TDB|e = <c> sup(ce) = 3 c:3 null ce não é frequent closed

ce não é frequent closed itemset, pois sup(ce) = sup(cef) que é FCI

e é frequent closed itemset, pois o seu suporte é 4 e não 3

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

Resumo

Mineração de Padrões Sequenciais

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?

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

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?

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

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

29

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:

comprador

Sequencia

Padrões sequenciais

1

(30) (90)

(minsup=25%)

2

(10, 20) (30) (40, 60, 70)

(30) (90)

3

(30, 50, 70)

(30) (40, 70)

4

(30) (40, 70) (90)

5

(90)

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

Fases

Sort

Litemset

Transformação

Sequencia

Maximal

Sort

Ordenar a base de dados por ID do comprador e por data da transação; Realizado de forma simples por um comando SQL;

Sort

Arquivo original

ID

comprador

Data

Itens

Após o sort

ID

comprador

Data

Itens

1

25/03/93

30

1

25/03/93

30

1

30/03/93

90

1

30/03/93

90

2

10/06/93

10, 20

2

10/06/93

10, 20

5

12/06/93

90

2

15/06/93

30

2

15/06/93

30

2

20/06/93

40, 60, 70

2

20/06/93

40, 60, 70

 

3

25/06/93

30, 50, 70

3

25/06/93

30, 50, 70

 

4

25/06/93

30

4

25/06/93

30

4

30/06/93

40, 70

4

30/06/93

40, 70

4

25/07/93

90

4

25/07/93

90

5

12/06/93

90

Fases

Sort

Litemset

Transformação

Sequencia

Maximal

Litemset

Encontrar o conjunto de todos os l-itemsets (itemsets frequentes).

Passos:

1. Agrupar dados por ID;

2. Gerar itemsets frequentes;

Litemset – 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

<(30) (90)>

2

<(10, 20) (30) (40, 60, 70)>

3

<(30, 50, 70)>

4

<(30) (40, 70) (90)>

5

<(90)>

Litemset – encontrar os conjuntos frequentes

ID comprador

Itens

1

<(30) (90)>

2

<(10,20) (30) (40,60, 70)>

3

<(30, 50, 70)>

4

<(30) (40, 70) (90)>

5

<(90)>

Considerando minsup = 2, os conjuntos frequentes são:

(30), (40), (70), (90) e (40,70)

Fases

Sort

Litemset

Transformação

Sequencia

Maximal

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;

Transformação – suporte mínimo

ID comprador

Itens

1

<(30) (90)>

2

<(10,20) (30) (40, 60, 70)>

3

<(30, 50, 70)>

4

<(30) (40, 70) (90)>

5

<(90)>

ID comprador

Itens

1

<{(30)} {(90)}>

2

<{(30)} {(40), (70), (40 , 70)}>

3

<{(30),(70)}>

4

<{(30)} {(40), (70), (40, 70)} {(90)}>

5

<{(90)}>

Transformação – Mapeamento

ID comprador Itens 1 <{(30)} {(90)}> 2 <{(30)} {(40), (70), (40 70)}> 3 <{(30), (70)}>
ID comprador
Itens
1 <{(30)} {(90)}>
2 <{(30)} {(40), (70), (40 70)}>
3 <{(30), (70)}>
4 <{(30)} {(40), (70), (40 70)} {(90)}>
5 <{(90)}>
Mapa Item Símbolo (30) 1 ID Itens (40) 2 comprador (70) 3 1 〈{1} {5}〉
Mapa
Item
Símbolo
(30)
1
ID
Itens
(40)
2
comprador
(70)
3
1 〈{1} {5}〉
2 〈{1} {2, 3, 4}〉
(40 70)
4
3 〈{1, 3}〉
(90)
5
4 〈{1} {2, 3, 4} {5}〉
5 〈{5}〉

Fases

Sort

Litemset

Transformação

Sequencia

Maximal

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

Fases

Sort

Litemset

Transformação

Sequencia

Maximal

Maximal

Encontrar as sequências máximas entre as sequências frequentes.

Maximal

l-sequências

{1} {5}

{1} {2, 3}

{1}

〈 {1} {5} 〉 〈 {1} {2, 3} 〉 〈 {1} 〉 l-sequências 〈 (30) (90)

l-sequências

(30) (90)

(30) (40 70)

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 frequentes

1. 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} {2} {3} {4} 〉 〈 {1} {3} {5} 〉 〈 {4} {5} 〉 1-sequencia

1-sequencia

Suporte

1

4

2

2

3

4

4

4

5

4

AprioriAll

Gera os candidatos da próxima fase Verifica o suporte mínimo passando pelo banco
Gera os candidatos
da próxima fase
Verifica o suporte
mínimo passando
pelo banco

AprioriAll

Continuando com o exemplo para gerar 2-sequências frequentes: gera os candidatos

1-sequencia

Suporte

1

4

2

2

3

4

4

4

5

4

2 〈 3 〉 4 〈 4 〉 4 〈 5 〉 4 2-sequencia 〈 1

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

AprioriAll

Gera os candidatos da próxima fase Verifica o suporte mínimo passando pelo banco
Gera os candidatos
da próxima fase
Verifica o suporte
mínimo passando
pelo banco

AprioriAll

Verifica o suporte mínimo para as 2-sequências (Passando pelo banco):

Retira as que não possuem o suporte mínimo:

Base de Dados

{1 5} {2} {3} {4}〉 〈{1} {3} {4} {3 5}〉 〈{1} {2} {3} {4}〉 〈{1} {3} {5}〉 〈{4} {5}

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

52

AprioriAll

Gera os candidatos da próxima fase Verifica o suporte mínimo passando pelo banco
Gera os candidatos
da próxima fase
Verifica o suporte
mínimo passando
pelo banco

AprioriAll

Continuando com o exemplo para gerar 3-sequências frequentes , inicialmente gera as 3- sequências candidatas

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 5 〉 3 〈 2 3 〉 2 〈 2 4 〉 2 〈 3
?
?

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

2 〈 2 4 〉 2 〈 3 4 〉 3 〈 3 5 〉 2
〈5 2 1〉 ?
〈5 2 1〉
?
〈1 2 5〉 ?
〈1 2 5〉
?

AprioriAll

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 3e 2 3sã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

AprioriAll

Gera os candidatos da próxima fase Verifica o suporte mínimo passando pelo banco
Gera os candidatos
da próxima fase
Verifica o suporte
mínimo passando
pelo banco

AprioriAll

Agora sim! Vamos ao banco!

Base de Dados

{1 5} {2} {3} {4})〉 〈{1} {3} {4} {3 5})〉 〈{1} {2} {3} {4})〉 〈{1} {3} {5})〉 〈{4} {5})

3-sequencia

Suporte

〈 {1} {3} {5}) 〉 〈 {4} {5}) 〉 3-sequencia Suporte 〈 1 2 3 〉

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

AprioriAll

Gera os candidatos da próxima fase Verifica o suporte mínimo passando pelo banco
Gera os candidatos
da próxima fase
Verifica o suporte
mínimo passando
pelo banco

AprioriAll

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

〈 1 2 4 〉 2 〈 1 3 4 〉 3 〈 1 3 5

4-sequencia

1 2 3 4

AprioriAll

Gera os candidatos da próxima fase Verifica o suporte mínimo passando pelo banco
Gera os candidatos
da próxima fase
Verifica o suporte
mínimo passando
pelo banco

AprioriAll

Contando com o banco:

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

AprioriAll- sequências máximas

L 4

Passos forward 〈1 2 3 4〉 C 3 〈1 2 3〉 〈1 2 4〉 〈1
Passos forward
〈1 2 3 4〉
C
3
〈1 2 3〉
〈1 2 4〉
〈1 3 4〉
〈1 3 5〉
〈2 3 4〉
Remove as sequências
que são sub-sequência
de outra sequência
Máximas
〈1 2 3 4〉
L 2

1 2

1 3

1 4

1 5

2 3

2 4

3 4

3 5

4 5

AprioriAll

L 4

1 2 3 4

L 3

1 2 3〉 〈1 2 4〉 〈1 3 41 3 52 3 4

〈 1 2 4 〉 〈 1 3 4 〉 〈 1 3 5 〉 〈

L 2

1 2

1 3

1 4

1 5

2 3

2 4

3 4

3 5

4 5

Sub-sequências

Passos forward

Remove as sequências que são sub-sequência de outra sequência

Máximas

1 2 3 4

AprioriAll

L 4

1 2 3 4

L 3

1 3 5

L 2

1 2

1 3

1 4

1 5

2 3

2 4

3 4

3 5

4 5

〉 〈 2 4 〉 〈 3 4 〉 〈 3 5 〉 〈 4 5

Sub-sequências

Passos forward

Remove as sequências que são sub-sequência de outra sequência

Máximas

1 2 3 4〉 〈1 3 5

AprioriAll

L 4

1 2 3 4

L 3

1 3 5

L 2

Passos forward

Remove as sequências que são sub sequência de outra sequência

〈4 5〉 Máximas 〈1 2 3 4〉 〈1 3 5〉 〈4 5〉
〈4 5〉
Máximas
〈1 2 3 4〉
〈1 3 5〉
〈4 5〉

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.