MINERAÇÃO DE DADOS: APLICAÇÃO PRÁTICA EM PEQUENAS E MÉDIAS EMPRESAS RONALDO RIBEIRO GOLDSCHMIDT RESUMO. O intenso crescimento do volume de informações nas bases de dados corporativas de pequenas, médias e grandes empresas e o alto nível de competitividade entre empresas no mercado, inclusive das pequenas e micro empresas, nos têm estimulado o estudo e a aplicação de técnicas de mineração destes dados na busca de conhecimentos que possam ser traduzidos em diferenciais mercadológicos para esse grupo de empresas, normalmente pouco assistidas por alta tecnologia. O presente trabalho tem por objetivo descrever e avaliar a aplicação de um algoritmo de mineração de regras associativas (Apriori) em bases de dados existentes em pequenos negócios. Os experimentos realizados em bases de dados do segmento de fast-food estão descritos em detalhe. Conclusões e sugestões para trabalhos futuros encontram-se formuladas. ABSTRACT. The intense amount of information increase in databases from small, medium and big sized companies and the high competition level among these companies have stimulated studies and application of mining techniques to these data in search of knowledge that could be turned into in marketing differentials. The present work describes and evaluates an association rule mining algorithm (Apriori) in small business databases. The experiments, performed in the fast-food segment, are depicted in detail. Conclusions and suggestions for future work are also formulated. INTRODUÇÃO O intenso crescimento do volume de informações nas bases de dados corporativas de pequenas, médias e grandes empresas e o alto nível de competitividade entre empresas no mercado, inclusive das pequenas e micro empresas, nos têm estimulado o estudo e a aplicação de técnicas de mineração destes dados na busca de conhecimentos que possam ser traduzidos em diferenciais mercadológicos para esse grupo de empresas, normalmente pouco assistidas por alta tecnologia. Neste contexto, os estudos em Descoberta de Conhecimento em Baeses de Dados - KDD: Knowledge Discovery in Databases, despontam como uma área de grande interesse cuja demanda por resultados vem crescendo nos últimos anos. De forma sucinta, o Processo de Descoberta de Conhecimento consiste em buscar encontrar e interpretar, a partir dos dados, padrões úteis, de uma forma iterativa e interativa, através da aplicação de algoritmos e da análise de resultados [6]. O Processo de Descoberta de Conhecimento tem na Mineração de Dados o cerne de sua execução, pois é nesta fase em que são buscadas informações implícitas ao conjunto de dados em análise que sejam potencialmente interessantes e utilizáveis, e previamente desconhecidas [7]. Na medida em que cresce a quantidade de dados a serem analisados em cada situação, crescem também a preocupação e os esforços no sentido de assegurar que ferramentas utilizadas no Processo de Descoberta de Conhecimento apresentem desempenhos que viabilizem a realização dos projetos. Historicamente, a Mineração de Dados origina-se de diversas áreas tais como: Estatística, Reconhecimento de Padrões, Banco de Dados, Aprendizado por Máquina / Inteligência Artificial e Redes Neurais. A tarefa clássica de busca por regras de associação foi introduzida por Agrawal em [1]. No referido trabalho, foram utilizadas bases de dados operacionais contendo informações sobre cada transação de compra realizada ao longo de um determinado período. Uma transação de compra compreendia a relação de todos os produtos adquiridos por um Cliente em um determinado instante e era armazenada em um formato denominado basket [1, 3, 4]. Uma regra de associação deve representar que tipos de produtos costumam ocorrer simultaneamente em transações de compra. Um dos principais fatores de motivação para a tarefa de mineração de regras associativas refere-se à possibilidade de incremento nas vendas de um determinado segmento comercial a partir de estratégias estabelecidas em função do conjunto de regras de associação extraído de grandes bases de dados históricas. Entre algumas estratégias de venda passíveis de adoção a partir das regras de associação extraídas podem ser citadas: • Realização de promoções entre produtos • Reconfiguração da disposição dos produtos em prateleiras e gôndolas • Reavaliação do rol de produtos oferecidos aos Clientes Diversos trabalhos têm sido realizados no sentido de desenvolver técnicas que permitam a mineração de regras associativas [1, 2, 3, 4, 5]. Assim sendo, o presente trabalho tem por objetivo relatar implementação, experimentos e resultados obtidos da investigação da utilização do algoritmo tradicional Apriori [3] para mineração de regras de associação de uma base de dados de vendas de produtos em uma loja de “fast-food”. Na seção 2 são fornecidos detalhes sobre o contexto de aplicação dos experimentos. A seção 3 contém uma descrição da implementação do Algoritmo Apriori em PL/SQL. Os experimentos realizados, assim como os resultados obtidos, encontram-se resumidos na seção 4. Na seção 5 são formuladas algumas conclusões e propostas algumas alternativas de trabalhos futuros. DESCRIÇÃO DO PROBLEMA A base de dados utilizada neste estudo contém informações das transações de compra de itens acumuladas durante um pequeno período de captação de dados a partir do Ponto de Venda de uma loja do ramo de “fast-food”. Este período de captação, embora tendo sido localizado, foi definido de forma a refletir o comportamento comercial em dias normais de venda. Os dados, inicialmente armazenados no formato basket [1, 3, 4, 5], foram convertidos para o formato de transação por linha e encontram-se resumidos na tabela 1. Esta tabela apresenta, também, os totais dos principais produtos analisados no presente trabalho. Uma transação de compra compreende a relação de todos os produtos adquiridos por um Cliente em um determinado instante. O formato de transação por linha é uma estrutura de dados onde para cada transação, na posição referente a cada produto encontra-se um valor binário, indicando a presença (1) ou ausência (0) do produto na compra em questão. Exemplos de transações no formato linha são apresentados na tabela 2. Tabela 1. Resumo do Banco de Dados Utilizado Referência Total de Transações Total de Produtos Disponíveis Total de Transações com P1 – Pão de Queijo Simples Total de Transações com P2 – Pão de Queijo Recheado Total de Transações com P20 – Refrigerante 300 Total de Transações com P21 – Refrigerante Lata Total de Transações com P23 – Café Total de Transações com P27 – Água Copo Total de Transações com P28 – Mate Total de Transações com P31 – Suco Total de Transações com P32 – Folhado Salgado Total de Transações envolvendo exatamente 2 Produtos Total de Transações envolvendo exatamente 3 Produtos Média de Produtos por Transação Valor 9.118 34 3.252 1.682 1.576 1.863 2.809 1.116 1.394 860 2.358 6.742 1.803 2.3 Tabela 2. Exemplos de Transações no formato linha com 34 Produtos Id Trans 001 002 003 004 005 0 1 1 0 1 1 0 0 2 0 0 0 0 0 0 3 0 0 0 0 0 0 4 0 0 0 0 0 0 5 0 0 0 0 0 0 6 0 0 0 0 0 0 7 0 0 0 0 0 0 8 0 0 0 0 0 0 9 0 0 0 0 0 1 0 0 0 0 0 0 1 1 0 0 0 0 0 1 2 0 0 0 0 0 1 3 0 0 0 0 0 1 4 0 0 0 0 0 1 5 0 0 0 0 0 1 6 0 0 0 0 0 1 7 0 0 0 0 0 1 8 0 0 0 0 0 1 9 0 0 0 0 0 2 0 0 0 0 1 0 2 1 0 1 0 0 0 2 2 0 0 0 0 1 2 3 1 0 0 0 0 2 4 0 0 0 0 0 2 5 0 0 0 0 0 2 6 0 0 0 0 0 2 7 0 0 0 0 1 2 8 0 0 1 0 0 2 9 0 0 0 0 0 3 0 0 0 0 0 0 3 1 0 0 0 0 0 3 2 0 1 0 0 0 3 3 0 0 0 0 0 3 4 0 0 0 0 0 A loja dispõe de um conhecimento prévio dos produtos que são vendidos simultaneamente com maior freqüência. Tal fato motivou a escolha deste contexto como base para desenvolvimento do trabalho visto que o referido conhecimento poderia ser utilizado como um dos critérios para avaliação dos resultados obtidos. Na tabela 3 encontram-se discriminados pares de produtos que representam algumas associações básicas conhecidas a priori pela loja. Formalmente, uma regra de associação é uma implicação da forma X → Y, onde X e Y são conjuntos de itens tais que X ∩ Y = ∅ [3]. Uma regra é considerada freqüente se o número de vezes em que X ∪ Y ocorre em relação ao número total de transações do banco de dados for superior a uma freqüência mínima denominada suporte mínimo, estabelecida em cada aplicação. Uma regra é considerada válida se o número de vezes em que X ∪ Y ocorre em relação ao número de vezes que X ocorre for superior a uma freqüência mínima denominada confiança mínima, e também estabelecida em cada aplicação. Tabela 3. Algumas Associações Freqüentes entre Produtos Produto A P1 – Pão de Queijo Simples P1 – Pão de Queijo Simples P32 – Folhado Salgado P32 - Folhado Salgado P23 – Café Produto B P23 – Café P28 – Mate P20 – Refrigerante 300 P21 - Refrigerante Lata P27 - Água Copo Considerando a média de 2.3 produtos por transação e a maior incidência de transações envolvendo exatamente 2 produtos, optou-se, como investigação inicial, por buscar identificar regras de associação de comprimento 2, ou seja, que envolvessem um produto no antecedente e um produto no conseqüente de cada regra. ALGORITMO APRIORI EM PL/SQL Os algoritmos clássicos de mineração de regras de associação subdividem-se em duas etapas: (a) encontrar todos os conjuntos de itens freqüentes (que satisfazem à condição de suporte mínimo) e; (b) a partir do conjunto de itens freqüentes, gerar as regras de associação (que satisfazem à condição de confiança mínima). Assim sendo, a presente implementação prevê a estruturação dos dados no formato Basket e foi realizada em dois módulos básicos: Módulo I –Identificação de Associações Freqüentes e Módulo II - Geração de Regras de Associação. O Módulo de Identificação de Associações Freqüentes tem por finalidade identificar quais conjuntos de produtos têm uma quantidade de ocorrências no banco de dados superior ao suporte mínimo definido pelo usuário. Na primeira iteração, o Módulo I procura obter, através de um coman-do de seleção sobre a estrutura Basket mencionada, que itens individualmente ocorrem em quantidade superior ao suporte mínimo utilizado. Cada item, uma vez identificado, é armazenado em uma tabela específica, denominada Basket_F1, como um conjunto contendo um item freqüente. Na segunda iteração, o Módulo realiza uma seleção baseada na junção do conteúdo da tabela Basket_F1 e da tabela Basket original e na filtragem das combinações cuja quantidade de ocorrências seja superior ao suporte mínimo estabelecido inicialmente. O resultado desta seleção compreende todos os conjuntos com pares de itens freqüentes. Esta estratégia baseiase na propriedade combinatória utilizada pelo algoritmo Apriori em sua versão original [3, 4] de que todos os subconjuntos de um conjunto freqüente têm que ser freqüentes. Os conjuntos com pares de itens freqüentes são armazenados em uma tabela específica denominada Basket_F2. Nas iterações subseqüentes, o processo descrito acima é realizado de forma adaptada conforme a cardinalidade k dos conjuntos envolvendo k itens freqüentes buscados a cada iteração. Convém ressaltar que a implementação descrita utiliza a potencialidade dos recursos de seleção disponíveis em bancos de dados relacionais para obter os conjuntos desejados a cada iteração de tal forma que o processo de corte de conjuntos, existente na versão original do algoritmo Apriori e com execução computacional cara, é realizado concomitantemente ao processo de junção e identificação dos conjuntos freqüentes. A utilização de estruturas de índices contribui significativamente para a melhora de desempenho das instruções de seleção mencionadas e da implementação como um todo. A paridade de cada tabela Basket intermediária é compatível com a cardinalidade dos conjuntos com k itens freqüentes gerados. A figura 1 apresenta um exemplo do tipo de seleção utilizada pelo Módulo I para a obtenção de conjuntos contento 4 itens freqüentes. Select Ck.item1, Ck.item2, Ck.item3, Ck.item4, count(*) From ( Select a.item1, a.item2, a.item3, b.item3 as item4 From basket_f3 a, basket_f3 b Where a.item1 = b.item1 and a.item2 = b.item2 and a.item3 < b.item3) Ck, basket b, basket c, basket d, basket e Where Ck.item1 = b.item and Ck.item2 = c.item and Ck.item3 = d.item and Ck.item4 = e.item and b.tid = c.tid and c.tid = d.tid and d.tid = e.tid Group By Ck.item1, Ck.item2, Ck.item3, Ck.item4 Having count(*) > :minsup; Fig. 1. Exemplo de seleção de conjuntos freqüentes com 4 itens. O Módulo de Geração de Regras de Associação produz, a partir das associações freqüentes identificadas pelo módulo anterior e do valor de confiança mínima definido pelo usuário, as regras válidas a serem consideradas. Inicialmente, o Módulo II busca identificar, a partir da junção entre os conjuntos contendo pares de itens freqüentes com os conjuntos de apenas um item freqüente gerados pelo Módulo I e armazenados nas tabelas Basket_F2 e Basket_F1, quais as regras de comprimento 2 válidas. As regras identificadas neste estágio são armazenadas em uma tabela denominada Basket_R2, onde a estrutura de dados utilizada permite a caracterização do antecedente, do conseqüente, do suporte e da confiança de cada regra. A figura 2 apresenta uma das junções realizadas na segunda iteração do Módulo II a fim de identificar as regras de associação de comprimento 2 com apenas um item no conseqüente destas regras. De forma análoga ao Módulo I, nas demais iterações, o processo descrito acima é repetido de forma adaptada conforme o comprimento k das regras buscadas a cada iteração. Insert Into Basket_R2 (IF1, THEN1, SUP_REGRA, CONF_REGRA) Select A.Item1, A.Item2, A.Suporte, Round((A.Suporte/B.Suporte) * 100, 2) From basket_f2 A, basket_f1 B Where A.item1 = B.item1 and (A.Suporte/B.Suporte) * 100 > :MinConf; Fig. 2. Exemplo de comando de identificação de regras válidas de comprimento 2 com o segundo item como conseqüente. EXPERIMENTOS REALIZADOS E RESULTADOS OBTIDOS Os dados, armazenados no formato Basket em um Banco de Dados Oracle versão 8.2, contêm informações das transações de compra de itens acumuladas durante um pequeno período de captação de dados a partir do Ponto de Venda de uma loja do ramo de “fast-food”. O algoritmo Apriori implementado identificou, para os dados disponíveis, regras de associação de comprimento 2. Não foram identificadas regras com comprimento superior a 2. Os parâmetros de suporte e confiança mínimos experimentados foram 5% e 10%, respectivamente. A escolha de tais valores foi realizada em função de um conhecimento prévio da direção da loja acerca de algumas associações freqüentes. Na tabela 4 encontram-se discriminados os tempos de processamento de cada um dos experimentos realizados, nos quais foram variadas as quantidades totais de registros no banco de dados. O tempo de processamento das 9118 transações do sexto experimento foi de 6 segundos, sendo que 5 segundos referiram-se ao processamento do Módulo de Identificação de Associações Freqüentes e o 1 segundo restante foi decorrente da execução do Módulo de Geração de Regras de Associação. Tabela 4. Tempos de Processamento nos Experimentos com o Apriori Experimento 1 2 3 4 5 6 Qtde. de Transações 760 1719 2170 4682 6680 9118 Qtde. de Registros 1.770 4000 6313 10948 15629 21284 Módulo I (seg) 1 2 2 3 4 5 Módulo II (seg) 1 1 1 1 1 1 Total (seg) 2 3 3 4 5 6 Comparando os seis experimentos, pode-se constatar que os tempos de processamento do Módulo II mantiveram-se constantes, independente da quantidade de registros na base de dados. Pode-se observar, no entanto, que o tempo de processamento do Módulo I aumentou, em média aproximadamente 0.5 segundo para cada 1.000 transações acrescentadas à base de dados. Tal comportamento confirma observações formuladas em outras versões do Algoritmo Apriori de que o tempo de processamento para identificar as regras de associação a partir dos conjuntos freqüentes torna-se muito pequeno comparado ao tempo de processamento para caracterização dos conjuntos freqüentes. Os resultados dos experimentos descritos nesta seção envolvendo a implementação do algoritmo Apriori em PL/SQL indicam uma tendência significativa de que soluções viáveis para problemas de mineração de regras associativas podem ser obtidas adaptando-se algoritmos existentes e especializados neste tipo de tarefa para incorporar recursos de banco de dados relacionais. CONCLUSÕES O presente trabalho teve como objetivo iniciar uma investigação para se verificar a aderência de Redes Neurais baseadas em aprendizado competitivo a tarefas de identificação de regras de associação entre produtos vendidos. A proposta apresentada envolveu uma adaptação nos mecanismos de treinamento e recuperação de informações de redes baseadas em treinamento competitivo.Os experimentos foram realizados em duas etapas: uma onde a adaptação proposta restringiu-se apenas à função de recuperação de informação das redes; e a outra onde tal adaptação foi estendida para abranger também o processo de treinamento. As redes utilizadas na segunda etapa tiveram um desempenho superior às redes implementadas na primeira etapa. Os resultados obtidos, embora algumas vezes influenciados pela natureza aleatória dos processos de inicialização de pesos e de seleção de padrões para treinamento, sinalizaram para uma aparente adequabilidade do esquema proposto para identificação de regras de associação com comprimento 2. Novos testes envolvendo um volume ainda maior de dados devem ser realizados como trabalho futuro pois acredita-se que uma maior redundância da informação de treinamento possa contribuir para melhorar a precisão na identificação das regras.Recomenda-se também como possibilidade de trabalho futuro a realização de experimentos visando a obtenção de regras de comprimento maior que 2. REFERÊNCIAS BIBLIOGRÁFICAS [1] AGRAWAL, R. & IMIELINSKI, T. & SWAMI, A., Mining Association Rules Between Sets of Itens in Large Databases, ACM SIGMOD Conference Management of Data, 1993. [2] HOUTSMA, M. & SWAMI, A., Set-oriented Mining of Association Rules. Research Report RJ 9567, IBM Almaden Research Center, San Jose, California, October de 1993. [3] AGRAWAL, R. & SRIKANT, R., Fast Algorithms for Mining Association Rules, 20th VLDB Conference, 1994. [4] AGRAWAL, R. & SRIKANT, R., Mining Generalized Association Rules, 21st VLDB Conference, 1995. [5] AGRAWAL, R. & SARAWAGI, S. & Thomas, S., Integrating Association Rule Mining with Relational Database Systems: Alternatives and Implications, 1998. [6] LOPES, CARLOS H. P., Classificação de Registros em Banco de Dados por Evolução de Regras de Associação Utilizando Algorit-mos Genéticos, Tese de Mestrado, Pontifícia Universidade Católica do Rio de Janeiro, Abril de 1999. [7] ATTAR, A. A., Data Mining – Beyond Algorithms,http://www.attar.co.uk, 1999.