Universidade Federal de Minas Gerais Departamento de Ciência da Computação Um estudo sobre a mineração de padrões seqüenciais Danielle Santos da Silva e Patrícia Martins 1.Introdução Com a grande quantidade de dados armazenados em bancos de dados e data warehouses, torna-se cada vez mais importante desenvolver ferramentas potentes para análise e extração de conhecimentos de interesse sobre os dados [1]. Data mining é um processo de inferência de conhecimento de grande quantidade de dados e um dos seus principais problemas é a descoberta de padrões que ocorrem freqüentemente em dados seqüenciais, e, para isso, utiliza a técnica de mineração de padrões seqüenciais [8], que foi introduzida em [7]. A tarefa da mineração de padrões seqüenciais é encontrar subseqüências freqüentes em um banco de dados de seqüências. Esta é uma atividade desafiadora, já que a busca pode exigir o exame de um número combinatorialmente explosivo de padrões de subseqüências possíveis [4]. Essa técnica possui diversas aplicações, incluindo a análise do comportamento de clientes, padrões de acesso a Web, análise do processo de experimentos científicos, previsão de desastres naturais, tratamento de doenças, teste de medicamentos, análise de DNA, etc [6]. A maioria dos métodos desenvolvidos para a mineração de padrões seqüenciais visa evitar a geração de todas as combinações possíveis de seqüências. Muitos estudos contribuíram para a mineração eficiente de padrões seqüenciais ou outros padrões freqüentes em dados relacionados com o tempo [4] e levaram ao desenvolvimento de diversos algoritmos, que podem ser classificados em duas categorias [5]: (1) Abordagem de geração e teste de candidatos, como o GSP e (2) Métodos de crescimento de padrões, que tem como um de seus representantes o FP-Growth A primeira categoria é baseada diretamente na propriedade Apriori: se um padrão com k itens não é freqüente, nenhum de seus super-padrões com (k+1) ou mais itens pode ser freqüente. São gerados candidatos iterarivamente e suas freqüências, checadas no banco de dados. A outra categoria de métodos foi proposta recentemente e também utiliza a propriedade Apriori, entretanto ao invés de gerar conjuntos de candidatos, particiona recursivamente o banco de dados em sub-bancos de acordo com os padrões freqüentes encontrados e busca por padrões freqüentes locais. Nesse estudo, veremos as implicações do uso de ambas as abordagens, com o objetivo de analisar as suas características e aplicações em diferentes contextos. Na seção 2, é fornecida uma definição formal do problema de mineração de padrões seqüenciais. Na seção 3, é apresentado um estudo comparativo dos principais algoritmos pertencentes a cada classe. As conclusões são mostradas na seção 4. 2.Definição do Problema Seja X i1 , i2 ,, im um conjunto de literais (itens). Um itemset é um conjunto não-vazio de itens. Uma seqüência é uma lista ordenada de itemsets. Denota-se uma seqüência s por s1 s2 sn , onde s j é um itemset. Diz também que s j é um elemento da seqüência. Denota-se um elemento de uma seqüência por x1 , x2 ,, xm , onde x j é um item. Um item pode ocorrer apenas uma vez em um elemento de uma seqüência, contudo, podem ocorrer múltiplas vezes em elementos diferentes. Um itemset pode ser considerado como uma seqüência com um único elemento. Assume-se, então, que itens em um elemento de uma seqüência estão em ordem lexicográfica [3]. O número de instâncias de itens em uma seqüência é denominado tamanho da seqüência. Uma seqüência de tamanho l é chamada de l -seqüência [4]. Então uma seqüência a1a2 an subseqüência de outra seqüência é b1b2 bm uma se tal que i1 i2 in a1 bi1 , a 2 bi2 ,, a n bin . Por exemplo, a existir inteiros 3 4,5 8 é uma subseqüência de 7 3,8 9 4,5,6 8 , já que 3 3,8 , 4,5 4,5,6 e 8 8 . Contudo, a seqüência 3 5 não é uma subseqüência de 3,5 e seqüência vice-versa. Assim, a seqüência b1b2 bm é chamada super- seqüência de a1a2 an . seqüências cujo suporte é maior o suporte mínimo especificado pelo usuário. Cada uma dessas seqüências representa um padrão seqüencial também chamado de seqüência freqüente. Dada uma seqüência freqüente s s1 sn , é útil saber a “relação de suporte” entre os elementos da seqüência, ou seja, qual fração das seqüências de dados que suportam s1 s n suporta a seqüência “s” inteira. 3. Métodos para a Mineração de Padrões Seqüenciais 3.1 Geração e Teste de Candidatos Um banco de dados de seqüências S é um conjunto de tuplas s _ id , s , onde s _ id é um identificador de seqüência e “s” é uma seqüência [4]. Uma tupla s _ id , s contém uma seqüência “α” se “α” é uma subseqüência de “s”. Então, é dado um banco de dados de seqüências D chamadas seqüências de dados. Cada seqüência de dados é uma lista de transações, ordenadas pelo aumento do tempo de transação. Uma transação possui os seguintes campos: identificação de seqüência, identificação de transação, tempo de transação e os itens presentes nessa transação. Espera-se que os itens em uma transação sejam folhas em T, porém isso não é necessariamente requerido. Em [3], por questões de simplicidade, assume-se que nenhuma seqüência de dados possui mais de que uma transação com o mesmo tempo de transação e utiliza o tempo de transação como um identificador de transação. Também, não são consideradas quantidades de itens em uma transação. Assim, o suporte para uma seqüência é definido como uma fração do total de seqüências de dados que “contêm” tal seqüência. Portanto, dado um inteiro positivo ξ como suporte limite, uma seqüência “α” é chamada de padrão seqüencial freqüente, no bancos de dados de seqüência S, se a seqüência é contida por pelo menos ξ tuplas no banco. Portanto, para contextualizar o problema pode-se dizer que, dado um banco de dados de seqüências de dados e uma taxonomia T, o problema de minerar padrões seqüenciais é achar todas as Algoritmos Apriori possuem estrutura baseada na execução de múltiplos passos sobre os dados. Em cada passo, começa-se com um conjunto semente de um número grande de seqüências, chamadas de seqüências candidatas. O suporte para essas seqüências candidatas é achado durante a passada sobre os dados. Ao final do passo, são determinadas as maiores seqüências candidatas. Tais seqüências compõem a semente para o próximo passo [3]. Como exemplos podemos citar os algoritmos GSP e SPADE. O algoritmo GSP (Generalized Sequential Patterns) escala linearmente com o número de seqüências de dados e possui propriedades escaláveis respeitando o número de transações por seqüência de dados e o número de itens por transação [3]. No caso do SPADE são utilizadas propriedades combinatoriais para decompor o problema original em subproblemas menores, que podem ser independentemente resolvidos na memória principal utilizando técnicas eficientes de procura e simples operações de junção. Essa decomposição utiliza classes de equivalências em seqüências freqüentes. Dessa maneira o SPADE geralmente realiza apenas três varreduras no banco de dados – uma para 1seqüências freqüentes, outras para 2-seqüências freqüentes e mais uma para a geração de todas as outras seqüências [9]. Para a melhor compreensão do método, o algoritmo GSP será descrito. No primeiro passo do algoritmo, todos os itens unitários (1-seqüência) são encontrados. Dos itens mais freqüentes, um conjunto de 2-seqüências candidatas é formado. Outro passo é realizado para recolher o suporte dessas seqüências. As 2-seqüências freqüentes são utilizadas para gerar as 3-seqüências candidatas e o processo é repetido até que nenhuma seqüência freqüente seja encontrada. Existem dois passos principais no algoritmo [9]: 1. 2. Geração de candidatos: dado o conjunto de (k1)-seqüências freqüentes Fk 1 , os candidatos para o próximo passo são gerados através da auto-combinação de Fk 1 . Uma fase de poda elimina qualquer seqüência em pelo menos uma das subseqüências que não são freqüentes. Para uma contagem mais rápida, as seqüências candidatas são armazenadas em uma hash-tree. Contagem de suporte: para achar todos os candidatos contidos em uma seqüência de entrada ε, conceitualmente todas as kseqüências de ε são geradas. Para cada uma dessas seqüências uma procura é realizada na hash-tree. Se um candidato na hash-tree casa com subseqüência, seu contador é incrementado. A Figura 1, a seguir, apresenta um esboço do algoritmo GSP. Figura 1 - Algoritmo GSP [9] 3.2 Crescimento de Padrões A abordagem de geração de candidatos atinge um bom desempenho pela redução do número de candidatos gerado. Entretanto, quando o limite mínimo do suporte é baixo ou o tamanho dos padrões gerados é grande, o algoritmo pode continuar tendo custos não-triviais, independentemente de técnicas de implementação detalhadas [10]. Para vencer essas dificuldades, uma nova abordagem chamada crescimento de padrões freqüentes foi desenvolvida. Suas características são: 1. A geração de candidatos é substituída pela análise de contagem de freqüência de conjuntos de dados relevantes. Isso é possível porque o método preserva os agrupamentos essenciais dos elementos de dados originais para mineração. 2. Utiliza uma metodologia de divisão e conquista para reduzir o espaço de busca. O conjunto de dados e o conjunto de padrões a ser examinado em cada passo é particionado. 3. Fatores como a redução substancial do tamanho do banco de dados, devido à utilização de sua projeção, e do espaço para manipulação de conjuntos de candidatos em cada passo aliados à capacidade de crescimento da memória principal, tornaram possível colocar uma porção substancial de dados na memória principal. Vários trabalhos contribuíram para o desenvolvimento da metodologia de crescimento de padrões freqüentes. Os principais são citados abaixo. O FP-Growth (Frequent Pattern Growth) [10] é um método eficiente e escalável para a mineração de padrões freqüentes sejam eles curtos ou longos. Utiliza uma estrutura chamada FP-Tree, baseada no crescimento de fragmentos de padrões, que armazena informação quantitativa sobre padrões freqüentes de forma comprimida. A idéia geral FreeSpan (Frequent pattern-projected Sequential pattern mining) é usar itens freqüentes para projetar recursivamente bancos de dados de seqüências em um conjunto menor de bancos de dados e crescer os fragmentos de subseqüências em cada banco de dados projetado [11]. O PrefixSpan (Prefix-projected Sequential pattern mining) explora a projeção de prefixos na mineração de padrões seqüenciais. Sua idéia principal é que, ao invés de projetar seqüências de bancos de dados considerando-se todas as ocorrências possíveis de subseqüências freqüentes, a projeção seja baseada apenas em prefixos freqüentes porque qualquer subseqüência crescente pode sempre ser encontrada pelo crescimento de um prefixo crescente [4]. Para ilustrar o funcionamento de um algoritmo que utiliza abordagem de crescimento de padrões, escolheu-se o PrefixSpan. <(af)cbc> <f> <(ab)(df)cb>, <cbc> <eacb>, <eb>, <ebc>, <ec>, <ecb>, <ef>, <efb>, <efc>, <efcb> <f>, <fb>, <fbc>, <fc>, <fcb> Tabela 2: Bancos de dados projetados e padrões seqüenciais Exemplo 1: Seja o banco de dados de seqüências S dado pela Tabela 1 e o suporte mínimo igual a 2. O conjunto de itens no banco de dados é {a, b, c, d, e, f, g}. O problema da mineração de padrões seqüenciais consiste em encontrar o conjunto completo de padrões seqüenciais no banco de dados. Id_Sequencia 10 20 30 40 Seqüência <a(abc)(ac)d(cf)> <(ad)c(bc)(ae)> <(cf)(ab)(df)cb> <eg(af)cbc> Tabela 1: Banco de dados de seqüência Passo 1: Encontrar padrões seqüenciais de tamanho-1. Rastreamento de S uma vez para encontrar todos os itens freqüentes em seqüências. O resultado é: <a> : 4, <b> : 4, <c> : 4, <d> : 3, <e> : 3, e <f>: 4, onde <padrão>:contagem representa o padrão e sua contagem de suporte associada. Passo 2: Dividir o espaço de busca. O conjunto completo de padrões seqüenciais pode ser particionado em seis subconjuntos, de acordo com os prefixos: (1) aqueles que têm o prefixo <a>; ... ; e (6) aqueles que têm o prefixo <f>. Passo 3: Encontrar subconjuntos de padrões seqüenciais. Os subconjuntos de padrões seqüenciais podem ser minerados pela construção de bancos de dados projetados e mineração de cada um recursivamente. A Tabela 2 apresenta o resultado final dos passos executados sobre S. Prefixo Banco de Dados Projetado Padrões Seqüenciais <a> <(abc)(ac)d(cf)>, <a>, <aa>, <ab>, <a(bc)>, <(_d)c(bc)(ae)>,<(_b)(df)c <a(bc)a>, <aba>, <abc>, b>, <(_f)cbc> <(ab)>, <(ab)c>, <(ab)d>, <(ab)f>, <(ab)dc>, <ac>, <aca>, <acb>, <acc>, <ad>, <adc>, <af> <b> <(_c)(ac)d(cf)>, <_c)(ae)>, <b>, <ba>, <bc>, <(bc)>, <(dfcb>, <c> <(bc)a>, <bd>, <bdc>, <bf> <c> <(ac)d(cf)>, <(bc)(ae)>, <c>, <ca>, <cb>, <cc> <b>, <bc> <d> <(cf)>, <c(bc)(ae)>, <d>, <db>, <dc>, <dcb> <(_f)cb> <e> <(_f)(ab)(df)cb>, <e>, <ea>, <eab>, <eac>, 4.Conclusões Os algoritmos que utilizam métodos Apriori atingem bons ganhos de desempenho através da redução do tamanho dos conjuntos de candidatos. Contudo, trabalhos recentes demonstram que algoritmos Apriori são inadequados em conjuntos de dados que contêm padrões muito longos [12]. Além disso, em situações em que o número de padrões freqüentes é abundante ou suportes mínimos são muito baixos, tais algoritmos podem apresentar os comportamentos a seguir: Manipulação de um grande número de conjuntos de candidatos Repetição de varreduras em um banco de dados e verificação de um grande conjunto de candidatos pelo casamento de padrões, especialmente para padrões longos. Os algoritmos derivados da metodologia de crescimento de padrões são mais eficientes e escaláveis do que muitos outros métodos de mineração de padrões freqüentes. Isso se deve aos seguintes fatores: (1) adoção de estratégia de divisão e conquista (2) integração do uso de memória principal ao uso do disco para algoritmos de projeção de bancos de dados; (3) bom uso da propriedade Apriori, evitando a geração de um grande número de candidatos [10]. Dessa forma, os algoritmos derivados da metodologia de crescimento de padrões são preferíveis em relação àqueles que utilizam métodos Apriori. 5.Bibliografia [1] Joshi, K. Analysis of Data Mining Algorithms, 1997. Disponível em: http://userpages.umbc.edu/~kjoshi1/datamine/proj_rpt.htm#Introduction. Acesso em: julho de 2003. [2] Zaki, M. Sequence Mining in Categorical Domains: Incorporating Constraints. In Proceedings of the ninth international conference on Information and knowledge management, 2000. Disponível em: http://delivery.acm.org/10.1145/360000/354849/p42 2zaki.pdf?key1=354849&key2=1459001601&coll=p ortal&dl=ACM&CFID=11111111&CFTOKEN=22 22222>. Acesso em: agosto de 2003. [3] Srikant, R.; Agrawal, R. Mining Sequential Patterns Generalizations and Performance Improvements. In Proceedings of the Fifth Int'l Conference on Extending Database Technology (EDBT). Avignon, France, 1996. Disponível em: http://www.almaden.ibm.com/software/quest/Public ations/papers/edbt96.pdf . Acesso em: agosto de 2003. [4] Pei, J.; Han, J.; Mortazavi-Asl, B.; Pinto, H. PrefixSpan: Mining Sequential Patterns Efficiently by Prefix-Projected Pattern Growth. In Proceedings of the 2001 International Conference on Data Engineering (ICDE'01), Heidelberg, Germany, 2001. Disponível em: http://citeseer.nj.nec.com/cache/papers/cs/27046/htt p:zSzzSzwwwfaculty.cs.uiuc.eduzSz~hanjzSzpdfzSzspan01.pdf/p ei01prefixspan.pdf. Acesso em: agosto de 2003. [5] J. Pei, J. Han, H. Lu, S. Nishio, S. Tang, and D. Yang. H-Mine: Hyper-structure Mining of Frequent Patterns in Large Databases. In Proceedings of the 2001 IEEE International Conference on Data Mining (ICDM'01), San Jose, California, 2001. Disponível em: http://citeseer.nj.nec.com/cache/papers/cs/23715/htt p:zSzzSzwww.cs.sfu.cazSz~peijianzSzpersonalzSzp ublicationszSzhmine.pdf/h-mine-hyperstructure.pdf. Acesso em: agosto de 2003. [6] Pinto, H.; Han, J.; Pei, J.; Wang, K. Multidimensional Sequential Pattern Mining, Proceedings of the 27th International Conference on Very Large Data Base (VLDB'01), Roma, Italy, 2001. Disponível em: http://citeseer.nj.nec.com/cache/papers/cs/22412/ftp :zSzzSzfas.sfu.cazSzpubzSzcszSztheseszSz2001zSz HelenPintoMSc.pdf/pinto01multidimensional.pdf. Acesso em: agosto de 2003. [7] Agrawal, R.; Srikant, R. Mining Sequential Patterns. In ICDE´95, pp. 3-14, Taipei, Taiwan, 1995. Disponível em: http://citeseer.nj.nec.com/cache/papers/cs/2193/http: zSzzSzwww.almaden.ibm.comzSzcszSzquestzSzpa perszSzicde95.pdf/agrawal95mining.pdf. Acesso em: agosto de 2003. [8] Wojciechowski, M. Mining sequential data – Abstract. Disponível em: http://www.sciences.univnantes.fr/info/perso/permanents/martinez/Researche s/EDBT99/StudentWorks/MWojciechowski.html. Acesso em: agosto de 2003. [9] Zaki, M. SPADE: An Efficient Algorithm for Mining Frequent Sequences, in Machine Learning Journal, special issue on Unsupervised Learning (Doug Fisher, ed.), pp 31-60, Vol. 42 Nos. 1/2, 2001. Disponível em: http://www.cs.rpi.edu/~zaki/PS/MLJ00.ps.gz. Acesso em: agosto de 2003. [10] Han, J.; Pei, J.; Yin, Y. Mining Frequent Patterns without candidate generation. Apresentação em Data Mining and Knowledge Discovery: An International Journal, Kluwer Academic Publishers, 1999. Disponível em: http://citeseer.nj.nec.com/cache/papers/cs/14568/ftp :zSzzSzftp.fas.sfu.cazSzpubzSzcszSzhanzSzpdfzSzs igmod00.pdf/han99mining.pdf. Acesso em: agosto de 2003. [11] Han, J.; Pei, J.; Mortazavi-Asl, B.; Chen, Q.; Dayal, U.; Hsu, M. FreeSpan: Frequent patternprojected sequential pattern mining. In Proceedings of the Sixth ACM SIGKDD International Conference on Knowledge Discovery and Data Mining (KDD'2000), Boston, MA, 2000. Disponível em: http://www.cse.buffalo.edu/faculty/jianpei/publicati ons/freespan.pdf. Acesso em: agosto de 2003. [12] Bayardo, R. Efficiently Mining Long Patterns from databases. Proceedings of the ACM SIGMOD, Seattle, WA, 1998. Disponível em: http://www.almaden.ibm.com/software/quest/Public ations/papers/sigmod98_max.pdf. Acesso em: agosto de 2003. [13] Pei, J. Pattern-growth methods for frequent pattern mining. School of Computing Science, Simon Fraser University, Canada, 2002. Disponível em: http://www.cse.buffalo.edu/faculty/jianpei/jianpei_t hesis.pdf. Acesso em: agosto de 2003.