Mineração de itemsets e regras de associação Marcelo K. Albertini 3 de Novembro de 2015
2/46 Conteúdo Regras de associação A-priori FP-Tree
3/46 Análise de cestas de compras Uma cadeia de supermercados vende 100000 itens diferentes Por mês, milhões de compras são realizadas contendo diferentes variações de itens Como identificar quais são os produtos mais frequentemente associados? Linguiça e carvão Fralda e cerveja Outros: conceitos relacionados (documentos são cestas de palavras), plágio (documentos são cestas de sentenças)
4/46 Mineração de conjuntos de itens - Itemsets Análise de cesta de itens Obter regras de associação Exemplos Análise de weblogs: encontrar conjuntos de páginas acessadas em comum Itens comprados juntos em supermercado Usuário que visita páginas main, laptop e desconto também visita carrinho-de-compra e pagamento.
5/46 Itemset São items: I = {x 1, x 2,..., x m } Um itemset é um subconjunto X I. I pode ser todas as páginas de um site I pode ser todos produtos vendidos no supermercado k-itemset : conjunto com k itens (cardinalidade k) I (k) : conjunto de todos os k-itemsets
6/46 Transação e Tidset Uma transação é uma tupla com um id t e um itemset X : t, X É o conjunto de identificadores de todas as transações: T = {t 1, t 2,..., t n } Um tidset é um subconjunto de transações T T. T pode ser o conjunto de todas as compras no supermercado T pode ser o conjunto de sessões de visita em um site
7/46 Representação de bases de dados Uma base binária é uma relação de itens e transações D T I Uma transação t tem um item x se (t, x) D t i(t) 1 ABDE 2 BCE 3 ABDE 4 ABCE 5 ABCDE 6 BCD Base binária Transações Tidsets Base vertical D A B C D E 1 1 1 0 1 1 2 0 1 1 0 1 3 1 1 0 1 1 4 1 1 1 0 1 5 1 1 1 1 1 6 0 1 1 1 0 x A B C D E t(x) 1 1 2 1 1 3 2 4 3 2 4 3 5 5 3 5 4 6 6 4 5 5 6
8/46 k-itemsets frequentes: F (k) t i(t) 1 ABDE 2 BCE 3 ABDE 4 ABCE 5 ABCDE 6 BCD
9/46 Itemsets frequentes com suporte mínimo minsup = 3 t i(t) 1 ABDE 2 BCE 3 ABDE 4 ABCE 5 ABCDE 6 BCD
10/46 Suporte de uma regra de associação Uma regra de associação X Y (X, Y I, X Y =, XY = X Y ) tem suporte E tem suporte relativo sup(x Y ) = t(xy ) = sup(xy ) rsup(x Y ) = sup(xy ) D Usuário pode definir um suporte mínimo minsup para as regras desejadas.
11/46 Confiança de uma regra de associação conf (X Y ) = sup(xy ) sup(x ) Regra é forte se tem no mínimo confiança de minconf
12/46 t i(t) 1 ABDE 2 BCE 3 ABDE 4 ABCE 5 ABCDE 6 BCD s = sup(bc E) = sup(bce) = 3 c = conf (BC E) = sup(bce) sup(bc) = 3/4
I é o conjunto de itens de trabalho D é a base binária i(t) é o conjunto de itens da transação t 13/46
Força bruta explora todo o grafo. 14/46
15/46 Avaliação do algoritmo de força bruta Geração dos candidatos: O(2 I ) Avaliar todas as combinações de itens Computação do suporte: O( I D ) Comparar cada itemset candidato com cada transação Total: O( I D 2 I )
16/46 Busca em largura: algoritmo Apriori Propriedades para reduzir espaço de busca Se X Y I, então sup(x ) sup(y ) sup({a, B, C}) sup({a, B, C, D}) Se Y é frequente, então X Y são frequentes Se X não é frequente, então Y X não são frequentes Exploração de árvore de prefixos em nível (busca em largura) Evita (poda) ramos de regras infrequentes Encontra todos k-itemsets usando árvore até altura k
17/46
18/46 Algoritmo Apriori Manutenção de uma árvore de prefixos para buscar subconjuntos mais frequentes Algoritmo em três partes Algoritmo principal para usar a árvore de prefixos em encontrar itemsets mais frequentes Sub-algoritmo para computar o suporte de regras Sub-algoritmo para extender a árvore de prefixos Dois k-itemsets X a e X b com prefixo em comum de tamanho k 1 dão origem a um k + 1-itemset X ab = X a X b X ab é mantido se nenhum subconjunto nele é infrequente X a e X b são removidos
19/46
20/46
21/46
22/46 Custo algoritmo Apriori Custo computacional é O( I D 2 I ) Pois todos itemsets podem ser frequentes Com a poda, custo computacional costuma ser mais baixo Custo de I/O do Apriori é O( I ) e força-bruta é O(2 I ) Custo de I/O é dependente do comprimento da sequência mais longa na base de dados
23/46 Melhoria do algoritmo Apriori: Algoritmo Eclat Problema do Apriori: Cada nível, para computar suporte, na linha 19, geramos subconjunto de itens de cada transação para verificar existência na árvore Mas muitos subconjuntos não existem na árvore Objetivo do Eclat: melhoria do custo de calcular o suporte de regras
24/46 Algoritmo Eclat tidset t(a) = conjunto de ids de transações contendo o item A Para os tidsets t(x ) e t(y ), temos t(x Y ) = t(xy ) = t(x ) t(y ) O suporte de XY é a cardinalidade de t(xy ): sup(xy ) = t(xy ) Exemplo: Se t(a) = 2345 e t(b) = 2456 então sup(xy ) = t(a) t(b) = 245 = 3 Útil na busca em profundidade na árvore de prefixos P classe de equivalência de prefixos Exemplo: PA = {AB, AC, AD, AE}
Inicia recursão com os itens com suporte mínimo 25/46
Exemplo Eclat 26/46
Exemplo Eclat 27/46
Exemplo Eclat 28/46
29/46
30/46 Eclat: custos Complexidade computacional O( D 2 I ) Podem haver 2 I itemsets frequentes Intersecção entre tidset é O(D) I/O: O(2 I / I )
31/46 Melhoria da computação de suporte: FP-Tree e FPGrowth Computação de Suporte com indexação com a frequent pattern tree: FP-Tree FP-tree Cada nó representa um item e suporte da raiz até o próprio nó
32/46 Construção FP-tree Início: raiz contém item Para cada tupla (t, X ) D onde X = i(t), inserir X na árvore incrementando contagem dos nós no caminho de X Se X compartilha prefixo com outro itemset, X vai ser mesmo caminho até formar o prefixo. Contadores iniciam com 1 Inserção na árvore é decrescente pelo suporte Após construção da FP-tree, ela é usada como índice no lugar de D
33/46
34/46
35/46
36/46 Geração de regras de associação Gerar itemsets frequentes é o primeiro passo para obter regras de associação Regra de associação X Y onde XY deve ter suporte mínimo A regra é forte se tem confiança mínima: c = sup(x Y ) sup(x )
37/46 A são itemsets que formarão antecedentes de regras Elemento maximal tem o maior número de itens Y = Z\X Linha 10: poda subconjuntos contendo antecedente com baixa confiança
38/46 Comparação entre algoritmos (Goethals e Zaki, 2004) Total Time (sec) 1000 100 10 all-accidents cofi pie patricia eclat_borgelt apriori_bodon lcm armor apriori_brave eclat_zaki aim fpgrowth* eclat_goethals mafia afopt apriori_borgelt kdci 1 90 80 70 60 50 40 30 Minimum Support (%) 20 10 0 Figura: Accidents: I = 468, E( t(x) ) = 33.8, t(x) = 340 183
39/46 Sumarização de Itemsets Espaço de itemsets é grande Baixo min sup torna problema intratável Busca por representações para itemsets frequentes Itemset maximal Itemset fechado Itemset não-derivável
40/46 Itemsets maximais Itemset X é maximal se não existe Y X tal que sup(y ) min sup Exemplo: ABDE e BCE
41/46 Itemsets fechados Itemset X é fechado se não existe Y X tal que sup(y ) = sup(x ) t(x ) = {t T t X } i(t ) = {x I t T, t x} Operador de fechamento c : 2 I 2 I : c(x ) = i t(x ) = i(t(x )) Propriedade extensivo : X c(x ) Propriedade monotônico : se Xi X J então c(x i ) c(x j ) Propriedade idempotente : c(c(x )) = c(x ) Itemset X é fechado se c(x ) = X
42/46 Geradores minimais (mínimos) Todos subsets de X tem suporte maior que sup(x ). G = {X X F e Y X tal que sup(x ) = sup(y )}
43/46 Tipos de itemsets Geradores mínimos Fechados Maximais