Livia Fonseca FracalanzaMineração de Dados voltada para Recomendação no Âmbito de                                Marketing...
Livia Fonseca FracalanzaMineração de Dados voltada para Recomendação no           Âmbito de Marketing de Relacionamento   ...
Todos os direitos reservados. É proibida a reprodução totalou parcial do trabalho sem autorização da universidade, daautor...
AgradecimentosAgradeço à minha família pelo apoio de sempre, por torcerem por mim e peloamor incondicional.Todos os meus a...
Resumo     Fracalanza, Livia Fonseca; Casanova, Marco Antonio; Mineração de     Dados voltada para Recomendação no Âmbito ...
Abstract     Fracalanza,     Livia     Fonseca;     Casanova,       Marco     Antonio;.     Recommendation based on Data M...
Sumário1 Introdução                              101.1. Motivação                            111.2. Objetivos             ...
3.4.3. Buscando a Clique de Tamanho Máximo         294 Testes e Resultados                              314.1. Descrição d...
Lista de figurasFigura 1 Etapas para descoberta de conhecimento                                 16Figura 2 Iteratividade e...
1 Introdução1Introdução      A digitalização da sociedade juntamente com a difusão da Internet e aglobalização trazem a ne...
1 Introdução                                                                       11      Geralmente, os dados armazenado...
1 Introdução                                                                          12        Estudar o processo de desc...
1 Introdução                                                                         13      Burke [15] define três tipos ...
1 Introdução                                                                         14os resultados dos testes. Por fim, ...
2 Mineração de Dados2Mineração de Dados        A mineração de dados, ou data mining, é uma das principais etapas do proces...
2 Mineração de Dados                                                                      16        Fayyad et. al [4] divi...
2 Mineração de Dados                                                                  172.2.Tipos de Predição      Por tip...
2 Mineração de Dados                                                                  18características das classes pré-de...
2 Mineração de Dados                                                                  192.3.1.Algoritmo Genético      Simu...
2 Mineração de Dados                                                                  20ocorrem em comum dentro de um conj...
2 Mineração de Dados3Market Basket Analysis - MBA      Market basket analysis (MBA) ou, em português, análise da cesta de ...
3 Market Basket Analysis – MBA                                                        223.1.Marketing de Relacionamento   ...
3 Market Basket Analysis – MBA                                                      23      Em resumo, para auxiliar nas t...
3 Market Basket Analysis – MBA                                                        24      A importância de uma regra d...
3 Market Basket Analysis – MBA                                                       253.3.1.Artificial Immune System     ...
3 Market Basket Analysis – MBA                                                        26                  Figura 4 Exemplo...
3 Market Basket Analysis – MBA                                                       27todos os conjuntos de itens frequen...
3 Market Basket Analysis – MBA                                                       28ponderação nas arestas. O objetivo ...
3 Market Basket Analysis – MBA                                                          29peso das arestas do clique ponde...
3 Market Basket Analysis – MBA                                                          30      Na seção 3.4.2 foi apresen...
4 Testes e Resultados4Testes e Resultados      Para o desenvolvimento deste trabalho, as estruturas e tecnologia das bases...
4 Testes e Resultados                                                               32ODBC, é genérico a qualquer tipo de ...
4 Testes e Resultados                                                               33      Uma vez conectado, a lista de ...
4 Testes e Resultados                                                               34      Durante o processamento, infor...
4 Testes e Resultados                                                               35• 1 variável com a quantidade de vez...
4 Testes e Resultados                                                          36Produto : CITICARD_N_NAOAdjacências:CITIF...
4 Testes e Resultados                                                                 37 - CITICARD_NAO - CITI_MAX_NAO - F...
4 Testes e Resultados                                                                38Cálculo das relações durou 32625ms ...
4 Testes e Resultados                                                  39 - ESTCIVIL_-_NAO - FX_AB_-_NAO - CITIFINANCIA_-_...
5 Conclusão e Trabalhos Futuros                                                     405Conclusão e Trabalhos Futuros5.1.Co...
5 Conclusão e Trabalhos Futuros                                                    415.2.Trabalhos Futuros     Como sugest...
5 Conclusão e Trabalhos Futuros                                                  42             A introdução de medidas, c...
6 Referências6Referências   [1]   SANDRI. A.; Detecção e Prevenção de Fraudes utilizando Inteligência         Artificial. ...
6 Referências   [14] ADOMAVICIUS, G., TUZHILIN, A.; Toward the Next Generation of        Recommender Systems: A Survey of ...
7 Apêndice A7APÊNDICE A – Código da ImplementaçãoUnit Main – Main.pas(****************************************************...
7 Apêndice A  VarListBox: TRzCheckList;  procedure FormCreate(Sender: TObject);  procedure FormDestroy(Sender: TObject);  ...
7 Apêndice Avar reg : TRegistry; List : TStrings;begin reg := TRegistry.Create; List := TStringList.Create; try   reg.Root...
7 Apêndice A if RzOpenDialog1.Execute then   FFilePath:= RzOpenDialog1.FileName;// FileEdt.Text:= FFilePath; //Create MBA ...
7 Apêndice A        inc(i);      end;    FLogViewer.LogUpdate (IntToStr(i) +  transações lidas.);  finally    CloseFile(Ma...
7 Apêndice A  Image.Save(ImageFileName); WebBrowser1.Navigate(file:/// + Path + Graph_image.gif);end;(********************...
7 Apêndice A     List := TStringList.Create;     try       if ODBCConnect.Connected then         ShowMessage (Conectado!) ...
7 Apêndice A  begin   ShowMessage (Por favor, selecione um dataset!);   Exit;  end; List := TStringList.Create; VarListBox...
7 Apêndice A          VarListStr := VarListStr + #34 + SelList[Jx] + #34;          Inc (Jx);        end;      end;  end; F...
Dissertação de mestrado_livia_versao_final
Dissertação de mestrado_livia_versao_final
Dissertação de mestrado_livia_versao_final
Dissertação de mestrado_livia_versao_final
Dissertação de mestrado_livia_versao_final
Dissertação de mestrado_livia_versao_final
Upcoming SlideShare
Loading in …5
×

Dissertação de mestrado_livia_versao_final

327
-1

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
327
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Dissertação de mestrado_livia_versao_final

  1. 1. Livia Fonseca FracalanzaMineração de Dados voltada para Recomendação no Âmbito de Marketing de Relacionamento Dissertação de Mestrado Dissertação apresentada como requisito parcial para obtenção do título de Mestre pelo Programa de Pós- Graduação em Informática da PUC-Rio. Orientador: Prof. Marco Antonio Casanova Rio de Janeiro Maio de 2009
  2. 2. Livia Fonseca FracalanzaMineração de Dados voltada para Recomendação no Âmbito de Marketing de Relacionamento Dissertação apresentada como requisito parcial para obtenção do título de Mestre pelo Programa de Pós- Graduação em Informática da PUC-Rio. Aprovada pela Comissão Examinadora abaixo assinada. Prof. Marco Antonio Casanova Orientador PUC-Rio Prof Antonio Luz Furtado PUC-Rio Profª. Karin Koogan Breitman PUC-Rio Prof. José Eugenio Leal Coordenador Setorial do Centro Técnico Científico - PUC-Rio Rio de Janeiro, 02 de abril de 2009.
  3. 3. Todos os direitos reservados. É proibida a reprodução totalou parcial do trabalho sem autorização da universidade, daautora e do orientador. Livia Fonseca FracalanzaBacharel em Informática com ênfase em Análise deSistemas graduada pela Pontifícia UniversidadeCatólica do Rio de Janeiro em julho de 2006.Atualmente trabalha gerenciando projetos e participano desenvolvimento de softwares de BusinessInteligence. Ficha Catalográfica Fracalanza, Livia Fonseca Mineração de dados voltada para recomendação no âmbito de marketing de relacionamento / Livia Fonseca Fracalanza ; orientador: Marco Antonio Casanova. – 2009. 59 f. : il. (col.) ; 30 cm Dissertação (Mestrado em Informática)–Pontifícia Universidade Católica do Rio de Janeiro, Rio de Janeiro, 2009. Inclui bibliografia 1. Informática – Teses. 2. Market basket analysis. 3. Mineração de dados. 4. Problema do clique máximo. I. Casanova, Marco Antonio. II. Pontifícia Universidade Católica do Rio de Janeiro. Departamento de Informática. III. Título.
  4. 4. AgradecimentosAgradeço à minha família pelo apoio de sempre, por torcerem por mim e peloamor incondicional.Todos os meus amigos foram muito importantes nessa fase da minha vida, masem especial gostaria de agradecer ao João Rafael Peixoto Leite, amigo desdegraduação, pois sem seu incentivo, paciência e carinho, este trabalho não teriacomeçado e hoje o título de mestre ainda seria um sonho.Agradeço ao meu orientador, Marco Antonio Casanova, por entender o quãodifícil é estar no mercado de trabalho louco e acelerado e ao mesmo tempodecidir fazer mestrado. Obrigada por ter acreditado na minha capacidade, pelapaciência e pela orientação.Por último, porém não menos importante, obrigada a todos os meuscompanheiros da Stone Age Tech pelo apoio moral e incentivo.
  5. 5. Resumo Fracalanza, Livia Fonseca; Casanova, Marco Antonio; Mineração de Dados voltada para Recomendação no Âmbito de Marketing de Relacionamento. Rio de Janeiro, 2009. 57p. Dissertação de Mestrado - Departamento de Informática, Pontifícia Universidade Católica do Rio de Janeiro.Cross-selling é uma estratégia de vendas de produtos baseada em uma análisedas compras passadas de um cliente ou nas compras passadas de outros clientescom o mesmo perfil. O algoritmo mais conhecido para análise da cesta decompras de um cliente é conhecido por market basket analysis. Este trabalhoaborda a descoberta de padrões seqüenciais em grandes bases de dados e tem porobjetivo apresentar um algoritmo eficiente que transforma o problema da cestade compras em um problema de clique máximo. Primeiramente, os dados deentrada são transformados em um grafo e o problema da descoberta do cliquemáximo é resolvido revelando as relações mais recorrentes entre os itens emquestão. Os experimentos apresentados na dissertação demonstram a eficiênciado algoritmo em grandes volumes de dados.Palavras-chave1. Informática – Teses; 2. Market basket analysis, 3. mineração de dados 4.problema do clique máximo
  6. 6. Abstract Fracalanza, Livia Fonseca; Casanova, Marco Antonio;. Recommendation based on Data Mining for Relationship Marketing. Rio de Janeiro, 2009. 57p. MSc. Dissertation - Departamento de Informática, Pontifícia Universidade Católica do Rio de Janeiro.Cross-selling is a strategy to recommend products to customers based on theirpast purchases or the purchases of other customers with the same profile. Thebest known algorithm for the analysis of a client shopping basket is known in theliterature as market basket analysis. This dissertation discusses the discovery ofsequential patterns in large databases and aims at implementing an efficientalgorithm that transforms the shopping cart problem into a maximum cliqueproblem. First, input data is transformed into a graph and maximum cliques aredetected to discover the most frequent relationship between the items on thetransaction. The dissertation also includes experiments that evaluate theefficiency of the algorithm for large data volumes.Keywords1. information science – thesis; 2. Market basket analysis; 3. data mining; 4.maximum clique problem
  7. 7. Sumário1 Introdução 101.1. Motivação 111.2. Objetivos 111.3. Trabalhos Relacionados 121.4. Organização do Trabalho 132 Mineração de Dados 152.1. Processo de Busca de Conhecimento 152.2. Tipos de Predição 172.2.1. Classificação 172.2.2. Segmentação 182.2.3. Regressão 182.2.4. Associação 182.3. Técnicas de Mineração de Dados 182.3.1. Algoritmo Genético 192.3.2. Redes Neurais 192.3.3. Árvores de Decisão 192.3.4. Regras de Associação 192.3.5. Análise de Vizinhança 202.4. Aplicações 203 Market Basket Analysis - MBA 213.1. Marketing de Relacionamento 223.2. Regras de Associação 233.3. Algoritmos de MBA 243.3.1. Artificial Immune System 253.3.2. Set-oriented Mining 253.3.3. Algoritmo Apriori 263.4. Implementação baseada em Grafo 273.4.1. Conceitos de Grafos 273.4.2. Montando a Matriz de Adjacências 29
  8. 8. 3.4.3. Buscando a Clique de Tamanho Máximo 294 Testes e Resultados 314.1. Descrição do Ambiente de Testes – Protótipo 314.2. Testes 345 Conclusão e Trabalhos Futuros 405.1. Conclusões 405.2. Trabalhos Futuros 416 Referências 437 APÊNDICE A – Código da Implementação 45
  9. 9. Lista de figurasFigura 1 Etapas para descoberta de conhecimento 16Figura 2 Iteratividade entre Funcionalidades, Técnicas e Algoritmos de Mineração de Dados 17Figura 3 Exemplo de iteração do algoritmo AIS 25Figura 4 Exemplo de iteração do algoritmo SETM 26Figura 5 Exemplo de iteração do algoritmo Apriori 27Figura 6 Exemplo de clique máxima 28Figura 7 Protótipo: escolha do conector ODBC 32Figura 8 Protótipo: Autenticação no ODBC 32Figura 9 Protótipo: Escolha da base de dados 33Figura 10 Protótipo: Inclusão de filtro na consulta 33Figura 11 Protótipo: Exibição das informações relevantes 34
  10. 10. 1 Introdução1Introdução A digitalização da sociedade juntamente com a difusão da Internet e aglobalização trazem a necessidade de maior agilidade e rapidez para os processos denegócio, principalmente no que se refere aos sistemas de tomada de decisão. Alémdisso, podemos observar um aumento significante na quantidade de dados armazenadospelas empresas, pois as informações assumiram um papel indispensável e vital para asobrevivência das empresas no mercado. Entretanto, é necessária a existência de processos que possibilitem extrair destesdados o conhecimento necessário para a gestão e a tomada de decisões, caso contráriosão apenas um conjunto de dados que não trazem nenhum benefício para a corporação.Nesse sentido, surgem os sistemas do tipo data warehouse – ou armazém de dados –para auxiliar no armazenamento dos dados e facilitar a análise para a tomada dedecisões. Estes passam a ser realidade, principalmente, nas grandes corporações. Data warehouse é um termo amplamente utilizado nos dias de hoje para definirum ambiente de sistemas de informação que tem por objetivo auxiliar os usuários deníveis gerenciais. É uma “fotografia” dos dados em determinando período de tempo,integrados por uma combinação de tecnologias e orientados a assunto. Composto poruma coleção de tecnologias de suporte a análise de decisão, tem por responsabilidade oarmazenamento dos dados que ao longo do tempo se proliferaram. A análise dos dadoscontidos em uma data warehouse é realizada por vários tipos de ferramentas, sendoOLAP (On Line Analytical Processing) a mais simples e mais utilizada. A tecnologia em questão compreende Sistemas Gerenciadores de Banco deDados com visões relacionais ou multidimensionais dos dados, facilidades para acessodos dados, arquitetura cliente-servidor, interfaces gráficas de usuários, dentre outras. Com o aumento do volume de dados nas empresas e a diminuição do tempo pararesposta às mudanças, o uso da data warehouse se fez necessário para atender ànecessidade de integração dos sistemas voltados para o nível gerencial com dados quenunca ou raramente são alterados. Os sistemas transacionais do nível operacional lidamcom os dados “ativos” espelhando as operações de negócio da empresa. Os dadosestáveis da data warehouse ajudam a compor séries históricas, apoiando o trabalho deanálise ao longo de determinado período.
  11. 11. 1 Introdução 11 Geralmente, os dados armazenados em uma data warehouse são apenasconsultados, sendo agregados para fins de estudo e tomadas de decisão. As aplicaçõesque utilizam esses dados são classificadas como sistemas de informação gerencial,sistemas de informação para executivos ou sistemas de suporte à decisão. Além disso, épossível a manipulação de grandes quantidades de dados armazenadas a fim deencontrar padrões implícitos entre os mesmos, possibilitando a previsão deinformações/situações futuras.1.1.Motivação O mercado de business intelligence, ao qual as data warehouse pertencem, estáem grande e constante expansão fomentando a pesquisa e desenvolvimento deferramentas melhores e mais sofisticadas. Cabe ressaltar que a chave do processo de busca de conhecimento é a mineraçãode dados (ou data mining), entendida como tarefas e técnicas dedicadas à exploração degrandes quantidades de dados à procura de regras de associação, relacionamentosentre variáveis, classificação de itens, dentre outras atividades. Do ponto de vista de negócio, os padrões que, eventualmente, estão escondidosentre uma grande quantidade de dados podem ser extremamente valiosos e úteis. Nasempresas, cada vez mais os diferentes setores procuram por ferramentas que possamauxiliá-los a maximizar os ganhos e minimizar as perdas. Por exemplo, a aplicação prática de mineração de dados no cenário de CRM(Customer Relationship Management) é bastante interessante, uma vez que asempresas estão aumentando o foco no cliente, conhecendo-o individualmente com ointuito de oferecer-lhe mais produtos, cada vez mais adequados e até mesmopersonalizados. Dentro deste contexto, a eficiência e eficácia da adesão de novos clientes e dafidelidade dos antigos dependem do sucesso do processo de descobrimento de padrões,incluindo a mineração de dados.1.2.Objetivos Este trabalho tem por objetivo estudar e propor melhorias em algoritmos derecomendação de produtos com o intuito de auxiliar na descoberta de padrões deconsumo e, assim, melhorar a relação das empresas com seus clientes. Para atingir o objetivo central, duas etapas serão seguidas:
  12. 12. 1 Introdução 12 Estudar o processo de descoberta de conhecimento em data warehouses; Executar testes com grandes volumes de dados.1.3.Trabalhos Relacionados Para encaminhar o problema de recomendação de produtos, inúmeras soluçõestêm sido propostas. Esta seção apresenta brevemente alguns trabalhos relacionadosque serviram de inspiração e fontes de informação para o desenvolvimento desta edissertação. Em [11] são discutidas as oportunidades de se construir um melhorrelacionamento com clientes, aumentando a frequência das compras econsequentemente aumentando o lucro. Para que seja possível identificar padrões epossibilitar a recomendação de produtos e serviços é de suma importância para asoperações de venda manter o histórico das transações com o máximo de detalhespossível, como quantidade, valores, tipo de pagamento, as respostas aos estímulos demarketing, etc. Suas análises ficam facilitadas com a utilização de técnicas de mineraçãode dados, como regras de associação, que buscam automaticamente padrões nosdados, gerando modelos de comportamento. Neste trabalho, cada cliente é classificadocom uma pontuação (score) que representa a probabilidade de resposta positiva aoestímulo posto no modelo, auxiliando o profissional de marketing a focar maisprecisamente no público alvo de suas campanhas. Santos [12] descreve a aplicação das técnicas de mineração de dados na gestãode relacionamento com clientes. Como estudo de caso, foi apresentado um sistemadesenvolvido com o intuito de apoiar as decisões na área de vendas, auxiliando narecomendação de produtos que viessem a ser de interesse do consumidor em questão.O usuário escolhe um ou mais produtos que serão confrontados com um ou maisprodutos também à escolha do usuário e, assim, o sistema tenta determinar regras deassociação entre os itens selecionados. Ao concluir, o autor comenta que as regras deassociação são uma técnica de mineração de dados de simples implementação, masfornece conhecimentos importantes sobre os hábitos dos clientes. Adomavicius e Tuzhilin [14] fazem uma pesquisa sobre o estado da arte desistemas de recomendação e chegam à conclusão de que, mesmo tendo avançadomuito nessa última década, esse tipo de sistema ainda apresentam limitações queprecisam ser superadas. Dentro desse contexto, ações como melhoria na modelagemdos itens e usuários, incorporação de informação contextual no processo derecomendação suporte à sugestões por multicritérios e a criação de um sistema maisflexível e menos invasivo são apontadas como sendo as principais.
  13. 13. 1 Introdução 13 Burke [15] define três tipos de sistemas de recomendação: (i) sistemascolaborativos são aqueles em que as recomendações são baseadas nas preferênciasdos outros usuários; (ii) sistemas baseados no conteúdo são aqueles que classificam asinformações baseados em aprendizado de máquina e sugerem baseados nas escolhasanteriores do usuário; (iii) sistemas baseados no conhecimento (knowledge-basedsystems) dos usuários oferecem produtos que atendem aos requisitos do usuário, comocidade, preferências por comida, entre outros. Além disso, é esclarecido que sistemas derecomendação precisam ser inicializados com grandes quantidades de dados, pois casocontrário as previsões e sugestões não serão eficientes como esperado. Com isso,confronta-se o problema de que, quando há muitos usuários com hábitos conhecidos, osistema não é tão útil; mas, se estiver com uma grande quantidade de itens avaliados,pode não ser preciso para um usuário em particular. Sistemas baseados no conteúdoapresentam um problema parecido: bons classificadores “aprendem” depois que muitositens foram avaliados e alguns procuram resolver esse problema fazendo uso dealgoritmos classificadores baseados na similaridade com os dados da vizinhança,causando a limitação de sugerir itens que sejam similares aos itens previamenteavaliados. Nessa linha, e baseado em uma série de exemplos de protótipos, o autordefende os sistemas de recomendação baseados em conhecimento como sendo maisvaliosos que os outros, pois sua recomendação não depende das avaliações de usuáriose suas tomadas de decisão são independentes do gosto do mesmo. Mas, além disso,discute em cima de um de seus exemplos (FindMe) que sistemas híbridos derecomendação podem ser criados combinando diferentes técnicas. Middleton et al. [16] defendem que os sistemas de recomendação podem ajudarna melhoria das buscas na Internet, onde existe uma grande quantidade de páginas comdados não-estruturados e onde, neste cenário, as ferramentas de busca são efetivasapenas quando as páginas atendem às chaves das consultas explicitamente. Nodecorrer do artigo, os autores descrevem o sistema Quickstep, criado utilizandoontologias durante o processo de profiling e, baseados nos testes, concluem que osresultados dos usuários que usaram o sistema com ontologias foram mais precisos,recomendando itens que atendiam mais aos interesses dos usuários e que não eramdiretamente sugeridos.1.4.Organização do Trabalho Este trabalho está organizado da seguinte forma. O Capitulo 2 apresenta oconceito de Mineração de Dados, cenário no qual esta pesquisa se enquadra. O Capitulo3 detalha melhor a técnica Market Basket Analysis, foco deste estudo. O Capitulo 4descreve o protótipo criado para testar a técnica de Market Basket Analysis e apresenta
  14. 14. 1 Introdução 14os resultados dos testes. Por fim, o Capítulo 5 apresenta as conclusões e indica algumaslinhas de pesquisa a serem desenvolvidas a partir do conteúdo exposto neste trabalho.
  15. 15. 2 Mineração de Dados2Mineração de Dados A mineração de dados, ou data mining, é uma das principais etapas do processode busca de conhecimento. Este conceito é utilizado para identificar técnicas avançadasde análise dos dados, que podem ou não utilizar a inteligência artificial, refinando osdados em busca de padrões nos dados através de um modelo do mundo real. Essastécnicas são apenas uma parte do processo de busca de conhecimento dentro de umbanco de dados, em que o objetivo maior é obter regras e padrões que se aplicam aosdados. Normalmente, as técnicas de mineração de dados são aplicadas em dadosarmazenados em uma data warehouse (DW) ou em um data mart, mas também épossível aplicá-las em dados operacionais. Os resultados da mineração de dados podemser usados em tomadas de decisão, em gerenciamento de informações, controle deprocesso, dentre outros. Sua aplicação pode ser em um processo de verificação onde ousuário tenta provar sua hipótese acerca da relação entre os dados ou como umprocesso de descoberta de padrões, fazendo uso de técnicas como redes neurais,algoritmos genéticos, regras de associação, árvores de decisão, regressão, entre outros.2.1.Processo de Busca de Conhecimento (KDD) O avanço da tecnologia tanto no âmbito do hardware quanto do software permitiuque a capacidade de armazenamento e processamento de dados crescesse emvelocidade muito grande. A análise manual ou semi-automática de grandes volumes dedados tornou-se impraticável, prejudicando a tomada de decisão. Nesse sentido, aaplicação de métodos que facilitem este processo se faz muito importante nos dias dehoje. O processo de busca de conhecimento em banco de dados também é conhecidocomo KDD – Knowledge Discovery and Data Mining, cujo objetivo segundo Fayyad et. al[4] “(...) é a extração de conhecimento de alto nível a partir de dados de baixo níveldisponíveis em grandes bancos de dados (...) processo não trivial de identificação, apartir de dados, de padrões que sejam válidos, novos, potencialmente úteis ecompreensíveis (...)”. Em outras palavras, o KDD é o processo de extração deconhecimento de grandes bases de dados, convencionais ou não.
  16. 16. 2 Mineração de Dados 16 Fayyad et. al [4] divide o processo de KDD em seis passos: i. Preparação dos Dados: consiste em incluir o conhecimento relevante para a aplicação além de definir quais as metas que o processo precisa atingir. ii. Limpeza dos Dados: consiste em retirar os dados que possam distorcer a análise. Assim, utiliza estratégias para remover ruídos, tratar atributos perdidos e até mesmo métodos de transformação para diminuir o número de variáveis envolvidas no processo, visando com isto melhorar o desempenho do algoritmo de análise. iii. Seleção de Dados: consiste em escolher sobre qual conjunto ou subconjunto de dados em que o processo será aplicado. iv. Data Mining: consiste em decidir qual tarefa de data mining será aplicada para atingir os objetivos do processo e qual a melhor técnica a ser utilizada (ver seção 3). v. Incorporação do conhecimento anterior: consiste em interpretar o modelo descoberto a fim de verificar sua acuracidade em busca de melhorias, possibilitando o retorno para qualquer etapa anterior do processo, retirando padrões redundantes ou irrelevantes. vi. Interpretação dos resultados: neste ponto o resultado obtido é incorporado ao sistema possibilitando a tomada de ações baseadas no conhecimento ou documentando-os e relatando-o às partes interessadas. Em particular, o passo da mineração de dados utiliza técnicas de inteligênciaartificial que procuram relações de similaridade ou discordância entre dados com oobjetivo de encontrar, automaticamente, padrões, anomalias e regras, focando emtransformar dados, aparentemente ocultos, em informações úteis para a tomada dedecisão ou avaliação de resultados. Figura 1 Etapas para busca de conhecimento
  17. 17. 2 Mineração de Dados 172.2.Tipos de Predição Por tipos de predição entende-se os tipos de relacionamento que estabelecemosentre os dados para a obtenção de conhecimento. Sabendo a que resultado se desejachegar, é fácil identificar a tarefa de mineração que mais auxiliará o processo de buscade uma solução para o problema. Para atender aos objetivos e gerar resultadosesperados, há uma coleção de técnicas que podem ser utilizadas; cada técnica possuiainda uma gama de algoritmos que irão, efetivamente, manipular os dados. A Figura 2 aseguir, extraída de [20], ilustra a iteratividade entre funcionalidades, técnicas ealgoritmos de mineração de dados. O resto desta seção discute tipos de predição de dados. Figura 2 Iteratividade entre Funcionalidades, Técnicas e Algoritmos de Mineração de Dados2.2.1.Classificação Categorizar os clientes de acordo com seu perfil de compras é um exemplo detarefa de classificação. Um modelo de classificação é criado e os atributos dos registros(no caso do exemplo acima, clientes) são analisados de acordo com as condições e
  18. 18. 2 Mineração de Dados 18características das classes pré-determinadas pelo modelo. Caso esses atributos casem,o registro é então classificado na classe em que melhor se encaixa.2.2.2.Segmentação Essa tarefa é mais conhecida como clustering e se diferencia da classificaçãoporque não pressupõe a existência de classes pré-definidas. Os registros são agrupadosde acordo com a semelhança nos seus atributos, segmentando-os em clusters(subgrupos homogêneos) baseando-se no princípio de que os registros classificados emum grupo devem ser homogêneos entre si, e que os grupos devem ser heterogêneosentre si.2.2.3.Regressão Estimar um acontecimento ou um padrão não é uma tarefa simples. Esse é oobjetivo da regressão: prever padrões para uma variável de valor contínuo, com basenos outros atributos disponíveis e nas outras ocorrências disponíveis para análise.2.2.4.Associação Através da associação é possível identificar transações que sempre ocorrem emconjunto. Na literatura também é conhecida como grupos de afinidade ou análise decesta. O exemplo clássico da literatura é o MBA (Market Basket Analysis), que buscaencontrar padrões nos produtos em um carrinho de compras através de regras deassociação. Esse estudo auxilia as lojas a encontrar a melhor maneira de organizar seusprodutos, de modo que a disposição deles nas prateleiras estimule as compras dosclientes.2.3.Técnicas de Mineração de Dados As técnicas de mineração de dados são os fundamentos computacionais quepossibilitam a construção dos algoritmos que realizarão a busca por padrões nos dados.Diversas técnicas podem ser utilizadas para atender a uma tarefa de mineração dedados. Entretanto, cada técnica possui características específicas e é necessário ter oconhecimento do funcionamento e do objetivo das mesmas para interpretar osresultados obtidos. No resto desta seção listamos algumas técnicas de mineração de dados.
  19. 19. 2 Mineração de Dados 192.3.1.Algoritmo Genético Simulando o processo natural da evolução, os algoritmos genéticos (AG’s) têm porobjetivo realizar a busca e a otimização da descoberta de padrões. Diferentemente dosmétodos convencionais de mesmo objetivo, os AG’s trabalham simultaneamente emconjuntos de soluções diferentes, realizando pesquisas adaptativas nos dados [20],modelando uma solução para um problema específico em estruturas de dados que sãosemelhantes a um cromossomo. Operadores são aplicados recombinando essasestruturas, gerando assim novas combinações de regras de associação. Essa técnica é utilizada na classificação e na segmentação de dados, formulandohipóteses sobre a dependência dos atributos dos dados; com operadores de mutação ecruzamento desenvolvem várias mutações para a solução do problema. Ao longo dotempo, o algoritmo tende a “aprender” e a se aperfeiçoar, de maneira que somente assoluções com maior poder de acerto na previsão são aceitas.2.3.2.Redes Neurais A técnica de Redes Neurais é bastante utilizada em tarefas de classificação,regressão e segmentação. Os dados são trabalhados com base no funcionamento docérebro humano, aprendendo a tomar decisões baseadas nas experiências anteriores –nas instâncias anteriores dos dados. Os neurônios do cérebro são representados pornodos que estão conectados em outros nodos por sinapses, formando uma rede deprocessamento. Os valores das entradas são multiplicados nos neurônios pelos pesosde suas sinapses, conforme vão caminhando na rede. Ao final, temos a classificação oua previsão da entrada.2.3.3.Árvores de Decisão As árvores de decisão têm como objetivo principal dividir as instâncias em classes.Cada nó da árvore testa o domínio de uma variável da entrada e o redireciona para o nóseguinte. Cada sub-árvore representa o resultado de um teste e a folha é a classificaçãoque aquele registro recebeu. Ao final, cada nó terminal terá os registros da entrada quese adéquam às regras regidas por esse nó, representando assim, uma classe.2.3.4.Regras de Associação Basicamente, as regras de associação são definidas por uma correlaçãoestatística entre alguns atributos da entrada com o objetivo de descobrir relações que
  20. 20. 2 Mineração de Dados 20ocorrem em comum dentro de um conjunto de dados. Cada registro é visto como umatransação e cada variável como um item dessa transação, deixando subentendido que apresença de um item implica necessariamente na presença de outro na mesmatransação. Esse conceito será mais detalhado na Seção 3.12.3.5.Análise de Vizinhança Através de uma função definida para determinar a “distância“ entre duasinstâncias, ou seja, de uma função para identificar um conjunto de registros que estãopróximos por determinada característica, essa técnica é empregada em análise deprognósticos e não para descoberta de conhecimento. Não é muito explorada naliteratura.2.4.Aplicações Além da aplicação no campo dos profissionais de marketing, auxiliando na buscade padrões para melhorar o processo de recomendação e alavancar as vendas, astécnicas de data mining podem ser utilizadas em: (i) redes de telecomunicações, paraevitar fraudes em ligações pré- ou pós-pagas, detecção de falhas, dimensionamento desistemas; (ii) saneamento básico, detectando fraudes em ligações de água; (iii)monitoramento ambiental, para prevenção de desequilíbrios; (iv) na indústria, prevendo ademanda, planejando a produção; (v) na educação, auxiliando na identificação daevasão escolar; (vi) na medicina, atuando no diagnóstico e prevenção de doenças,fraudes de plano em planos de saúde; (vii) no comércio, definindo o perfil do consumidor,segmentando o mercado, sugestão de produtos, entre vários outros campos de atuação;(viii) no âmbito financeiro, ajudando no combate as fraudes de cartão de crédito, análisede investimentos e de crédito.
  21. 21. 2 Mineração de Dados3Market Basket Analysis - MBA Market basket analysis (MBA) ou, em português, análise da cesta de compras, éuma técnica de data mining que faz uso de regras de associação para identificar oshábitos de compra dos clientes, fornecendo uma visão da combinação de produtosdentro das cestas de compras dos clientes analisados. Conhecer o perfil de compra dopúblico-alvo é muito importante para aumentar o potencial de recomendação, ajudando amelhorar as vendas. O termo cesta, normalmente, se aplica a uma única ordem de compra. No entanto,a análise admite outras variações como, por exemplo, todas as compras de umdeterminado cliente. O caso clássico citado na literatura é o da rede de supermercadosamericana, WalMart. Foi descoberta a relação de compra entre uma marca de fraudas euma marca de cerveja, quando as compras eram realizadas por homens nas sextas-feiras ao fim do dia. A análise da relação mostrou que as esposas pediam para osmaridos trazer as fraudas para o fim-de-semana quando saíssem do trabalho e elesaproveitavam e levavam a cerveja para relaxar durante os dois dias sem trabalho. Tendoesse precioso conhecimento em mãos, o gerente decidiu colocar as fraudas perto dascervejas e com isso as vendas aumentaram ainda mais, pois os homens que nãocompravam cerveja passaram a comprar. A entrada de dados para essa técnica é um conjunto de transaçõescorrespondendo a compras de vários clientes. As transações são representadas em umatabela onde cada linha corresponde a uma venda e cada coluna a um produto adquirido.A cesta de compras de um cliente é composta por itens que foram adquiridos na mesmacompra, ignorando-se a quantidade e o preço de cada item. Apesar de a nomenclatura market basket analysis evocar uma imagem decarrinhos de compras e supermercados, cabe mencionar que existem outras áreas emque essa abordagem pode ser empregada como, por exemplo, análise de compras emcartão de crédito, análise de padrões em chamadas telefônicas, análise de compra deserviço telefônico, dentre outras aplicações.
  22. 22. 3 Market Basket Analysis – MBA 223.1.Marketing de Relacionamento No varejo, a maior parte das compras é realizada por impulso. A técnica de MarketBasket Analysis dá pistas a cerca do que um cliente poderia ter comprado se algumasugestão interessante lhe fosse feita. Em um primeiro momento, pode-se considerar que esta técnica tem aplicações nareorganização da localização dos itens dentro de uma loja, bem como promoções paraestimular a compra. Entretanto, é possível também comparar resultados entre filiais ouentre grupos de clientes em lugares demográficos distintos ou analisar as compras emfunção da época do ano. Assim, caso se observe que uma regra vale em uma loja, masnão prevalece em nenhuma outra, é porque há algo de interessante com esta que atorna tão diferente das outras. Investigar essas diferenças pode render algumassugestões úteis para melhorar as vendas da companhia. Marketing de relacionamento pode ser definido como “uma estratégia demarketing que visa construir uma relação duradoura entre cliente e fornecedor, baseadaem confiança, colaboração, compromisso, parceria, investimentos e benefícios mútuos”[20] onde os clientes importantes precisam receber atenção contínua. É importante teruma relação duradoura e de confiança com os consumidores, conhecendo-os a fim decativá-los ainda mais, estimulando o consumo de mais e novos produtos e serviços como objetivo da organização conquistar uma fatia maior do mercado. Atualmente, as empresas estão se conscientizando da necessidade e daimportância de intensificar o foco no marketing de relacionamento para crescer e semanter no mercado [21]. Administrar o relacionamento com o cliente ajuda a empresa aadquirir vantagem competitiva frente à concorrência. Apesar de muito investimento aindaser feito na conquista de novos clientes, já existe uma percepção maior de que épossível melhorar a rentabilidade vendendo produtos e serviços para os clientes atuais. O termo cross-selling é traduzido na literatura como “venda casada de produtos” etem por definição a prática de vender produtos ou serviços adicionais para um cliente jáconquistado, objetivando o aumento das vendas. Nesse contexto, a técnica de marketbasket analysis baseia-se na chave cliente-item para identificar a cesta de compras comos N itens que aparecem juntos mais frequentemente em transações. A partir doconhecimento das cestas mais frequentes, torna-se fácil partir para o cross-selling,sugerindo itens que possam ser de interesse de um cliente com determinado perfil decompra identificado.
  23. 23. 3 Market Basket Analysis – MBA 23 Em resumo, para auxiliar nas tomadas de decisão em aplicações de marketing, oMBA é uma técnica poderosa que suporta a implementação de estratégias de cross-seling.3.2.Regras de Associação A análise de compras e registros de produtos tipicamente usa regras deassociação representando os padrões de relacionamento encontrados entre os itens dedados do conjunto analisado. Em bases de dados onde os registros são transações,estas regras são conhecidas como regras de associação transacionais, enquanto nocaso de bases de dados onde os registros representam clientes, contas, produtos,serviços e outros, as mesmas envolvem múltiplos atributos e, por isso, são chamadas deregras de associação multidimensional. No âmbito da venda casada de produtos, ou cross-selling, as regras deassociação permitem que uma loja possa recomendar o produto B para um clientecomprando o produto A, uma vez que ela conhece a regra, por exemplo, de que 30%dos seus clientes que compram A também compram B. Assim, o cliente é incentivado acomprar mais produtos, que eventualmente possam interessá-lo, baseado emcaracterísticas de consumo de compras anteriores no sistema,. Assim, não só aquantidade de vendas é maximizada, mas também a quantidade de vendas dedeterminado produto. Regras de associação foram introduzidas em [25] da seguinte forma. Sejam I = {i1,i2, ..., im} um conjunto de m itens distintos e D uma base de dados formada por umconjunto de transações, onde cada transação T é composta por um conjunto de itens talque T ⊆ I. Uma regra de associação é uma expressão do tipo X → Y onde X ⊆ I, Y ⊆ I, X≠ Ø, Y ≠ Ø e X ∩ Y = Ø, ou seja, tanto o antecedente (X), quanto o conseqüente (Y) deuma regra de associação podem ser formados por conjuntos contendo um ou mais itens,mas não podem ser vazios e são conjuntos independentes já que não possuem itens emcomum. Por exemplo: {Cerveja, Faldas} → {Leite} {Cerveja, Leite} → {Fraldas} {Fraldas, Leite} → {Cerveja} {Cerveja} → {Fraldas, Leite} {Leite} → {Cerveja, Fraldas} {Fraldas} → {Cerveja, Leite}
  24. 24. 3 Market Basket Analysis – MBA 24 A importância de uma regra de associação pode ser medida em termos de suportee confiança. O suporte de uma regra determina com qual frequência uma regra éaplicada a um conjunto de dados, ou seja, a probabilidade do primeiro termo daimplicação ser verdade. Já a confiança de uma regra determina o quão frequente ositens em Y aparecem nas transações que contém X. No exemplo anterior, aprobabilidade de um cliente comprar cerveja e fraldas (ou seja, o termo X ser verdadeiro)é referida como o suporte, enquanto a probabilidade condicional de um cliente comprarleite, dado que comprou cerveja e fralda, é referida como a confiança. O problema da mineração de regras de associação consiste em encontrar todasas regras de associação que possuam suporte e confiança maiores ou iguais,respectivamente, a um suporte mínimo (SupMin) e uma confiança mínima (ConfMin),especificados pelo usuário. De fato, por muito tempo, a busca por regras de associação foi de interesseexclusivo de aplicações que lidassem com informação de cestos de compra (marketbaskets), o que levou esta técnica a ser comumente chamada de market basket analysis(MBA). No entanto, podemos ver que regras de associação podem ser extraídas dequalquer base de dados onde existam relacionamentos implícitos entre os diferentesatributos. A utilidade destas regras não está somente na geração de novo conhecimento,mas também na confirmação de regras de negócio que são utilizadas, mas que nuncaforam comprovadas. Sendo assim, regras de associação aplicam-se a diversas áreas denegócio como, por exemplo, estudo dos acessos a computadores, busca de novosclientes, recenseamento de população e análise de informação médica, dentre outros. A descoberta de padrões através da análise das regras de associação é umimportante para suporte à tomada de decisão. Com essas informações, um gestor podeidentificar novas oportunidades de negócio, conhecer melhor seus clientes e seus perfisde compra, identificar produtos que influenciam na venda de outros, além de diversasoutras informações que podem aumentar sua competitividade no mercado.3.3.Algoritmos de MBA Os primeiros algoritmos a serem utilizados na descoberta de regras de associaçãoforam o artificial immune system (AIS) [23][24] e o set-oriented mining (SETM) [22]. Namaioria dos estudos mais recentes o algoritmo Apriori tem sido bastante utilizado, bemcomo suas variações. Nas subseções a seguir alguns desses algoritmos são explorados.
  25. 25. 3 Market Basket Analysis – MBA 253.3.1.Artificial Immune System A técnica utilizada pelo artificial immune system (AIS) gera e conta conjuntos deitens à medida que são lidas as transações da base de dados. Para cada transação,determinam-se quais dos maiores conjuntos encontrados na transação anterior tambémse encontram na transação corrente e novos conjuntos de itens são geradosestendendo-se esses conjuntos com itens deste registro. A desvantagem é que estemétodo gera e conta desnecessariamente conjuntos de itens que são consideradospequenos. A figura a seguir ilustra o seu funcionamento. Figura 3 Exemplo de iteração do algoritmo AIS A primeira passagem do algoritmo na base de dados faz a busca por cestas deapenas um item contando quantas vezes estes se repetem nas transações, ignorandoaqueles que ocorrem apenas uma vez. A segunda passagem na base busca por cestascom dois itens, contando quantas vezes estes aparecem juntos nos registros varridos.Neste exemplo, a última passada encontra cestas de três itens, que são a maior cestapossível com frequencia maior que um. Assim, o algoritmo tem como solução o conjunto{2,3,5}.3.3.2.Set-oriented Mining Assim como o AIS, o set-oriented mining (SETM) gera os conjuntos de itenscandidatos no momento em que está passando pelas transações da base de dados.Entretanto, a contagem só é realizada no final da varredura da base. O identificador datransação é guardado junto com o conjunto candidato em uma estrutura sequencial. Aofim da leitura de todos os registros, o tamanho do conjunto de itens mais frequente édeterminado pela agregação da estrutura sequencial. Além de ter a mesmadesvantagem do AIS, para cada conjunto candidato, existem vários valores de tamanhocalculados. A figura a seguir ilustra os passos do algoritmo.
  26. 26. 3 Market Basket Analysis – MBA 26 Figura 4 Exemplo de iteração do algoritmo SETM No SETM, a primeira passagem na base de dados resulta na frequencia deocorrência de cada item nas transações, assim como no exemplo anterior baseado noAIS. Entretanto, a segunda varredura na base tem como resultado uma lista com ascombinações de pares de produtos onde cada combinação recebe o identificador datransação de onde foi extraída. Assim, teremos combinações repetidas comidentificadores diferentes como a cesta {1,3} que neste exemplo ocorre na transação 100e na 300. A última passagem na base revela as cestas de três itens e a soluçãoencontrada é aquela que aparece em mais transações. Com isso, também temos oconjunto de itens {2,3,5} como resultado da aplicação do SETM nesse conjunto deregistros.3.3.3.Algoritmo Apriori Este algoritmo foi a primeira ferramenta para descoberta de regras de associaçãoem bases de dados com grandes volumes. Várias modificações foram propostas paramelhorar sua eficiência e algoritmos similares foram propostos [26][27][28], introduzindoregras mais expressivas. Primeiramente, o algoritmo identifica os itens que fazem parte de cada uma dastransações. Em seguida, o algoritmo determina as regras de associação entre estesitens, selecionando as associações que ocorrem com mais frequência (ou maiores) noconjunto de transações em questão. O maior conjunto de itens candidato da passagemanterior é levado para próxima iteração, gerando outros conjuntos com tamanho maiorque 1. Por fim, o algoritmo elimina os conjuntos gerados que tem um subconjunto quenão é o maior. Com base nos conjuntos de itens mais frequentes as regras de associação queatendem aos valores mínimos de suporte e confiança são geradas. Como resultado,
  27. 27. 3 Market Basket Analysis – MBA 27todos os conjuntos de itens frequentes são descobertos, produzindo todas as regras deassociação que respeitam esses limites. Figura 5 Exemplo de iteração do algoritmo Apriori Assim como nos exemplos anteriores, a primeira passada do algoritmo Apriori nabase de dados resulta na listagem da frequencia dos itens nas transações (cestas de umitem apenas). Na passada seguinte, a lista gerada contem as cestas de dois itens comas respectivas frequencias. Destas cestas apenas as mais freqüentes serãoconsideradas e, assim, as cestas com três itens já são preparadas para o último passo,que irá somente então contabilizar as cestas mais frequentes relacionadas na etapaanterior. Com isso, o resultado obtido é a cesta de itens {2,3,5}.3.4.Implementação baseada em Grafo O objetivo da abordagem baseada em grafos é possibilitar a manipulação deinformações de bases de dados de grandes volumes. Nesta seção serão descritos os passos básicos do algoritmo baseado em grafos,que chamaremos de Graph-based Market Basket Analysis (GMB). Inicialmente serãointroduzidos conceitos de grafos importantes para o entendimento do algoritmo. Emseguida, será abordado o princípio da implementação do algoritmo.3.4.1.Conceitos de Grafos Uma maneira de condensar as informações das relações entre itens é criar umaestrutura de grafo que as represente. Um grafo é definido por um par G = (V,E), onde V éum conjunto finito de vértices e E representa um conjunto de arestas que ligam osvértices, de forma que E⊆[V]². No caso do market basket analysis, cada vérticerepresenta um item e a aresta representa a relação encontrada entre dois itens. Afrequência com que dois itens aparecem juntos em uma mesma transação, ou registro, érepresentada por valores associados às arestas, resultando em um grafo com
  28. 28. 3 Market Basket Analysis – MBA 28ponderação nas arestas. O objetivo desse tipo de representação é realizar a análise doponto de vista das relações entre os itens e não da relação entre as transações comoalguns estudos de associação abordam [18]. Definimos como G1=(V1, E1) um subgrafo de G=(V,E) onde V1⊆V e E1⊆E. Osubgrafo G1 é considerado completo se houver uma aresta para cada par de vértices, ouseja, cada vértice é adjacente a todos os outros vértices. Definimos como clique de G umsubgrafo completo de G. O clique máximo é o maior clique encontrado no grafo, ou seja,nenhum outro clique o contém. Sendo assim, o problema do clique máximo consiste emdeterminar o tamanho do maior clique de G. Entende-se por tamanho a cardinalidade doconjunto de vértices do subgrafo em questão, sendo representado por ω(G). Para exemplificar o problema do clique máximo, a figura a seguir apresenta umgrafo G, onde V={1,2,3,4,5} e E={(1,2),(1,3),(1,4),(1,5),(2,3),(3,4),(4,5)}. Os nósdestacados em vermelho são os nós que formam o clique máximo desse conjunto devértices, que possui tamanho 4. Figura 6 Exemplo de clique máximo Se um peso for atribuído a cada aresta, então o subgrafo é conhecido como umsubgrafo ponderado e o seu peso é definido pela soma dos pesos das arestas. No escopo de market basket analysis, achar o clique máximo significa achar oconjunto de itens que mais aparecem juntos nas relações analisadas. Nas bases usadas,os registros não são transações e, por isso, o objetivo da aplicação do algoritmo éencontrar as associações existentes entre os atributos (variáveis) de cada registro. O
  29. 29. 3 Market Basket Analysis – MBA 29peso das arestas do clique ponderado indica a frequência com que as variáveisrepresentadas pelos vértices ligados por ele aparecem juntas em um registro. O GMB evita assim várias passadas na base de dados, típicas de algoritmos comoo Apriori Após o término da execução do GMB, o analista de negócios pode começar a porem prática a estratégia de cross-selling, pois tem em mãos as relações e as respectivasfrequencias entre as variáveis selecionadas para estudo.3.4.2.Montando a Matriz de Adjacências O primeiro passo do algoritmo é montar a matriz de adjacências que irárepresentar o grafo ponderado, considerando apenas os atributos selecionados pelousuário como o objetivo do estudo. A matriz de adjacências foi implementada como uma lista encadeada de objetosrepresentando os produtos (atributos do registro) da transação e cada produto possui alista de relacionamentos com outros produtos e a quantidade de vezes que essesprodutos aparecem juntos nos registros. Sendo assim, os atributos são os vértices dografo e as relações entre os atributos são representadas pelas arestas que os ligam. Para cada registro da base de dados, o algoritmo percorre atributo por atributomontando as relações entre os mesmos. Sendo assim, a cada atributo ak, é feita averificação se este já está representado na matriz de adjacências. Se não estiver, entãouma nova entrada é criada para representá-lo. O próximo passo é então percorrer todosos atributos ai restantes na transação, preenchendo a lista de relacionamentos entreesses produtos e, caso uma nova relação de ak com ai seja identificada, ai é adicionadoà lista de relações de ak com contador de frequencia inicializado com 1. No caso dessarelação ter sido identificada em uma transação anterior, o contador é acrescido de 1.3.4.3.Buscando a Clique de Tamanho Máximo O grupo de interesse comum ou a cesta de produtos mais recorrente nastransações é representada pelo clique máximo do grafo. Em francês, a expressão laclique é definida como o grupo de indivíduos que partilham interesses em comum.Encontrar o clique de tamanho máximo significa encontrar o maior grupo de interessesem comum possível. Quando o grafo em questão é um grafo ponderado, o clique commaior peso corresponde ao grupo de interesses em comum que se repete maisfrequentemente.
  30. 30. 3 Market Basket Analysis – MBA 30 Na seção 3.4.2 foi apresentado como o conjunto de registros com seus atributospodem ser transformados em uma matriz de adjacências representando um grafo. Nestesentido, podemos dizer que o problema da cesta de compras pode ser transformado noproblema do clique máximo (PCM). Convém observar que encontrar o clique máximo em um grafo é um problema NP-dificil. A seguir descrevemos então um algoritmo simples para computar o clique máximo. O clique máximo é inicializado como sendo o clique vazio e seu peso é definidocom valor negativo. Além disso, uma lista que representa o clique “candidato” e seurespectivo peso também são inicializados da mesma maneira. A cada passada n na lista de adjacências, o atributo an é adicionado ao cliquecandidato e, para cada atributo ai restante, verifica-se a existência de relacionamentocom todos os atributos já adicionados ao clique candidato. Se houver relacionamentoentre os atributos, ou seja, se ai está presente na lista de relacionamentos de todos osatributos incluídos no clique candidato, significa que são vértices ligados por uma aresta.Sendo assim, ai também é adicionado ao clique candidato e o peso do mesmo éatualizado. Caso ai não se relacione com algum dos outros nós, então ai não faz parte doclique e o processamento passa para o próximo atributo. Com o término do processamento do clique candidato, seu peso é comparado aopeso do clique máximo e, se for maior, então o clique candidato passa a ser a soluçãoaté que outro clique de maior peso seja encontrado ou até que todo vértice da lista deadjacências tenha sido visitado. As funções FindTheMaximalClique e Find_Cliquetranscritas no Apêndice A realizam esse processamento no protótipo desenvolvido.
  31. 31. 4 Testes e Resultados4Testes e Resultados Para o desenvolvimento deste trabalho, as estruturas e tecnologia das basesutilizadas para os testes do algoritmo desenvolvido são proprietárias da Stone Age Tech.Todos os campos da base de dados são automaticamente definidos como chaves. Umavez construída a base, todos os campos podem ser utilizados como chaves de consulta.Não existem mais limitações sobre as consultas que podem ser feitas, nem anecessidade de se pedir que sejam construídas novas agregações ou cubos de análisedos dados. Todo atributo (ou variável) pode ser cruzado com qualquer outro, dando assimtotal liberdade para o usuário. Há a possibilidade de se extrair qualquer tipo deinformação dos dados disponíveis. O gerenciador faz uso de algoritmos de compressão de dados reduzindo anecessidade de espaço em disco em 80%. A base de dados final ocupa, em média, 20%do espaço ocupado pelos acervos originais e, com isso, bases de dados que antesrequeriam equipamentos de armazenamento avançados e custosos podem agora serdisponibilizadas em discos rígidos de computadores pessoais comuns. Essacaracterística da base de dados facilitou o desenvolvimento deste trabalho, que investigamineração de dados em bases com grandes volumes de informação, tanto em relaçãoao número de registros quanto à quantidade de variáveis. Para que aplicações possam acessar sistemas gerenciadores de banco de dadosdiferentes de maneira transparente, independente da linguagem e da base de dados, foicriado um padrão de acesso a esses sistemas que define interfaces de acesso demaneira que não seja necessária a utilização de métodos específicos de cada base,denominado ODBC - Open Data Base Conectivity. A utilização de um conector (driver) ODBC específico para a base de dados quese deseja utilizar permite que as informações sejam obtidas utilizando-se a linguagemSQL - Structured Query Language.4.1.Descrição do Ambiente de Testes – Protótipo Para testar a eficiência e a eficácia do algoritmo proposto, foi desenvolvido emDelphi um protótipo de testes que, por permitir a escolha de quaisquer conectores
  32. 32. 4 Testes e Resultados 32ODBC, é genérico a qualquer tipo de base e não somente às bases com a tecnologia daStone Age Tech. Inicialmente, o conector ODBC desejado é escolhido dentre a lista disponibilizadacomo mostra a figura a seguir. Figura 7 Protótipo: escolha do conector ODBC Para o acesso aos dados serem disponibilizados, é necessário entrar com nomede usuário e senha válidos na tela de autenticação que será exibida logo após o cliqueno botão Conectar. Figura 8 Protótipo: Autenticação no ODBC
  33. 33. 4 Testes e Resultados 33 Uma vez conectado, a lista de bases será exibida para o usuário, que deveescolher com qual deseja trabalhar. Em seguida, o usuário deve solicitar a listagem dasvariáveis disponíveis para cruzamento. Neste protótipo estão sendo exibidas todas asvariáveis da base. Entretanto, para os estudos contemplados neste trabalho apenas asvariáveis discretas serão utilizadas. Figura 9 Protótipo: Escolha da base de dados O usuário escolhe as variáveis sobre as quais deseja estudar as relações deassociação e solicita a execução do comando. Se desejar realizar algum filtro nosregistros da base em questão, os critérios precisam ser digitados no campo filtro antesdo comando de execução, como mostra a figura a seguir. Figura 10 Protótipo: Inclusão de filtro na consulta
  34. 34. 4 Testes e Resultados 34 Durante o processamento, informações como a consulta (query) definida, tempode execução pelo ODBC em milissegundos, total de registros considerados na consultae o tempo para montar a matriz de adjacências representando as relações encontradassão exibidas. Figura 11 Protótipo: Exibição das informações relevantes4.2.Testes Os testes foram realizados sobre uma base, denominada Vendas, que possui25.119.414 registros e 197 variáveis. Apenas 81 dessas variáveis foram utilizadas nostestes, pois apenas estas são discretas, ou seja, com domínio de valores pré-definidos.Esta base contém as informações de abordagens de marketing para pessoas que já sãoclientes e para pessoas que ainda não são clientes de uma instituição financeira, como:os produtos a que são elegíveis, as restrições de elegibilidade a campanhas (de acordocom o CPF dos clientes), algumas informações cadastrais, dentre outros. Para o primeiro caso de teste, foram selecionadas:• 2 variáveis que representam produtos da empresa proprietária da base de dados• 2 variáveis que indicam se é a primeira vez que aquele CPF foi indicado para adquirir esses produtos, respectivamente• 1 variável que indica se o CPF é de uma pessoa que já é cliente da instituição ou que ainda não é, e
  35. 35. 4 Testes e Resultados 35• 1 variável com a quantidade de vezes que esse CPF foi abordado em uma campanha de marketing. Analisando os padrões encontrados pelo algoritmo (ver Quadro 1), verifica-se queas relações mais recorrentes estão entre os registros que representam pessoas que• não são clientes ainda• foram abordados mais de 4 vezes por uma campanha de marketing• são elegíveis a campanhas por mala-direta e telemarketing e• normalmente não é a primeira vez que se tornaram elegíveis aos produtos selecionados para a análise. Com isso, pode-se concluir que os indivíduos desta base já foram inúmeras vezesabordados para adquirirem os produtos CITIMAX e CITICARD e, mesmo assim, nãoaderiram à campanha. Tendo essas informações, os analistas perceberam que precisamrepensar o modelo de abordagens desses possíveis clientes e/ou a eficiência dascampanhas que estão sendo realizadas, buscando tem mais sucesso com menosabordagens.Query: SELECT "CITIFINANCIA", "FX AB", "CITI MAX", "CITICARD", "CITICARD N", "CITIMAXN" FROM "CREDICARDCITI_CITI_VENDAS" WHERE SEXO = F OR SEXO = MQuery execution time = ms 74515Total de registros: 318383Lendo os registros... Por favor, aguarde...Cálculo das relações durou 57985ms ... ************************************Produto : CITIFINANCIA_NAOAdjacências:FX_AB_NAO: 286581 -> CITI_MAX_NAO: 173888 -> CITICARD_NAO: 245837 ->CITICARD_N_NAO: 286649 -> CITIMAX_N_NAO: 250698 -> CITI_MAX_ELEG_MD_TLMK: 112761 -> CITICARD_ELEG_MD_TLMK: 40812 -> CITIMAX_N_PRIMEIRA: 35951 -> FX_AB_4_OU_MAIS:65 -> FX_AB_3: 1 -> FX_AB_2: 1 -> FX_AB_1: 1 ************************************Produto : FX_AB_NAOAdjacências:CITIFINANCIA_NAO: 1243649 -> CITI_MAX_NAO: 191441 -> CITICARD_NAO: 270110 ->CITICARD_N_NAO: 318315 -> CITIMAX_N_NAO: 278179 -> CITI_MAX_ELEG_MD_TLMK: 126874 -> CITICARD_ELEG_MD_TLMK: 48205 -> CITIMAX_N_PRIMEIRA: 40136 -> CITIFINANCIA_SIM:129475 ************************************Produto : CITI_MAX_NAOAdjacências:CITIFINANCIA_NAO: 1243649 -> FX_AB_NAO: 1058042 -> CITICARD_NAO: 176691 ->CITICARD_N_NAO: 191472 -> CITIMAX_N_NAO: 191472 -> CITICARD_ELEG_MD_TLMK: 14781 ->CITIFINANCIA_SIM: 24995 -> FX_AB_4_OU_MAIS: 83 -> FX_AB_3: 1 -> FX_AB_2: 1 ************************************Produto : CITICARD_NAOAdjacências:CITIFINANCIA_NAO: 1243649 -> FX_AB_NAO: 1058042 -> CITI_MAX_NAO: 559633 ->CITICARD_N_NAO: 270159 -> CITIMAX_N_NAO: 232936 -> CITI_MAX_ELEG_MD_TLMK: 307142 -> CITIMAX_N_PRIMEIRA: 37223 -> CITIFINANCIA_SIM: 129475 -> FX_AB_4_OU_MAIS: 156 ->FX_AB_2: 1 ************************************
  36. 36. 4 Testes e Resultados 36Produto : CITICARD_N_NAOAdjacências:CITIFINANCIA_NAO: 1243649 -> FX_AB_NAO: 1058042 -> CITI_MAX_NAO: 559633 ->CITICARD_NAO: 503094 -> CITIMAX_N_NAO: 278237 -> CITI_MAX_ELEG_MD_TLMK: 307142 ->CITICARD_ELEG_MD_TLMK: 93524 -> CITIMAX_N_PRIMEIRA: 40146 -> CITIFINANCIA_SIM:129475 -> FX_AB_4_OU_MAIS: 156 -> FX_AB_3: 1 -> FX_AB_2: 1 -> FX_AB_1: 1 ************************************Produto : CITIMAX_N_NAOAdjacências:CITIFINANCIA_NAO: 1243649 -> FX_AB_NAO: 1058042 -> CITI_MAX_NAO: 559633 ->CITICARD_NAO: 503094 -> CITICARD_N_NAO: 278237 -> CITI_MAX_ELEG_MD_TLMK: 307142 ->CITICARD_ELEG_MD_TLMK: 93524 -> CITIFINANCIA_SIM: 129475 -> FX_AB_4_OU_MAIS: 83 ->FX_AB_3: 1 -> FX_AB_2: 1 -> FX_AB_1: 1 ************************************Produto : CITI_MAX_ELEG_MD_TLMKAdjacências:CITIFINANCIA_NAO: 112761 -> FX_AB_NAO: 126874 -> CITICARD_NAO: 93468 ->CITICARD_N_NAO: 126911 -> CITIMAX_N_NAO: 86765 -> CITICARD_ELEG_MD_TLMK: 33443 ->CITIMAX_N_PRIMEIRA: 40146 -> CITIFINANCIA_SIM: 129475 -> FX_AB_4_OU_MAIS: 156 ->FX_AB_1: 1 ************************************Produto : CITICARD_ELEG_MD_TLMKAdjacências:CITIFINANCIA_NAO: 40812 -> FX_AB_NAO: 48205 -> CITI_MAX_ELEG_MD_TLMK: 33443 ->CITICARD_N_NAO: 48224 -> CITIMAX_N_NAO: 45301 -> CITI_MAX_NAO: 14781 ->CITIFINANCIA_SIM: 24995 -> CITIMAX_N_PRIMEIRA: 2923 -> FX_AB_4_OU_MAIS: 17 ->FX_AB_3: 1 -> FX_AB_1: 1 ************************************Produto : CITIMAX_N_PRIMEIRAAdjacências:CITIFINANCIA_NAO: 35951 -> FX_AB_NAO: 40136 -> CITI_MAX_ELEG_MD_TLMK: 40146 ->CITICARD_NAO: 37223 -> CITICARD_N_NAO: 40146 -> CITIFINANCIA_SIM: 4195 ->CITICARD_ELEG_MD_TLMK: 2923 -> FX_AB_4_OU_MAIS: 156 ************************************Produto : CITIFINANCIA_SIMAdjacências:FX_AB_NAO: 31734 -> CITI_MAX_ELEG_MD_TLMK: 14150 -> CITICARD_NAO: 24322 ->CITICARD_N_NAO: 31734 -> CITIMAX_N_NAO: 27539 -> CITIMAX_N_PRIMEIRA: 4195 ->CITI_MAX_NAO: 17584 -> CITICARD_ELEG_MD_TLMK: 7412 ************************************Produto : FX_AB_4_OU_MAISAdjacências:CITIFINANCIA_NAO: 65 -> CITI_MAX_ELEG_MD_TLMK: 36 -> CITICARD_NAO: 48 ->CITICARD_N_NAO: 65 -> CITIMAX_N_PRIMEIRA: 10 -> CITI_MAX_NAO: 29 -> CITIMAX_N_NAO:55 -> CITICARD_ELEG_MD_TLMK: 17 ************************************Produto : FX_AB_3Adjacências:CITIFINANCIA_NAO: 1 -> CITI_MAX_NAO: 1 -> CITICARD_ELEG_MD_TLMK: 1 ->CITICARD_N_NAO: 1 -> CITIMAX_N_NAO: 1 ************************************Produto : FX_AB_2Adjacências:CITIFINANCIA_NAO: 1 -> CITI_MAX_NAO: 1 -> CITICARD_NAO: 1 -> CITICARD_N_NAO: 1 ->CITIMAX_N_NAO: 1 ************************************Produto : FX_AB_1Adjacências:CITIFINANCIA_NAO: 1 -> CITI_MAX_ELEG_MD_TLMK: 1 -> CITICARD_ELEG_MD_TLMK: 1 ->CITICARD_N_NAO: 1 -> CITIMAX_N_NAO: 1 Clique máxima pelo peso total: - FX_AB_4_OU_MAIS - CITIMAX_N_PRIMEIRA - CITICARD_ELEG_MD_TLMK - CITI_MAX_ELEG_MD_TLMK - CITIMAX_N_NAO - CITICARD_N_NAO
  37. 37. 4 Testes e Resultados 37 - CITICARD_NAO - CITI_MAX_NAO - FX_AB_NAO - CITIFINANCIA_NAO2676826 Quadro 1 Relações encontradas para o caso de teste 1 Para o caso de teste 2, foram utilizadas as variáveis, presentes na base deVendas:• sexo• faixa de vezes que o CPF foi abordado em uma campanha• indicador de restrição do CPF para uma campanha• indicador se o CPF já é de um cliente e• estado civil O propósito do experimento foi descobrir as relações entre tais variáveis,verificando quais características aparecem mais vezes nos registros da base Vendas. A consulta ao banco de dados foi realizada em 65547ms (≈ 66 segundos) e amatriz de adjacência com as relações entre os valores dos atributos foi montada em32625ms (≈ 33 segundos). Como foi realizado um filtro selecionando apenas os registrosdo sexo masculino e feminino (existem registro com valor de sexo “não informado” e“ignorado”, apenas 318.383 registros foram analisados. O clique encontrado tem nós com valor 1 para faixa de abordagem (ou seja, oCPF foi abordado apenas 1 vez em campanhas de marketing), sexo feminino, semrestrições ao CPF e com indicador de que este CPF ainda não se tornou cliente dainstituição. Com essas informações o analista pode inferir que as mulheres que nãopossuem restrição às campanhas para seus CPFs foram abordadas apenas uma vez enão responderam bem à campanha realizada, já que não se tornaram clientes. Assim, foipossível preparar mais campanhas buscando abordar novamente as pessoas que aindanão se tornaram clientes e que foram abordados apenas uma vez. O Quadro 2 apresenta a consulta realizada sobre a base de dados, todas asrelações encontradas entre as variáveis selecionadas pelo usuário e os valoresencontrados como pertencentes ao clique.Query: SELECT "IND CPF", "CITIFINANCIA", "FX AB", "ESTCIVIL", "SEXO" FROM"CREDICARDCITI_CITI_VENDAS" WHERE SEXO = F OR SEXO = MQuery execution time = ms 65547Total de registros: 318383Lendo os registros... Por favor, aguarde...
  38. 38. 4 Testes e Resultados 38Cálculo das relações durou 32625ms ... ************************************Produto : IND_CPF_-_NAOAdjacências:CITIFINANCIA_-_NAO: 279334 -> FX_AB_-_NAO: 310155 -> ESTCIVIL_-_NAO: 310223 -> SEXO_-_F: 170677 -> SEXO_-_M: 139546 -> CITIFINANCIA_-_SIM: 30889 -> FX_AB_-_4_OU_MAIS: 65 ->FX_AB_-_3: 1 -> FX_AB_-_2: 1 -> FX_AB_-_1: 1 ************************************Produto : CITIFINANCIA_-_NAOAdjacências:IND_CPF_-_NAO: 1070386 -> FX_AB_-_NAO: 286581 -> ESTCIVIL_-_NAO: 286649 -> SEXO_-_F:158326 -> SEXO_-_M: 128323 -> IND_CPF_-_PROP_RECENTE: 26916 -> FX_AB_-_4_OU_MAIS: 65 ->FX_AB_-_3: 1 -> FX_AB_-_2: 1 -> FX_AB_-_1: 1 ************************************Produto : FX_AB_-_NAOAdjacências:IND_CPF_-_NAO: 1070386 -> CITIFINANCIA_-_NAO: 731554 -> ESTCIVIL_-_NAO: 318315 ->SEXO_-_F: 175513 -> SEXO_-_M: 142802 -> CITIFINANCIA_-_SIM: 77973 -> IND_CPF_-_PROP_RECENTE: 26916 ************************************Produto : ESTCIVIL_-_NAOAdjacências:IND_CPF_-_NAO: 1070386 -> CITIFINANCIA_-_NAO: 731554 -> FX_AB_-_NAO: 493827 -> SEXO_-_F: 175553 -> SEXO_-_M: 142830 -> CITIFINANCIA_-_SIM: 77973 -> IND_CPF_-_PROP_RECENTE:26916 -> FX_AB_-_4_OU_MAIS: 103 -> FX_AB_-_3: 1 -> FX_AB_-_2: 1 -> FX_AB_-_1: 1 ************************************Produto : SEXO_-_FAdjacências:IND_CPF_-_NAO: 1070386 -> CITIFINANCIA_-_NAO: 731554 -> FX_AB_-_NAO: 493827 ->ESTCIVIL_-_NAO: 175553 -> CITIFINANCIA_-_SIM: 17227 -> IND_CPF_-_PROP_RECENTE: 5720 ->FX_AB_-_4_OU_MAIS: 103 -> FX_AB_-_1: 1 ************************************Produto : SEXO_-_MAdjacências:IND_CPF_-_NAO: 139546 -> CITIFINANCIA_-_NAO: 128323 -> FX_AB_-_NAO: 142802 ->ESTCIVIL_-_NAO: 142830 -> CITIFINANCIA_-_SIM: 77973 -> IND_CPF_-_PROP_RECENTE: 26916 -> FX_AB_-_4_OU_MAIS: 26 -> FX_AB_-_3: 1 -> FX_AB_-_2: 1 ************************************Produto : CITIFINANCIA_-_SIMAdjacências:IND_CPF_-_NAO: 30889 -> FX_AB_-_NAO: 31734 -> ESTCIVIL_-_NAO: 31734 -> SEXO_-_M: 14507 -> SEXO_-_F: 17227 -> IND_CPF_-_PROP_RECENTE: 5720 ************************************Produto : IND_CPF_-_PROP_RECENTEAdjacências:CITIFINANCIA_-_NAO: 7315 -> FX_AB_-_NAO: 8160 -> ESTCIVIL_-_NAO: 8160 -> SEXO_-_M: 3284-> CITIFINANCIA_-_SIM: 845 -> SEXO_-_F: 4876 ************************************Produto : FX_AB_-_4_OU_MAISAdjacências:IND_CPF_-_NAO: 65 -> CITIFINANCIA_-_NAO: 65 -> ESTCIVIL_-_NAO: 65 -> SEXO_-_F: 39 ->SEXO_-_M: 26 ************************************Produto : FX_AB_-_3Adjacências:IND_CPF_-_NAO: 1 -> CITIFINANCIA_-_NAO: 1 -> ESTCIVIL_-_NAO: 1 -> SEXO_-_M: 1 ************************************Produto : FX_AB_-_2Adjacências:IND_CPF_-_NAO: 1 -> CITIFINANCIA_-_NAO: 1 -> ESTCIVIL_-_NAO: 1 -> SEXO_-_M: 1 ************************************Produto : FX_AB_-_1Adjacências:IND_CPF_-_NAO: 1 -> CITIFINANCIA_-_NAO: 1 -> ESTCIVIL_-_NAO: 1 -> SEXO_-_F: 1 Clique máxima pelo peso total: - FX_AB_-_1 - SEXO_-_F
  39. 39. 4 Testes e Resultados 39 - ESTCIVIL_-_NAO - FX_AB_-_NAO - CITIFINANCIA_-_NAO - IND_CPF_-_NAO2140775 Quadro 2 Relações encontradas para o caso de teste 2
  40. 40. 5 Conclusão e Trabalhos Futuros 405Conclusão e Trabalhos Futuros5.1.Conclusões Esta dissertação abordou conceitos de data mining voltado para marketing derelacionamento, propondo uma implementação da técnica de market basket analysisbaseada na estrutura de grafo. Para contextualizar o problema, inicialmente foram discutidos tópicos importantesrelacionados à mineração de dados, bem como o processo de busca de conhecimento,os tipos de predição de informação e as técnicas mais utilizadas atualmente paradescobrimento de padrões em dados armazenados em bancos de dados. Maior foco foi dado à técnica de market basket analysis, pois, ao fazer uso deregras de associação, esta técnica caracteriza-se como uma ótima escolha parasolucionar problemas no escopo de marketing de relacionamento, tais como vendacasada e up-selling. Neste cenário, foi proposto um algoritmo que encontra as relaçõesmais recorrentes entre os produtos (variáveis) nas compras (registros) registradas nabase de dados. A fim de realizar testes que mensurassem o desempenho do algoritmodesenvolvido, um protótipo de aplicação foi criado, permitindo que o usuário escolha abase em que irá realizar os estudos e as variáveis que deseja cruzar a fim de descobriras relações existentes entre as variáveis. Sendo assim, este trabalho ainda apresentatestes e resultados obtidos através da utilização do algoritmo proposto. Como principal contribuição do trabalho, podemos apontar a implementação deum algoritmo para data mining capaz de descobrir relações entre atributos dos registrosde uma base de dados. A principal barreira enfrentada por tais implementações está nadificuldade de encontrar informação relevante, e em volume suficientemente grande,para estudar a eficiência do algoritmo em descobrir regras de associação referentes aosdados. No caso deste trabalho, as bases de dados utilizadas são reais e com qualidadee tamanho satisfatórios para uma análise mais apurada do retorno da solução proposta. Como segunda contribuição, podemos ressaltar a generalidade do protótipodesenvolvido, que pode ser aplicado a qualquer estrutura e tecnologia de base de dados,através do uso de conector ODBC para realizar as consultas aos dados disponíveis.
  41. 41. 5 Conclusão e Trabalhos Futuros 415.2.Trabalhos Futuros Como sugestões de trabalhos futuros, podemos enumerar: • Identificação dos atributos discretos No processo de descoberta das relações entre os atributos de um registro, só faz sentido trabalhar com aqueles que possuem domínio previamente conhecido, ou seja, atributos que sejam discretos. Sendo assim, é interessante apresentar para o usuário apenas as variáveis que sejam desse tipo, o que não foi realizado neste trabalho devido à uma limitação do conector ODBC utilizado. • Investir na visualização gráfica das informações descobertas A visualização do relacionamento entre os atributos em termos de imagens facilita a compreensão por parte do usuário e permite análises mais rápidas e intuitivas que o estudo das regras de associação descobertas. É interessante que um trabalho futuro explore a parte de visualização, buscando outros componentes que permitam a visualização do grafo de maneira mais limpa e que suporte grafos com grandes quantidades de nós e relações. • Trabalhar com outras estruturas de dados Este trabalho fez uso apenas de bases de dados de propriedade da Stone Age Tech, que não trabalha com tabelas como os bancos de dados convencionais, mas com uma estrutura colunar. Ao trabalhar com uma base de dados convencional, seria possível identificar se a estrutura da base influencia o desempenho final do algoritmo. • Estudo comparativo entre algoritmos A proposta dessa dissertação foi uma implementação da técnica de market basket analysis, utilizando-se os conceitos de grafos ponderados a fim de encontrar as relações mais frequentes, ou seja, o clique máximo do grafo. Como trabalho futuro complementar a este, pode-se sugerir a construção de outros algoritmos que tenham o mesmo princípio de regras de associação, como por exemplo, o Apriori, com o objetivo de realizar comparações de tempo de resposta e de acuracidade das informações sobre as relações. • Incluir medidas de interesse como suporte e confiança
  42. 42. 5 Conclusão e Trabalhos Futuros 42 A introdução de medidas, como suporte e confiança, permite que os padrões descobertos sejam ordenados ou classificados de acordo com o grau de interesse associado aos mesmos. Além disso, essas medidas podem ser usadas para guiar ou restringir o espaço de busca, melhorando a eficiência da mesma ao eliminar conjuntos de regras de associação que não satisfaçam as condições predeterminadas. • Acrescentar outras abordagens para descoberta do clique máximo Na literatura existem algumas abordagens diferentes para a solução problema do clique máximo. A título experimental, o estudo e a implementação de novas técnicas é sugerido como trabalho futuro complementar ao proposto por esta dissertação.
  43. 43. 6 Referências6Referências [1] SANDRI. A.; Detecção e Prevenção de Fraudes utilizando Inteligência Artificial. 2006. Disponível em <http://br.geocities.com/andresandri/artigos/IA/Deteccao_Prevencao_Fr aude_IA.doc> Acesso em Junho de 2008. [2] PASSINI, S.R.R; TOLEDO, C.M.T; Mineração de Dados para Detecção de Fraudes em Ligações de Água. 2002. Disponível em <http://www.inf.furb.br/seminco/2002/artigos/Passini-seminco2002- 6.pdf> Acesso em Junho de 2008. [3] RABELO, E;. Avaliação de Técnicas de Visualização para Mineração de Dados, 2007. Dissertação de Pós-Graduação, Universidade Federal de Maringá. Disponível em <http://www.din.uem.br/pos- graduacao/mestrado-em-ciencia-da-computacao/dissertacoes> Acesso em Junho 2008. [4] Fayyad, U.; Shapiro, P. G.; Smyth, P.; Knowledge Discovery and Data Mining: Towards a Unifying Framework. Menlo Park, Calif.: AAAI Press; Cambridge, Mass.: MIT Press, 1996. 611p. [5] FERRO, M., LEE, H. D.; O Processo de KDD – Knowledge Discovery in Database para Aplicações na Medicina, 2001. [6] ROMÃO, W.; Descoberta de Conhecimento Relevante em Banco de Dados sobre Ciência e Tecnologia. Dissertação de Pós-Graduação, Universidade Federal de Santa Catarina, 2002. [7] Information Drivers Company, Inglaterra. Disponível em <http://www.information-drivers.com/market_basket_analysis.php>. Acesso em julho 2008. [8] Direct Magazine, “Match Em Up” Outubro 2006. Disponível em <http://directmag.com/disciplines/crm/marketing_match_em>, Acesso em julho 2008. [9] VELOSO, M. S. A. Regras De Associação Aplicadas A Um Método De Apoio Ao Planejamento De Recursos Humanos. Dissertação de Mestrado, Universidade do Porto. [10] TAN, P., STEINBACH, M., KUMAR, V., Introduction to Data Mining. Person Addison Wesley Education Press Inc. Boston, 2005. [11] AZEVEDO, L. V. Maximizando o valor do relacionamento com o cliente: Data Mining e CRM. 2003. [12] SANTOS, J. G.; Mineração De Dados Aplicada à Gestão De Relacionamento com Clientes. Espaço Científico, Santarém V.6, n.1/2, p.29-36, 2005. [13] NOGUEIRA, C. F.; Metodologia de Valorização de Clientes, utilizando Mineração de Dados. Dissertação de Pós-graduação em Engenharia Civil da Universidade Federal do Rio de Janeiro, 2004.
  44. 44. 6 Referências [14] ADOMAVICIUS, G., TUZHILIN, A.; Toward the Next Generation of Recommender Systems: A Survey of the State-of-the-Art and Possible Extensions. IEEE Transactions On Knowledge And Data Engineering, VOL. 17, No. 6, Junho 2005. [15] BURKE, R; Knowledge-based Recommender Systems. University of California, Irvine. [16] MIDDLETON, S. E., ROURE, D., SHADBOLT, N.; Captuiring knowledge of User Preferences: Ontologies in Recommender Systems. University of Southampton. October 22-23, 2001, Victoria, British Columbia, Canada. [17] TAN, P.; STEINBACH, M.; KUMAR, V.; Introduction to Data Mining. Pearson Addison Wesley 2006. [18] LIU, F.; LU, Z; LU, S., Mining Association Rules Using Clustering, Intelligent Data Analysis,5, 2001, pp.309-326. [19] CAVIQUE, L. Graph-based structures for the Market Baskets Analysis. 24 2004, pp.233-246. [20] LIMEIRA, Tânia m. V. Administração das comunicações em Marketing. In: DIAS, S. R. Gestão de marketing. São Paulo: Saraiva, 2003. p. 301. [21] Bretze Marketing de Relacionamento 2004, Aumentando a Rentabilidade do Cliente com Database Marketing. Disponível em www.bretzke-marketing.com.br/textos/artigos01.htm. Acesso em janeiro de 2009. [22] HOUTSMA, M., SWAMI, A. Set-oriented mining for association rules in relational databases. Twente Univ., Enschede; Data Engineering, 1995. Proceedings of the Eleventh International Conference on p. 25-33. [23] DIPANKAR, D., Artificial Immune System and Their Aplications. Springer-Verlag 1999. [24] DASGUPTA, D., Ji, Z., González, F., Artificial Immune System (AIS) Research in the Last Five Years. IEEE 2003. [25] AGRAWAL, R., IMIELINSKI, T., SRIKANT, R., Mining Association Rules between Sets of Items in Large Databases, Proc. of the ACM SIGMOD Intl. Conf. on Management of Data, Washington, Estados Unidos, 1993, 207–216. [26] C. Borgelt, An Implementation of the FP-growth Algorithm, Workshop Open Source Data Mining Software, OSDM05, Chicago, IL, 1-5.ACM Press, USA, 2005. [27] S. Brin, R. Motwani, J.D. Ullman and S.Tsur, Dynamic Itemset Counting and Implication Rules for Market Basket Data, in Proceedings of the 1997 ACM SIGMOD Conference, Tucson, Arizona, 1997, pp.255-264. [28] J. Han, J. Pei, Y. Yin, “Mining frequent patterns without candidate generation”, Proceedings of the 2000 ACM SIGMOD International Conference on Management of Data, Dallas, Texas, United States, 1- 12, 2000
  45. 45. 7 Apêndice A7APÊNDICE A – Código da ImplementaçãoUnit Main – Main.pas(******************************************************************************** PONTIFICIA UNIVERSIDADE CATÓLICA DO RIO DE JANEIRO - PUC-RIO** Programa de Pós-Graduação em Informática - Mestrado** Programa apresentado como requisito parcial para o cumprimento dos créditos da* cadeira de Projeto Final de Programação (INF 2102).** Aluna: Livia Fonseca Fracalanza* Matricula : 0621292* Orientador: Prof. Marco Antonio Casanova*******************************************************************************)unit Main;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Grids, RzGrids, RzShellDialogs, StdCtrls, RzLabel, Mask, RzEdit, RzBtnEdt, ExtCtrls, LogView, OleCtrls, SHDocVw, MBAObject, DB, ADODB, CheckLst, RzLstBox, RzChkLst;type TFMain = class(TForm) Panel3: TPanel; Splitter1: TSplitter; WebBrowser1: TWebBrowser; Panel1: TPanel; Panel2: TPanel; Panel4: TPanel; BtnMaximalCliqueByWeight: TButton; RzOpenDialog1: TRzOpenDialog; BtnGraphGenerator: TButton; BtnMaximalCliqueByAverage: TButton; RzLabel1: TRzLabel; BtnConnect: TButton; BtnDisconnect: TButton; cbDriversList: TComboBox; RzLabel2: TRzLabel; cbBases: TComboBox; RzLabel3: TRzLabel; ODBCConnect: TADOConnection; Button1: TButton; edtFilter: TEdit; Filtro: TLabel; Button2: TButton; Memo1: TMemo; Label1: TLabel;
  46. 46. 7 Apêndice A VarListBox: TRzCheckList; procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure btnPrintClick(Sender: TObject); procedure FileEdtButtonClick(Sender: TObject); procedure BtnMaximalCliqueByWeightClick(Sender: TObject); procedure BtnGraphGeneratorClick(Sender: TObject); procedure BtnMaximalCliqueByAverageClick(Sender: TObject); procedure BtnConnectClick(Sender: TObject); procedure BtnDisconnectClick(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private MBAObj : TMBAObj; FFilePath : string; recset : _Recordset; procedure ReadFile; procedure GetDriversList; procedure PrintRelations; procedure PrintMaximalClique; procedure DisconnectODBC; public// FLogViewer : TLogViewer; // Main log info end;var FMain: TFMain;implementation{$R *.dfm}uses// StrUtils, // for AnsiStr functions Registry, LoginForm, WINGRAPHVIZLib_TLB; // to use GraphViz to draw Graph gif(******************************************************************************)procedure TFMain.FormCreate(Sender: TObject);begin //Create Log Object CreateLogObject; FLogViewer.LogUpdate ( *** Início da execução do programa *** ); GetDriversList; VarListBox.MultiSelect := TRUE;end;(******************************************************************************)procedure TFMain.FormDestroy(Sender: TObject);begin // Destroy Log Object FLogViewer.LogUpdate ( *** Encerrando a execução do programa *** ); If Assigned (FLogViewer) then FreeAndNil (FLogViewer);end;(******************************************************************************)procedure TFMain.GetDriversList;
  47. 47. 7 Apêndice Avar reg : TRegistry; List : TStrings;begin reg := TRegistry.Create; List := TStringList.Create; try reg.RootKey := HKEY_LOCAL_MACHINE; reg.OpenKey (SOFTWAREODBCODBC.INI, False); reg.GetKeyNames (List); cbDriversList.Items.Assign (List); finally reg.Free; List.Free; end;end;(******************************************************************************)(******************************************************************************)procedure TFMain.btnPrintClick(Sender: TObject);begin PrintRelations;end;(******************************************************************************)(******************************************************************************** Procedure: PrintRelations* Descrição: Procedure passa pelos nós da lista de adjacência imprimindo a rela- ção existente entre os mesmos e a quantidade de vezes em que essa relação acontece.********************************************************************************)procedure TFMain.PrintRelations;var i, j : Integer; Produto : TProduct; PAdj : TProduct; ws : string;begin// Memo1.Lines.Clear; for i := 0 to MBAObj.FAdjList.Count-1 do begin ws := ; Produto := TProduct(MBAObj.FAdjList.Objects[i]); Memo1.Lines.Add( ************************************ ); Memo1.Lines.Add(Produto : + MBAObj.FAdjList.Strings[i]); Memo1.Lines.Add(Adjacências: ); for j := 0 to Produto.List.Count-1 do begin PAdj := TProduct(Produto.List.Objects[j]); ws := ws + PAdj.ID + : + IntToStr(PAdj.Qtd) + -> ; end; Memo1.Lines.Add(Copy(ws,0, length(ws)-3)); end;end;(******************************************************************************)procedure TFMain.FileEdtButtonClick(Sender: TObject);begin
  48. 48. 7 Apêndice A if RzOpenDialog1.Execute then FFilePath:= RzOpenDialog1.FileName;// FileEdt.Text:= FFilePath; //Create MBA Object if Assigned (MBAObj) then MBAObj.Destroy; MBAObj := TMBAObj.Create; // Read the Transaction File and Set the Adjacent List, constructing the Graph ReadFile; //Print the relations at the list of adjacencies PrintRelations;end;(******************************************************************************)(******************************************************************************** Procedure: ReadFile* Descrição: Lê cada linha do arquivo texto, representando uma transação e chama* a função FillAdjList para computar a relação de adjacência dos* ítens da transação.** AE : -* AS : -*******************************************************************************)procedure TFMain.ReadFile;var MatrixFile : TextFile; TransactionLine: string; PList : TStringList; i : integer;begin if not FileExists(FFilePath) then begin ShowMessage (O Arquivo informado não existe.); FLogViewer.LogUpdate (Erro: O Arquivo informado não existe.); exit; end; Memo1.Lines.Clear; i := 0; try AssignFile(MatrixFile, FFilePath); Reset(MatrixFile); Plist := TStringList.Create; PList.Delimiter := ;; while not Eof(MatrixFile) do begin Readln(MatrixFile, TransactionLine); Memo1.Lines.Add(Lendo Transação + IntTOStr(i+1)); Memo1.Lines.Add(TransactionLine); Memo1.Lines.Add( ----------------- ); PList.DelimitedText := TransactionLine; MBAObj.FillAdjList (PList, 0);
  49. 49. 7 Apêndice A inc(i); end; FLogViewer.LogUpdate (IntToStr(i) + transações lidas.); finally CloseFile(MatrixFile);// FreeAndNil (MatrixFile); end;end;(******************************************************************************)(******************************************************************************** Procedure: BtnGraphGeneratorClick* Descrição: Procedure que implementa o clique do botão de criação da imagem do* grafo de acordo com as informações da lista de adjacências.********************************************************************************)procedure TFMain.BtnGraphGeneratorClick(Sender: TObject);var Dot: IDot; Image: IBinaryImage; ImageFileName: string; Path : string; Data : widestring; i, j : Integer; Vertex, Adjc : TProduct;begin Memo1.Lines.Clear; Memo1.Lines.Add(graph G); Memo1.Lines.Add({); Memo1.Lines.Add(label=" Grafo de Transações "); Memo1.Lines.Add(node [color=pink, style=filled]); for i := 0 to MBAObj.FAdjList.Count-1 do begin Vertex := TProduct(MBAObj.FAdjList.Objects[i]); if MBAObj.FMaximumCliqueList.IndexOf(Vertex.ID) >= 0 then // Node is a part of theMaximal Clique begin Memo1.Lines.Add(Vertex.ID + [color=yellow]); end; for j := 0 to Vertex.List.Count-1 do begin Adjc := TProduct(Vertex.List.Objects[j]); if Vertex.ID < Adjc.ID then begin Memo1.Lines.Add(Vertex.ID + -- + Adjc.ID + [label = + IntToStr(Adjc.Qtd) +, color=green]); end; end; end; Memo1.Lines.Add(});// Print the Graph Data := Memo1.text; Path := ExtractFilePath(paramStr(0)); ImageFileName := Path + Graph_image.gif; Dot := CoDOT.Create; Image := Dot.ToGIF(Data);
  50. 50. 7 Apêndice A Image.Save(ImageFileName); WebBrowser1.Navigate(file:/// + Path + Graph_image.gif);end;(******************************************************************************)procedure TFMain.BtnMaximalCliqueByWeightClick(Sender: TObject);begin MBAObj.FindTheMaximalClique (M_WEIGHT); PrintMaximalClique;end;(******************************************************************************)procedure TFMain.BtnMaximalCliqueByAverageClick(Sender: TObject);begin MBAObj.FindTheMaximalClique (AVERAGE); PrintMaximalClique;end;(******************************************************************************)procedure TFMain.PrintMaximalClique;var i : Integer;begin // Se foram identificados nós que formam uma clique máxima, imprime a mesma if MBAObj.FMaximumCliqueList.Count > 0 then begin Memo1.Lines.Add ( Clique máxima pelo peso total: ); for i := 0 to MBAObj.FMaximumCliqueList.Count -1 do begin Memo1.Lines.Add( - + MBAObj.FMaximumCliqueList[i]); end; Memo1.Lines.Add(FloatToStr(MBAObj.FMaxCliqueWeight)); end else Memo1.Lines.Add( -> Não existe uma Clique.);end;(******************************************************************************)procedure TFMain.BtnConnectClick(Sender: TObject);var ConnectStr, DriverName : string; List : TStrings;begin if cbDriversList.ItemIndex < 0 then begin ShowMessage (Por favor, selecione um Driver ODBC!); exit; end; if FrmLogin.ShowModal <> mrOK then exit; DriverName := cbDriversList.Text; ConnectStr := Provider=MSDASQL.1;Persist Security Info=False;Data Source= + DriverName; (* connect *) try ODBCConnect.ConnectionString := ConnectStr; ODBCConnect.Open (FrmLogin.UserName, FrmLogin.Password); // (ADMCAMP,THORAN); //
  51. 51. 7 Apêndice A List := TStringList.Create; try if ODBCConnect.Connected then ShowMessage (Conectado!) else begin ShowMessage (Conexão falhou!); Exit; end; ODBCConnect.GetTableNames (List, False); cbBases.Items.Assign (List); finally List.Free; end; BtnConnect.Enabled := false;// Button1.Enabled := true; BtnDisconnect.Enabled := true; except on E : EADOError do begin ShowMessage (E.Message); DisconnectODBC; end; on E : Exception do begin ShowMessage (Conexão Simba falhou : + E.Message); DisconnectODBC; end; end;end;(******************************************************************************)procedure TFMain.BtnDisconnectClick(Sender: TObject);begin DisconnectODBC;end;(******************************************************************************)procedure TFMain.DisconnectODBC;begin ODBCConnect.Close; BtnConnect.Enabled := true;// Button1.Enabled := false; BtnDisconnect.Enabled := false; VarListBox.Clear;end;(******************************************************************************)procedure TFMain.Button1Click(Sender: TObject);var List : TStrings;begin if not ODBCConnect.Connected then begin ShowMessage (Dataset desconectado!); Exit; end; if cbBases.ItemIndex < 0 then
  52. 52. 7 Apêndice A begin ShowMessage (Por favor, selecione um dataset!); Exit; end; List := TStringList.Create; VarListBox.Clear; try ODBCConnect.GetFieldNames (cbBases.Text, List); VarListBox.Items.Assign (List); finally List.Free; end;end;procedure TFMain.Button2Click(Sender: TObject);var queryStr, DataSetName, VarListStr : String; Ix, Jx : Integer; SelList : Array of String; SelCount : Integer; timestep : DWORD; FilterStr : String; FullRecovery : boolean; columnsList : array of string; RecLine : TStringList; auxStr : String;begin if cbBases.ItemIndex < 0 then begin ShowMessage (Por favor, selecione um dataset!); Exit; end; SelCount := VarListBox.ItemsChecked; if SelCount = 0 then begin ShowMessage (Por favor, selecione pelo menos uma variável!); Exit; end; SetLength (SelList, SelCount); SetLength (columnsList, SelCount); Jx := 0; DataSetName := cbBases.Text; with VarListBox do begin for Ix := 0 to Count - 1 do begin if ItemChecked[Ix] then begin SelList[Jx] := Items.Strings[Ix]; if VarListStr <> then VarListStr := VarListStr + , ;
  53. 53. 7 Apêndice A VarListStr := VarListStr + #34 + SelList[Jx] + #34; Inc (Jx); end; end; end; FilterStr := ; if edtFilter.Text <> then FilterStr := WHERE + edtFilter.Text; queryStr := SELECT + VarListStr + FROM " + DataSetName + " + FilterStr; Memo1.Lines.Add(Query: + queryStr); try timestep := GetTickCount(); recset := ODBCConnect.Execute (queryStr); timestep := GetTickCount() - timestep; Memo1.Lines.Add(Query execution time = ms + IntToStr (timestep) + #13 + #10 + Total de registros: + IntToStr(RECSET.RecordCount)); except on E : EADOError do begin ShowMessage (E.Message); Exit; end; on E2 : Exception do begin ShowMessage (Query failed : + E2.Message); Exit; end; end; try for Jx := 0 to SelCount - 1 do columnsList [Jx] := SelList[Jx]; Jx := 0; RecLine := TStringList.Create; RecLine.Delimiter := ;; // Create MBA Object if Assigned (MBAObj) then MBAObj.Destroy; MBAObj := TMBAObj.Create; Memo1.Lines.add (Lendo os registros... Por favor, aguarde...); timestep := GetTickCount(); repeat Inc (Jx); auxStr := ; for Ix := 0 to recset.Fields.Count - 1 do begin auxStr := auxStr + columnsList [Ix] + _ + trim(recset.Fields[Ix].Value) + ;; end; RecLine.DelimitedText := Copy(auxStr, 1, length(auxStr)-1);

×