Taxonomias
Os algoritmos citados no Cap´ıtulo 2 geram Regras de Associa¸c˜ao baseadas em con- juntos de itens nivelados (itens terminais na taxonomia). Nesta se¸c˜ao s˜ao apresentados alguns algoritmos para encontrar os k-itemsets freq¨uentes aplicando taxonomias. Esses itemsets s˜ao utilizados na gera¸c˜ao de Regras de Associa¸c˜ao compostas por itens contidos nos v´arios n´ıveis das taxonomias.
3.2.1
Algoritmo B´asico para Gerar Itemsets Freq¨uentes com
Taxonomias
Em Regras de Associa¸c˜ao que usam taxonomias, o problema de verificar se uma tran- sa¸c˜ao ti ∈ T suporta um itemset X ⊆ A, em que T e A s˜ao, respectivamente, conjunto
de transa¸c˜oes e itens, consiste em verificar se todo item xj ∈ X ou algum descendente de
xj est´a presente na transa¸c˜ao ti.
O algoritmo b´asico apresentado em Srikant & Agrawal (1997a) torna essa tarefa mais simples, uma vez que adiciona a T todos os ancestrais de cada item presente nas transa¸c˜oes ti ∈ T . Esse conjunto de transa¸c˜oes estendidas ´e chamado de T0. Assim, T suporta X se,
e somente se, T0 ´e um superconjunto de X.
Dessa maneira, os itemsets freq¨uentes usando taxonomias s˜ao gerados pela aplica¸c˜ao de qualquer um dos algoritmos, citados no Cap´ıtulo 2, no conjunto de transa¸c˜oes estendidas T0.
Embora o algoritmo b´asico seja simples, o mesmo apresenta o problema de gerar e ava- liar muitos itemsets candidatos redundantes, que contˆem itens juntos com seus ancestrais. O algoritmo Cumulate, apresentado a seguir, tenta resolver esse problema acrescentando algumas melhorias ao algoritmo b´asico.
3.2.2
Algoritmo Cumulate
O algoritmo Cumulate ´e uma vers˜ao melhorada do algoritmo b´asico (Srikant & Agrawal 1997a). O nome Cumulate indica que o suporte ´e calculado para um conjunto contendo todos os k-itemsets candidatos de um determinado tamanho k, percorrendo a Base de Dados apenas uma vez. As melhorias acrescidas ao algoritmo b´asico s˜ao:
Filtrar os ancestrais adicionados as transa¸c˜oes N˜ao h´a necessidade de adicionar a uma transa¸c˜ao ti todos os ancestrais dos itens contidos nessa transa¸c˜ao. Pode-se
apenas adicionar ancestrais que est˜ao em um (ou mais) itemsets candidatos ao qual ser´a calculado o suporte no passo corrente do algoritmo. Al´em disso, se o item original n˜ao est´a em qualquer um dos itemsets candidatos, ele pode ser removido da transa¸c˜ao.
Por exemplo, assume-se uma taxonomia em que roupas ´e pai de roupas leves, que por sua vez ´e pai de camisetas. Se o itemset candidato ao qual ser´a calculado o suporte for {roupas, tˆenis}, ent˜ao qualquer transa¸c˜ao que contenha camisetas ir´a substitu´ı-la por roupas e n˜ao ser´a necess´ario manter camisetas na transa¸c˜ao e nem adicionar roupas leves a transa¸c˜ao, uma vez que ambos os itens (camisetas e roupas leves) n˜ao est˜ao contidos no itemset candidato {roupas, tˆenis}.
Pr´e-calcular os ancestrais Ao inv´es de calcular os ancestrais de cada item (percor- rendo o grafo de taxonomias) para cada execu¸c˜ao do algoritmo, pode-se pr´e-calcular os ancestrais de cada item e utiliz´a-los durante as execu¸c˜oes do algoritmo.
Remover itemsets que contenham apenas um item e seu ancestral A remo¸c˜ao desses itemsets ´e justificada pelos dois lemas apresentados a seguir.
Lema 1 O suporte de um itemset X que contenha um item x e seu ancestral x ↑ ser´a o mesmo de um itemset X − x ↑.
Lema 2 Se Lk, o conjunto de k-itemsets freq¨uentes, n˜ao inclui qualquer itemset que
contenha um item e seu ancestral, o conjunto de itemsets candidatos Ck+1, gerado
pela fun¸c˜ao apriori-gen da se¸c˜ao 2.2.2, n˜ao apresentar´a qualquer itemset candidato que contenha um item e seu ancestral.
No primeiro lema ´e enunciado que n˜ao ´e necess´ario calcular o suporte de qualquer itemset que contenha um item e seu ancestral. Essa melhoria pode ser realizada removendo os 2-itemsets candidatos (itemsets candidatos de tamanho dois) consti- tu´ıdos de um item e seu ancestral. No segundo lema ´e mostrado que remover os
2-itemsets candidatos assegura que em passos subseq¨uentes do algoritmo nunca se- r˜ao gerados itemsets candidatos que contenham um item e seu ancestral. As provas desses lemas s˜ao apresentadas em Srikant & Agrawal (1997b).
3.2.3
Algoritmo Stratify
Considerando uma ordena¸c˜ao parcial induzida por uma taxonomia sobre um conjunto de itemsets, tem-se que os itemsets sem pai possuem altura 0. Para os outros itemsets, a altura de cada itemset X ´e definida como max{altura(X ↑) | X ↑ ´e pai de X} + 1.
O algoritmo Stratify apresentado em Srikant & Agrawal (1997a), primeiro calcula o suporte de todos os itemsets candidatos C0 de altura 0 e em seguida remove os itemsets
candidatos que s˜ao descendentes dos itemsets em C0 que n˜ao possuem suporte m´ınimo,
calculando em seguida o suporte dos itemsets restantes de altura 1. Depois, os itemsets candidatos que s˜ao descendentes dos itemsets em C1 que n˜ao possuem suporte m´ınimo
s˜ao removidos, sendo calculado em seguida o suporte dos itemsets restantes de altura 2, e assim sucessivamente at´e que n˜ao haja mais itemsets para calcular o suporte.
Por exemplo, com os itemsets candidatos {roupas, tˆenis}, {roupas leves, tˆenis} e {camisetas, tˆenis}, que s˜ao utilizados para o c´alculo do suporte e considerando camisetas como filho de roupas leves e roupas leves como filho de roupas. Se {roupas, tˆenis} n˜ao possui suporte maior ou igual ao suporte m´ınimo, n˜ao ´e necess´ario calcular o suporte dos itemsets candidatos {roupas leves, tˆenis} e {camisetas, tˆenis}. Assim, ao inv´es de calcular o suporte de todos os itemsets candidatos de um determinado tamanho em um mesmo passo, como o algoritmo Cumulate, o algoritmo Stratify pode ser mais r´apido calculando primeiro o suporte de {roupas, tˆenis} e s´o ent˜ao calcular o suporte de {roupas leves, tˆenis} se {roupas, tˆenis} tem suporte maior ou igual ao suporte m´ınimo e finalmente calcular o suporte de {camisetas, tˆenis} se {roupas leves, tˆenis} tamb´em tem suporte maior ou igual ao suporte m´ınimo.
Por´em, o custo extra de realizar v´arios passos sobre a Base de Dados durante o c´alculo dos suportes pode ser maior do que os benef´ıcios. Ao inv´es de esperar que os itemsets candidatos, cujos os itens est˜ao posicionados nos n´ıveis superiores da taxonomia, n˜ao tenham suporte m´ınimo resultando em n˜ao ter que calcular o suporte de seus itemsets candidatos descendentes, pode-se usar alguns exemplos da Base de Dados para estimar o suporte dos itemsets candidatos. Com o uso de exemplos para estimar o suporte, tanto os itemsets candidatos que s˜ao esperados ter suporte m´ınimo, quanto os itemsets candidatos que n˜ao s˜ao esperados ter suporte m´ınimo mas cujos pais tˆem ou ´e esperado que tenham suporte m´ınimo, s˜ao utilizados para o c´alculo do suporte. Dessa maneira, ´e esperado que
n˜ao se tenha que calcular o suporte de nenhum dos descendentes dos itemsets candidatos que s˜ao esperados n˜ao ter suporte m´ınimo, mas se um itemset candidato que era esperado n˜ao ter suporte m´ınimo passa a ter, um passo extra deve ser realizado para calcular o suporte de seus descendentes. Os algoritmos Estimate e EstMerge, descritos em Srikant & Agrawal (1997a), utilizam-se de exemplos para estimar o valor do suporte.
Outros algoritmos que podem ser utilizados na gera¸c˜ao de Regras de Associa¸c˜ao com taxonomias s˜ao: Algoritmos da Fam´ılia ML-T* (Han & Fu 1995) APUD Weber (1998), Prutax (Hipp, Myka, Wirth, & G¨untzer 1998) e Genex (Weber 1998).