Descoberta de Conhecimento
A fast APRIORI Implementation
Sumário
●
Motivação
●
Revisão técnicas de associação
–
Definições
–
Algoritmo APRIORI
●
Estrutura de dados Trie
●
Fast APRIORI
●
Exemplo
Motivação
●
Necessidade de obter conhecimento sobre uma
grande quantidade de dados bruto.
–
Descoberta de relações de associação ocultas no
conjunto de dados
●
Grande apelo comercial
–
Ex.: Descoberta de perfis de clientes
●
Necessidade de resultados rápidos
–
A demora na obtenção do conhecimento pode
Mineração de regras de
associação
●
Dado um conjunto de transações, achar regras para a
predição da a ocorrência de itens baseado na ocorrência
de outros itens na transação.
Transações:
Exemplo de regras de associação
{Diaper} → {Beer},
{Milk, Bread} → {Eggs,Coke}, {Beer, Bread} → {Milk},
TID Items
1
Bread, Milk
2
Bread, Diaper, Beer, Eggs
3
Milk, Diaper, Beer, Coke
4
Bread, Milk, Diaper, Beer
5
Bread, Milk, Diaper, Coke
Definição: Itemset frequente
●
Itemset
– Um coleção de um ou mais itens
Exemplo: {Milk, Bread, Diaper}
– k-itemset
Um itemset que contém k itens
●
Contagem de Suporte (
σ
)
– Ocorrências de um itemset
– Ex. σ ({Milk, Bread,Diaper}) = 2
●
Suporte (s)
– Percentual de transações que contém um itemset
– Ex. s({Milk, Bread, Diaper}) = 2/5
●
Itemset frequente
– Um itemset com o suporte maior ou igual ao limiar minsup.
TID Items
1 Bread, Milk
2 Bread, Diaper, Beer, Eggs
3 Milk, Diaper, Beer, Coke
4 Bread, Milk, Diaper, Beer
5 Bread, Milk, Diaper, Coke
Definição: regra de associação
Exemplo:
{Milk ,Diaper}⇒ Beer
s=
σ Milk , Diaper,Beer
∣T ∣
=
2
5
=0 . 4
c=
σ Milk,Diaper,Beer
σ Milk , Diaper
=
2
3
=0. 67
●Regra de associação
– Uma expressão na forma X → Y, onde X e Y são itemsets
– Exemplo:
{Milk, Diaper} → {Beer}
●
Métricas de avaliação de regras
– Suporte (s)
Percentual de transações que contém
X e Y
– Confiança (c)
Frequencia com que Y aparece em
transações contendo X.
TID Items
1 Bread, Milk
2 Bread, Diaper, Beer, Eggs 3 Milk, Diaper, Beer, Coke 4 Bread, Milk, Diaper, Beer 5 Bread, Milk, Diaper, Coke
Mineração de regras de
associação
●
Abordagem em dois passos:
–
Geração de itemsets frequentes
–
Gera todos os itemsets com suporte
≥
minsup
–
Geração de regras
–
Gera regras de alta confiança para cada itemset,
onde cada regra é uma partição de um itemset
frequente
●
A geração dos conjuntos de itens
frequentes ainda é computacionalmente
custosa
Geração de Itemsets Frequentes
null
AB AC AD AE BC BD BE CD CE DE
A B C D E
ABC ABD ABE ACD ACE ADE BCD BCE BDE CDE
ABCD ABCE ABDE ACDE BCDE
Contagem do suporte
●Determina a
frequência de
ocorrência de todos
os itemsets
candidatos que
passaram pela
poda.
Estrutura de dados Trie
●
Estrutura utilizada para recuperação rápida de
dados
●
Frequentemente utilizado em dicionários
ANA ANITA ANDRE ALAN ALANIS BETE Exemplo com armazenamento de nomes:
A Fast APRIORI Implementation
●
Utiliza a estrutura de dados Trie para otimizar a
forma como são gerados os candidatos
●
Descreve uma série de detalhes de
implementação que ajuda melhorar o
desempenho do algoritmo
●
Descreve a implementação do APRIORI que
tem melhor resultado de performance até então
conhecido (2003/2004)
Considerações
Assume que os itens pertencem a um conjunto
ordenado e que as transações são armazenadas
Representando itemsets na Trie
●
Trie é interessante não apenas para armazenar
e recuperar strings, mas qualquer conjunto
finito ordenado.
●
Candidato k-itemset
–
C = { i1 < i2 < ... < ik }
●
Adaptações
–
Itens representado nas arestas
–
Desnecessário marcar o fim da “palavra”
Contagem de suporte com Trie
●
Para cada k-itemset
–
Gera candidatos por k-itemset
–
Determina suporte para os k-itemsets candidatos
–
Remove os k-itemsets infrequentes
●
Contagem do suporte através de busca dos
candidatos na Trie
–
Incrementa do contador de cada k-itemset
Contagem do suporte
1 0 2 3Transações:
{A, B, C}
{A, B}
{B, C}
A B C1-Itemset
3 2 3 2 Contador Nó identificadorContagem do suporte
1 0 2 3Transações:
{A, B, C}
{A, B}
{B, C}
A B C2-Itemset
3 1 3 2 Contador Nó identificadorAresta rotulada com o item
4 5 6
B C C
2 2
Contagem do suporte
1 0 2 3Transações:
{A, B, C}
{A, B}
{B, C}
A B C3-Itemset
3 1 3 2 Contador Nó identificadorAresta rotulada com o item
4 5 6 B C C 2 2 2 7 1 C
Guardando máximo caminho
Procurar um 5-itemset da transação
{A,B,C,D,E,F,G,H,I}
Aplicando hash
●
Quando um nó possui muitos filhos, o custo da
escolha de um filho, durante o percurso da trie,
tem impacto sobre a performance
●
É possível acelerar a busca aplicando tabela
hash nos nós internos da trie
–
Utilizado quando um nó interno ultrapassa um
APRIORI-BRAVE
●
Na iteração k, tenta gerar os (k+i)-itemset
atrasando o cálculo do suporte
–
Avança até o limite de memória especificado
–
Diminui a quantidade de releitura da base de dados
●
Necessária para o cálculo do suporte
●
Perde tempo calculando suporte de falsos
candidatos.
–
Entretanto, resultados empíricos tiveram bons
Armazenando entrada
●
Armazena transações reduzidas
–
Com informações necessárias para descobrir
itemsets frequentes.
●
Caso uma transação ocorra X vezes, o suporte
é incrementado por X ao invés de
incrementado por 1 em X vezes.
●
Possibilita desabilitar armazenamento
–
Para o caso onde o sistemas operacional já
Implementação: Entrada do dados
●
Aceita apenas dados numéricos
–
Necessário converter literais
●
Cada linha representa uma transação
–
Conversão do formato relacional para o de
transações
●
A saída precisa ser decodificada de inteiros
Implementação: Entrada de dados
1,pao 1,leite 2,pao 2,fralda 2,cerveja 2,ovos 3,leite 3,fralda 3,cerveja 3,coca 4,pao 4,leite 4,fralda 4,cerveja 5,pao 5,leite 5,fralda 5,coca 1,1 1,2 2,1 2,3 2,4 2,5 3,2 3,3 3,4 3,6 4,1 4,2 4,3 4,4 5,1 5,2 5,3 5,6 1,2 1,3,4,5 2,3,4,6 1,2,3,4 1,2,3,6 5:ovos 6:coca 1:pao 3:fralda 4:cerveja 2:leiteExemplo
Transações
{ Pão, Leite }
{ Pão, Fralda, Cerveja, Ovo } { Leite, Fralda, Cerveja, Coca } { Pão, Leite, Fralda, Cerveja } { Pão, Leite, Fralda, Coca }
Contador
Nó identificador
Aresta rotulada com o item
0 5
1-Itemset
Pão
Exemplo
Transações
{ Pão, Leite }
{ Pão, Fralda, Cerveja, Ovo } { Leite, Fralda, Cerveja, Coca } { Pão, Leite, Fralda, Cerveja } { Pão, Leite, Fralda, Coca }
Contador
Nó identificador
Aresta rotulada com o item
1
0 5
4
1-Itemset
Pão
Exemplo
Transações
{ Pão, Leite }
{ Pão, Fralda, Cerveja, Ovo } { Leite, Fralda, Cerveja, Coca } { Pão, Leite, Fralda, Cerveja } { Pão, Leite, Fralda, Coca }
Contador
Nó identificador
Aresta rotulada com o item
1 0 2 Leite 5 4 4
1-Itemset
min_supp = 0.6Pão Fral da
Exemplo
Transações
{ Pão, Leite }{ Pão, Fralda, Cerveja, Ovo } { Leite, Fralda, Cerveja, Coca } { Pão, Leite, Fralda, Cerveja } { Pão, Leite, Fralda, Coca }
Contador
Nó identificador
Aresta rotulada com o item
1 0 2 3 Leite 5 4 4 4
1-Itemset
min_supp = 0.6Cer veja Pão Fral da
Exemplo
Transações
{ Pão, Leite }{ Pão, Fralda, Cerveja, Ovo } { Leite, Fralda, Cerveja, Coca } { Pão, Leite, Fralda, Cerveja } { Pão, Leite, Fralda, Coca }
Contador
Nó identificador
Aresta rotulada com o item
1 0 2 3 Leite 5 4 4 4
1-Itemset
4 3 min_supp = 0.6Ovo Cervej a Pão F ralda
Exemplo
Transações
{ Pão, Leite }{ Pão, Fralda, Cerveja, Ovo } { Leite, Fralda, Cerveja, Coca } { Pão, Leite, Fralda, Cerveja } { Pão, Leite, Fralda, Coca }
Contador
Nó identificador
Aresta rotulada com o item
1 0 2 3 Leit e 5 4 4 4
1-Itemset
4 3 min_supp = 0.6 5 1Ovo Cervej a Pão F ralda
Exemplo
Transações
{ Pão, Leite }{ Pão, Fralda, Cerveja, Ovo } { Leite, Fralda, Cerveja, Coca } { Pão, Leite, Fralda, Cerveja } { Pão, Leite, Fralda, Coca }
Contador
Nó identificador
Aresta rotulada com o item
1 0 2 3 Leit e 5 4 4 4
1-Itemset
4 3 min_supp = 0.6 5 1Coca Cervej a Pão F ralda
Exemplo
Transações
{ Pão, Leite }{ Pão, Fralda, Cerveja, Ovo } { Leite, Fralda, Cerveja, Coca } { Pão, Leite, Fralda, Cerveja } { Pão, Leite, Fralda, Coca }
Contador
Nó identificador
Aresta rotulada com o item
1 0 2 3 Leit e 5 4 4 4
1-Itemset
4 3 min_supp = 0.6 5 2Coca Cervej a Pão F ralda
Exemplo
Transações
{ Pão, Leite }{ Pão, Fralda, Cerveja, Ovo } { Leite, Fralda, Cerveja, Coca } { Pão, Leite, Fralda, Cerveja } { Pão, Leite, Fralda, Coca }
Contador
Nó identificador
Aresta rotulada com o item
1 0 2 3 Leit e 5 4 4 4
1-Itemset
4 3 min_supp = 0.6 5 2Cer veja Pão Fral da
Exemplo
Transações
{ Pão, Leite }{ Pão, Fralda, Cerveja, Ovo } { Leite, Fralda, Cerveja, Coca } { Pão, Leite, Fralda, Cerveja } { Pão, Leite, Fralda, Coca }
Contador
Nó identificador
Aresta rotulada com o item
1 0 2 3 Leite 5 4 4 4
1-Itemset
4 3 min_supp = 0.6Leit e Cer veja Pão Fral da
Exemplo
Transações
{ Pão, Leite }{ Pão, Fralda, Cerveja, Ovo } { Leite, Fralda, Cerveja, Coca } { Pão, Leite, Fralda, Cerveja } { Pão, Leite, Fralda, Coca }
Contador
Nó identificador
Aresta rotulada com o item
1 0 2 3 Leite 4 4 4
2-Itemset
4 3 min_supp = 0.6 5 3 5F ralda Leit e Cer veja Pão Fral da
Exemplo
Transações
{ Pão, Leite }{ Pão, Fralda, Cerveja, Ovo } { Leite, Fralda, Cerveja, Coca } { Pão, Leite, Fralda, Cerveja } { Pão, Leite, Fralda, Coca }
Contador
Nó identificador
Aresta rotulada com o item
1 0 2 3 Leite 4 4 4
2-Itemset
4 3 min_supp = 0.6 5 3 5 6 3Cerve ja F ralda Leit e Cer veja Pão Fral da
Exemplo
Transações
{ Pão, Leite }{ Pão, Fralda, Cerveja, Ovo } { Leite, Fralda, Cerveja, Coca } { Pão, Leite, Fralda, Cerveja } { Pão, Leite, Fralda, Coca }
Contador
Nó identificador
Aresta rotulada com o item
1 0 2 3 Leite 4 4 4
2-Itemset
4 3 min_supp = 0.6 5 3 5 6 3 7 2Cerve ja F ralda Leit e Cer veja Pão Fral da
Exemplo
Transações
{ Pão, Leite }{ Pão, Fralda, Cerveja, Ovo } { Leite, Fralda, Cerveja, Coca } { Pão, Leite, Fralda, Cerveja } { Pão, Leite, Fralda, Coca }
Contador
Nó identificador
Aresta rotulada com o item
1 0 2 3 Leite 4 4 4
2-Itemset
4 3 min_supp = 0.6 5 3 5 6 3 7 2F ral da Frald a Leit e Cer veja Pão Fral da
Exemplo
Transações
{ Pão, Leite }{ Pão, Fralda, Cerveja, Ovo } { Leite, Fralda, Cerveja, Coca } { Pão, Leite, Fralda, Cerveja } { Pão, Leite, Fralda, Coca }
Contador
Nó identificador
Aresta rotulada com o item
1 0 2 3 Leite 4 4 4
2-Itemset
4 3 min_supp = 0.6 5 3 5 6 3 7 3Ce rveja F ral da Frald a Leit e Cer veja Pão Fral da
Exemplo
Transações
{ Pão, Leite }{ Pão, Fralda, Cerveja, Ovo } { Leite, Fralda, Cerveja, Coca } { Pão, Leite, Fralda, Cerveja } { Pão, Leite, Fralda, Coca }
Contador
Nó identificador
Aresta rotulada com o item
1 0 2 3 Leite 4 4 4
2-Itemset
4 3 min_supp = 0.6 5 3 5 6 3 7 3 8 2Ce rveja F ral da Frald a Leit e Cer veja Pão Fral da
Exemplo
Transações
{ Pão, Leite }{ Pão, Fralda, Cerveja, Ovo } { Leite, Fralda, Cerveja, Coca } { Pão, Leite, Fralda, Cerveja } { Pão, Leite, Fralda, Coca }
Contador
Nó identificador
Aresta rotulada com o item
1 0 2 3 Leite 4 4 4
2-Itemset
4 3 min_supp = 0.6 5 3 5 6 3 7 3 8 2Cerve ja F ral da Frald a Leit e Cer veja Pão Fral da
Exemplo
Transações
{ Pão, Leite }{ Pão, Fralda, Cerveja, Ovo } { Leite, Fralda, Cerveja, Coca } { Pão, Leite, Fralda, Cerveja } { Pão, Leite, Fralda, Coca }
Contador
Nó identificador
Aresta rotulada com o item
1 0 2 3 Leite 4 4 4
2-Itemset
4 3 min_supp = 0.6 5 3 5 6 3 7 3 8 3Frald a C ervej a Frald a Frald a Leit e Cer veja Pão Fral da
Exemplo
Transações
{ Pão, Leite }{ Pão, Fralda, Cerveja, Ovo } { Leite, Fralda, Cerveja, Coca } { Pão, Leite, Fralda, Cerveja } { Pão, Leite, Fralda, Coca }
Contador
Nó identificador
Aresta rotulada com o item
1 0 2 3 Leite 4 4 4
3-Itemset
4 3 min_supp = 0.6 5 3 6 7 8 5 3 3 3 9 2Frald a C ervej a Frald a Frald a Leit e Cer veja Pão Fral da
Exemplo
Transações
{ Pão, Leite }{ Pão, Fralda, Cerveja, Ovo } { Leite, Fralda, Cerveja, Coca } { Pão, Leite, Fralda, Cerveja } { Pão, Leite, Fralda, Coca }
Contador
Nó identificador
Aresta rotulada com o item
1 0 2 3 Leite 4 4 4
3-Itemset
4 3 min_supp = 0.6 5 3 6 7 8 5 3 3 3 9 2C erve ja C ervej a Frald a Frald a Leit e Cer veja Pão Fral da
Exemplo
Transações
{ Pão, Leite }{ Pão, Fralda, Cerveja, Ovo } { Leite, Fralda, Cerveja, Coca } { Pão, Leite, Fralda, Cerveja } { Pão, Leite, Fralda, Coca }
Contador
Nó identificador
Aresta rotulada com o item
1 0 2 3 Leite 4 4 4
3-Itemset
4 3 min_supp = 0.6 5 3 6 7 8 5 3 3 3 9 1C erve ja C ervej a Frald a Frald a Leit e Cer veja Pão Fral da
Exemplo
Transações
{ Pão, Leite }{ Pão, Fralda, Cerveja, Ovo } { Leite, Fralda, Cerveja, Coca } { Pão, Leite, Fralda, Cerveja } { Pão, Leite, Fralda, Coca }
Contador
Nó identificador
Aresta rotulada com o item
1 0 2 3 Leite 4 4 4
3-Itemset
4 3 min_supp = 0.6 5 3 6 7 8 5 3 3 3 9 1Cervej a C ervej a Frald a Frald a Leit e Cer veja Pão Fral da
Exemplo
Transações
{ Pão, Leite }{ Pão, Fralda, Cerveja, Ovo } { Leite, Fralda, Cerveja, Coca } { Pão, Leite, Fralda, Cerveja } { Pão, Leite, Fralda, Coca }
Contador
Nó identificador
Aresta rotulada com o item
1 0 2 3 Leite 4 4 4
3-Itemset
4 3 min_supp = 0.6 5 3 6 7 8 5 3 3 3 9 2Cervej a C ervej a Frald a Frald a Leit e Cer veja Pão Fral da
Exemplo
Transações
{ Pão, Leite }{ Pão, Fralda, Cerveja, Ovo } { Leite, Fralda, Cerveja, Coca } { Pão, Leite, Fralda, Cerveja } { Pão, Leite, Fralda, Coca }
Contador
Nó identificador
Aresta rotulada com o item
1 0 2 3 Leite 4 4 4
3-Itemset
4 3 min_supp = 0.6 5 3 6 7 8 5 3 3 3 9 2Cerve ja C ervej a Frald a Frald a Leit e Cer veja Pão Fral da
Exemplo
Transações
{ Pão, Leite }{ Pão, Fralda, Cerveja, Ovo } { Leite, Fralda, Cerveja, Coca } { Pão, Leite, Fralda, Cerveja } { Pão, Leite, Fralda, Coca }
Contador
Nó identificador
Aresta rotulada com o item
1 0 2 3 Leite 4 4 4
3-Itemset
4 3 min_supp = 0.6 5 3 6 7 8 5 3 3 3 9 2Cerve ja C ervej a Frald a Frald a Leit e Cer veja Pão Fral da
Exemplo
Transações
{ Pão, Leite }{ Pão, Fralda, Cerveja, Ovo } { Leite, Fralda, Cerveja, Coca } { Pão, Leite, Fralda, Cerveja } { Pão, Leite, Fralda, Coca }
Contador
Nó identificador
Aresta rotulada com o item
1 0 2 3 Leite 4 4 4
3-Itemset
4 3 min_supp = 0.6 5 3 6 7 8 5 3 3 3 9 2C ervej a Fral da Fral da Leite Cervej a Pão Fral da
Exemplo
Transações:
{ Pão, Leite }{ Pão, Fralda, Cerveja, Ovo } { Leite, Fralda, Cerveja, Coca } { Pão, Leite, Fralda, Cerveja } { Pão, Leite, Fralda, Coca }
Contador
Nó identificador
Aresta rotulada com o item
1 0 2 3 Lei te 4 4 4