4.2 Nova abordagem
4.2.3 Detalhamento dos padrões
Esta fase de detalhamento dos padrões seqüenciais obtidos e selecionados é uma etapa que não existe no processo tradicional de Web Usage Mining, mas que, dentro da integração com a Análise do Comportamento proposta por este trabalho, faz-se necessário acrescentar. O objetivo é obter dados específicos destes padrões encontrados, bem como verificar as características das sessões (originais) onde os mesmos aparecem.
Então, através de buscas e procedimentos estatísticos nas sessões originais, são obtidas as seguintes informações:
1. Histograma do tempo de visitação de cada uma das duas páginas que aparecem no padrão seqüencial (antecedente e conseqüente);
2. Estatísticas (média, mínimo, máximo, mediana e moda) da quantidade de páginas que ocorrem antes do antecedente, entre o antecedente e o conseqüente, e após o conseqüente.
3. Estatísticas (média, mínimo, máximo, mediana e moda) do tempo de visitação acumulado das páginas que ocorrem antes do antecedente, entre o antecedente e o conseqüente, e após o conseqüente.
Na Figura 4.2 é mostrado um exemplo de como é feito este detalhamento.
Figura 4.2 – Detalhamento dos padrões
Neste exemplo, considere um web site contendo as páginas de A até J e um respectivo log contendo cinco sessões. Detalhar um padrão seqüencial obtido, por exemplo, o padrão B G, significa construir o histograma do tempo de visitação em B e G considerando as cinco sessões, e extrair estatísticas referentes à quantidade e tempo de visitação das páginas que ocorrem antes de B, entre B e G, e depois de G. Na figura, estes grupos estão identificados, respectivamente, como “antes”, “durante” e “depois”.
Capítulo 5
Validação
Para validar a metodologia proposta, as técnicas apresentadas neste trabalho foram aplicadas no estudo de dois web sites comerciais, mas de naturezas distintas. Um se caracteriza por possuir seu negócio totalmente voltado para a web, enquanto que o outro utiliza seu site de uma forma mais tradicional, isto é, como forma de chegar aos seus possíveis clientes.
Esta validação consiste em verificar se a Análise do Comportamento pode elucidar a navegação a partir dos padrões de navegação extraídos e detalhados neste processo. Na Figura 5.1 é mostrado o processo utilizado na análise de cada web site contemplado nos estudos de casos. Há três aspectos distintos no processo:
a) extração de padrões (Web Usage Mining tradicional), mais o detalhamento dos mesmos;
b) análise comportamental;
c) levantamento de hipóteses sobre os comportamentos.
Tanto a tarefa de análise (comportamental) quanto a de levantamento de hipótese foram executadas pelo o especialista (psicólogo). É importante ressaltar que, para estas tarefas serem executadas com sucesso, é necessário identificar o contexto onde as navegações ocorreram.
Coleta de logs Pré-processamento Web site
Extração de padrões Detalhamento dos padrões
Análise comportamental
Levantamento de hipóteses
Figura 5.1 – Processo utilizado nos estudos de casos
As hipóteses levantadas referem-se aos comportamentos e não aos usuários. Apesar de um depender do outro, há uma diferença grande entre analisar quem é o usuário e analisar que comportamento ele tem num determinado contexto.
Apesar de existirem diversas ferramentas para o tratamento de log (pré-processamento), nenhuma delas é flexível o suficiente para gerar um arquivo (a ser minerado) conforme as propostas estabelecidas neste trabalho. Assim, foi desenvolvido um conjunto de programas próprios utilizando a linguagem Python.
Na etapa de extração de padrões foi utilizado um software comercial, no caso, o Clementine da SPSS. Ele também foi aplicado na etapa de detalhamento dos padrões, juntamente com outros dois programas também desenvolvidos em Python.
As fontes de todos os programas desenvolvidos estão no Apêndice B.
5.1 Pré-processamento
Para o tratamento de log foram escritos 11 programas em Python, contemplando basicamente todos os passos descritos no processo tradicional de Web Usage Mining. A escolha pela linguagem Python se deve à sua facilidade de uso e, principalmente, facilidade no tratamento de flat files. Não era objetivo deste trabalho criar um ambiente completo para pré-processamento de log, mas sim um ambiente que permitisse transformar o log de acordo com a metodologia proposta.
Os programas desenvolvidos foram:
1. Seleciona_log.py: é responsável por agregar os arquivos de log num único arquivo, filtrando todas as entradas referentes aos arquivos gráficos (extensões gif, jpg, jpeg) ou arquivos indesejados (extensões js, css, ico, swf). Também retira todas as entradas com status de erro (mantém os status da família 200 e 300) e os métodos inválidos, ou seja, diferentes de GET, POST ou PUT. Além disso, gera um segundo arquivo com todas as entradas que acessaram o arquivo
“robots.txt”. Estes são os robôs de indexação. Esse arquivo, que fica no servidor web, controla as permissões de acesso às informações, indicando quais diretórios devem ou não ser indexado pelo agente. Este programa é personalizado conforme o padrão de log utilizado no servidor;
2. Gera_robots_distintos.py: a partir do segundo arquivo gravado no programa anterior, simplesmente gera uma lista de robôs distintos, eliminando toda duplicidade. Os agentes que não são robôs verdadeiros, mas acessam o arquivo
“robots.txt” porque estão embutidos em ferramentas de busca, como por exemplo, MSIECrawler (MICROSOFT, 2006b) e Girafabot (GIRAFA, 2006), também precisam ser excluídos;
3. Elimina_navegacao_robots.py: com o arquivo de robôs distintos, retira do arquivo filtrado e consolidado de log todas as navegações executadas pelos mesmos;
4. Gera_navegacao_total_memoria.py: gera um arquivo onde cada linha contém todas as navegações (independentemente de data e hora) para cada combinação distinta de IP/agente. Adicionalmente, gera um arquivo com todas as páginas acessadas e contidas no log consolidado;
5. Gera_uri_stem_distintos.py: retira do arquivo de páginas acessadas (gerado no programa anterior) todas as duplicidades, gerando um arquivo de páginas distintas;
6. Checa_uri_stem_valido.py: acessa o site que está sendo analisado e verifica o status de cada página distinta encontrada. Grava um arquivo de páginas válidas, excluindo as páginas restritas, as de testes e as fora do contexto da análise;
7. Calcula_tempo_sessao.py: lê o arquivo de navegações por IP/agente, identificando as sessões pelo método de intervalo máximo (time-out). O tempo utilizado neste programa foi de 30 minutos. As sessões geradas são gravadas num arquivo distinto;
8. Exclui_uri_stem_irrelevantes.py: consulta o arquivo de páginas válidas e exclui todas as sessões (do arquivo anterior) que possuem alguma página inválida;
9. Gera_sessao_transposta.py: como o Clementine trabalha com dois formatos de dados (tabular ou transacional), é necessário transformar as sessões consolidadas num destes formatos. No formato tabular os itens são representados por flags, onde cada flag indica a presença ou não de um item específico. No formato transacional cada item está numa linha, juntamente com a identificação do cliente e tempo do evento. O formato utilizado por este programa é o transacional. Como resultado, é gravado um arquivo com os seguintes campos:
identificação da sessão, quantidade de segundos desde o início da sessão, tempo de visitação em segundos, página visitada;
10. Associacao_uri_stem.py: avalia as sessões geradas e seleciona as páginas que, pelo critério tempo de visitação, devem ser gravadas juntamente com a página pivô para o processo de mineração;
11. Conta_uri_stem_sessao_transposta.py: é um programa auxiliar, que utiliza o arquivo de sessões na forma transacional e o arquivo de páginas distintas para gerar uma lista (arquivo) com a freqüência de cada página considerada na análise;
Como esta etapa de pré-processamento precisou ser toda desenvolvida, algumas tarefas originalmente propostas no processo de Web Usage Mining não foram incluídas, como a reconstrução de sessão, devido à complexidade da implementação. Considerando os objetivos propostos, as conseqüências desta exclusão não impactam os resultados deste trabalho.