mineração de dados: aplicação prática em pequenas e médias

Propaganda
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.
Download