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 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
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. 12/05/2018
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. 12/05/2018
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. 12/05/2018
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
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 12/05/2018
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 root f:1 c:1 a:1 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 m:1 p:1 12/05/2018
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 root f:2 c:2 a:2 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 b:1 m:1 m:1 p:1 12/05/2018
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 root f:3 b:1 c:2 a:2 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 b:1 m:1 m:1 p:1 12/05/2018
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 root c:1 f:3 b:1 b:1 c:2 a:2 p:1 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 b:1 m:1 m:1 p:1 12/05/2018
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 root c:1 f:4 b:1 b:1 c:3 a:3 p:1 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 b:1 m:2 m:1 p:2 12/05/2018
FP-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. 12/05/2018
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. 12/05/2018
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 Mineração de Padrões Sequenciais 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: Comparando 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: 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: Exemplos: 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
Padrões sequenciais (minsup=25%) MP-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: comprador Sequencia 1 (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: MP-Sequencial: 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 ID comprador Data Itens 1 25/03/93 30 30/03/93 90 2 10/06/93 Arquivo original Após o sort ID comprador Data Itens 1 25/03/93 30 30/03/93 90 2 10/06/93 10, 20 5 12/06/93 15/06/93 20/06/93 40, 60, 70 3 25/06/93 30, 50, 70 4 30/06/93 40, 70 25/07/93 ID comprador Data Itens 1 25/03/93 30 30/03/93 90 2 10/06/93 10, 20 15/06/93 20/06/93 40, 60, 70 3 25/06/93 30, 50, 70 4 30/06/93 40, 70 25/07/93 5 12/06/93
Fases Sort Litemset Transformação Sequencia Maximal
Litemset Encontrar o conjunto de todos os l-itemsets (itemsets frequentes). Passos: Agrupar dados por ID; Gerar itemsets frequentes;
Litemset – Agrupamento ID comprador Data Itens 1 25/03/93 30 30/03/93 90 2 10/06/93 10, 20 15/06/93 20/06/93 40, 60, 70 3 25/06/93 30, 50, 70 4 30/06/93 40, 70 25/07/93 5 12/06/93 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: Transformação (considera minSup) 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)}> 4 <{(30)} {(40), (70), (40 70)} {(90)}> 5 <{(90)}> 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}
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} Mapa Item Símbolo (30) 1 (40) 2 (70) 3 (40 70) 4 (90) 5 l-sequências (30) (90) (30) (40 70)
Exemplo 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 5
AprioriAll 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 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 5
AprioriAll 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: 2-sequencia Suporte 1 2 2 1 3 4 1 4 3 1 5 2 3 2 4 3 4 3 5 4 5 Base de Dados {1 5} {2} {3} {4} {1} {3} {4} {3 5} {1} {2} {3} {4} {1} {3} {5} {4} {5}
AprioriAll 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 2 3 2 4 3 4 3 5 4 5 ?
AprioriAll 5 2 1 ? 1 2 5 ? 2-sequencia Suporte 1 2 2 1 3 4 5 2 1 ? 2-sequencia Suporte 1 2 2 1 3 4 1 4 3 1 5 2 3 2 4 3 4 3 5 4 5 1 2 5 ?
AprioriAll 1 2 2 1 3 4 1 4 3 1 5 2 3 2 4 3 4 3 5 4 5 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 2 3 2 4 3 4 3 5 4 5 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 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! 3-sequencia Suporte 1 2 3 2 1 2 4 1 3 4 3 1 3 5 1 4 5 1 2 3 4 3 4 5 Base de Dados {1 5} {2} {3} {4}) {1} {3} {4} {3 5}) {1} {2} {3} {4}) {1} {3} {5}) {4} {5})
AprioriAll 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 1 3 4 3 1 3 5 2 3 4 4-sequencia 1 2 3 4
AprioriAll 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: 4-sequencia Suporte 1 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} 4-sequencia Suporte 1 2 3 4 2
AprioriAll- sequências máximas 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
Remove as sequências que são sub-sequência de outra sequência AprioriAll 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
Remove as sequências que são sub-sequência de outra sequência AprioriAll 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
Remove as sequências que são sub sequência de outra sequência AprioriAll 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
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.