Você está na página 1de 71

Felippe Ciacco Carvalho da Silva

Aplicação de Regras de Associação em Bases de Dados


Transacionais de e-Commerces

Trabalho de conclusão de curso apresentado ao


Instituto Federal de São Paulo, como parte dos
requisitos para a obtenção do grau de Tecnólogo
em Sistemas para Internet.

Área de Concentração: Banco de Dados

Orientador: Prof. Gustavo Aurélio Prieto

São João da Boa Vista


2013
Autorizo a reprodução e divulgação total ou parcial deste trabalho, por qualquer
meio convencional ou eletrônico, para fins de estudo e pesquisa, desde que
citada a fonte.

Ficha catalográfica preparada pela Seção de Tratamento


da Informação do Serviço de Biblioteca – IFSP

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.

Trabalho de Conclusão de Curso, IFSP, 2013.

1. Data Mining. 2. e-Commerce. 3. Apriori. 4. Regras


de Associação. 5. KDD.

I. Aplicação de Regras de Associação em Bases


de Dados Transacionais de e-Commerces
AGRADECIMENTOS

Agradeço ao meu orientador, os professores da bancada e a todos e todos


que me ajudaram a enriquecer e melhorar de diversas formas o me u
trabalho. Também agradeço a Alta Books e Brasport por disponibilizar sua
base de dados para a realização do trabalho.
RESUMO

SILVA, Felippe C. C. (2013). Aplicação de Regras de Associação em Bases de Dados


Transacionais de e-Commerces. Trabalho de Conclusão de Curso - Instituto Federal de São
Paulo, 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.

Palavras-chave: Data Mining. e-Commerce. Banco de Dados. Desenvolvimento Web. KDD.


ABSTRACT

SILVA, Felippe C. C. (2013). Association Rules Application in e-Commerces’


Transactional Databases. Course Conclusion Project – Instituto Federal de São Paulo, São
João da Boa Vista, 2013.

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.

Palavras-chave: Data Mining. e-Commerce. Data Bases. Web Development. KDD.


LISTA DE FIGURAS
Figura 1 - Faturamento anual de vendas do e-commerce no Brasil em
bilhões, desconsiderando venda de automóveis, passagens
aéreas e leilões on-line. ......................................................................... 20
Figura 2 - Etapas do processo de KDD.................................................................... 22
Figura 3 - Interatividade entre funcionalidades e técnicas da mineração de
dados......................................................................................................... 24
Figura 4 - Exemplos de visualização de dados....................................................... 33
Figura 5 - Matriz suporte x confiança ....................................................................... 34
Figura 6 - Exemplos de programas que usam grafos ............................................ 35
Figura 7 - Etapas de execução para conclusão da pesquisa ............................... 38
Figura 8 – Formulário para chamado do Apriori ..................................................... 43
Figura 9- Listagem dos padrões ................................................................................ 46
Figura 10 - Detalhes da regra .................................................................................... 47
Figura 11 – Listagem dos produtos........................................................................... 48
Figura 12 - Gráficos ..................................................................................................... 49
Figura 13 – Os seis produtos com maior suporte na empresa Alta Books ........ 54
Figura 14 - Regras entre os livros "Gerenciamento de Projetos Guia do
Profissional".............................................................................................. 56
LISTA DE TABELAS
Tabela 1 - Produtos mais vendidos no varejo on-line no Brasil em 2011........... 21
Tabela 2 - Exemplo de itens em uma tabela de banco de dados ........................ 29
Tabela 3 – Campos utilizados da tabela cscart_order_details ............................. 39
Tabela 4 – Campos utilizados da tabela cscart_product_descriptions ............... 39
Tabela 5 – Campos utilizados da tabela cscart_products_categories ................ 40
Tabela 6 – Campos utilizadosda tabela cscart_category_descriptions .............. 40
LISTA DE SIGLAS

AJAX Asynchronous Javascript and XML (Javascript Assíncrono e XML)


CSS Cascading Style Sheets (Folha de Estilo em Cascata)
ID Identificador
KDD Knowledge Discovery in Database (Descoberta de Conhecimento de
Banco de Dados)
LHS Left hand side (Lado esquerdo)
MVC Model-View-Controller (Modelo-Visão-Controlador )
PHP PHP: Hypertext Preprocessor (PHP: Processador de Hipertexto)
RHS Right hand side (Lado direito)
XHTML Extensible HyperText Markup Language (Linguagem Extensível para
Marcação de Hipertexto)
SUMÁRIO

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

Informações são meios importantes para o desenvolvimento de uma empresa, ela


auxilia na tomada de decisões, decisões essas que poderão transformar o futuro da empresa
em oportunidades de novos negócios e fortalece-la em seu nicho de mercado (EDELSTEIN,
2002). Isso é explicado pelo fato de que a empresa deve focar nas particularidades dos
clientes e não de maneira abrangente. Conhecer o cliente é a regra básica para garantir sua
lealdade, e a melhor forma de marketing (INMON, 1997).
Conhecimento é a chave para a conquista de novos mercados, e os dados acumulados
de todas as transações pela empresa é o caminho para afeiçoar e conquistar novos clientes. Há
diversos dados que uma empresa costuma guardar como, produtos que são mais vendidos, a
localidade dos clientes mais assíduos, promoções de maiores sucesso, produtos comumente
vendidos em conjunto. Esses tipos de dados encontram-se ocultos nos bancos de dados, pois
com uma grande quantidade de informações fica complexo para um ser humano conseguir
filtrar o conteúdo valioso de outro que não agrega valor, e ainda correlacionar esses dados
para que possa transformá-los em informações úteis (EDELSTEIN, 1999).
Lojas virtuais que contenham informações sobre seus clientes e produtos em seus
bancos de dados podem armazenar um histórico de transações de compras, e através delas é
possível obter o conhecimento oculto sobre essas vendas utilizando a mineração de dados
(AMO, 2004).
Data Mining, ou em português, mineração de dados, é a etapa de formar regras para
que sejam feitas os cálculos e conseguir gerar os padrões esperados provenientes de uma base
de dados (SANTOS, 2009). As técnicas de mineração de dados conseguem associar produtos
de uma loja, tipos de clientes, relacionar clientes a produtos, compras por datas e até mesmo
fraudes, e com isso ajudam as corporações a tomarem decisões, a diminuírem gastos ou
mesmo a aumentar seus fluxos de caixa (AMO, 2004).
O Data Mining faz parte de um processo maior chamado Descoberta de Conhecimento
em Banco de Dados, ou KDD (CÔRTES; PORCARO; LIFSCHITZ, 2002). O KDD possui
muitas etapas em seu processo, onde cada etapa tem como objetivo ajudar na separação dos
dados até que eles gerem um padrão e desse padrão possa encontrar as informações que
16

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

É difícil encontrar informações que possam ajudar as empresas a diminuir custos ou


aumentar suas vendas. Encontrar embasamentos sobre qual produto oferecer ao cliente
ou oferecer desconto para determinados produtos é alguns dos problemas que
empresas em geral costumam passar. A motivação deste trabalho segue duas frentes:
de provar que a mineração de dados pode ajudar lojas virtuais em geral e de usar as
informações obtidas dessa mineração para tentar ajudar as empresas Alta Books e
Brasport a encontrar produtos que são comprados em conjuntos e que com isso
possam melhorar suas vendas.

1.2 Objetivos

Os objetivos deste trabalho foram separados em objetivo geral e objetivo específico


para facilitar o entendimento do que o projeto tratará.

1.2.1 Objetivo Geral

O objetivo deste trabalho é aplicar regras de associação em bases de dados


transacionais de e-commerces reais em busca de padrões de compras que possam
relacionar produtos comprados em conjunto pelos clientes das empresas Alta Books e
Brasport, visando provar que o uso da mineração de dados pode auxiliar as lojas
virtuais a atingirem melhor seus nichos de mercado.

1.2.2 Objetivo Específico

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

C. Implantar o algoritmo Apriori na ferramenta desenvolvida.


D. Executar o Apriori e analisar os padrões gerados no processo de mineração.
E. Demonstrar os resultados aos usuários das lojas utilizadas.

1.3 Organização deste trabalho

Este trabalho está organizado em cinco capítulos.


No primeiro capítulo é descrito os objetivos e motivações do trabalho, também como
uma introdução ao assunto que será abordado.
No segundo capítulo é feita a pesquisa bibliográfica que tem como objetivo dar
embasamento. Neste capítulo são explicados todos os principais pontos do que será
trabalhado até o resultado final do projeto.
No terceiro capítulo é realizada a metodologia do projeto. Nele são mostrados os
passos executados para a conclusão deste trabalho.
O quarto capítulo demonstra todos os resultados obtidos através da mineração de
dados das empresas Alta Books e Brasport.
O quinto capítulo traz as conclusões do autor sobre o trabalho, assim como suas
expectativas para o futuro.
Capítulo

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

Os e-commerces, ou lojas virtuais, já são um sucesso em vários países que começaram


mais cedo, como os Estados Unidos e alguns países na Europa. O e-commerce está tendendo a
ser mais representativo como canal de comunicações. Nos Estados Unidos o faturamento já
ultrapassou algumas centenas de bilhões sem contar várias áreas como jogos, bilheteria, entre
outros. De acordo com a Amazon nos próximos dez anos o mercado eletrônico irá alcançar
entre 10% a 15% (FILIPINI, 2011).
No Brasil as vendas começaram a deslanchar no ano 2000 e desde então continuou
crescendo. Em 2011 faturou cerca de R$20 bilhões, sem contar com venda de carros, leilões e
passagens aéreas. É um bom faturamento levando-se o pequeno tempo de vida do e-commerce
no Brasil (FILIPINI, 2011).
O Brasil é um país privilegiado tratando-se de e-commerce e um dos principais lugares
do mundo para oportunidades de negócios (GUIA DE E-COMMERCE, 2013).
De acordo com dados do eBit, os clientes mais antigos de e-commerces estão
comprando com mais frequência, então tem-se deixado de ser uma novidade e transformado
em hábito (FILIPINI, 2011).
Filipini (2011) explica que para vender um produto em um e-commerce é preciso
oferecer algo que supra as necessidades do seu público alvo, entende-se que esse é um bom
produto. Pode ser um bem tangível, como um livro e um celular ou um produto digital, como
serviços de design e e-books. Alguns produtos possuem maior procura no mercado e por isso
podem ser uma escolha para quem quer começar um e-commerce. Alguns cuidados também
devem ser tomados para a escolha do produto oferecido de acordo com o perfil do cliente,
como baixo custo de frete, segurança por parte do cliente em já conhecer o produto comprado,
20

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.

Fonte: eBit - www.ecommerce.org.br


Figura 1 - Faturamento anual de vendas do e-commerce no Brasil em bilhões, desconsiderando venda
de automóveis, passagens aéreas e leilões on-line.

Para Guia de e-Commerce (2013), a plataforma de e-commerce deve ser escolhida de


acordo com as intenções da empresa e seu público alvo. Uma dessas escolhas deve ser a da
plataforma, que são três: open source, híbridas e a proprietária. Selecionar uma plataforma
errada pode engessar a empresa além de tornar traumática a experiência dos clientes se for
necessário realizar uma troca de plataforma posteriormente.
Plataformas open source são as de código aberto e gratuitas, oferecem baixos custos
de investimento inicial, porém não satisfazem todas as necessidades da empresa, fazendo com
que estas mudem posteriormente para alguma plataforma híbrida ou de código proprietário.
Alguns riscos nas plataformas open source são encontrados, como a necessidade da empresa
customiza- la exigindo um grande investimento e uma boa equipe, a descontinuação da
plataforma escolhida é também um grande problema para a empresa. Porém Guia de e-
21

Commerce (2013) afirma que existem muitas plataformas de cód igo livre que são boas e
seguras.

Tabela 1 - Produtos mais vendidos no varejo on-line no Brasil em 2011


Produtos mais vendidos %

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

Plataformas híbridas e proprietárias possuem boa customização para as necessidades


do cliente, como atender grupos de clientes específicos, além de segurança e atualização de
suas tecnologias. Com isso a empresa se mantém forte e competitiva no mercado (GUIA DE
E-COMMERCE, 2013).
Guia de e-Commerce (2013), afirma que para aumentar o número de vendas e clientes
é necessário algumas medidas de marketing, como o envio de e-mail marketing e promoções.
Os e-mails possuem muitas taxas de rejeição no Brasil, aproximadamente 64% dos e- mails
chegam aos seus destinatários. Promoções também devem ser feitas para clientes específicos,
sem longas durações e com benefícios certeiros. Para que seja eficiente tanto o envio de e-
mails marketing como promoções, deve-se segmenta-los a determinados clientes e separa- los
por regiões geográficas, idade, sexo, por produtos ou categorias.

2.2 Descoberta de Conhecimento em Banco de Dados

A Descoberta de Conhecimento de Banco de Dados, ou KDD (Knowledge Discovery


in Database), é um processo para descobrir padrões e tendências em bases de dados. Tem
como principal etapa a fase de mineração, que consiste em executar algoritmos específicos,
sob determinadas limitações para encontrar as relações dos dados (FAYYAD et al, 1996).
Conforme Fayyad et al. (1996), a Figura 2 demonstra as etapas do processo de KDD:
A. Seleção dos dados: o objetivo do problema deve ser bem entendido para poder ser bem
sucedida a seleção dos dados.
22

B. Pré-processamento: é a limpeza dos dados. A etapa em que são removidos os ruídos e


desvios será desenvolvida soluções para campos sem dados ou com dados errados e
feita a integração dos dados oriundos de diferentes sistemas.
C. Transformação: é a redução da base de dados e atributos, para deixar somente os
campos que forem necessários, já que utilizar a tabela inteira seria muito grande.
D. Técnicas e Padrões: definir quais serão as técnicas e funcionalidades utilizadas na
mineração.
E. Avaliação: é o resultado dos dados depois de passar pelas etapas, mas não
necessariamente seja o resultado final, pois pode necessitar voltar para outras etapas e
iterar entre elas até que o resultado seja considerado satisfatório.
F. Utilização: Neste ponto o usuário já possui o resultado final, podendo utilizar o
conhecimento descoberto pelo processo de KDD.

Fonte: Fayyad et al. (1996) apud Santos (2009)


Figura 2 - Etapas do processo de KDD
23

2.3 Data Mining

Data Mining, ou mineração de dados, é o processo de extrair dados brutos e


transforma- los em informações utilizando algumas técnicas e procedimentos, pode ser
entendida também como extração de conhecimento (SANTOS, 2009).
Conforme Côrtes, Porcaro e Lifschitz (2002), a mineração de dados faz parte de um
processo maior, o KDD. Porém, se tornou mais conhecido pelo fato de a etapa de separação
de conhecimento ser feito justamente neste processo. O KDD abrange todo o conteúdo de
descoberta de dados, e quando se fala em Data Mining, refere-se à extração de padrões dos
dados, sem os passos adicionais constituídos no KDD (ÁVILA, 1998 apud KREMER, 1999).
Historicamente a mineração de dados origina-se de várias matérias como: Estatística,
Banco de Dados, Inteligência Artificial, dentre outros. As regras de associação foram
introduzidas por Agrawal (GOLDSCHMIDT, 2010).
Muitas das ferramentas de Data Mining foram originadas nas décadas de 80 e 90,
através de pesquisas em inteligência artificial, e somente no final da década de 90 essas
técnicas foram transmitidas para bases de dados de grande escala, devido o aumento da
importância nas informações (FIGUEIRA, 98).
De acordo com Côrtes, Porcaro e Lifschitz (2002), a mineração de dados está se
tornando muito praticada, isso se dá pela necessidade de descobrir informações que até então
estavam perdidas ou que não podiam ser comprovadas. As ferramentas de Data Mining
podem guiar a novas decisões.
Com grande quantidade de dados em suas transações sendo armazenadas, as empresas
mostram grande interesse, já que todos esses padrões a serem minerados ajudam na tomada de
decisões (HAN; KAMBER, 2006). Um dos principais fatores do uso da mineração de dados
se dá pela necessidade da empresa de lucrar mais em seus negócios e de garantir estratégias
no mercado (GOLDSCHMIDT, 2010).
De acordo com Han e Kamber (2006), um dos erros que se comete é achar que o Data
Mining gera todos os conceitos automaticamente sem interferência de humanos. Para Côrtes,
Porcaro e Lifschitz (2002), a mineração de dados é um processo interativo entre homem e
máquina. E Edelstein (1999) afirma que não se pode esperar que o Data Mining faça tudo
automaticamente, é preciso uma orientação.
A mineração de dados não irá substituir um analista, e sim lhe dará uma ótima
ferramenta para que possa analisar os dados e demonstrar informações valiosas para a
empresa (EDELSTEIN, 1999).
24

Uma hierarquia de complexidade é quando se atribuí um significado especial ao dado,


transformando este em uma informação. Quando os analistas criam as regras, a interpretação
de fato é um conhecimento (FIGUEIRA, 1998). Edelstein (1999) mostra que o objetivo não
deve ser vago, deve ser específico, e que existem diversas diferenças entre resultados de
objetivos parecidos.
As etapas do Data Mining são interdependentes pois, são necessários as entradas da
etapa seguinte. Cada resultado depende do resultado anterior (HARRISON, 1998).

Fonte: Côrtes, Porcaro e Lifschitz (2002)


Figura 3 - Interatividade entre funcionalidades e técnicas da mineração de dados

A Figura 3 demonstra a interação entre algumas partes do sistema de funcionamento


de um Data Mining. Começando pelos objetivos do usuário, escolhendo as funcionalidades,
técnicas e algoritmos para processar na base de dados que podem ou não serem únicas. Esse
processo pode iterar quantas vezes forem necessárias até alcançar o resultado esperado
(CÔRTES; PORCARO; LIFSCHITZ, 2002).
Além de objetivos específicos, é preciso que o analista identifique a qualidade dos
resultados, e saber definir as colunas relevantes das irrelevantes em um banco de dados
(EDELSTEIN, 1999).
25

2.4 Técnicas de mineração

Vários autores demonstram técnicas de mineração de dados mais utilizadas e mais


adequadas para cada situação e descrevem suas funcionalidades de acordo com seus pontos de
vista, porém mantendo o mesmo padrão.
De acordo com Amo (2004), é preciso diferenciar tarefa de técnica de mineração de
dados. Onde a tarefa é o tipo de informação ou padrão que se está procurando, enquanto a
técnica são os métodos utilizados para descobrir esses padrões.
Principais técnicas de mineração de dados demonstradas por Amo (2004) e Côrtes,
Porcaro e Lifschitz (2002):
Regras de Associação: Muito conhecida como análise de cestas de venda, esta
funcionalidade tem como objetivo encontrar relacionamentos, ideal para trabalhar com
preferências, tendências e afinidades (CÔRTES; PORCARO; LIFSCHITZ, 2002). Uma regra
de associação determina os padrões encontrados em compras onde X=>Y, sendo X e Y
conjuntos de valores. Ao exemplo de um e-commerce, uma regra de associação pode informar
que “Clientes que compram celulares também compram capinhas de celulares”, este caso
apresenta um comportamento dos clientes dessa determinada loja. Regras de associação neste
caso são ideais para induzir os clientes a comprarem não só o celular, mas também as
capinhas de celulares. Unir esses produtos, coloca- los perto ou oferecer promoções em
conjunto são métodos para aumentar as vendas desses itens (AMO, 2004).
Padrões Sequenciais: Possuí a forma < , ... , >, e cada é um conjunto de itens. O
alinhamento desses conjuntos define a ordem cronológica dos fatos. Um exemplo pode ser na
expressão < {console Xbox}, {controle, jogo} > onde representa que “Os clientes que
compraram o console Xbox algum tempo depois compram um controle e um jogo” (AMO,
2004). Diferente das regras de associação, os padrões sequenciais são conjuntos de tuplas das
bases de dados. Os algoritmos de padrões sequenciais são parecidos com os de algoritmos
frequentes (RAMAKRISHNAN; GEHRKE, 2008).
Classificação e Predição: Cria classes pré-definidas de acordo com as características
dos dados (CÔRTES; PORCARO; LIFSCHITZ, 2002). “Classificação é o processo de
encontrar um conjunto de modelos (funções) que descrevem e distinguem classes ou
conceitos, com o propósito de utilizar o modelo para predizer a classe de objetos que ainda
não foram classificados”. Por exemplo, classificar os clientes como bons e maus compradores
ou classificar usuários por faixa etária (AMO, 2004).
26

Agrupame ntos (Clusters): Trabalha de modo diferente da classificação e predição


dos dados nos agrupamentos os dados não se encontram em ordem. Por exemplo, clientes
provenientes de um local na internet podem preferir comprar aos finais de semana, enquanto
clientes de outro local preferem fazer compras no meio da semana (AMO, 2004). É o
seguimento do conjunto de dados ou clusters para definir grupos de dados homogêneos e
heterogêneos. Diferente da classificação, o agrupamento não possui classes pré-definidas
(CÔRTES; PORCARO; LIFSCHITZ, 2002).
Exceções (Outliers): São dados que não apresentam um padrão, o que pode ser
considerado por alguns algoritmos como ruídos indesejados. Porém, ao analisar exceções
podem-se encontrar dados que possam significar algum raro evento. Por exemplo, o uso de
exceções para encontrar fraudes com cartões de crédito, onde uma compra por um cliente com
um valor muito alto, fora do seu padrão de compra (AMO, 2004).
Descrição: Torna mais clara as ideias, hipóteses ou fatos, como: Mulheres votam mais
em candidatas femininas do que os homens (CÔRTES; PORCARO; LIFSCHITZ, 2002).
Visualização: Tem como objetivo melhorar a visualização do usuário sobre
determinados conjuntos de dados, principalmente quando este ainda não está organizado. A
visualização é comumente utilizada com outras funcionalidades (CÔRTES; PORCARO;
LIFSCHITZ, 2002).
Focar nas funcionalidades facilita o desenvolvimento e análise prévia quando surgir
novas necessidades de novos dados. A partir desse método fica mais fácil escolher a
funcionalidade certa e a técnica que se deve aplicar (CÔRTES; PORCARO; LIFSCHITZ,
2002).
Ramakrishnan e Gehrke (2008), ainda descrevem algumas técnicas em regras de
associação:
Regras de Associação e Hierarquias de Categorias: para qualquer transação sob
uma hierarquia, todos seus itens possuem ancestrais do item na hierarquia. A hierarquia serve
para diferenciar os itens de seus níveis. O suporte de um conjunto só aumenta caso seja
substituído por uma hierarquia ancestral, como exemplo da Tabela 2, em que
{Tinta}=>{Suco} possuem 50% de suporte, porém se trocada por {Tinta} => {Bebidas},
aumentará em 75% itens (RAMAKRISHNAN; GEHRKE, 2008).
Regras de Associação Generalizada: As regras de associação não se resumem
apenas as compras de carrinho de produtos, elas podem identificar clientes ou trabalhar com
campos de data, por exemplo. Se em um dia essa Caneta é comprada, é provável que a Tinta
também seja comprada neste mesmo dia. Ou pode-se trabalhar com identificação de clientes,
27

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).

2.5 Regras de Associação

As regras de associação são algoritmos endereçados à análise de mercado, onde se tem


como objetivo, encontrar tendências dentro de um grande volume de registros. Com essas
tendências, é possível modificar propagandas e introduzir novos métodos de promoções e
marketing (FIGUEIRA, 1998).
As regras de associação são ditas como: Se um produto Caneta é comprado, então é
provável que o produto Tinta também seja comprado (Tabela 2). As associações são feitas
após a finalização de uma transação, onde a transação é o conjunto de todos os itens do
carrinho do cliente. As regras de associação seguem o modelo de LHS => RHS, em que LHS
significa left hand side e RHS significa right hand side. LHS seria o item comprado, ou seja, a
28

Caneta e o RHS o provável produto a ser comprado, a Tinta (RAMAKRISHNAN; GEHRKE,


2008).
As regras de associação podem utilizar vários tipos de técnicas, muitas delas são
conhecidas como técnicas de análise de cestas de produtos (CÔRTES; PORCARO;
LIFSCHITZ, 2002).
A tendência para as regras de associação é iterar várias vezes o processo de mineração
até encontrar os resultados esperados (JUNIOR, 2005).
Goldschmidt (2010) e Han e Kamber (2006) mostram que os algoritmos mais
clássicos das regras de associação são dívidas em duas etapas:
a) Encontrar os conjuntos de itens frequentes;
b) A partir desse conjunto de itens frequentes, gerar fortes regras de associação. Por
definição essas regras devem satisfazer o suporte mínimo e a confiança mínima.

2.5.1 Medidas em regras de associação

Amo (2004) descreve as seguintes medidas para regras de associação.


Nas regras de associação é necessário obter algumas medidas objetivas q ue indiquem
o grau de interesse que um padrão pode apresentar ao usuário. Uma regra de associação é
escrita como . O suporte de uma regra é a probabilidade de uma transação conter
conjuntos de itens, P ( ). E a confiança que medirá o grau de certeza de uma associação,
ou seja, a porcentagem de transações que contiverem os itens A e B.

Ramakrishnan e Gehrke (2008) define suporte de um conjunto de itens como "fração


de transações do banco de dados que contêm todos os itens dos conjuntos de itens".
E de acordo com Junior (2005), o suporte é dado pela frequência dos itens do
antecedente com o consequente, e a confiança é a frequência dos itens que formam o
consequente. O suporte é usado como parâmetro para diminuir o numero de regras a serem
geradas, enquanto a confiança é usada para medir as correlações. A confiança não deve ser
usada somente como método de medidas, mas devem ser usadas em conjunto com os outros
parâmetros de interesse.
29

Por convenção, escreve-se os valores de suporte e de confiança, de modo a ocorre r


entre 0% e 100%, em vez de 0 a 1,0 (HAN; KAMBER, 2006).

Tabela 2 - Exemplo de itens em uma tabela de banco de dados


Idtrans Idcli Data Item Qtd

111 201 5/1/99 Caneta 2

111 201 5/1/99 Tinta 1

111 201 5/1/99 Leite 3

111 201 5/1/99 Suco 6

112 105 6/3/99 Caneta 1

112 105 6/3/99 Tinta 1

112 105 6/3/99 Leite 1

113 106 5/10/99 Caneta 1

113 106 5/10/99 Leite 1

114 201 6/1/99 Caneta 2

114 201 6/1/99 Tinta 2

114 201 6/1/99 Suco 4

114 201 6/1/99 Água 1


Fonte: RAMAKRISHNAN; GEHRKE (2008)

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.

{Pão},{Manteiga}=>{Leite} (80.00, 50.00), ( JUNIOR, 2005)

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.

2.5.2 Técnica Apriori

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.

2.5.3 O algoritmo Apriori

Alguns passos para o entendimento e uso do algoritmo Apriori.


Proposto em 1994 pela equipe da IBM que deu origem ao software Intelligent Miner,
o Apriori é um algoritmo que resolve o problema de mineração de itemsets frequentes, ou
seja, com um suporte mínimo o algoritmo irá encontrar conjuntos de itens frequentes e um
banco de dados de transações (AMO, 2004).
De acordo com Amo (2004), o algoritmo Apriori possui três etapas principais:
1. Geração dos candidatos;
2. Poda dos candidatos;
3. Cálculo do suporte.
Antimonotonia da Relação ou Propriedade Apriori: se A ⊆ B, e A é um itemset
frequente, então B também é frequente, e o mesmo acontece se A não for frequente, então B
32

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

Segundo Junior (2005), o objetivo de visualizar informações é revelar padrões


contidos nos dados, ou mesmo irregularidades que podem alterar seu entendimento. A
33

diferença entre a mineração de dados feita somente com algoritmo, a visualização da


informação pode ajudar o usuário a encontrar "padrões e anomalias apenas visualizando as
representações gráficas dos dados". A visualização também pode ajudar o usuário a encontrar
a origem dos dados, as preparações necessárias, os algoritmos de Data Mining utilizados e
seus devidos resultados. Uma terceira maneira seria o usuário participar direto no processo de
mineração, visualizando em tempo real e alterando o que ele achar necessário.

Fonte: JUNIOR (2005)


Figura 4 - Exemplos de visualização de dados

A figura 5 demonstra alguns gráficos clássicos como histogramas, scatter-plot, o


gráfico de pizza e o box-plot.
Junior (2005) separa em duas técnicas de organização de regras em que a primeira é a
matriz de suporte x confiança, e na segunda é a técnica de grafos.
34

Fonte: JUNIOR (2005)


Figura 5 - Matriz suporte x confiança

Os eixos representam o suporte e a confiança de regras, em que cada valor é


representado pela localidade de seu ponto em relação ao suporte e a confiança (ONG et al,
2000).
Existem várias vantagens nestas técnicas, como por exemplo: apontar volumes
elevados de regras ou com muitos itens, demonstrar uma visão geral das regras e simplificar
aos usuários a visualização dessas regras. Porém, possui a desvantagem de acumular pontos
sobre pontos, dependendo do espaço entre os eixos (JUNIOR, 2005). Mostrado na figura 6.
"A maneira mais popular de organizar as regras em matriz é distribuir o conjunto de
itens ao longo de dois eixos perpendiculares, um deles representando o antecedente e o outro
representando o consequente". São formas geométricas com características gráficas - como
cor e forma - que definem os pontos de interesse (JUNIOR, 2005). Algumas ferramentas
famosas que utilizam dessas visualizações gráficas como: IBM Intellingent Miner e DBMiner.
35

Fonte: JUNIOR (2005)


Figura 6 - Exemplos de programas que usam grafos

Os nodos das técnicas de grafos representam os conjuntos de itens, enquanto as


arestas representam as regras. Os nodos de origem representam os antecedentes e os de
destino representam os consequentes (JUNIOR, 2005).
Capítulo

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

Fonte: Elaboração do autor


Figura 7 - Etapas de execução para conclusão da pesquisa

3.1 Seleção de Dados

Antes de selecionar os dados, foi estudada a plataforma utilizada pelas empresas,


assim foi possível entender melhor que tipos de informações são usados e armazenados por
estas. A plataforma de e-commerce utilizada pelas empresas Alta Books e Brasport, é
chamada CS-Cart 3 , que é uma plataforma russa de código fechado. Os bancos de dados estão
em MySQL com tabelas no formato MyISAM.
Todas as tabelas utilizadas para o projeto foram deixadas na estrutura real delas se m
precisar alterar nenhum campo. Com isso foi economizado tempo nesta fase do trabalho, além
de permitir que a ferramenta Mining Cart possa expandir-se para uma versão voltada para a
plataforma CS-Cart em um trabalho futuro.
Foram encontradas muitas tabelas pelas quais poderiam ser trabalhadas com regras de
associação, muitas delas são utilizadas para guardar informações sobre os clientes e suas
compras, porém essas foram evitadas para cumprir com a restrição das empresas em utilizar
tais informações. É interessante expor que para utilizar todos esses dados dispostos nessas
bases seria necessário à criação de uma ferramenta muito completa e abrangente e que se as
empresas minerassem todos esses dados, poderiam ter uma enorme fonte de informações para
serem trabalhadas em prol de seus clientes e produtos, e nas áreas de marketing e vendas.

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:

Tabela 3 – Campos utilizados da tabela cscart_order_details


Nome do campo Ti po Descrição
order_id MEDIUMINT ID do pedido
product_id MEDIUMINT ID do produto
Fonte: Elaboração do autor

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:

Tabela 4 – Campos utilizados da tabela cscart_product_descriptions


Nome do Campo Ti po Descrição
product_id MEDIUMINT ID do produto
product VA RCHAR No me do produto
Fonte: Elaboração do autor

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.

Tabela 5 – Campos utilizados da tabela cscart_products_categories


Nome do Campo Ti po Descrição
product_id MEDIUMINT ID do produto
category_id MEDIUMINT ID da categoria
Fonte: Elaboração do autor

A tabela cscart_category_descriptions foi necessária para obter os nomes das categorias de


cada produto.

Tabela 6 – Campos utilizadosda tabela cscart_category_descriptions


Nome do Campo Ti po Descrição
category_id MEDIUMINT ID da categoria
category VA RCHAR No me da categoria
Fonte: Elaboração do autor

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.

3.2 Desenvolvimento do aplicativo web

A ferramenta foi criada para completar a etapa de processamento do Data Mining, e


com isso foi evitada o uso de outro software que faça este trabalho de mineração. Com certeza
existem várias ferramentas com várias funcionalidades que supriria todas as necessidades
desse projeto, porém não só o tempo para entender o funcionamento de uma ferramenta já
41

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.

3.2.1 Tecnologias utilizadas

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

3.2.2 Desenvolvimento da ferramenta

A primeira etapa do desenvolvimento da ferramenta foi encontrar o algoritmo Apriori


em PHP. Como não foi encontrado o algoritmo nessa linguagem então procurou-se em outras,
na expectativa de diminuir o tempo do desenvolvimento, e então foi encontrado o algoritmo
no formato de stored procedure.
Seguiu o desenvolvimento com o planejamento da ferramenta, ou seja, o que seria
abordado por ela, quais os resultados deveriam ser gerados de forma a ajudar as empresas.
Também foi levado em conta o que o algoritmo Apriori proporc ionava ao trazer os resultados
de sua execução. Então na primeira etapa foi concluído que a ferramenta deveria exibir no
mínimo os campos de antecedente, consequente, suporte e confiança.
A segunda etapa do desenvolvimento foi planejar quais telas seriam necessárias para
que fosse possível exibir os resultados necessários da mineração. Definiu-se nesta etapa o uso
de pelo menos duas páginas, uma com a chamada do algoritmo e outra para exibir os
resultados que poderia ser tanto na tela do sistema como em arquivo de planilha.
Como a situação do projeto se divide em duas empresas, foi necessária apenas a
mudança no final do nome das tabelas inserindo o nome da empresa após o nome padrão
destas tabelas. Por exemplo, a tabela cscart_products_categories ficou
cscart_products_categories_altabooks e cscart_products_categories_brasport, isso evita a
confusão na hora de gerar os resultados.
O desenvolvimento logo conseguiu tomar forma com a ajuda do framework escolhido,
e com as facilidades deste, pode ser criadas mais páginas e com mais detalhes sobre os
resultados da mineração. A velocidade de programação superou as expectativas e conseguiu
completar os pré-requisitos do sistema na metade do tempo esperado.
O projeto da ferramenta caminhou junto ao algoritmo Aprio ri, sendo este executado
sempre com uma tabela de testes com poucos dados, e isso possibilitou o conserto precoce
dos erros que foram surgindo. Até o fim do projeto não houve qualquer preocupação com a
velocidade de processamento, pois o algoritmo conseguiu executar de forma rápida a
mineração dos dados de teste.
Cada página desenvolvida possui dados mais complexos, por isso foram separadas em
outros capítulos para serem explicadas por partes.
43

3.2.2.1 Página com a chamada do algoritmo Apriori

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.

Fonte: Elaboração do autor


Figura 8 – Formulário para chamado do Apriori

O formulário da chamada do algoritmo Apriori possui cinco campos, sendo três


obrigatórios: tabela de pedidos, suporte e confiança. Também foram inseridas as instruções na
tela para o usuário entender como preencher cada campo.
1. Campo de Tabela de Pedidos: Mostra para o usuário do sistema todas as tabelas de
transações de pedidos. O conceito deste select é buscar do banco de dados todas as
44

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.

3.2.2.2 Página com a listagem dos padrões

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

resposta do suporte e da confiança são diferentes, pois é calculada a frequência do


antecedente para fazer as contas do suporte e da confiança de cada regra.
A análise por padrões pode ser feita buscando produtos que possuem um suporte
maior que o padrão exibido nas outras regras e com uma confiança alta. Esses valores cabem
ao usuário decidir se estão de acordo com as necessidades buscadas na ferramenta. O usuário
também pode fazer uma busca por outros tipos de padrões, por exemplo, o usuário pode
identificar que a maior parte de suas vendas em produtos conjuntos é feita a partir de duas
categorias. Quanto maior o conhecimento do usuário sobre mineração de dados e sobre a loja
minerada, maiores as chances de ele encontrar os padrões corretos.
A página da figura 10 possui quatro colunas com os resultados gerados pelo algoritmo
Apriori.
1. Coluna de Antecedente: Nome do produto antecedente.
2. Coluna de Consequente: Nome do produto consequente.
3. Coluna de Suporte: Exibe o suporte da regra dos produtos antecedentes e
consequentes.
4. Coluna de Confiança: Exibe a confiança da regra dos produtos antecedentes e
consequentes.
As regras exibidas estão paginadas de vinte em vinte itens. A ordenação desses itens
está padronizada por ordem decrescente do suporte, ou seja, as regras com maior suporte
serão exibidas primeiras. O usuário também pode ordenar pela coluna desejada clicando
no nome do cabeçalho da mesma. O sistema também aceita pesquisa por coluna, podendo
filtrar as regras inclusivo de forma condicional, como exemplo, pode-se procurar todos os
suportes que sejam maiores que 40% e que seja de um produto específico.
Abaixo da paginação está o item exportar dados, que exporta todas as regras dessa
página para uma planilha de excel. Os itens são exportados de acordo com o filtro ou
ordenação das colunas que o usuário realizou. Essa planilha foi entregue com os
resultados de cada loja para os administradores das páginas. A planilha exportada pelo
usuário também serve como comparação entre as datas de mineração, pois o usuário pode-
se comparar posteriormente os resultados e descobrir novos padrões ou alguma nova
tendência de produtos que seus clientes começaram a desenvolver.
46

Fonte: Elaboração do autor


Figura 9- Listagem dos padrões

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

1. Regra (ID): Exibe a regra da forma do ID do produto antecedente => ID do produto


consequente.
2. Frequência do Antecedente: Mostra a taxa de frequência apenas do antecedente, ou
seja, quantas vezes ele foi comprado em relação ao número de total de transações da
loja. Essa informação é importante para saber se o produto é frequente, ou seja, ele
deve ser maior ou igual ao valor de suporte para estar nas regras do algoritmo Apriori.
Os números da frequência estão em porcentagem.
3. Categorias do antecedente e consequente: Exibe ao usuário a categoria principal do
produto antecedente e do produto consequente. Essa informação foi uma sugestão do
usuário da Alta Books, que para ela seria uma informação que a ajudaria na análise da
regra.

Fonte: Elaboração do autor


Figura 10 - Detalhes da regra

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 página exibida na figura 11 trabalha com o CDetailView do Yii, que lista os


detalhes do método search do modelo de regras. No controlador de regras, é executado mais
uma consulta ao banco de dados para trazer as categorias principais dos produtos antecedente
e consequente.
As tabelas do banco de dados requisitados pelo modelo de regras são puxadas
dinamicamente pelo controlador de regras, este por sua vez recebe o nome da loja executada
na tela de chamada do algoritmo Apriori.

3.2.2.3 Página de produtos

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.

Fonte: Elaborado pelo autor


Figura 11 – Listagem dos produtos
49

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.

3.2.2.4 Página de gráficos

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.

Fonte: Elaboração do autor


Figura 12 - Gráficos

Os gráficos fazem parte do controlador de regras. A função actionGraficos é a


responsável por fazer o select no banco de dados e trazer os dez resultados ordenados pelo
maior suporte.
São representadas em modo gráfico as dez regras com maior suporte. Utiliza somente
a tabela regras_nomedaempresa para exibir os valores de suporte e confiança da regra dos
50

produtos. A cor de suporte deste gráfico em hexadecimal é #F1EAB9 e a cor em hexadecimal


da confiança é #A03900.

3.3 Algoritmo Apriori

O algoritmo Apriori utilizado neste projeto foi encontrado em um artigo chamado


"Algoritmo apriori no Mysql utilizando procedure" (MELO, 2008), que demonstra o
funcionamento do algoritmo Apriori utilizando stored procedure, juntamente com seu código.
Como não foi encontrado nenhum código do algoritmo Apriori em PHP, a escolha por
implantar o stored procedure foi a melhor opção, pois o código já estava pronto para uso e
isso resultou em uma diminuição do tempo considerável no projeto.

3.3.1 Mudanças no código

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

Foram criados três storeds procedure para poder executar as especificações do


sistema, cada um deles trabalha com parâmetros diferentes, por isso a necessidade de criar
outras procedures ao invés de reaproveitar o código.
1. Procedure apriori_sc: é passado por parâmetro o suporte, a confiança e o nome da
empresa.
2. Procedure apriori_x: este é executado quando o usuário escolhe qual o produto
antecedente ele deseja ver apenas, neste stored procedure é passado por parâmetro o
ID do produto antecedente, o suporte, a confiança e o nome da empresa.
3. Procedure apriori_xy: é chamada quando o usuário precisa de um antecedente e um
consequente específico, nesta stored procedure é passado por parâmetro o ID do
produto antecedente, o ID do produto consequente, o suporte, a confiança e o nome da
empresa.
Os storeds procedure apriori_x e apriori_xy são mais rápidos para gerar as regras, já
que elas buscam por produtos específicos ignorando os outros que não sejam procurados pelo
usuário. Usar um critério diferente de zero no campo de suporte também gera consultas mais
rápidas, pois o algoritmo dispensa todo antecedente que não seja frequente (Antimonotonia da
Relação).
Pelo parâmetro de empresa ser do tipo char, foi necessário utilizar os comandos
concat, prepare e execute. Sem isso é gerado um erro na chamada dos procedures. É usado o
concat toda vez que é necessário utilizar o parâmetro empresa, não sendo necessário para os
outros parâmetros.
Outras modificações foram: removida a linha que apaga os registros da tabela de
regras, já que essa é criada automaticamente toda vez que se executa o procedure, removido
também a linha de execução que apaga todos os registros que possuem confiança menor que o
transmitido pelo usuário, e criado o cálculo para gravar os valores de confiança na tabela de
regras.

3.3.2 Funcionamento do código

O stored procedure recebe por parâmetro os valores enviados pelo formulário da


página de entrada (home) e então começa com um select na tabela de pedidos da empresa
selecionada, contando o número de transações únicas e inserindo o resultado em uma variável
chamada total.
52

Em seguida é criada uma tabela temporária com os campos ID (chave primaria),


product_id (ID do produto antecedente) e freq (frequência do produto antecedente). No
próximo comando é feito a inserção dos dados nessa tabela temporária executando um select
na tabela cscart_order_details com uma condição onde a frequência do antecedente deve ser
maior ou igual ao suporte mínimo exigido pelo usuário, com isso diminui-se o tempo de
execução do algoritmo. Então é criada uma variável auxiliar para conter o total de registros
obtidos da tabela temporária.
Por fim, é iniciado o while que irá executar até o contador ser maior que o total
auxiliar. Dentro desse while é feito um insert que uni os registros da tabela temporária com os
novos dados obtidos a partir de um novo select na tabela de pedidos, estes serões os dados do
produto consequente. Dentro desse insert ainda é criado o suporte e a confiança das regras.
Novamente a condição de suporte mínimo é realizada em conjunto com a confiança mínima
para obter somente os dados relevantes ao usuário.

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

Os resultados foram baseados nas regras geradas e na experiência dos representantes


das empresas Alta Books e Brasport ao utilizar o sistema. Para realizar os testes na ferramenta
e entender os resultados, foi chamado um representante de cada empresa, ambos são
responsáveis pelo gerenciamento de produtos, promoções e conteúdo dos seus respectivos e-
commerces.
Quanto maior o número de transações e menor o número de produtos que a loja
possui, maiores as chances de se obter um suporte alto. Qua nto à confiança da regra, as
probabilidades de se ter uma confiança alta é maior quando a frequência do antecedente ou o
suporte da regra é menor.
As regras geradas nas duas bases de dados não mostraram nenhum padrão inovador
entre os produtos comprados em ambas às empresas. Também não houve nenhuma regra com
um valor alto de suporte e nenhuma que se destaque ou que saia do padrão desses valores.
Apesar da base de dados da Brasport conter cerca de dez mil registros de transações a mais
que a loja da Alta Books, as duas mantiveram o mesmo padrão nos resultados.
Mesmo com resultados não suficientemente satisfatórios, os representantes das
empresas ficaram bastantes interessados em saber quais os livros eram mais comprados em
conjunto e saber quais os produtos mais frequentes que possuem.
O último processamento do Apriori foi feito no dia 12/06/2014, então os resultados
obtidos são baseados nos registros dessa data. As transações utilizadas da base de dados das
empresas não distinguem se os status dessas estão como aprovados ou cancelados, já que o
algoritmo não utiliza essa informação como critério para gerar as regras.
Também foram realizadas três perguntas para cada representante da empresa, com a
finalidade de entender melhor o seus pontos de vista sobre o assunto. Essa pesquisa foi
realizada no dia 13/06/2014.
1. O que achou do sistema?
2. Os resultados gerados foram interessantes?
3. O que pretende fazer no futuro com esses resultados?
54

4.1 Resultados da Alta Books

A Alta Books na última execução do programa possuía 768 produtos únicos, 40


categorias e 8.607 transações. Ao executar o Apriori, foram obtidos 10.912 regras, sem fazer
qualquer restrição de suporte, confiança ou produtos.
O valor de suporte mais alto gerado foi de 0.5% e o valor mais baixo foi de 0.02%. A
confiança manteve valores altos, com um valor máximo de 100% e um valor mínimo de
0.62%. Todas as regras com valores de 100% de confiança não ultrapassaram 0.05% de
suporte. Os seis produtos com maior suporte são mostrados na figura 14.
O produto com maior frequência foi "OCA Oracle Database 11g: Fundamentos I
SQL" com 3.23%, porém não conseguiu alcançar bons resultados de suporte e confiança em
nenhuma regra. Apesar de ser mais provável de se alcançar valores altos de suporte com uma
maior frequência de vendas do produto, essas regras comprovam que nem sempre isso é
verdade.

Fonte: Elaboração do autor


Figura 13 – Os seis produtos com maior suporte na empresa Alta Books

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.

4.2 Resultados Brasport

A Brasport na última execução do programa possuía 526 produtos únicos, 69


categorias e 18.818 transações.
56

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.

Fonte: Elaboração do autor


Figura 14 - Regras entre os livros "Gerenciamento de Projetos Guia do Profissional"

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

Os padrões encontrados seguem os mesmos resultados da Alta Books: Livros de uma


mesma categoria ou série são comprados constantemente em conjunto. Sendo mais específico
para o resultado mostrado na figura 15, foi sugerido ao representante da Brasport que
poderiam focar um pouco mais nas vendas da série "Gerenciamento de Projetos Guia do
Profissional".
Respostas das perguntas realizadas pelo representante da Brasport.
Resposta da primeira pergunta: Considerou o entendimento de regras de associação
e da mineração de dados um pouco confuso, assim como o representante da outra empresa,
mas achou a ferramenta de fácil interpretação para os resultados e muito simples para o
manejo.
Resposta da segunda pergunta: Gostou muito dos resultados e achou muito
interessante o conhecimento gerado pela ferramenta. O representante da empresa gostou
principalmente de saber sobre a frequência de alguns produtos e por isso também achou muito
útil o filtro na página de regras, pois assim seria fácil procurar por livros específicos.
Resposta da terceira pergunta: O representante pretende utilizar as informações para
a criação de novas promoções baseadas nos resultados e possivelmente algumas vendas
conjuntas de produtos da categoria de “Gerenciamento de projetos”.
Capítulo

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.

5.1 Trabalhos futuros

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

AMO, Sandra de. Técnicas de Mineração de Dados. Universidade Federal de Uberlândia,


2004. Disponível em <http://www.lsi.ufu.br/documentos/publicacoes/ano/2004/JAI-
cap5.pdf> Acessado em: 01 jun. 2013.

CÔRTES, Sérgio da C; PORCARO, Rosa M.; LIFSCHITZ, Sérgio. Mineração de Dados –


Funcionalidades, Técnicas e Abordagens. PUC-Rio, 2002. Disponível em:
<ftp://ftp.inf.puc-rio.br/pub/docs/techreports/02_10_cortes.pdf>. Acesso em: 4 jun. 2013.

EDELSTEIN, Herbert A. Introduction to Data Mining and Knowledge Discovery. 3. ed.


Potomac, MD: Two Crows Corporation, 1999. 36 p.

FAYYAD et al, Usama; PIATETSKY-SHAPIRO, Gregory; SMYTH, Padhraic. The KDD


Process for Extracting Useful Knowledge from Volumes of Data, ACM, 1996.

FELIPINI, Dailton. ABC do E-comme rce: Os quatro segredos de um negócio bem-sucedido


na internet. 3. ed. Lebooks, 2011. Disponível em: < http://www.abc-commerce.com.br/down-
modelo/abc-4segredos-cli.pdf >.

FIGUEIRA, Rafael Medeiros Andrade. Miner: Um Software de Inferência de Dependências


Funcionais. Monografia (trabalho de conclusão de curso) – Universidade Federal do Rio de
Janeiro, Rio de Janeiro, 1998.

GUIA DE E-COMMERCE. APADi, 01 mar. 2013. Disponível em:


<http://www.apadi.com.br/uploads/2013/03/Guia_eCommerce_APADi_2013_web.pdf>.

GOLDSCHMIDT, Ronaldo R. Mineração de Dados: Aplicação Prática em Pequenas e


Empresas. Disponível em: <http://www.fij.br/revista/arq/vol01_01/datamining.pdf>. Acesso
em: 19 maio 2013.

HAN, Jiawei; KAMBER, Micheline. Data mining: concepts and techniques. 2. ed. San
Francisco: Elsevier, 2006. (Morgan Kaufmann Publishers).
62

HARRISON, Thomas H. Intranet Data Warehouse. São Paulo: Berkeley, 1998.

INMON, William H. Como Construir o Data Warehouse. 4. ed. Rio de Janeiro :


Campus, 1997.

KREMER, Ricardo. Sistemas de Apoio à Decisão para Previsões Genéricas Utilizando


Técnicas de Data Mining. 1999. 89 f. Monografia (trabalho de conclusão de curso) -
Universidade Regional de Blumenau, Blumenau, 1999.

JUNIOR, Fernando A. N. Visualização de Regras de Associação. 2005. 79 f. Monografia


(pós-graduação) - Universidade Federal de Minas Gerais, Belo Horizonte, 2005.

MELO, Humberto G. de. Algoritmo apriori no Mysql utilizando procedure. 2008.


Disponível em: <http://www.devmedia.com.br/algoritmo-apriori- no-mysql-utilizando-
procedure/9930>. Último acesso em: 14 de jun. 2014.

MITCHELL, Tom M. Machine Learning. Mcgraw - Hill, 1997.

OLIVEIRA, Adelize Generini de. Data Warehouse: Conceitos e Soluções. Florianópolis:


Advanced, 1998.

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.

QUEIROGA, Rodrigo M. Uso de Técnicas de Data Mining para Detecção de Fraudes em


Energia Elétrica. 140 f. Dissertação (mestrado) - Universidade Federal do Espírito Santo,
Vitória, 2005.

RAMAKRISHNAN, Raghu; GEHRKE, Johannes. Sistemas de Gerenciamento de Banco de


Dados. 3. ed. São Paulo: McGraw-Hill, 2008.
63

SANTOS, Rafael. Conceitos de Mineração de Dados na Web. XV SIMPÓSIO


BRASILEIRO DE SISTEMAS MULTIMÍDIA E WEB. Fortaleza: Webmedia, 2009.
Disponível em:
<http://www.lac.inpe.br/~rafael.santos/Docs/WebMedia/2009/webmedia2009.pdf>. Acesso
em: 02 jun. 2013.

SILBERSHATZ, Abraham; KORTH, Henry F.; SUDARSHAN, S. Sistema de Banco de


Dados. Rio de Janeiro: Elsevier, 2006.

TAURION, Cezar. Data Warehouse: Vale a pena gastar milhões investindo em


um? Developers’ Magazine. Rio de Janeiro, v 1, n. 18, fev. 1998.
64

APÊNDICE A - Algoritmo Apriori original

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 */

insert into 1_item(prdno,freq) select prdno,ROUND(100*count(prdno)/@total,2) as freq


from vendas
group by prdno
having freq >= sup_min;

select @total_aux:=count(*) from 1_item;


set @i:=1;

/* nesse while verifico as associacoes dos 1 itens classificados acima */


while @i <= @total_aux do
select @cod:=prdno,@freqx:=freq from 1_item where id=@i;
insert into regras
select @cod,prdno,@freqx,ROUND(100*count(prdno)/@total,2) as freq
from vendas where trans in(select trans from vendas where prdno=@cod)
and prdno <> @cod group by prdno having freq >=sup_min; /*nessa linha filtro os
produtos que sairam com o outro produto
set @i:=@i+1;
end while;
65

/* 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

APÊNDICE B - Algoritmo Apriori, stored procedure apriori_sc

DELIMITER $$
DROP PROCEDURE IF EXISTS `apriori_sc` $$
CREATE PROCEDURE `apriori_sc`(in sup_min integer, in conf_min integer, in empresa
char(50))

BEGIN

DROP TABLE IF EXISTS antec;

/* Conta o total de linhas de pedidos e atribui à variável @total */

SET @s = CONCAT('SELECT @total := COUNT(DISTINCT order_id) AS total


FROM cscart_order_details_', empresa);
PREPARE stmt FROM @s;
EXECUTE stmt;

/* Criação da tabela temporaria para o antecedente */

CREATE temporary table antec(


id int not null auto_increment primary key,
product_id int not null,
freq float not null
);

/* Inserindo na tabela temporaria o antecedente de acordo com o suporte minimo


definido no parametro de entrada */

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;

SELECT @total_aux := COUNT(*) FROM antec;

SET @contador := 1;

/* Nesse WHILE é verificado as associações do antecedente classificado acima */

WHILE @contador <= @total_aux DO

SELECT @antecedente := product_id, @freqx := freq


FROM antec
67

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;

SET @contador := @contador + 1;

END WHILE;

END $$
DELIMITER ;
68

APÊNDICE C - Algoritmo Apriori, stored procedure apriori_x

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

DROP TABLE IF EXISTS antec;

/* Conta o total de linhas de pedidos e atribui à variável @total */

SET @s = CONCAT('SELECT @total := COUNT(DISTINCT order_id) AS total


FROM cscart_order_details_',empresa);
PREPARE stmt FROM @s;
EXECUTE stmt;

/* Criação da tabela temporaria para o antecedente */

CREATE temporary table antec(


id int not null auto_increment primary key,
product_id int not null,
freq float not null
);

/* Inserindo na tabela temporaria o antecedente de acordo com o suporte minimo


definido no parametro de entrada */
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,'
WHERE ',prodX,' = product_id
GROUP BY product_id
HAVING freq >= ',sup_min
);
PREPARE stmt FROM @s;
EXECUTE stmt;

SELECT @total_aux := COUNT(*) FROM antec;

SET @contador := 1;

/* Nesse WHILE é verificado as associações do antecedente classificado acima */

WHILE @contador <= @total_aux DO

SELECT @antecedente := product_id, @freqx := freq


69

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;

SET @contador := @contador + 1;

END WHILE;

/* Deleta todas as linhas de regra_empresa que não estão de acordo com a confiança
esperada */

SET @s = CONCAT('DELETE FROM regras_',empresa,' WHERE confianca <


',conf_min);
PREPARE stmt FROM @s;
EXECUTE stmt;

END $$
DELIMITER ;
70

APÊNDICE D - Algoritmo Apriori, stored procedure apriori_xy

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

DROP TABLE IF EXISTS antec;

/* Conta o total de linhas de pedidos e atribui à variável @total */

SET @s = CONCAT('SELECT @total := COUNT(DISTINCT order_id) AS total


FROM cscart_order_details_',empresa);
PREPARE stmt FROM @s;
EXECUTE stmt;

/* Criação da tabela temporaria para o antecedente */

CREATE temporary table antec(


id int not null auto_increment primary key,
product_id int not null,
freq float not null
);

/* Inserindo na tabela temporaria o antecedente de acordo com o suporte minimo


definido no parametro de entrada */
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,'
WHERE ',prodX,' = product_id
GROUP BY product_id
HAVING freq >= ',sup_min
);
PREPARE stmt FROM @s;
EXECUTE stmt;

SELECT @total_aux := COUNT(*) FROM antec;

SET @contador := 1;

/* Nesse WHILE é verificado as associações do antecedente classificado acima */

WHILE @contador <= @total_aux DO

SELECT @antecedente := product_id, @freqx := freq


71

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;

SET @contador := @contador + 1;

END WHILE;

/* Deleta todas as linhas de regra_empresa que não estão de acordo com a confiança
esperada */

SET @s = CONCAT('DELETE FROM regras_',empresa,' WHERE confianca <


',conf_min);
PREPARE stmt FROM @s;
EXECUTE stmt;

END $$
DELIMITER ;

Você também pode gostar