Escolar Documentos
Profissional Documentos
Cultura Documentos
Silva, Felippe C. C.
Aplicação de Regras de Associação em Bases de Dados
Transacionais de e-Commerces. / Felippe Ciacco Carvalho
da Silva; orientador Gustavo Aurelio Prieto. São João da
Boa Vista, 2013.
Converter dados em informações é uma tarefa que pode auxiliar as empresas que
desejam ter conhecimento sobre seu próprio negócio. A mineração de dados é um caminho
para alcançar informações que sejam valiosas para a empresa, mas que estão escondidas no
meio dos diversos dados armazenados. Este trabalho propõe utilizar as regras de associação
para expor dados relevantes sobre a compra de produtos que possam indicar alguma relação
entre as transações de fechamento do carrinho realizado por clientes. Foi desenvolvido um
aplicativo web que executa o algoritmo Apriori e expõe os resultados da mineração. Os e-
commerces consultados são das empresas, Alta Books e Brasport, que disponibilizaram suas
bases de dados para que fosse possível encontrar combinações de produtos e demonstra-las
nos resultados desse trabalho, concluindo que mesmo lojas virtuais sem muitas transações é
possível encontrar padrões nas regras e se beneficiar do uso da mineração de dados. Concluiu-
se também que a ferramenta web junto ao algoritmo Apriori conseguiu gerar todas as regras a
partir dos dados disponíveis.
Convert data into information is a task that can aid companies who wish have
knowledge about their own business. Data mining is a way to achieve information that are
valuable, but hidden between many stored data. This paper proposes to use association rules
to expose relevant data over buying products that may indicate some kind of relationship with
the cart closure transactions made by the costumer. It was developed a web application that
performs Apriori’s algorithm and shows the results of the mining. The e-commerces
consulted are from the companies, Alta Books and Brasport, that shared their databases to
make possible find products combinations and present it within the results of this paper,
concluding that even virtual stores without many transactions is possible to find patterns in
the rules and benefit with the use of data mining. It was also concluded that the web tool
alongside the Apriori algorithm could generate all the rules from the available data.
1 INTRODUÇÃO .............................................................................................................15
1.1 Motivação.................................................................................................................... 17
1.2 Objetivos ..................................................................................................................... 17
1.2.1 Objetivo Geral ........................................................................................................... 17
1.2.2 Objetivo Específico.................................................................................................... 17
1.3 Organização deste trabalho ........................................................................................... 18
2 PESQUISA BIBLIOGRÁFICA....................................................................................19
2.1 e-Commerce ................................................................................................................ 19
2.2 Descoberta de Conhecimento em Banco de Dados .......................................................... 21
2.3 Data Mining................................................................................................................. 23
2.4 Técnicas de mineração.................................................................................................. 25
2.5 Regras de Associação ................................................................................................... 27
2.5.1 Medidas em regras de associação ................................................................................ 28
2.5.2 Técnica Apriori.......................................................................................................... 30
2.5.3 O algoritmo Apriori ................................................................................................... 31
2.5.4 Visualização .............................................................................................................. 32
3 MET ODOLOGIA........................................................................................................37
3.1 Seleção de Dados ......................................................................................................... 38
3.2 Desenvolvimento do aplicativo web............................................................................... 40
3.2.1 Tecnologias utilizadas ................................................................................................ 41
3.2.2 Desenvolvimento da ferramenta .................................................................................. 42
3.2.2.1 Página com a chamada do algoritmo Apriori ........................................................... 43
3.2.2.2 Página com a listagem dos padrões......................................................................... 44
3.2.2.3 Página de produtos ................................................................................................ 48
3.2.2.4 Página de gráficos ................................................................................................. 49
3.3 Algoritmo Apriori ........................................................................................................ 50
3.3.1 Mudanças no código .................................................................................................. 50
3.3.2 Funcionamento do código........................................................................................... 51
3.4 Avaliação..................................................................................................................... 52
4 RESULTADOS ...........................................................................................................53
4.1 Resultados da Alta Books ............................................................................................. 54
4.2 Resultados Brasport...................................................................................................... 55
5 CONCLUSÕES ...........................................................................................................59
5.1 Trabalhos futuros ......................................................................................................... 60
REFERÊNCIAS ............................................................................................................... 61
Capítulo
15
1 Introdução
constituem o conhecimento procurado pelo usuário. O KDD também possui uma etapa
importante chamada Data Warehouse (FAYYAD et al, 1996).
Data Warehouse é uma base de dados onde são transferidos todos os dados contidos
nos bancos de dados da empresa, passando por todo um processo de limpeza e organização
para que os dados não gerem problemas nas etapas seguintes (OLIVEIRA, 1998). O maior
valor de um Data Warehouse está em sua capacidade de integrar todos os bancos oriundos de
grupos e estruturas diferentes (INMON, 1997).
A descoberta de conhecimento não necessita de que todos os passos sejam realizados,
pois as ferramentas podem fazer suas funções individuais. O Data Mining não precisa ter um
Data Warehouse para trabalhar, porém será muito mais trabalhoso para cada regra que mudar
ou campo que alterar. O mesmo exemplo segue um Data Warehouse sem uma ferramenta
para analisar todos os dados contidos nele (RAMAKRISHNAN; GEHRKE, 2008).
Este projeto foca em minerar dados que estejam envolvidos diretamente com a compra
de produtos, ou seja, encontrar padrões sobre essas transações e analisa- los para encontrar
produtos vendidos em e suas características. Neste sentido foi escolhido trabalhar com regras
de associação.
Saber quais produtos oferecer aos clientes potencializa as vendas da empresa, pois é
oferecido justamente produtos que o usuário possa se interessar, ao invés de mostrar produtos
que o usuário não demonstre interesse e que talvez nunca compre. Com esse conhecimento é
possível planejar a vitrine de um e-commerce, ou enviar um e- mail marketing objetivo, ou
oferecer promoções que façam com que outros produtos sejam comprados a partir da
promoção oferecida (EDELSTEIN, 1999).
Todos esses dados devem ser mostrados para o usuário, e as regras definidas pelo
mesmo, por isso uma aplicação web foi escolhida para facilitar e melhorar a forma de
visualização desses dados. Uma aplicação web pode ser integrado direto em uma loja virtual,
ou acessado de qualquer ponto que houver internet, também encontra-se hospedada em um
servidor web e com isso não possui a necessidade de instalar programas nas áreas de trabalho
do usuário.
"Nesses tempos de intensa e cruel competição, uma ferramenta que permita análises
mais precisas e respostas mais rápidas da organização deve ser encarada como estratégica "
(TAURION, 1998 apud KREMER, 1999).
17
1.1 Motivação
1.2 Objetivos
Para ser capaz de concluir esta pesquisa, torna-se necessário seguir as seguintes
etapas:
A. Analisar as tabelas do banco de dados dessas empresas e escolher os dados que
serão analisados.
B. Criar um aplicativo web que trabalhe com o algoritmo Apriori e exiba as
regras obtidas como resultado do Data Mining.
18
19
2 Pesquisa Bibliográfica
Este capítulo traz o conhecimento de outros autores sobre os assuntos abordados neste
trabalho, trazendo uma base teórica dividida nos assuntos: e-Commerce, KDD e Data Mining.
2.1 e-Commerce
baixo custo do produto pode oferecer maior segurança ao cliente, qualquer produto vendido
deve ter um nicho onde o perfil do cliente está diretamente relacionado ao produto.
Commerce (2013) afirma que existem muitas plataformas de cód igo livre que são boas e
seguras.
Eletrodomésticos 15
Informática 12
Eletrônico 8
Saúde e Beleza 7
Moda e Acessórios 7
Fonte: eBit - www.ecommerce.org.br
como: Se um cliente fizer uma compra de uma Caneta, provavelmente este cliente também irá
comprar Tinta. Quando se trabalha com datas, uma regra deve valer em todo dia do
calendário. Pode-se então "computar regras de associação sobre um conjunto de tuplas cujo
campo data cai dentro do calendário". As regras podem ter suporte e confiança baixos em
relação ao contexto geral, porém, esses valores podem ter grandes significados dentro de
outro contexto, e vice-versa itens (RAMAKRISHNAN; GEHRKE, 2008).
Regras de Associação para Previsão: Regras de associação são comumente
utilizadas para uso de previsão. O exemplo {Caneta} => {Tinta} pode ser utilizado para criar
futuras promoções de Canetas com a intenção vender mais Tinta. Entretanto, esses são
somente indicadores que se não possuírem ligações entre os dois produtos, esse padrão pode
ser desconsiderado itens (RAMAKRISHNAN; GEHRKE, 2008).
Redes Bayesianas: Redes Bayesianas ajudam a descobrir quais as influências que
certo conjunto de itens possui. Alguns itens possuem fortes relações como Caneta e Lápis, e
outros que possuem relações causais, como Caneta e Tinta itens. As Redes Bayesianas são
grafos que descrevem modelos, com nós e arcos para indicar causalidade. Os modelos desses
grafos são criados com regras causais para estimar uma pontuação entre eles, através de
combinações para conjuntos de itens (RAMAKRISHNAN; GEHRKE, 2008).
"Uma rede Bayesiana pode ser vista também como uma representação compacta de
uma tabela de conjunção de probabilidades do domínio do problema". Porém, podem ser
vistas como modelos gráficos se analisadas por um analista. Uma rede bayesiana representa
de forma simples relações de causalidade (MITCHELL 1997 apud QUEIROGA 2005).
Os itens mais frequentes na tabela 2 são {caneta, tinta}, que possuem suporte de 75%.
Outro conjunto de exemplo seria o {leite, suco} que possui suporte de 25% apenas. O
primeiro conjunto possui um suporte alto, enquanto o segundo conjunto pos sui um suporte
baixo, o que não é interessante para trabalhar. O interesse do usuário é que sejam encontrados
somente conjuntos com suporte que seja maior do que o especificado, ou seja, se o usuário
especificou um mínimo de 70%, então obterá desta tabela os itens {caneta}, {tinta}, {caneta,
tinta}, {caneta, leite} (RAMAKRISHNAN; GEHRKE, 2008).
“Em geral, cada medida objetiva está associada a um limite mínimo de aceitação, que
pode ser controlado pelo usuário”. Para que uma regra de associação seja interes sante é
preciso que tanto a confiança quanto o suporte sejam maior ou igual ao especificado pelo
usuário (AMO, 2004).
Se o produto A e o produto B aparecerem somente uma vez em uma tabela com seis
transações, é considerado uma compra conjunta com poucas vendas. Porém, somente pelo
fato de uma única transação conter os dois itens, já torna a confiança com um valor de 100%.
30
Para garantir regras interessantes é necessário que seja exigido um suporte alto, além de sua
confiança (AMO, 2004).
Junior (2005) refere-se a suportes de regras como padrões insuficientes de analises
para concluir as relações entre os produtos. Neste caso o usuário deve entender essa relação
para não tirar conclusões erradas da regra.
Neste exemplo, tem-se uma confiança de 80% nas compras de Pão, Manteiga e Leite,
porém antes de afirmar que essa confiança é alta, é preciso descobrir primeiro a frequência
das compras do item Leite. Caso a frequência das compras de Leite seja de 80%, não haverá
nenhuma surpresa ou padrão encontrado nas regras e sim o que já era esperado. Porém, se a
frequência da compra de Leite for de 40%, é o dobro do esperado, o que seria uma confiança
alta, comprovando assim um padrão bem sucedido (JUNIOR, 2005 ).
Amo (2004) acrescenta também que é possível utilizar de outras medidas além das
objetivas. As medidas subjetivas podem ajudar o usuário em algumas necessidades
particulares, como descrever características de alguns clientes. Padrões se tornam
interessantes quando são desconhecidos pelo usuário e as medidas objetivas podem apresentar
padrões que são óbvios.
De acordo com Han e Kamber (2006), o algoritmo Apriori foi proposto por R.
Agrawal e R. Srikant em 1994 para minerar conjuntos de itens freqüentes em regras de
associação booleanos. O nome do algoritmo basea-se no fato de usar o conhecimento prévio
das propriedades dos itemsets frequentes.
Do algoritmo Apriori surgiu o software Intelligent Miner, da IBM. Este algoritmo tem
como finalidade encontrar todos os itemsets frequentes em um banco de dados transacional e
um suporte mínimo (AMO, 2004).
Amo (2004), explica que a técnica Apriori é muito utilizada para conhecer quais
produtos são comprados por clientes em conjunto com outros produtos. Esse conhecimento
garante a empresa um leque de atividades para melhorar seus negócios, como: organizar a
localização dos produtos, campanhas de publicidade, catálogos de loja, entre outros.
31
Para obter essas informações é preciso dispor de uma mina de dados que são
encontrados nas tabelas de transação de compras, no banco de dados da empresa. Cada
compra que um cliente faz, é gravado no banco de dados todos os produtos e suas
informações (AMO, 2004).
Amo (2004) explica que um conjunto de itens é nomeado como itemset, e uma
transação é a compra total feita por um cliente. Uma transação T suporta um itemset I, se I ⊆
T. De acordo com Han e Kamber (2006), um itemset que contém k itens é chamado de k-
itemset, ou seja, no exemplo de {Pão, Manteiga}=>{Leite} é um 3-itemset. Amo (2004) ainda
diz que para que um itemset seja considerado frequente, o usuário deve definir qual a sua
porcentagem mínima, ou seja, se um itemset for igual ou maior que o definido, ele é
considerado um conjunto de itens frequentes. Para Han e Kamber (2006) pode ser conhecido
como, frequência, contagem de apoio ou contagem de suporte. O suporte de um conjunto de
itens pode ser referido como relativo, sendo então a frequência de um conjunto sendo o
suporte absoluto.
De acordo com Ramakrishnan e Gehrke (2008) "todo subconjunto de um conjunto de
itens frequentes também é um conjunto de itens frequentes". A propriedade Apriori consegue
reduzir os conjuntos de itens verificando se os subconjuntos são frequentes, pois ela analisa
que somente os itens candidatos são frequentes se todos os seus subconjuntos também forem
frequentes.
também não será frequente, e isso implica em uma otimização do tempo já que não será
necessário calcular o suporte de B (AMO, 2004).
Geração dos candidatos: fase onde são gerados os itemsets candidatos que podem ou
não ser frequentes. Então os itemsets de tamanho k são gerados a partir do conjunto .
Devido a Antimonotonia sabe-se que todos os itemsets de tamanho k-1 contidos nos
candidatos de tamanho k são frequentes, então pertencem ao conjunto . Juntando-se pares
de itemsets de tamanho k-1 com itemsets de tamanho k-2, tem-se certeza de obter um itemset
de tamanho k com pelo menos dois subconjuntos de tamanho k-1 (AMO, 2004).
Dado os seguintes itemsets frequentes de tamanho 2:
= {{1,3}, {1,5}, {1,4}, {2,3}, {3,4}, {2,4}}
Tem-se o conjunto de pré-candidatos :
= {{1,3,5}, {1,3,4}, {1,4,5}, {2,3,4}}
Poda dos candidatos: A propriedade Apriori também indica que se um subconjunto
de de tamanho k-1 não estiver em não poderá ser frequente. De acordo com o
exemplo, na fase da poda o itemset {1,4,5} não pode ser frequente, pois ele contém {4,5} que
não são frequentes, sendo assim será podado. O itemset {1,3,5} também é podado, ficando
então: = {{1,3,4}, {2,3,4}} (AMO, 2004).
Cálculo do suporte: varrendo o banco uma única vez é possível calcular o suporte
dos itemsets do conjunto . Incrementa-se uma unidade o contador do suporte para cada ite m
suportado em cada transação (AMO, 2004).
Otimização do algoritmo Apriori: Amo (2004) também demonstra algumas
técnicas de otimização que são apresentadas abaixo em quatro categorias:
1. Diminuir o número de candidatos a serem testados em cada transação na fase de
cálculo do suporte. Diminuir o número de subconjuntos a serem testados na fase de
poda dos candidatos.
2. Reduzir o tamanho do banco de dados para cada iteração efetuada.
3. Reduzir o número de varridas do banco de dados.
4. Diminuir o número de candidatos gerados.
2.5.4 Visualização
37
3 Metodologia
Os e-commerces analisados neste projeto são das empresas Alta Books 1 e Brasport 2 ,
duas editoras de livros técnicos que dispuseram suas bases de dados para serem minerados.
Essas empresas não utilizam ferramentas que façam o trabalho de minerar seus dados, o que
torna interessante para essas lojas obterem resultados de padrões nas vendas de seus produtos
até então desconhecidos. Foi realizada uma conversa com os representantes das empresas, que
são os responsáveis por administrar a área de produtos e promoções nas lojas virtuais, e
através dessa conversa descobriu-se um pouco sobre as necessidades da empresa em relação
ao assunto de mineração de dados. Foi-se discutido também sobre as permissões dos dados
que poderiam ser utilizadas neste trabalho, e os representantes das empresas preferiram não
utilizar os dados provindos de clientes por questões de política de privacidade.
Para executar a mineração de dados foi desenvolvido um aplicativo web que utiliza a
mineração de dados para buscar conhecimento a partir das bases de dados dessas lojas,
utilizando o algoritmo Apriori para poder analisar os produtos que são comprados em uma
mesma transação e exibir para a empresa os resultados dessa mineração. O nome atribuído a
esta ferramenta foi Mining Cart. A decisão de criar a ferramenta foi escolhida para diminuir o
tempo do projeto, já que estudar um software já existente e depois passar todos os dados das
empresas para o padrão correto desse programa seria muito trabalhoso e levaria mais tempo
do que o desenvolvimento do Mining Cart.
Foi necessário o entendimento dos produtos das empresas e suas áreas de negócio
primeiramente, depois foram feitas as analises necessárias seguidas de algumas etapas para
realizar o desenvolvimento desse projeto:
Seleção dos dados (tabelas e colunas dos bancos de dados).
Desenvolvimento do aplicativo web.
Algoritmo Apriori no aplicativo.
Avaliação das informações.
1
http://www.altabooks.com.br
2
http://www.b rasport.com.br
38
3
http://www.cscart.co m
39
Foi decidido trabalhar apenas com produtos e categorias, pois o tempo para o
desenvolvimento do aplicativo ultrapassaria se trabalhado com outros dados. Mesmo
utilizando apenas estes dados a ferramenta ainda foi reduzida para conseguir acomodar-se aos
requisitos mínimos, que é exibir as regras com os antecedentes e os consequentes e seus
respectivos valores de suporte e confiança.
As tabelas estão dispostas em:
Tabelas de transações;
Tabelas de produtos;
Tabelas de categorias;
Para cada transação efetuada pelo cliente são utilizadas quatro tabelas para registrar a
compra, para esse projeto foi utilizada apenas uma tabela, chamada cscart_order_details. Esta
é a tabela de pedidos que faz a conexão entre a transação e os produtos, as outras tabelas de
transações disponibilizam dados de compra do cliente, informações de preços e conexões com
outras tabelas de configuração de produtos, esta ultima não utilizada pelas empresas. Os
campos utilizados dessa tabela foram:
A plataforma CS-Cart possui muitas tabelas de produtos, cada uma com sua
funcionalidade, porém para a necessidade da ferramenta foi utilizada apenas uma tabela, pois
foi necessário somente o ID e o nome do produto:
Para trabalhar com as categorias dos produtos foram necessários outras duas tabelas.
A tabela cscart_products_categories foi necessária para criar a relação entre produto e
40
categoria a partir de seus IDs, esta tabela possui chaves compostas sendo possível que o ID do
produto possua mais de uma categoria.
A tabela 5 é necessária para relacionar o produto com as categorias. Essa tabela possui
chaves compostas sendo possível de o ID do produto possuir mais de uma categoria. A tabela
6 foi necessária para buscar o nome da categoria de cada produto.
As outras tabelas dos bancos de dados das empresas foram descartadas por haver
relações com dados de clientes. A tabela de abandono de carrinho também foi descartada por
seus dados estarem serializados e não fazerem parte do padrão escolhido para ser trabalhado
no projeto, sendo necessário o uso de mais tempo para conseguir realizar as modificações.
As tabelas 4 e 6 possuem um campo chamado lang_code que define a linguagem
utilizada pela loja, o padrão é inglês e português. Para não haver duplicação nos dados foi
necessário desconsiderar os registros de código inglês.
existente no mercado como o tempo para passar todos os dados das duas empresas para o
padrão necessário seria muito trabalhoso. Outra justificativa para o desenvolvimento de uma
ferramenta para este trabalho seria por em prática as matérias ensinas no curso, com isso
justifica-se também a escolha da plataforma ser web.
Com a escolha de uma plataforma web, decidiu-se que o sistema deveria ser montado
dentro de algum framework, pois oferecem muitas vantagens que para esse trabalho seriam
bem aplicados:
Padronização na estrutura do projeto e no código;
Velocidade no desenvolvimento, pois a estrutura do projeto já está pronta e possuem
muitas facilidades em relação à detecção de erros;
Qualidade no desenvolvimento do código, pois o framework impõe códigos e métodos
que devem ser seguidos;
A estrutura de um framework permite que a ferramenta seja possível de expansão;
Diversos plug- ins já desenvolvidos pela comunidade.
Em uma relação contrária a estas vantagens, tem-se o tempo utilizado para
compreender o framework.
O framework escolhido foi o Yii4 , pelo fato de ser simples, possuir bastante
documentação e de ter uma grande variedade de módulos criados pela própria comunidade
que poderiam ser utilizados no projeto. Foram utilizados dois módulos do Yii para o projeto:
Highcharts 5 . Módulo bem completo que cria gráficos baseado nos dados recebidos;
Exportablegridbehavior 6 . Módulo que exporta os dados gerados pelo CGridView do
Yii de acordo com filtros e ordenação dos campos.
As tecnologias utilizadas neste trabalho são:
Linguagens: PHP, XHTML, CSS, Javascript e AJAX;
Banco de dados: MySQL;
Arquitetura: MVC;
4
http://www.y iiframework.co m
5
http://www.y iiframework.co m/extension/highcharts/
6
http://www.y iiframework.co m/extension/exportablegridbehavior/
42
A primeira tela é destinada a chamada do algoritmo Apriori, enviando pra ele todas as
informações necessárias para ser executado. Não é possível acessar outras páginas sem
primeiro passar por esta, já que as outras são baseadas no resultado do processamento do
Apriori.
tabelas começadas com cscart_order_details. É a partir dessa tabela que será gerada
todas as regras do algoritmo Apriori.
2. Campo de Suporte: Envia ao algoritmo Apriori qual a taxa de suporte o usuário
deseja para gerar os padrões. Este campo é utilizado em forma de porcentagem. Se o
usuário insere um número 50, por exemplo, está dizendo ao programa que deseja gerar
apenas regras que possuem 50 ou mais de suporte. Se for inserido o número 0, o
programa irá gerar todos os padrões com suporte zero ou maior. Este campo aceita
números de 0 a 99.
3. Campo de Confiança: Envia ao algoritmo Apriori qual a taxa de confiança o usuário
deseja para gerar os padrões. Este campo também é utilizado de forma de
porcentagem. Inserindo o número 0 o usuário envia ao sistema que deseja obter todos
os padrões de confiança com zero ou maior.
4. Campo de Antecedente: Envia ao algoritmo Apriori qual o produto antecedente o
usuário deseja gerar as regras.
5. Campo de Consequente: Envia ao algoritmo Apriori qual o produto consequente o
usuário deseja gerar as regras.
Se for inserido o número 0 nos campos de Suporte e Confiança e deixar os campos de
Antecedente e Consequente em branco, o sistema irá retornar todos os padrões possíveis. Para
a geração de todas as regras o sistema, em uma base de 18 mil transações, demorou em torno
6 segundos, sendo elas executadas localmente.
Caso o usuário procure algum produto específico é interessante o uso dos campos de
Antecedente e Consequente, pois assim o programa irá gerar as regras muito mais rápidas, já
que ele desconsidera todos os outros produtos que não são os informados nesses campos.
Após clicar em carregar o formulário, será exibido o menu principal no topo do site.
Esta tela está como home no menu do topo.
Principal tela do sistema, esta é a página que lista todos os padrões de produtos que
foram gerados a partir do carregamento do formulário na home. Cada linha é uma regra nova
que possui um antecedente, um consequente, um suporte e uma confiança. Quando são
geradas todas as regras é possível obter os mesmo conjuntos de produtos, porém um sendo o
antecedente e o outro o consequente e vice- versa. Mesmo que sejam os mesmo produtos a
45
Cada linha de regra é um link para outra tela que possui mais informações sobre a
regra clicada. Os itens exibidos na figura 11 mostram alguns detalhes da regra que não são
mostrados ao usuário na tela da figura 10, onde são listados todos os itens. Alguns detalhes da
regra:
47
Para trabalhar com a página mostrada na figura 10 foi utilizado o CGridView do Yii,
que cria uma tabela com os resultados do método search do modelo de regras. Esse método é
o responsável pelo filtro, paginação e ordenação da tabela de regras.
48
A figura 12 exibe a página de produtos onde exibe todos os produtos da loja, contém
apenas o ID e o nome do produto.
A tela de produtos foi criada para o usuário identificar as regras por ID e ter certeza de
qual produto é exibido no detalhe da regra, além de poder ser usado posteriormente para gerar
as regras somente para este produto na página do formulário colocando-o no campo de
Antecedente e Consequente.
Essa página trabalha com o CGridView e com o método search localizado no modelo
de produtos. Também recebe a tabela de produtos dinamicamente da página de chamada do
algoritmo Apriori.
Esta página exibe gráficos em barra. Cada barra representa um resultado da regra
representada abaixo das colunas, e a legenda da barra é representada por sua cor.
Houve algumas modificações no código para que este se adequasse ao software desse
trabalho, por isso serão listadas as modificações do código original para o atual. As mudanças
são simples e não alteram a finalidade do algoritmo, pelo contrário, são adicionados novos
recursos e tratado os nomes das variáveis dadas pelo autor do código Melo (2008).
O código original consiste em criar uma tabela chamada regras antes de executar o
stored procedure, com os valores de x, y, freq_x e freq_xy. Essa tabela, no código atual, é
criada automaticamente pela ferramenta e executada quando o usuário preenche o formulário
na página da home. Esta tabela é então criada com o nome regras_nomedaempresa para
diferenciar os resultados das regras de cada empresa. Foram alterados os nomes dos campos e
criado uma nova coluna chamada confiança:
x, alterado para antecedente;
y, modificado para consequente;
freq_x, alterado para frequência do antecedente;
freq_xy, modificado para suporte.
Dentro do código do stored procedure também foram renomeadas estas variáveis para
facilitar o entendimento e mais o nome da tabela temporária de 1_item para antec.
O código original consiste em chamar apenas os valores de suporte e confiança na
passagem de parâmetro, já no código atual esses parâmetros são variáveis de acordo com o
formulário preenchido pelo usuário na página home.
51
3.4 Avaliação
Para testar o algoritmo foram criadas tabelas chamadas testes com apenas seis
produtos e com trinta e dois registros. Foram necessárias essas tabelas para confirmar a
veracidade do algoritmo, já que as tabelas das empresas utilizadas possuem milhares de
registros.
O código original do Apriori confirmou o que propôs fazer, gerando as regras
corretamente. A versão alterada do código também manteve os cálculos corretos, inclusive na
coluna de confiança que foi criada posteriormente para alimentar a tabela de regras.
Também foram avaliadas as repostas dos representantes das empresas sobre o sistema,
fazendo-se algumas perguntas sobre os resultados gerados e o que eles podem ser de ajuda
para a empresa.
Capítulo
53
4 Resultados
Analisando o resultado das regras geradas dos dados pro venientes da Alta Books,
descobriu-se que o suporte possui valores muito baixos e que nenhum padrão neste sentido foi
encontrado. Porém, descobriu-se que os produtos com maiores valores de suporte possuem
uma confiança alta e que essa confiança é devida a compras de produtos muito semelhantes,
com o mesmo seguimento ou mesma categoria. Se observar as duas primeiras regras na figura
14, percebe-se que esses produtos tratam-se do mesmo exame de certificação da Cisco, só que
55
em níveis diferentes já que um é o "CCNA ICND 1" e o outro é o "CCNA ICND 2".
Analisando também a confiança e a frequência dessas duas regras, percebe-se que o exame
"CCNA ICND 1" é mais comprado pelos clientes. Esse mesmo padrão se repete para as regras
cinco e seis de acordo com a figura 14, elas possuem o mesmo certificado de linux porém
com exames diferentes, e a frequência do primeiro livro é maior que a do segundo. As regras
três e quatro são da mesma categoria, "Para leigos" e "Matemática".
Analisando essas regras, pode-se dizer então que foi encontrado um padrão, mesmo
não possuindo um valor alto de suporte: Clientes costumam fechar pedidos com livros do
mesmo seguimento. Também foi descoberto que o primeiro livro de uma coleção ou de uma
série são mais vendidos, que é o caso das regras um e dois, e cinco e seis. Isso torna o cliente
que comprou apenas este primeiro livro como um cliente em potencial para adquirir o
segundo livro, ou mesmo à coleção inteira se for o caso.
Respostas das perguntas realizadas pelo representante da Alta Books.
Resposta da primeira pe rgunta: Entender o funcionamento do sistema com os
valores de suporte, confiança e a lógica das regras foi complicado, justamente pelo assunto
exigir mais conhecimento sobre mineração de dados. Mesmo o representante da empresa não
entendendo muito do assunto, achou intuitiva a ferramenta e de fácil interpretação,
comparando o que lhe foi explicado sobre as regras de associação. Apesar de esperar alguns
resultados a mais que a ferramenta não oferecia, achou interessante as funcionalidades
implementadas. O representante da Alta Books também sugeriu o uso das regras de
associação para categorias, assim como acontece nas regras exibidas dos produtos.
Resposta da segunda pergunta: Mesmo sabendo que os resultados das regras eram
considerados baixos, o representante da empresa achou interessante essa informação.
Também já tinha uma base sobre as vendas de livros de uma mesma série, mas a informação
sobre algumas categorias compradas juntas foi um conhecimento novo.
Resposta da terceira pergunta: Com a criação frequente de newsletters realizada
pela empresa, o representante informou que irá avaliar os resultados obtidos para conseguir
empenhar eles nesses e-mails makerting.
Ao executar o Apriori, foram obtidos 11.214 regras, sem fazer qualquer restrição de
suporte, confiança ou produtos.
O produto com maior suporte obteve 0.58% e o com menor valor de suporte com
0.01%. Quanto a confiança, foi gerado 51 regras com confiança de 100%, porém o suporte
dessas não ultrapassou os 0.01%. As regras com menor confiança eram de 0.33%, e todas
com suporte de 0.01%.
O livro com maior frequência foi o "Bacula - Ferramenta Livre de Backup", que
obteve uma lista com 83 regras. O maior suporte encontrado dessas regras foi 0.07% e de
confiança com 2.33%. Pode-se dizer que neste livro não se encontrou nenhum padrão. As
combinações geradas nessas regras também não possuíam nenhuma categoria relacionada.
A figura 15 demonstra alguns dos vinte livros com maior suporte e que possuem um
padrão entre eles. Foram filtrados pelo nome da série do livro para encontrar esses padrões.
As seis regras exibidas na figura 15, demonstra que os padrões encontrados nos
resultados da Alta Books são verdadeiros, já que nesta figura é possível visualizar as
combinações entre a mesma série do livro "Gerenciamento de Projetos Guia do Profissional".
Além de uma confiança alta, o suporte também é alto se comparados ao padrão de regras
gerado. Essa combinação seria um exemplo importante de itemsets de tamanho três, caso o
sistema fizesse essa combinação, pois os valores de suporte e confiança dessas seis regras
demonstram que esses três livros são constantemente comprados em conjunto.
57
59
5 Conclusões
O Data Mining é a parte mais importante do KDD por ter os padrões gerados nesta
etapa. Com o conhecimento e a lógica do funcionamento de minerar dados e uma base de
dados de uma empresa com registros de transações, é possível utilizar as regras de associação
para encontrar diversos tipos de padrões na venda de produtos. Com e-commerces isso não é
diferente, é possível obter muitos dados para serem analisados utilizando os bancos de dados
de suas plataformas, e é possível minerar esses dados para benefício próprio da empresa.
Foi desenvolvido neste trabalho um aplicativo web chamado Mining Cart, que executa
o algoritmo Apriori e exibe todas as regras geradas por este, podendo ordenar e filtrar as
informações da forma mais conveniente para o usuário do sistema. Esta ferramenta conseguiu
gerar todas as regras possíveis a partir da base de dados das lojas, tendo êxito nesta etapa do
trabalho.
Os maiores desafios para a conclusão desse projeto foram na programação, que foi
necessário programar como o Yii framework sugere, principalmente nos relacionamentos e na
geração dinâmica das tabelas de regras. Também foram necessários alguns dias para entender,
modificar e executar o stored procedure da forma correta. Apesar da perca de tempo
entendendo alguns desses conceitos, o tempo foi bem melhor aproveitado utilizando este
framework e o Apriori em forma de procedure.
As bases de dados analisadas foram dos e-commerces de duas editoras, a Alta Books e
a Brasport, e foi conversado e testado por um representante de cada empresa. Para estes
representantes a ferramenta conseguiu satisfazer o propósito dela e os resultados foram de
grande ajuda para as empresas, já que foram feitas algumas descobertas sobre seus produtos.
Mesmo as lojas obtendo um suporte baixo nas regras obtidas, os representantes das empresas
pretendem utilizar esses resultados ao seu favor e focar algumas vendas baseado neles.
Com base nos resultados pode-se concluir que a mineração de dados consegue obter
resultados em e-commerces utilizando as regras de associação para descobrir produtos
comprados em conjunto, possuindo essas lojas menos ou mais de 10 mil transações. E que a
ferramenta criada também se comportou como esperado e conseguiu gerar e exibir todas as
regras a partir da base de dados das empresas. Pode-se concluir também que é possível
60
encontrar padrões a partir de uma análise de conjunto de regras mesmo que o suporte
mantenha-se baixo.
Apesar das bases de dados possuírem uma quantidade de registros adequados para o
projeto, as duas trabalham apenas com livros, o que restringiu um pouco na execução de
associação de produtos, pois quanto mais diversificada uma loja é, maior desafio para se
encontrar padrões diferentes e inesperados. Então o primeiro passo para o futuro será
trabalhar com bases de dados mais diversificadas.
O segundo passo para a continuação do trabalho pode ser realizado na elaboração da
ferramenta, promovendo melhores experiências para o usuário do sistema e criar novas
funcionalidades. Mesmo trabalhando apenas com associação de produtos é possível expandir
essas funcionalidades para conseguir trabalhar com todos os dados existentes nas bases de
dados da plataforma CS-Cart. A ferramenta também pode ser facilmente adaptada para outras
plataformas.
O terceiro passo para trabalhos futuros pode ser realizado com a mistura de outras
técnicas de mineração de dados, ajudando a ferramenta a melhorar na criação de regras ou
mesmo expandir a ferramenta para que ela englobe as técnicas de predição, classificação ou
padrões sequenciais.
61
Referências
HAN, Jiawei; KAMBER, Micheline. Data mining: concepts and techniques. 2. ed. San
Francisco: Elsevier, 2006. (Morgan Kaufmann Publishers).
62
ONG, Kian-Huat; ONG, Kok-Leong; NG, Wee-Keong; LIM, Ee-Peng. Crystalclear: Active
visualization of association rules. Nanyang Technological University, Singapure, 2002.
Disponível em:
<http://www.comp.nus.edu.sg/~zhanghao/project/visualization/[2002]CrystalClear.pdf>.
Acesso em: 15 nov. 2013.
DELIMITER $$
DROP PROCEDURE IF EXISTS `betao`.`sp_apriori` $$
CREATE PROCEDURE `sp_apriori`(in sup_min integer,in conf integer)
begin
delete from regras;
select @total:=count(distinct trans) as total from vendas;
/* criacao da tabela temporaria para um item */
create temporary table 1_item(
id int not null auto_increment primary key,
prdno int not null,
freq float not null);
/* inserindo na tabela temporaria os 1 itens de acordo com o suporte minimo definido no
parametro de entrada */
/* seleciona as regras que estao dentro da confianca passada como parametro, ou seja, deleta
aquelas que nao interessam */
delete from regras where (freq_xy/freq_x) < (conf/100);
end $$
DELIMITER ;
66
DELIMITER $$
DROP PROCEDURE IF EXISTS `apriori_sc` $$
CREATE PROCEDURE `apriori_sc`(in sup_min integer, in conf_min integer, in empresa
char(50))
BEGIN
SET @s = CONCAT(
'INSERT INTO antec(product_id,freq)
SELECT product_id, ROUND(100*COUNT(product_id)/@total,2) AS freq
FROM cscart_order_details_',empresa,'
GROUP BY product_id
HAVING freq >= ',sup_min
);
PREPARE stmt FROM @s;
EXECUTE stmt;
SET @contador := 1;
WHERE id = @contador;
SET @s = CONCAT(
'INSERT INTO regras_',empresa,' (antecedente, consequente, freq_x, suporte,
confianca)
SELECT
@antecedente,
product_id,
@freqx,
ROUND(100*COUNT(product_id)/@total,2) AS freq,
ROUND(100*(ROUND(100*COUNT(product_id)/@total,2)/@freqx),2) AS conf
FROM cscart_order_details_',empresa,'
WHERE order_id IN(
SELECT order_id
FROM cscart_order_details_',empresa,'
WHERE product_id = @antecedente
)
AND product_id <> @antecedente
GROUP BY product_id
HAVING freq >= ',sup_min,' AND conf >= ',conf_min,'
');
PREPARE stmt FROM @s;
EXECUTE stmt;
END WHILE;
END $$
DELIMITER ;
68
DELIMITER $$
DROP PROCEDURE IF EXISTS `apriori_x` $$
CREATE PROCEDURE `apriori_x`(in prodX integer, in sup_min integer, in conf_min
integer, in empresa char(50))
BEGIN
SET @contador := 1;
FROM antec
WHERE id = @contador;
SET @s = CONCAT(
'INSERT INTO regras_',empresa,' (antecedente, consequente, freq_x, suporte,
confianca)
SELECT
@antecedente,
product_id,
@freqx,
ROUND(100*COUNT(product_id)/@total,2) AS freq,
ROUND(100*(ROUND(100*COUNT(product_id)/@total,2)/@freqx),2) AS conf
FROM cscart_order_details_',empresa,'
WHERE order_id IN(
SELECT order_id
FROM cscart_order_details_',empresa,'
WHERE product_id = @antecedente
)
AND product_id <> @antecedente
GROUP BY product_id
HAVING freq >= ',sup_min, '/* Nessa linha filtro os produtos que
sairam com o outro produto */
');
PREPARE stmt FROM @s;
EXECUTE stmt;
END WHILE;
/* Deleta todas as linhas de regra_empresa que não estão de acordo com a confiança
esperada */
END $$
DELIMITER ;
70
DELIMITER $$
DROP PROCEDURE IF EXISTS `apriori_xy` $$
CREATE PROCEDURE `apriori_xy`(in prodX integer, in prodY integer, in sup_min integer,
in conf_min integer, in empresa char(50))
BEGIN
SET @contador := 1;
FROM antec
WHERE id = @contador;
SET @s = CONCAT(
'INSERT INTO regras_',empresa,' (antecedente, consequente, freq_x, suporte,
confianca)
SELECT
@antecedente,
product_id,
@freqx,
ROUND(100*COUNT(product_id)/@total,2) AS freq,
ROUND(100*(ROUND(100*COUNT(product_id)/@total,2)/@freqx),2) AS conf
FROM cscart_order_details_',empresa,'
WHERE order_id IN(
SELECT order_id
FROM cscart_order_details_',empresa,'
WHERE product_id = @antecedente
)
AND product_id <> @antecedente
AND product_id = ',prodY,'
GROUP BY product_id
HAVING freq >= ',sup_min, '/* Nessa linha filtro os produtos que
sairam com o outro produto */
');
PREPARE stmt FROM @s;
EXECUTE stmt;
END WHILE;
/* Deleta todas as linhas de regra_empresa que não estão de acordo com a confiança
esperada */
END $$
DELIMITER ;