500 likes | 666 Views
CLOSET: An Efficiet Algorithm for Mining Frequent Closed Itemsets. Jian Pei , Jiawei Han , and Runying Mao. Augusto Klinger. Roteiro . Introdução Definições CLOSET Exemplo Otimizações Algoritmo Escalabilidade Performance Conclusão. Introdução.
E N D
CLOSET: An Efficiet Algorithm for Mining Frequent Closed Itemsets JianPei, JiaweiHan, andRunying Mao Augusto Klinger
Roteiro • Introdução • Definições • CLOSET • Exemplo • Otimizações • Algoritmo • Escalabilidade • Performance • Conclusão
Introdução • Geralmente, mineração por regras de associação resulta em muitos itemsets e regras. • Solução: minerar somente itemsets fechados frequentes (Pasquier et al.) • Mesmo poder • Menos redundância • Mais eficiência
Introdução • CLOSET • Aplicação de um estrutura FP-tree para minerar itemsets fechados frequentes • Tecnica de compressão de caminho para identificar itemsets fechados frequentes rapidamente • Mecanismo de projeção baseado em partição para escalabilidade
Definições • Problema • Achar todos itemsets frequentes • Para cada itemset, gerar as regras de associação
Definições • Frequent Closed Itemset (FCI): • Um Itemset X é fechado se não existir um itemset X’ que • X’ é superconjunto próprio de X • Toda transação que contém X contém X’ • X > X’ e sup(X) = sup(X’) • Itemset fechado é frequente se o suporte passa o suporte mínimo.
Definições • Regras de associação em FCI • X→Y • X e XUY são FCI • Não existir Z, tal que X<Z<(XUY) • Passar o nível de confiança • Processo de Mineração é similar • Minerar FCIs com min_sup • Gerar regras nos FCIs com min_conf
Definições • Exemplo • Min_sup = 2 • Min_conf = 50% R: FCI: acdf Não FCI: ac, f
CLOSET • Minera FCIs por um método de divisão e conquista • Explora o conceito de projeção de base de dados • Exemplo...
CLOSET • Encontrar os itens frequentes • F_list = [c:4, e:4, f:4, a:3, d:2] • Dividir o espaço de busca • Baseado na f_list, 5 espaços contendo: • d • ae não d • f e não a nem d • e e não d nem a nem f • Somente c
CLOSET • Encontrar subconjuntos de FCIs • Construir e minerar conditional databases recursivamente • FCIs com d • c, f e a aparecem em todas transações • e é infrequente • cfad: 2 é um FCI
CLOSET • FCIs com ae não d • Nenhum item em toda transação • a: 3 é um FCI – mas pode ter mais
CLOSET • para achar os outros: • Local f_lista = (c:2, e:2, f:2) • Particionar o espaço de acordo com a f_lista • Contendo af mas não d • Contendo ae mas não d ou f • Contendo ac mas não d, e ou f • sup(af) = sup(cfad) = sup(ca) • Tabela do ae não tem item frequente, então: • ea: 2 é um FCI
CLOSET • FCIs com f e não a nem d • c aparece em todas transações • sup(cf) != sup(cfad) • cf: 4 é um FCI • cef não é subconjunto de ninguém • cef: 3 é um FCI
CLOSET • FCIs com e e não d nem a nem f • sup(ce) = sup(cef) • e: 4 é um FCI • FCIs com somente c • Como não há FCI contendo c e não f, não há FCI somente com c.
CLOSET – Otimização 1 • FP-tree • Árvore de prefixos • Compreção • Transações com mesmo prefixo compartilham uma parte do caminho a partir da raíz • Conditional databases podem ser derivadas eficientemente • A projeção de um caminho é equivalente a multiplas transações
CLOSET – Otimização 2 • Extrair itens que aparecem em toda transação da conditional database • Se Y aparece em toda transação da X-conditional database, XUY é um FCI, caso não seja subconjunto próprio de outro FCI com mesmo suporte. • No exemplo, o itemset cfad • Excluir item extraído da local f_list e da conditional database
CLOSET – Otimização 2 • Reduz o tamanho da FP-tree • Pode reduzir o nível de recursão
CLOSET – Otimização 3 • Extrair FCIs diretamente da FP-tree • Se existir um caminho único, alguns FCIs podem ser extraídos diretamente da condicional database • Sendo i um item frequente numa X-cond • Só um nodo N contendo i • Antecessores de N tem só um filho • N tem 0 ou mais filhos • Então, a união de X, N e antecessores (menos a raíz) é um FCI (se obedecer as regras!)
CLOSET – Otimização 3 • Exemplo: c e • FP-tree tem só um caminho (c:4, e:3) • Pode-se enumerar diretamente cf:4 e cef: 3
CLOSET – Otimização 4 • Podar galhos • Se X e Y são itensetsfrequentes • sup(X) = sup(Y) • X < Y • Y é FCI • Então, não há necessidade de procurar na X-cond! • Como no exemplo foi desconsiderada a C-cond por c ser subconjunto defc
CLOSET – Algoritmo • Inserir YUX em FCI se Y aparece em todas as transações da DB(e respeita as regras) // Otimização 2 • ContruirFP-tree da DB sem os itens já extraídos // Otimização 1 • ExtraírFCIs se possível // Otimização 3
CLOSET – Algoritmo • Montar conditional databases para ítens restantes da f_list e computar suas respectivas f_lists. • Para cada ítemi restante na f_list, a partir do último, chamar CLOSET(iX, DBi, f_listi, FCI) SE iX não for subconjunto com mesmo suporte de algum FCI já encontrado! // Otimização 4
CLOSET – Escalabilidade • Para grandes TDBs, FP-trees não cabem na memória • Solução: • Contruir primeiro conditional databases sem FP-trees • Construir FP-trees baseadas em disco [Miningfrequentpatternswithout candidate generation]
CLOSET – Escalabilidade • Um método simples: • Expandir todas conditional databases, uma por vez • Duplicaria TDB L/2 vezes • L é o numero médio de itens frequentes nas transações • Construção de muitas conditional databases pode ser uma operação custosa
CLOSET – Escalabilidade • Método baseado em partição • Pode reduzir drasticamente o espaço • Consiste em copiar uma transação somente para a conditional database que contém o ultimo ítem da sua f_list.
CLOSET – Escalabilidade • Exemplo: • d é o ultimo ítem da f_list de cefad • Ao invés de copiar para d- a- f- e- cond • Só copia para a d-cond • Depois de processar a d-cond, a transação é copiada para a próxima conditional database, e assim por diante.
CLOSET – Escalabilidade • Uma vez terminada a partição, a tabela original pode ser descartada. • FP-trees são contruídas somente depois de algumas rodadas (quando as conditional databases couberem na memória)
Performance • CLOSET x CHARM x A-close • Pentium 233 MHz • 128 MB • Windows NT • Visual C++ • Testado em 3 conjuntos de dados
Performance • T25l20D100K (sintética) • 100.000 transações • Transações de tamanho 25 • Itemsetsfrequentes de tamanho 20
Performance • Connect-4 (real) • 67.557 transações • 43 itens por transação
Performance - Connect-4 Numero de itemsets frequentes pode ser reduzido em uma ordem de magnitude numa DB densa, se representados por FCIs
Performance • Pumsb (real) • 49.046 transações • 74 itens por transação
Conclusão • Minerar FCIs é uma alternativa interessante • Menos itemsets • Menos regras, e mais interessantes • CLOSET é eficiente e escalável