CECÍLIA HENRIQUES DEVÊZA Orientador: Luiz Henrique de Campos Merschmann Minerando Padrões Sequenciais para Bases de Dados de Lojas Virtuais Ouro Preto Junho de 2011 Universidade Federal de Ouro Preto - UFOP Instituto de Ciências Exatas e Biológicas - ICEB Departamento de Computação - DECOM Minerando Padrões Sequenciais para Bases de Dados de Lojas Virtuais Monograa apresentada ao Curso de Bacharelado em Ciência da Computaçao da Universidade Federal de Ouro Preto como requisito parcial para obtenção do grau de Bacharel em Ciência da Computação. Cecília Henriques Devêza Ouro Preto Junho de 2011 Resumo A Mineração de Dados é denida em [15] como um processo automatizado de descoberta de novas informações a partir de grandes massas de dados. Este processo é parte de um processo maior conhecido como KDD (Knowledge Discovery in Database ) ou Descoberta de Conhecimento em Bases de Dados. O KDD pode ser dividido em 3 etapas principais: Pré-processamento (limpeza, seleção e transformação), Mineração dos Dados, e Pós-processamento (avaliação e interpretação). Este trabalho apresenta um software para realização do pré-processamento automático e mineração de dados de lojas virtuais, com o intuito de obter conhecimento útil destes para utilização em campanhas de marketing e adaptação da loja virtual de acordo com produtos visualizados por cada cliente. O software proposto utiliza a técnica de extração de padrões sequenciais através do algoritmo GSP proposto em [2], procurando identicar grupos de itens Y que ocorrem após o aparecimento de grupos de itens X. Palavras-chave: GSP. Mineração de Dados. Padrões Sequenciais. Algoritmo Abstract Data Mining is dened in [15] as an automated process of discovering new information from large databases. This process is part of a larger process known as Knowledge Discovery in Database (KDD). It can be divided into three main stages: Pre-processing (cleanness, selection and transformation), Data Mining, and Post-processing (evaluation and interpretation). This paper presents a software for performing the automatic pre-processing ans data mining from online stores, in order to obtain useful knowledge about these for use in merketing campaings ans online store's adaptation according to the products viewed by each customer. The suggested software uses the technique of sequential pattern extraction through the GSP algorithm proposed in [2], trying to identify itemsets Y that occur after the appearance of itemsets X. Keywords: Data Mining, Sequential Patterns, GPS Algorithm. 3 Sumário 1 Introdução 1 2 Revisão Bibliográca 3 2.1 Algoritmos para Extração de Regras de Associação 2.1.1 2.2 2.3 Algoritmo Apriori . . . . . . . . . . . . . . . . . . . . . . . . . Algoritmos para Extração de Padrões de Sequência . . . . . . . . . . 3 4 AprioriAll . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 2.2.2 PrexSpan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 2.2.3 Spade 5 2.2.4 GSP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 Trabalhos Relacionados . . . . . . . . . . . . . . . . . . . . . . . . . . 11 13 software O desenvolvimento do . . . . . . . . . . . . . . . . . . . . . 4 Experimentos 4.1 3 2.2.1 3 Abordagem Proposta 3.1 . . . . . . . . . . 14 18 . . . . . . . . . . . . . . . . . . . . 18 4.1.1 Correção dos erros de codicação Substituição de caracteres inválidos . . . . . . . . . . . . . . . 18 4.1.2 Seleção e correção do caractere inválido . . . . . . . . . . . . . 19 4.2 Escolha da loja virtual . . . . . . . . . . . . . . . . . . . . . . . . . . 20 4.3 Remoção de Tuplas Únicas . . . . . . . . . . . . . . . . . . . . . . . . 20 4.4 Mapeamento dos Dados . . . . . . . . . . . . . . . . . . . . . . . . . 20 4.5 Mineração de Dados . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 4.6 Pós-processamento dos Dados . . . . . . . . . . . . . . . . . . . . . . 21 4.7 Considerações nais . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 5 Conclusões 23 Lista de Figuras 1 Funcionamento do Apriori com suporte mínimo de 50% . . . . . . . . 4 2 Iteração 1 do GSP - suporte mínimo de 50% . . . . . . . . . . . . . . 6 3 Iteração 2 do GSP 7 4 Inserção dos itens candidatos na árvore . . . . . . . . . . . . . . 8 5 Dene candidatos possivelmente frequentes . . . . . . . . . . . . . . . 9 6 Dene candidatos possivelmente frequentes . . . . . . . . . . . . . . . 10 7 Iteração 3 do GSP . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 8 Fluxo de Dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 9 Tela Inicial do 10 Denição da Loja Virtual 11 . . . . . . . . . . . . . . . . . . . . . . . . . . . . Software hash . . . . . . . . . . . . . . . . . . . . . . . . . 15 . . . . . . . . . . . . . . . . . . . . . . . . 16 Exibição dos resultados . . . . . . . . . . . . . . . . . . . . . . . . . . 17 Lista de Tabelas 1 Sequencias candidadas de 2 itens 2 Tempos de Transações - Sequencia do Cliente 3 Estrutura da tabela que armazena dados dos visitantes . . . . . . . . 14 4 Tabela Original . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 5 Seleção das tuplas onde aparecem erros . . . . . . . . . . . . . . . . . 18 6 Erros de codicação caracterizados por um único caractere . . . . . . 19 7 Parte do SQL gerado pelo programa em PHP . . . . . . . . . . 19 8 Erros de codicação caracterizados por um único caractere . . . . . . 19 9 Tuplas de dados não-mapeados . . . . . . . . . . . . . . . . . . . . . 21 10 Tuplas de dados mapeados . . . . . . . . . . . . . . . . . . . . . . . . 21 script . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 10 1 Introdução O constante crescimento do desenvolvimento tecnológico tem trazido às organizações uma quantidade abundante de dados, evidenciando a importância da utilização de ferramentas computacionais capazes de extrair informações úteis desses dados. A grande necessidade dessas organizações é justamente transformar esses dados em conhecimento. De acordo com [6], o grande volume de dados impede a utilização dos métodos tradicionais de análise, como as planilhas de cálculo e relatórios informativos. Entretanto, uma ferramenta para análise desses dados deve considerar esse volume, pois representa justamente um maior potencial de informação. Em resposta à esta necessidade, surgiu a área de pesquisa e aplicação conhecida como Mineração de Dados. A mineração de dados pode ser dinida como o processo automatizado de descoberta de novas informações a partir de grandes massas de dados [15]. Mineração de Dados ou Data Mining, é um ramo da computação que teve início nos anos 80, quando surgiram as primeiras preocupações das empresas e organizações em relação à massa de dados que estava sendo estocada e demandava mais espaço a cada dia, não oferecendo qualquer tipo de utilidade à empresa. A mineração de dados envolve o estudo de tarefas e técnicas, sendo as tarefas classes de problemas denidos por estudos na área e as técnicas os grupos de soluções para resolvê-las [15]. A mineração de dados é apenas uma das etapas de um processo mais amplo que chamamos de KDD ( Knowledge Discovery in Database ), ou Descoberta de Conhecimento em Bases de Dados, onde são aplicados algoritmos voltados para atingir objetivos especícos [5]. De acordo com Goebel e Gruenwald [5], o KDD é um processo interativo e iterativo, que envolve muitos passos e é utilizado basicamente para tornar dados brutos em conhecimento útil. O processo de descoberta de conhecimento pode ser dividido em três etapas principais: 1. Pré-processamento de Dados Os dados muitas vezes podem conter ruídos, inconsistências e incompletudes. A etapa de pré-processamento pode tomar até 80% do tempo necessário para a realizaçao de todo o processo, e visa sobretudo preparar os dados para que a próxima etapa possa ser realizada de forma efetiva. As tarefas realizadas nesta etapa são: Limpeza - Remove ruídos e inconsistências; • Seleção - Identica apenas os dados relevantes para a aplicação da mi• neração; • Transformação - Consolida os dados em forma apropriada para a mineração. 2. Mineração de Dados Etapa de obtenção das informações. Os algoritmos aplicados nesta etapa estão diretamente relacionados ao objetivo do processo KDD. Para cada problema de mineração de dados, existem algoritmos adequados para obter uma solução satisfatória. Esses algoritmos podem pertencer à dois tipos principais de tarefas: 1 • Tarefas Descritivas: Se concentram em encontrar padrões que descre- vam os dados de forma interpretável pelos seres humanos. As principais tarefas descritivas são a Extração de Regras de Associação e Agrupamento ( • Clustering ). Tarefas Preditivas: Se concentram em inferir informações sobre os dados já existentes para predizer o comportamento de novos dados. As principais tarefas preditivas são a Classicação e a Regressão. 3. Pós-Processamento Nesta etapa os resultados são vericados a m de se aproveitar informações úteis extraídas na etapa anterior. Duas tarefas são realizadas nesta etapa: • Avaliação - identica os padrões realmente interessantes, que representam conhecimento baseado em algumas medidas de interesses. • Apresentação - Permite a visualização do conhecimento minerado ao usuário. Este trabalho está organizado da seguinte forma. A Seção 2 contém uma revisão bibliográca sobre as tarefas de extração de regras de associação e extração de padrões de sequência. A Seção 3 é dedicada à apresentação da proposta deste trabalho e como ele foi desenvolvido. Os experimentos realizados durante o trabalho são exibidos na Seção 4. Finalmente, na Seção 5, são apresentadas as conclusões deste trabalho. 2 2 Revisão Bibliográca Na mineração de dados a tarefa de extração de regras de associação consiste em determinar quais itens tendem a ocorrer em uma mesma transação. O exem- plo clássico é determinar quais produtos costumam ser adquiridos em uma mesma compra em um determinado supermercado. A análise deste tipo de resultado pode contribuir no planejamento das prateleiras, disposição dos itens em um catálogo, denição de promoções conjuntas, e diversas outras estratégias para convencer o cliente a adquirir um maior número de produtos sem que ele perceba. A extração de regras de associação surgiu a princípio pela necessidade de se obter itens que aparecem constantemente juntos em uma base de dados. Entretanto, após a criação do primeiro algoritmo capaz de realizar este cálculo, surgiu também a necessidade de relacionar estes itens à uma ordem temporal lógica, de forma que as regras extraídas estaríam diretamente ligadas ao momento em que cada item ocorreu. Este processo cou conhecido como extração de padrões sequencias. Nas seções a seguir são apresentados alguns algoritmos para extração de regras de associação e padrões sequenciais. 2.1 Algoritmos para Extração de Regras de Associação O problema de extração de regras de associação é solucionado a partir de algoritmos de extração de regras. O objetivo principal desses algoritmos é obter regras do tipo X => Y, onde X e Y representam conjuntos de itens, chamados regra indica que a ocorrência de um itemset itemsets. A itemset X implica na ocorrência de um Y. Para determinar estas regras, geralmente dois fatores são avaliados: o da regra - porcentagem de transações onde os transação na base; e a tam o itemset itemsets suporte X e Y aparecem numa mesma conança da regra - porcentagem de transações que supor- Y dentre todas as transações que suportam o itemset X. 2.1.1 Algoritmo Apriori O algoritmo Apriori, proposto em [12], é o método mais comumente utilizado na mineração de padrões frequentes em bases de dados. O algoritmo é capaz de extrair conjuntos de itens frequentes, e a partir destes conjuntos, alguns procedimentos podem ser realizados para se obter regras de associação. O algoritmo funciona realizando um processo iterativo, onde cada iteração executa basicamente duas funções: itemsets • Gerar • Denir quais candidatos possivelmente frequentes. itemsets canditados são realmente frequentes. Na etapa de geração dos candidatos, é utilizada a propriedade de nia da relação de inclusão entre os itemsets : antimonoto- Sejam I e J dois itemsets tais que I ⊂ J. Se J é um itemset frequente, então I também é frequente. Logo, para que um itemset seja considerado frequente, é necessário que todos seus subconjuntos também sejam frequentes. Pela contra-positiva, todo itemset que contém um subconjunto não frequente, também não é frequente. Dessa forma, os itemsets itemsets canditados de tamanho frequentes de tamanho k - 1. O ciclo do Apriori consiste basicamente em: 3 k são calculados a partir dos • Calcular o suporte de todos os itemsets possiveis de tamanho 1 e, em seguida, eliminar os que não atendem ao suporte mínimo (marcados com * na Figura 1). • A partir dos itemsets considerados frequentes na etapa anterior, criar itemsets candidatos de tamanho 2, e novamente eliminar os que não atendem ao suporte mínimo. • itemset seja considerado frequente na etapa k-1, não gerando portanto candidatos na etapa k. Repetir o processo até que nenhum A Figura 1 exemplica a estratégia do algoritmo Apriori para um suporte de 50%. Cada iteração k frequentes de tamanho gera k. k-itemsets como resultado, ou seja, conjuntos de itens A solução para o exemplo mostrado na Figura é: 1-itemset: {A}, {B}, {C}, {E}; 2-itemset: {A,C}, {B,C},{B,E},{C,E}; 3-itemset: {B,C,E}. Banco de Dados Gera Candidatos (k=1) Define Frequentes (k=1) Transação Itens Itemset Sup. Itemset Sup. 10 A, C, D {A} 2 {A} 2 20 B, C, E {B} 3 {B} 3 30 A, B, C, E {C} 3 {C} 3 40 B, E {D} 1 {E} 2 {E} 2 Gera Candidatos (k=3) * Define Frequentes (k=2) Gera Candidatos (k=2) Itemset Sup. Itemset Sup. Itemset Sup. {B, C, E} 2 {A, C} 2 {A, B} 1 {B, C} 2 {A, C} 2 {B, E} 3 {A, E} 1 {C, E} 2 {B, C} 2 {B, E} 3 {C, E} 2 Define Frequentes (k=3) Itemset Sup. {B, C, E} 2 * * Figura 1: Funcionamento do Apriori com suporte mínimo de 50% 2.2 Algoritmos para Extração de Padrões de Sequência A extração de regras de associação atende à necessidade de se obter conjuntos de itens que aparecem numa mesma transação com uma determinada frequência em uma base de dados. Entretanto, para uma determinada aplicação, pode ser importante também a ordem de ocorrência dos itemsets. Sendo assim, se uma base de dados possui uma informação temporal - data da ocorrência das transações pode-se realizar a mineração de padrões sequenciais, cujo objetivo é descobrir todas 4 as sequências frequentes de itemsets, ordenados no tempo, em que cada itemset corresponde a um conjunto de itens adquiridos em uma mesma transação. A extração de padrões sequenciais permite denir por exemplo, clientes potenciais à realização de uma compra do itemset Y, visto que ele já adquiriu o X. As seções a seguir descrevem alguns algoritmos utilizados na extração de padrões de sequência. Alguns algoritmos, como o AprioriAll e GSP foram baseados na técnica Apriori descrita anteriormente, já outros como o PrexSpan e o Spade utilizam técnicas alternativas para contornar o problema das consecutivas varreduras no banco de dados. O algoritmo GSP terá uma ênfase maior, visto que foi escolhido para ser utilizado na etapa de mineração dos dados deste trabalho. 2.2.1 AprioriAll O AprioriAll, proposto em [13], surgiu como um complemento do Apriori, buscando atender à necessidade de manter a sequencia dos dados. O objetivo neste algoritmo é encontrar sequências de itens que ocorrem com uma determinada frequência na base de dados. Neste contexto, a base de dados necessita de uma nova informação: uma data ou algum identicador temporal para as transações. O AprioriAll identica sequencias de itens que podem ser representadas como <X, Y, Z> onde X, Y e Z são itemsets frequentes que ocorrem segundo a ordem apresentada. Para selecionar apenas os itens que ocorreram sequencialmente, a base de dados deve possuir necessariamente uma informação temporal relacionada às transações. A base de dados deverá passar por uma transformação inicial que traduz as de itens, em sequencias de clientes. sequências Para realizar este procedimento, as transações de cada cliente passam a ser representadas em uma mesma tupla, por exemplo: < {20, 30}, {10}, {4, 12} >. Esta sequencia indica que um mesmo cliente visualizou os itens 20 e 30 em um determinado momento, posteriormente, o cliente visualizou o item 10, e, por m, visualizou os itens 4 e 12. Reescrevendo a sequencia anterior, representando os conjuntos de itens como itemsets, temos: < A, B, C >, onde A = {20, 30}, B = {10} e C = {4, 12}. 2.2.2 PrexSpan O algoritmo PrexSpan proposto em [7] utiliza uma técnica diferente da empregada no Apriori. Ao invés de realizar consecutivas iterações para gerar e podar candidatos, o PrexSpan se baseia em projeções consecutivas da própria base de dados, a m de se obter padrões sequenciais diretamente da base, sem passar pela etapa de geração e poda de candidatos. O algoritmo tem um custo signicativo para a construção dessas projeções, visto que ele projeta e particiona recursivamente a base de dados, logo, se existe uma grande quantidade de padrões frequentes, o custo pode ser muito alto. Por outro lado, ele reduz os esforços de geração de candidatos e reduz substancialmente o tamanho das bases de dados [1]. 2.2.3 Spade O algoritmo SPADE proposto em [16] utiliza propriedades combinatórias para decompor o problema original em sub-problemas menores, que podem ser resolvidos de forma independente na memória principal. Para realizar as divisões o algoritmo 5 utiliza ecientes técnicas de pesquisa e otimização, e junções simples de operações. Todas as sequências frequentes são obtidas com apenas três buscas no base de dados. 2.2.4 GSP O algoritmo GSP foi introduzido em [2] e também se baseia na técnica do Apriori. Ele difere do AprioriAll principalmente nas etapas de criação e poda de candidatos. Nesta última, são podados muito mais candidatos por iteração, devido à uma otimização na construção de seus pré-candidatos. Na fase de geração de candidatos: • frequentes e • Itemsets itemsets. No algoritmo AprioriAll, em cada iteração k, os conjuntos Lk e Ck ( itemsets candidatos) são constituídos de sequências de k No algoritmo GSP, em cada iteração k os conjuntos Lk e Ck ( Itemsets fre- itemsets candidatos) são constituídos de sequencias de k itens. Ou itemsets frequentes <{A}> e <{B}> dão origem, no AprioriAll, ao quentes e seja, os candidato <{A}, {B}>. Já no algoritmo GSP, os mesmos dão origem à dois candidatos: <{A},{ B}> e <{A, B}>. Ao invés de darem origem a um candi- itemsets, dá origem a dois candidatos itens, estejam eles em itemsets distintos ou não. dato que possui dois que possuem dois O ciclo do GSP se resume basicamente em: gerar candidatos, calcular suporte e podar candidatos. Os parágrafos a seguir descrevem o passo-a-passo do algoritmo. 2.2.4.1 Iteração 1 - Geração de candidatos, cálculo do suporte e poda Inicialmente, o suporte de cada ocorre no AprioriAll. 1-itemset é calculado, da mesma forma como Neste exemplo, o suporte mínimo estipulado é de 50%. Figura 2 exibe a base de dados utilizada neste exemplo e o suporte de cada itemset. A 1- Nas iterações seguintes, tanto o cálculo do suporte quanto a geração dos candidatos são realizados de forma diferente. Transação Sequencia 1 <{2, 1, 4, 6}, {3, 7, 8}, {5}, {9}> 2 <{2, 4, 5}, {1, 6, 7}, {3}> 3 <{2, 4}, {1, 5}> 4 <{1, 3}, {2, 4, 5}> Itemset Suporte {1} 4 {2} 4 {3} 3 {4} 4 {5} 4 {6} 2 {7} 2 {8} 1 * {9} 1 * Figura 2: Iteração 1 do GSP - suporte mínimo de 50% 6 2.2.4.2 Iteração 2 - Geração de candidatos Neste momento, a geração de candidatos se difere do AprioriAll. Cada combinado à ele mesmo e todos os outros itemsets 1-itemsets itemset é da tabela, gerando não somente de tamanho 2, como também sequeências de 2 itemsets. O importante aqui é que os candidatos devem possuir 2 itens, sejam eles pertencentes à um mesmo itemset ou não. A Figura 3 exemplica este passo. Transação Produtos 1 <{1, 1}>, <{1}, {1}> Combinação entre L1 e L1 2 <{1, 2}>, <{1}, {2}> Itemset L1 L1 3 <{1, 3}>, <{1}, {3}> {1} <{1}> <{1}> 4 <{1, 4}>, <{1}, {4}> {2} <{2}> <{2}> 5 <{1, 5}>, <{1}, {5}> {3} <{3}> <{3}> 6 <{1, 6}>, <{1}, {6}> {4} <{4}> <{4}> 7 <{1, 7}>, <{1}, {7}> {5} <{5}> <{5}> 8 <{2, 1}>, <{2}, {1}> {6} <{6}> <{6}> 9 <{2, 2}>, <{2}, {2}> {7} <{7}> <{7}> 10 ... Itemsets freqüentes da iteração 1: L1 X Figura 3: Iteração 2 do GSP 2.2.4.3 Iteração 2 - Cálculo do Suporte e Poda dos candidatos O cálculo do suporte para o algoritmo GSP é realizado através da construção de uma árvore hash. Este tipo de estrutura permite uma poda mais eciente de elementos a cada iteração. Para construir a árvore hash, é preciso denir duas variáveis M e N, sendo: • M : Número de sequências que cabem em um mesmo nó. • N : Número de nós-lhos que um nó pode possuir. Neste exemplo, M foi denido com valor 3, e N com valor 2. Cada item que aparece na base recebe um valor da função hash, que pode variar de 1 à N. Tabela 1: Sequencias candidadas de 2 itens Sequencia <{1, 3}> <{1}, {3}> <{2},{3}> <{3},{3}> <{2, 3}> <{1},{4}> Supondo que a iteração 2 tenha gerado como candidatos os itemsets exibidos na Tabela 1, nesta etapa, cada candidato deverá ser inserido na árvore. 7 O nó de destino de cada canditado é informado pela função hash. Sempre que um nó atinge sua capacidade (valor de M), um nó lho é criado para comportar o próximo candidato, a função indica em qual nó o itemset deve ser inserido, exceto quando a inserção está sendo realizada na raiz e esta ainda não precisou ser dividida. Figura 4 ilustra a inserção dos dados anteriores na árvore Inserção dos 3 primeiros Inserção o 4º e 5º candidato <{1, 3}> <{1}, {3}> <{2}, {3}> <{1, 3}> <{1}, {3}> <{3}, {3}> (Função hash não interfere) hash. A h(1) = 1 <{2}, {3}> <{2, 3}> h(2) = 1 h(2) = 2 h(2)=2 h(3) = 1 (Função hash indica posicionamento de acordo com o 1º item) Inserção do 6º candidato <{2}, {3}> <{2, 3}> h(3) = 1 <{1, 3}> <{1}, {3}> h(3) = 1 <{3}, {3}> h(3) = 1 <{1}, {4}> h(2) = 2 h(2)=2 h(4) = 2 (Função hash indica posicionamento de acordo com o 2º item) Figura 4: Inserção dos itens candidatos na árvore hash Ao nal das inserções de todos os candidatos na árvore, é preciso obter a frequencia destes candidatos, para denir se devem ser podados ou não. Toda a base de dados é percorrida e, para cada sequência de cliente, o processo exibido na Figura 5 é realizado. Nessa etapa, dene-se quais folhas contém candidatos possivelmente suportados pela sequência de cliente que está sendo analisada. Fluxo de procedimentos realizados para determinação dos • Calcula-se a função hash itemsets frequentes: para cada item da sequência, e dirija-se para o nó correspondente indicado pela função. • Se o nó a que se chegou é folha, aplica-se a cada elemento da folha, o procedimento Include. • Se o nó a que se chegou não é folha: Aplica-se a função da sequencia que sucedem o item i hash a todos os itens que está sendo analisado, dirigindo-se ao nó indicado pela função. Ao nal desta execução, somente os itemsets que pertencerem a um nó marcado como INCLUDE poderão ainda ser considerados frequentes, todos os outros são podados. A sequência de cliente utilizada como exemplo na Figura 5 é d = <{1, 5}, {1}, {2}>. 8 d = <{1, 5}, {1}, {2}> d = <{1, 5}, {1}, {2}> h(1) = 1 h(1) = 1 <{2}, {3}> <{2, 3}> h(5) = 1 INCLUDE <{2}, {3}> <{2, 3}> h(1) = 1 <{1}, {4}> INCLUDE d = <{1, 5}, {1}, {2}> <{1}, {4}> d = <{1, 5}, {1}, {2}> h(5) = 1 h(1) = 1 h(1) = 1 <{2}, {3}> <{2, 3}> INCLUDE h(2) = 2 INCLUDE INCLUDE d = <{1, 5}, {1}, {2}> INCLUDE d = <{1, 5}, {1}, {2}> h(5) = 1 h(2) = 2 h(1) = 1 <{2}, {3}> <{2, 3}> h(2) = 2 <{2}, {3}> <{2, 3}> INCLUDE INCLUDE <{2}, {3}> <{2, 3}> INCLUDE INCLUDE Figura 5: Dene candidatos possivelmente frequentes 2.2.4.3.1 Procedimento INCLUDE - Denição dos candidatos frequentes A função INCLUDE é realizada sobre cada um dos elementos presentes nos nós marcados. Os nós que não receberam a marcação de INCLUDE são podados, pois não possuem chance de serem frequentes. Os elementos analisados neste passo podem ser ou não podados, a função é que determina este resultado. • Exemplo de Sequencia de cliente: d =<{1, 2}, {4, 6}, {3}, {1, 2}, {3}, {2, 4}, {6, 7}>. • Exemplo de Sequencia candidata: <{2, 4}, {6, 7}>. Uma tabela de tempo de transação deve ser construída. Como os quencias encontram-se em ordem cronológica, o primeiro 1, o segundo ao tempo 2, e assim por diante. itemset itemsets das se- pertence ao tempo A Tabela 2 exibe os tempos da sequencia do cliente. Cada candidato possivelmente frequente tem seus tempos de transações comparados aos da sequencia do cliente. A Figura 6 ilustra este processo. Após a vericação de todas as sequencias de clientes, a árvore hash encontra-se com as sequencias candidatas marcadas de acordo com suas frequencias. A árvore é percorrida e são retiradas as sequencias que atingem o suporte mínimo. Todo este 9 Tabela 2: Tempos de Transações - Sequencia do Cliente Item Tempo 1 [1, 4] 2 [1, 4, 6] 3 [3, 5] 4 [2, 6] 5 [ ] 6 [2, 7] 7 [7] Sequência candidata: <{2, 4} ,{6, 7}> Tempos correspondentes a cada itemset: {2, 4} {6, 7} [1, 4, 6] e [2, 6] [2, 7] e [7] Verificação do 1º itemset [1, 4, 6] 1<2 [2, 6] [1, 4, 6] 2<4 [2, 6] [1, 4, 6] 4<6 [2, 6] [1, 4, 6] No tempo 6, o 6 = 6 itemset {2, 4} [2, 6] ocorreu. Verificação do 2º itemset [2, 7] 2<7 [2, 7] [7] [7] O nó que contém a sequencia <{2, 4}, {6, 7}> na árvore tem sua frequencia incrementada de 1, pois {2, 4} ocorreu antes do {6, 7}. No tempo 7, o 7 = 7 itemset {6, 7} ocorreu. Figura 6: Dene candidatos possivelmente frequentes processo de construção de árvore hash é feito a cada geração de candidatos Lk, até que não sejam gerados mais candidatos ou nenhum deles atinja o suporte mínimo. 2.2.4.4 Iteração 3 - Geração de candidatos A partir desta iteração (na qual os candidatos possuem 3 itens), uma regra deve ser seguida na geração dos candidatos: Os candidatos só podem ser gerados a partir de duas sequências ligáveis. Duas sequências s =< s1, s2, s3, s4, ..., sn > e ditas ligáveis se, retirando-se o primeiro item de sequências resultantes são iguais. Neste caso, s e t t =< t1, t2, t3, t4, ..., tm > são s1 e o último item de tm, as podem ser ligadas e produzir a sequência V, onde: • tm não é unitário (itemset de apenas um item): v =< s1, s2, s3, ..., sn∪t0 >, 0 ondet é o último item de tm. Se 10 • Se tm é unitário: v =< s1, s2, s3, ..., sn, tm > Dessa forma, a Figura 7 exibe os candidatos frequentes do exemplo utilizado. Sequencias freqüentes da iteração 2: L2 Sequencia <{1}, {2}> Transação Sequencia 1 <{1}, {2}, {6}> 2 <{1}, {2,6}> 3 <{1}, {3, 7}> 4 <{1}, {4}, {6}> 5 <{1}, {4, 7}> 6 <{1, 5, 6}> 7 <{2}, {6}, {7}> 8 <{2, 6}, {7}> 9 <{4}, {6}, {7}> 10 <{5, 6}, {7}> <{1}, {3}> <{1}, {4}> <{1, 5}> <{2}, {6}> <{2, 6}> <{6}, {7}> <{4},{6}> <{3, 7}> <{5, 6}> <{4, 7}> EXEMPLO DE GERAÇÃO s = <{1, 2}> t = <{2, 6}> Retirando 1 de s, e 6 de t, temos: s = <{2}> t = <{2}> Logo, são sequencias ligáveis. Como o valor 6 não é unitário (pertence ao mesmo itemset de 2), ele será adicionado junto com o último valor de s, dando origem ao candidato <{1}, {2, 6}>. Figura 7: Iteração 3 do GSP 2.3 Trabalhos Relacionados Durante anos, a maioria das empresas de comércio on-line trabalharam focando seus próprios interesses. Hoje em dia o mercado on-line exige uma mudança de estratégia. Com tanta opção disponível, a empresa que foca no comprador é aquela que ganhará o mercado e a delização do cliente. Atualmente o usuário é quem dita as regras para a lucratividade dessas empresas [14]. Nesta seção serão apresentados trabalhos relacionados à Sistemas Hipermídia Adaptativos - sistemas trabalhados para adaptar conteúdo, interface e navegação de acordo com as características e necessidades de cada usuário, com o objetivo de facilitar a navegação e apresentação do conteúdo, passando para o usuário nal uma interface personalizada com informações relevantes e descartando informações menos interessantes ou inúteis [11] [8]. Um ambiente de ensino-aprendizagem adaptativo chamado AdaptWeb foi proposto em [4]. Esse ambiente é voltado para a autoria e apresentação adaptativa de disciplinas integrantes de cursos de EAD (Educação a Distância) na Web. O ambiente permite a adequação de táticas e formas de apresentação de conteúdo de acordo com o estilo de aprendizagem de cada aluno, procurando atender as preferências individuais dos mesmos e facilitar a absorção de conhecimento promovendo um melhor desempenho dos alunos. O trabalho apresentado em [3] propõe um sistema de Recuperação de Informação Adaptativa aplicado a bibliotecas digitais. Neste sistema, o perl do usuário é automaticamente atualizado com base nas características dos documentos consultados por ele, assim, os documentos que satisfazem o critério de busca são organizados em 11 grupos de relevância e ordenados por um determinado critério. Tanto o critério de agrupamento quanto de ordenação são escolhidos pelo próprio usuário. Um sistema integrado chamado WebTool foi proposto em [10], com o objetivo de aplicar técnicas de mineração de dados em arquivos de logs da web. O sistema propõe possiblidades de melhoria de desempenho e reestruração de sites através da análise de pedrões contidos em dados armazenados por servidores web. 12 3 Abordagem Proposta A proposta deste projeto é construir um software capaz de receber dados, processálos, e gerar como saída as sequências frequentes de itens nessa base. Atualmente, a extração de informações sobre dados vem ganhando espaço no sarial. marketing empre- Diversos algoritmos foram propostos para extrair informações de bases de dados, entretanto, a realização de todo o processo de descoberta de conhecimento engloba diversos outros fatores que o algoritmo é incapaz de resolver. O software aqui proposto visa facilitar o processo de obtenção de informação com foco em bases de dados de lojas virtuais. O algoritmo escolhido para a etapa de mineração de dados foi o GSP - Generalized Sequence Patterns - e a plataforma utilizada para a realização da mineração é o Weka [9]. A Figura 8 exibe o uxo dos dados no software. Arquivo Pré-processado Arquivo Original VALIDAÇÃO VALIDAÇÃO PRÉ-PROCESSAMENTO Arquivo Pré-processado MINERAÇÃO DE DADOS (Algoritmo GSP do Software Weka) Arquivo de Retorno do Weka Apresentação dos resultados no Software Arquivo de Soluções em formato XML Figura 8: Fluxo de Dados O software suporta dois tipos de entradas diferentes. O primeiro, é um arquivo em formato ARFF (formato adotado pela ferramenta Weka) já pré-processado, e o segundo, é um arquivo de texto que precisa ainda passar pela etapa de préprocessamento, mais precisamente, pelos processos de seleção e transformação dos dados. No caso deste último, o próprio software se encarrega de gerar o arquivo em formato ARFF no nal do pré-processamento. Uma validação é realizada sobre os tipos de arquivo. Esta validação verica se os dados encontram-se nos formatos adequados para cada tipo de arquivo. O arquivo já pré-processado deve seguir es exigências de formato de arquivo da ferramenta Weka, e o segundo deve seguir as exigências de formato exigidas pelo próprio 13 software. A tela inicial do software mostra um exemplo de cada um destes formatos quando o usuário seleciona o tipo de arquivo desejado, como mostrado na Figura 9. Ao nal do pré-processamento do arquivo original, um arquivo em formato ARFF é gerado e o uxo dos dados passa a ser o mesmo. Esse arquivo ARFF é submetido ao Weka para a realização da mineração dos dados. Os resultados gerados pela ferramenta são salvos em um arquivo de texto que é analisado pelo software. Essa análise captura as sequências frequentes (se houverem) e exibe ao usuário. Por m, um arquivo em formato XML contendo as sequencias frequentes retornadas é gerado para ser utilizado posteriormente em ferramentas de adaptação da loja virtual. As seções a seguir descrevem mais detalhadamente como o software funciona, que tipo de vericações e manipulações são realizadas nos dados de entrada e como os padrões sequenciais encontrados são apresentadas ao usuário. 3.1 O desenvolvimento do software A idéia de criação do software surgiu a partir de uma necessidade real de uma empresa situada em Ouro Preto, chamada GerênciaNet. A empresa trabalha com comércio on-line, mais precisamente, efetuando intermediação entre seus clientes e os bancos, possibilitando a emissão de boletos, carnês e transações por cartão a seus clientes. Um dos serviços oferecidos pela empresa, é a criação de Loja Virtual, onde o cliente pode cadastrar seus produtos e utilizar os serviços de pagamento da empresa de forma integrada. Todas as lojas virtuais da empresa compartilham um mesmo sistema gerencial. O cliente se cadastra e pode adicionar e/ou remover produtos, gerenciar faturas, modicar a aparência da loja virtual, dentre outras aplicações. Cada modicação feita é associada ao login exclusivo do cliente, ou seja, o banco de dados de todas as lojas também é o mesmo. Após a criação deste sistema de gestão, a empresa criou uma tabela em um banco de dados para receber informações sobre os visitantes das lojas, visualizando uma possivel utilização destes dados no futuro. A tabela construída possui a seguinte estrutura: Tabela 3: Estrutura da tabela que armazena dados dos visitantes Nome da Coluna id cliente produto loja data Signicado Identicador da tupla E-mail do Cliente Nome do produto que foi visualizado pelo cliente Nome da loja que contém o produto visualizado Data da visualização do produto (dd/mm/aaaa) Durante cerca de 2 anos, cada visualização de produto em cada loja virtual gerou um novo registro na tabela apresentada anteriormente. Entretanto, o armazenamento destes dados tornou-se inviável, visto que o povoamento desta tabela fazia parte da própria estrutura operacional do sistema, dividindo custos de processa- 14 mento tanto para a gestão própria oferecida à loja virtual, quanto para armazenamento de informações que não estavam sendo utilizadas até então. Desse modo, a empresa optou por pausar o povoamento da tabela até estudar medidas ideiais para armazenamento de dados históricos. Parte dos dados armazenados foram cedidos para iniciar este estudo. A empresa realizou algumas alterações a m de proteger a imagem do cliente e manter sigilo sobre os visitantes da loja virtual. Os dados cedidos pela empresa apresentam informações de 5 lojas virtuais e identicador do cliente, o nome do produto visualizado, o identicador da loja virtual e a data da transação. estão dispostos em um arquivo de texto, onde cada linha possui um As informações contidas no arquivo de texto disponibilizado não divulgam qualquer dado pessoal do visitante ou dono da loja, entretanto são sucientes para a aplicação de técnicas de mineração de dados que buscam a extração de padrões de sequência. Os dados do arquivo de texto foram repassados a um banco de dados local para a realização dos experimentos. A tabela construída a partir dos dados recebidos possui 3.525.926 linhas, totalizando 385,4 MB de dados. A Seção 4 mostra como os dados dessa tabela foram manipulados até chegaram ao formato ideal para serem trabalhos pelo software. O software engloba as seguintes etapas do processo de KDD: Seleção, pré- processamento, transformação, mineração de dados e pós-processamento. O ob- jetivo do software é fornecer informação para personalização da loja virtual ao perl de cada cliente, seja na exibição dos produtos na loja virtual ou no oferecimento marketing destes através de e-mails ( do software. direcionado). A Figura 9 mostra a tela inicial Figura 9: Tela Inicial do Software Os dados de cada tipo de arquivo de entrada (pré-processado ou original) precisam estar dispostos em um formato adequado para que possam ser lidos corretamente pelo software. Para isso, um exemplo de arquivo é exibido em uma caixa de texto 15 de acordo com o tipo de arquivo marcado. Caso os dados não estejam dispostos da forma correta ou exista alguma tupla com formato inválido, a etapa de validação realizada sobre o arquivo solicitará uma revisão do mesmo. Para arquivos originais, é realizada uma vericação em relação aos identicadores das lojas. A mineração de dados de lojas diferentes não é interessante, visto que o objetivo é exatamente possibilitar sua personalização. Portanto, caso sejam identicadas mais de uma loja na mesma base, o software solicitará que o usuário escolha apenas uma das lojas contidas na base de dados para realizar as etapas seguintes, como mostrado na Figura 10. Figura 10: Denição da Loja Virtual Assim que o arquivo é validado e a loja virtual é denida, um novo arquivo de texto é gerado, agora seguindo o padrão exigido pela ferramenta Weka. O usuário tem a opção de salvar o arquivo pré-processado e realizar a mineração em um outro momento, ou continuar o processo. Na etapa de mineração de dados, um suporte deve ser denido pelo usuário, e então o arquivo de dados pré-processados é submetido ao Weka através da execução de um arquivo batch. O retorno do Weka é escrito em um arquivo de saída, e este arquivo será utilizado na leitura dos resultados. A Figura 11 exibe a tela com as sequencias frequentes encontradas em um arquivo de exemplo. Os resultados obtidos pelo Weka passam por m por uma etapa de pós-processamento para retomar os nomes originais dos produtos. Cada sequencia frequente é exibida através do software, e um arquivo em formato XML contendo estes resultados pode ser baixado. 16 Figura 11: Exibição dos resultados 17 4 Experimentos Os dados recebidos originalmente não possuiam um formato ideal para serem processados pelo algoritmo de mineração de dados. Alguns erros de codicação foram percebidos nos nomes de alguns produtos da base de dados e corrigidos antes da etapa de pré-processamento. Esta seção descreve as modicações realizadas na base de dados para correção dos erros, a etapa de pré-processamento dos dados envolvendo seleção e transformação dos mesmos, a etapa de mineração e por m e etapa de pós-processamento. A Tabela 4 apresenta parte da tabela original. Id cliente Tabela 4: Tabela Original produto loja data 231 31ce0f36bcc97cd440267 Manual de Cuidados do Paciente com Disfagia C 2006-10-17 232 354cdfc4ae0bdab73b9fd Fonoaudiologia: Surdez e Abordagem BilÃngà 14 e C 2006-10-13 233 726967830080c48d48050 c todo das Boquinhas 1 Alfabetizaço... Mà C 2006-10-08 234 726967830080c48d48050 Ponta De LÃngua Com 10 Unidades C 2006-10-08 235 b408d92d61a21c3a8c444 100 Jogos Aplicados à Fonoaudiologia Prýtica C 2006-10-07 236 b408d92d61a21c3a8c444 PaquÃmetro 18 cm C 2006-10-07 237 b408d92d61a21c3a8c444 Hýbitos de Sucção Chupeta e Mamadeira C 2006-10-07 . . . . . . . . . . . . . . . 979 523e6d7c883e0e47bd00e Óleos Essenciais - Extrações e Aplicações de ... B 2007-01-31 980 db408405e59d8379f46cf Estojo De Inox A 2007-01-22 981 abd8886bf73d5c1e89721 Produção de Novilhos Precoces B 2007-02-08 982 0654aa538839765ccebb2 Processos BiolÃ?gicos no Sistema Solo-Planta B 2007-01-30 983 8861bae48a552057a41 Manual para Inspeção da Qualidade do Leite B 2007-02-01 . . . . . . . . . . . . . . . 4.1 Correção dos erros de codicação 4.1.1 Substituição de caracteres inválidos Nesta etapa foi realizada a identicação de todos os caracteres que representam erro de codicação e, em seguida, a seleção das tuplas onde aparecem estes caracteres. A Tabela 5 a seguir apresenta parte dos resultados obtidos. Tabela 5: Seleção das tuplas onde aparecem erros Id cliente produto loja data 3155 e652f1d3f5bd4476a94c c tica Tratado De Acupuntura Està A 2007-07-31 3163 4b47516bc3d1027d4df2 Sistema ChinÃa s De Curas Alimentares A 2007-07-31 CiÃa ncia 3169 5cb32d6991c52f560910 A 2007-07-31 3170 c446d8d194d93f0df5ec Pulsologia Arte E Acupuntura e Moxabustão... A 2007-07-31 3171 685b79fb39e8f17b9fe3 Qigong ChinÃa s Ilustrado A 2007-07-31 18 Do Diagnà stico... A substituição dos caracteres inválidos por um caractere único que representasse o erro contribuiu facilitando a busca das tuplas a corrigir, além de contornar Alfabetizaço e Alfabetiza??o foram transformaAlfabetiza??o e Alfabetiza??o, ou seja, antes da transformação seríam problemas como: os produtos dos em considerados produtos diferentes pelo algoritmo de mineração de dados, mas, após a substituição, voltam a representar um mesmo produto. Ao nal desta etapa, a tabela exibida anteriormente passou à seguinte forma: Tabela 6: Erros de codicação caracterizados por um único caractere Id cliente produto loja data 3155 e652f1d3f5bd4476a94c Tratado De Acupuntura Est??tica A 2007-07-31 3163 4b47516bc3d1027d4df2 Sistema Chin??es De Curas Alimentares A 2007-07-31 3169 5cb32d6991c52f560910 Pulsologia Arte E Ci??ncia Do Diagn?stico... A 2007-07-31 3170 c446d8d194d93f0df5ec Acupuntura e Moxabust??o... A 2007-07-31 3171 685b79fb39e8f17b9fe3 Qigong Chin??s Ilustrado A 2007-07-31 3174 174d7573a655f6f1a6fd Guia De Terapia Oriental: Moxabust??o... A 2007-07-31 3179 c446d8d194d93f0df5ec Zang Fu Sistemas De ?rg??os E V?sceras... A 2007-07-31 4.1.2 Seleção e correção do caractere inválido ? Todas as tuplas distintas que contêm o caractere inválido foram selecionadas para a etapa de correção. Um programa em PHP foi criado para facilitar a correação de todos os erros de codicação. selecionadas para montar script Tabela 7: Parte do Este programa utilizou os produtos das tuplas SQL. A Tabela 7 mostra parte desta seleção. script SQL gerado pelo programa em PHP UPDATE minerar SET produto = 'Tratado De Acupuntura Est??tica' WHERE produto = 'Tratado De Acupuntura Est??tica' UPDATE minerar SET produto = 'Sistema Chin??es De Curas...' WHERE produto = 'Sistema Chin??es De Curas...' UPDATE minerar SET produto = 'Qigong Chin??s Ilustrado' WHERE produto = 'Qigong Chin??s Ilustrado' A substituição dos cacteres incorretos foi realizada de forma manual sobre o script SQL. Após essa correção, os comandos SQL foram executados e todos os erros de codicação nos nomes dos produtos foram corrigidos de uma só vez. Tabela 8 mostra parte dos dados após a correção desses erros. Tabela 8: Erros de codicação caracterizados por um único caractere Id cliente produto loja data 3155 e652f1d3f5bd4476a94c Tratado De Acupuntura Estética A 2007-07-31 3163 4b47516bc3d1027d4df2 Sistema Chinês De Curas Alimentares A 2007-07-31 3169 5cb32d6991c52f560910 Pulsologia Arte E Ciência Do Diagnóstico... A 2007-07-31 3170 c446d8d194d93f0df5ec Acupuntura e Moxabustão... A 2007-07-31 3171 685b79fb39e8f17b9fe3 Qigong Chinês Ilustrado A 2007-07-31 3174 174d7573a655f6f1a6fd Guia De Terapia Oriental: Moxabustão... A 2007-07-31 19 A Ao término deste processo, foi percebida uma signicativa diminuição de produtos distintos na tabela. Ao início do processo, a tabela contava com 1.501 produtos distintos, ao nal do processo, este número caiu para 864. 4.2 Escolha da loja virtual Como a base contém dados de várias lojas e não é a intenção deste trabalho a manipulação simultânea dos dados de diferentes lojas, apenas uma das 5 lojas foi escolhida para a realização do pré-processamento. Com um total de 598.114 tuplas e 1.501 produtos distintos, a loja A foi escolhida. Nas seções seguintes, somente a base de dados da loja A será considerada nas discussões. 4.3 Remoção de Tuplas Únicas A base de dados pode muitas vezes conter tuplas que não contribuem para o processo de extração de padrões. Tuplas referentes a clientes que realizam a visualização de um determinado produto e não retorna à loja virtual posteriormente para visualizar outros produtos, representa uma tupla desnecessária na base, visto que o objetivo do software é obter sequências do tipo <{X}, {Y}>, ou seja, a visualização de Y frequentemente ocorre após o cliente ter visualizado o item X. Portanto, tuplas únicas na base foram excluídas para que o processo de mineração de dados fosse otimizado. Para a realização do processo de remoção de tuplas únicas, foi realizada uma seleção de todas as tuplas onde o cliente apareceu apenas um vez na base de dados e, em seguida, todos os resultados retornados pela seleção foram excluídos. DELETE FROM minerar WHERE cliente IN (SELECT cliente FROM minerar GROUP BY cliente HAVING COUNT(*)=1). A base de dados, que antes desse processo continha A consulta SQL utilizada neste processo foi 598.114 tuplas, após a remoção das tuplas únicas passou a ter 194.323 tuplas. 4.4 Mapeamento dos Dados Para otimizar o processo de mineração, os dados passam por uma etapa de mapeamento, onde cada nome de produto e cada identicador de cliente é transformado em um valor numérico diferente. Este processo é realizado para deixar a base a ser minerada codicada, de forma que o tempo de processamento gasto na mineração seja o menor possível. A Tabela 9 apresenta parte dos dados da tabela original, antes de serem mapeados em valores numéricos. Os identicadores da loja virtual e as datas das visualizações foram otimidos para facilitar a visualização e comparação entre os dados da tabela não-mapeada para a tabela mapeada. 20 Tabela 9: Tuplas de dados não-mapeados Id cliente produto 82 14eb3f48fd3e410ee014 Conhecimentos para Entender a Relação entre (Linguagem e Paralisia Cerebral) 83 14eb3f48fd3e410ee014 Conhecimentos para Atender o Portador de (Doenças Neuromusculares Parkinson e Alzheimer) 84 14eb3f48fd3e410ee014 Conhecimentos para Atender a Inter-relação (Otorrinolaringologia e Fonoaudiologia) 85 c1a8c63284aab2c55f5a Conhecimentos para Atender o Portador de (Doenças Neuromusculares Parkinson e Alzheimer) 86 c1a8c63284aab2c55f5a Conhecimentos para Atender o Paciente com (Prótese Auditiva) 87 c1a8c63284aab2c55f5a Conhecimentos para Atender a Inter-relação (Otorrinolaringologia e Fonoaudiologia) 88 c1a8c63284aab2c55f5a Tratado de Geriatria e Gerontologia A Tabela 10 apresenta os mesmos dados da tabela anterior, agora mapeados. É perceptível a signicativa diminuição de informação que será enviada à ferramenta Weka para realização da mineração de dados. Tabela 10: Tuplas de dados mapeados Id cliente produto 82 83 84 85 86 87 88 30 30 30 31 31 31 31 52 13 53 13 29 53 32 4.5 Mineração de Dados Com os dados pré-processados, um arquivo em formato ARFF é gerado seguindo o padrão de arquivo exigido pelo Weka. Este arquivo pode ser salvo pelo usuário para realização dessa etapa em um momento posterior. O software solicita ao usuário o suporte mínimo da mineração, e submete o arquivo ao Weka. Os resultados das sequências frequentes (caso houverem), são capturados e utilizados na etapa 4.6 Pós-processamento dos Dados Após a mineração de dados, os resultados retornados pelo Weka devem passar por duas modicações: a primeira, se refere ao mapeamento dos dados. Os resultados estão ainda mapeados, ou seja, as sequências resultantes não informam os nomes reais dos produtos da loja virtual. A segunda, se refere às sequências únicas retornadas. Sequências que contém apenas um jetivo desse software, de Y visualizados após itemsets itemset não contribuem para o ob- que é encontrar padrões sequenciais que trazem informações itemsets X. Os resultados passam portanto por um etapa de transformação, na qual os nomes originais são substituídos por seus valores numéricos correspondentes, e um etapa de seleção, que captura apenas sequências de pelo menos 2 itemsets para serem exibidas no 21 software. Por m, os resultados são gravados em um arquivo XML para futuras consultas e/ou utilização em ferramentas adaptativas para a loja virtual. 4.7 Considerações nais Os experimentos sobre a base de dados disponibilizada permitiu analisar o quanto a etapa de pré-processamento é importante para uma eciente mineração de dados. Estudos mostram que essa etapa pode consumir até 80% do tempo necessário para todo processo de descoberta de conhecimento, além de ser considerada uma das etapas mais importantes do processo como um todo [15]. 22 5 Conclusões Este trabalho apresentou uma aplicação útil para utilização em lojas virtuais, com o objetivo de obter informações relevantes a respeito do interesse de usuários sobre os produtos dessas lojas. A denição destes interesses foi possível a partir da mineração de dados relacionados aos logs navegacionais destes usuários. A grande quantidade de dados gerados no dia-a-dia das organizações exige mecanismos capazes de aproveitá-los, separando as informações úteis que podem ser utilizadas em campanhas de marketing, adaptação do sistema para cada cliente, envio de e-mails promocionais ou de propaganda para um público-alvo mais restrito, dentre diversas outras adaptações que podem proporcior grandes vantagens competitivas às empresas. O software aqui proposto realiza o pré-processamento e a mineração de dados de lojas virtuais, apresentando como resultado para o vendedor (dono da loja) sequências de produtos frequentemente visualizadas por clientes. Dessa forma, o vendedor pode planejar ações que focam por exemplo a venda do produto Y, visto que o cliente já adquiriu o produto X. Estudos e aplicações de mineração de dados no setor de vendas online contribuem positivamente para a relação entre cliente e vendedor. O cliente receberá propagandas realmente direcionadas à ele e poderá visualizar uma loja virtual que se adapta aos seus interesses. Como os produtos oferecidos tem uma probabilidade maior de despertaram interesse, a lucratividade para o vendedor vem como consequencia, tanto pela venda em si, quanto pela economia gerada ao se evitar a propaganda de determinados produtos para um público sem interesse nos mesmos. 23 Referências [1] PrexSpan: Mining sequential patterns eciently by prex-projected pattern growth, volume 01, 2001. [2] Ramakrishnan Srikant. Rakesh Agrawal. Mining sequential patterns: Genera- Proceedings of the 5th International Conference on Extending Database Technology, pages 317, 1996. lizations and performance improvements. [3] Roberto Willrich; Rafael de Moura Speroni; Christopher Viana Lima; André Luiz de Oliveira Diaz; Sérgio Murilo Penedo. system applied to digital libraries. Adaptive information retrieval Proceedings of the 12th Brazilian Symposium on Multimedia and the web, 06:165173, 2006. [4] José Palazzo Moreira de Oliveira; Lydia Silva Muñoz; Veronice de Freitas; Viviane P. Marçal; Isabela Gasparini; Marília Abrahão Amaral. Adaptweb: an adaptive web-based courseware. Annual Ariadne Conference, 3, 2003. [5] Michael Goebel; Le Gruenwald. A survey of data mining and knowlodge discovery software tools. SIGKDD Explorations, 1:2033, 1999. [6] Sarabjot S. Anand; David A. Bell; John G. Hughes. The role of domain knowledge in data mining. Baltimore, Maryland, United States, November 29- December 02 1995. [7] Behzad Mortazavi-Asl Jianyong Wang Helen Pinto Quiming Chen Umeshwar Dayal Mei-Chun Hsu. Jian Pei, Jiawei Han. pattern-growth: The prexspan approach. Mining sequential patterns by IEEE Transactions on Knowledge and Data Engineering, 16(11):14241440, 2004. [8] Ricardo Silveira Carlos Vaz de Carvalho. Joel Pinho Lucas, Constantino Martins. Ferramentas de autoria de sistemas hipermídia adaptativos para aprendizagem: Um ponto de situação. Revista Novas Tecnologias na Educação, 3(2), 2005. [9] Georey Holmes Bernhard Mark Hall, Eibe Frank. Pfahringer Peter Reutemann Ian H. Witten The WEKA Data Mining Software: An Update, vo- lume 11. SIGKDD Explorations, 2009. [10] F. Masseglia. Using data mining techniques on web access logs to dynamically improve hypertext structure. [11] Luiz Antônio Moro Palazzo. ACM SigWeb Letters, 3:1319, 1999. Modelos Proativos para Hipermídia Adaptativa. PhD thesis, UFRGS, 2000. [12] Ramakrishnan Srikant Rakesh Agrawal. Fast algorithms for mining association rules. IBM Almaden Research Center, 1994. [13] Rakesh Agrawal Ramakrishnan Srikant. Mining sequential patterns. pages 314, 1995. [14] David Siegel. seus negócios. PULL - O futuro da Internet e o Impacto da Web Semântica em 2009. 24 [15] Reinaldo Viana. Mineração de dados: Introdução e aplicações. SQL Magazine, 10:1625, 2004. [16] Mohamed J. Zaki. Spade: an ecient algorithm for mining frequent sequences. Machine Learning Journal, special issue on Unsupervised Learning, 2001. 25 42:3160,