You are on page 1of 389

IDENTIFICACIN DE HBITOS DE USO DE

SITIOS WEB UTILIZANDO REDES


NEURONALES
TESIS DE GRADO EN INGENIERA INFORMTICA

FACULTAD DE INGENIERA
UNIVERSIDAD DE BUENOS AIRES

TESISTA: Sr. Damin Ariel MARTINELLI


DIRECTORES: Prof. M. Ing. Paola BRITOS
Prof. Lic. Arturo SERVETTO
Prof. M. Ing. Hernn MERLINO

Laboratorio de Sistemas Inteligentes

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Damin A. MARTINELLI

-2-

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Agradecimientos
A mi familia por apoyarme y aconsejarme siempre. A mis
amigos porque siempre estn disponibles para un momento de
esparcimiento. A los profesores que me ensearon tantas cosas en
estos aos de estudio. A Hernan y Paola por guiarme en el
crecimiento de esta tesis. Y en especial a Naty, el amor de mi vida,
que me acompa y alent en todo momento.

Damin A. MARTINELLI

-3-

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Damin A. MARTINELLI

-4-

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

RESUMEN
En esta Tesis se propone la utilizacin de redes neuronales
artificiales para la identificacin de hbitos de uso de sitios Web,
estudiando cmo pueden ser adaptadas para llevar a cabo con xito
esta tarea. Los resultados obtenidos son analizados y contrastados
con mtodos tradicionales de modo de poder valorar la solucin
propuesta.

ABSTRACT
This Thesis Research proposes the use of artificial neuronal
networks to identify the habits of web site usage and how they can
be adapted to reach this goal. The results obtained are analyzed and
compared with traditional methods in order to measure the proposed
solution.

Damin A. MARTINELLI

-5-

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Damin A. MARTINELLI

-6-

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

INDICE
Agradecimientos..................................................................................................................... 3
RESUMEN ............................................................................................................................. 5
ABSTRACT ........................................................................................................................... 5
1. Introduccin........................................................................................................................ 9
2. Estado de la Cuestin ....................................................................................................... 12
2.1. Explotacin de Datos................................................................................................. 12
2.1.1. Descubrimiento de Reglas de Asociacin .......................................................... 15
2.1.2. Clasificacin de Datos ........................................................................................ 16
2.1.3. Agrupacin de Datos .......................................................................................... 17
2.1.4. K-Means ............................................................................................................. 19
2.2. Explotacin de Datos en la Web................................................................................ 20
2.2.1. Explotacin de Datos en el Contenido de la Web .............................................. 20
2.2.2. Explotacin de Datos en la Estructura de la Web .............................................. 21
2.2.3. Explotacin de Datos de Uso de la Web ............................................................ 21
2.3. Explotacin de Datos de Uso de la Web ................................................................... 21
2.3.1. Prepocesamiento................................................................................................. 22
2.3.2. Descubrimiento de Patrones ............................................................................... 24
2.3.3. Anlisis de Patrones............................................................................................ 25
2.4. Trabajos Realizados en la Explotacin de Datos de Uso de la Web ......................... 25
2.5. Self Organizing Maps (SOM).................................................................................... 27
2.5.1. Algoritmo del SOM ............................................................................................ 28
2.5.2. Arquitectura de la red SOM................................................................................ 28
2.5.3. Funcionamiento .................................................................................................. 29
2.5.4. Preprocesamiento de los datos............................................................................ 30
2.5.5. Aprendizaje......................................................................................................... 30
2.5.6. Visualizacin ...................................................................................................... 32
2.5.7. Aplicaciones ....................................................................................................... 33
2.6. Similitudes y Diferencias SOM y K-Means .............................................................. 33
3. Descripcin del problema................................................................................................. 35
4. Solucin propuesta ........................................................................................................... 36
4.1. Identificacin de los parmetros del problema.......................................................... 36
4.2. Definiciones............................................................................................................... 37
4.2.1. Archivos de Log ................................................................................................. 37
4.2.2. Preprocesamiento de Logs.................................................................................. 38
4.2.3. Limpieza de Logs ............................................................................................... 39
4.2.4. Identificacin de Usuarios .................................................................................. 40
4.2.5. Identificacin de Sesiones de Usuario................................................................ 41
4.2.6. Identificacin de Transacciones de Usuarios ..................................................... 42
4.2.7. Identificacin de Hbitos de Usuario ................................................................. 43
4.3. Mtodo de Generacin de Casos de Experimentacin .............................................. 43
4.4. Descripcin del Banco de Pruebas ............................................................................ 43
4.4.1. Funcionalidades .................................................................................................. 43
4.5. Dinmica del Banco de Pruebas ................................................................................ 46
5. Resultados Obtenidos ....................................................................................................... 48
5.1. Anlisis Logs sitio sobre msica ............................................................................... 48
5.1.1. Descripcin sitio sobre msica ........................................................................... 48
5.1.2. Pginas sitio sobre msica.................................................................................. 48
Damin A. MARTINELLI

-7-

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

5.1.3. Anlisis Log 29/5/2005 al 3/6/2005 del sitio sobre msica ............................... 49
5.1.4. Anlisis Log 22/5/2005 al 29/5/2005 del sitio sobre msica ............................. 55
5.1.5. Conclusin Anlisis Logs sitio sobre msica ..................................................... 62
5.2. Anlisis Logs El Cuerpo de Cristo ............................................................................ 63
5.2.1. Descripcin sitio El Cuerpo de Cristo ................................................................ 63
5.2.2. Pginas www.elcuerpodecristo.com.ar............................................................... 63
5.2.3. Anlisis Log Semana 3 de Mayo de 2005 de www.elcuerpodecristo.com.ar .... 64
5.2.4. Anlisis Log Semana 1 de Junio de 2005 de www.elcuerpodecristo.com.ar..... 72
5.2.5. Conclusin Anlisis Logs El Cuerpo de Cristo .................................................. 78
6. Conclusiones..................................................................................................................... 80
7. Trabajos Futuros ............................................................................................................... 81
8. Referencias ....................................................................................................................... 82
A. Apndice I: Joone ............................................................................................................ 90
B. Apndice II: Manual del Usuario..................................................................................... 99
C. Apndice III: Documentacin JavaDoc ......................................................................... 139
D. Apndice IV: Desarrollo de la Solucin Mtrica Versin 3....................................... 242
E. Apndice V: Pruebas...................................................................................................... 363

Damin A. MARTINELLI

-8-

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

1. Introduccin
Se denomina Explotacin o Minera de Datos al conjunto de tcnicas y herramientas
aplicadas al proceso no trivial de extraer y presentar conocimiento implcito, previamente
desconocido, potencialmente til y humanamente comprensible, a partir de grandes
conjuntos de datos, con objeto de describir de forma automatizada modelos previamente
desconocidos, predecir de forma automatizada tendencias y comportamientos [Felgaer,
2004; Frawley et al., 1991; Chen et al., 1996; Mannila, 1997].
La aplicacin de las tcnicas de Explotacin de Datos en la Web, llamada en ingls
Web Data Mining o sintticamente Web Mining, es definida como el estudio de las tcnicas
de Data Mining que automticamente descubren y extraen informacin desde la Web
[Cernuzzi - Molas, 2004].
La identificacin de hbitos de uso de sitios Web, conocida en ingls como Web
Usage Mining, consiste en el proceso de aplicar tcnicas de explotacin de datos para el
descubrimiento de patrones de uso en pginas Web [Srivastava et al., 2000; KosalaBlockeel, 2000]. sta utiliza los datos registrados en los logs de acceso de los servidores
Web, donde se registra el comportamiento de navegacin de los usuarios. Este
comportamiento toma la forma de una secuencia de vnculos (links) seguidos por el
usuario, produciendo una sesin [Batista-Silva, 2002; Borges-Levene, 2000; Chen-Chau,
2004].
Con la identificacin de hbitos de uso de sitios Web se busca [Borges-Levene, 2000;
Kosala-Blockeel, 2000; Srivastava et al., 2000]:
a) entender el comportamiento de navegacin del usuario, permitiendo adaptar los
sitios Web a sus necesidades;
b) obtener la informacin para la personalizacin de los sitios,
c) realizar mejoras en el sistema,
d) modificar el sitio acorde a los patrones descubiertos,
e) realizar inteligencia del negocio y
f) caracterizar el uso del sitio Web por los usuarios.
Mediante estas acciones se busca [Abraham-Ramos, 2003]:
a) atraer nuevos clientes,
b) retener a los clientes actuales,
c) realizar campaas de promociones efectivas y
d) encontrar la mejor estructura lgica del espacio Web.
La identificacin de hbitos de uso de sitios Web consiste de tres etapas [Srivastava
et al., 2000; Batista-Silva, 2002; Mobasher et al., 1999]:

Damin A. MARTINELLI

-9-

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

a) preprocesamiento,
b) descubrimiento de patrones, y
c) anlisis de patrones.
El preprocesamiento consiste en convertir la informacin de uso contenida en los logs
(registro de las pginas solicitadas por los clientes a un servidor), realizando previamente
una limpieza de los mismos, en una abstraccin de datos necesaria para el descubrimiento
de patrones. En esta etapa se identifican a los usuarios y al conjunto de sesiones de usuario
[Srivastava et al., 2000; Batista-Silva, 2002; Mobasher et al., 1999] .
La etapa siguiente es el descubrimiento de patrones mediante diversas tcnicas
disponibles, como por ejemplo, el anlisis estadstico, el descubrimiento de reglas de
asociacin, el agrupamiento, la clasificacin y los patrones secuenciales [Srivastava et al.,
2000] .
La ltima etapa del proceso completo de identificacin de hbitos de uso de sitios
Web es el anlisis de los patrones encontrados en la etapa anterior, filtrando reglas o
patrones no interesantes, y utilizando mtodos de visualizacin tiles para su anlisis [
Srivastava et al., 2000; Batista-Silva, 2002] , realizando proyecciones dinmicas, filtros,
zoom y distorsiones interactivas sobre los grficos generados [Keim, 2002; Ankerst, 2001].
Las redes neuronales artificiales pueden ser utilizadas para el descubrimiento de
patrones en la explotacin de datos. Las redes neuronales artificiales (de ac en adelante
RNA) son modelos que intentan reproducir el comportamiento del cerebro; las RNA son
capaces de aprender de la experiencia, de generalizar de casos anteriores a nuevos casos, de
abstraer caractersticas esenciales a partir de entradas que representan informacin
irrelevante, de realizar aprendizaje adaptativo, de realizar una autoorganizacin, adems de
tener tolerancia a fallos y operar en tiempo real [Grosser, 2004; Daza, 2003]. Conforme la
arquitectura del cerebro, la estructura de las RNA involucran una gran cantidad de
elementos simples de procesamiento llamadas neuronas. Estas unidades de procesamiento
se encuentran altamente interconectadas con las dems mediante conexiones con pesos
modificables, cada neurona obtiene sus seales de entrada de otras neuronas o de orgenes
externos, y enva seales de salida a otras neuronas o a destinos externos. El aprendizaje en
una RNA es desarrollado mediante el ajuste de los pesos de las conexiones entre las
neuronas [Roy, 2000; Abidi, 1996; Daza, 2003, Garca Martnez et al., 2003].
En este contexto, el propsito de este proyecto es aplicar redes neuronales artificiales
en el proceso de descubrimiento de patrones de uso de sitios Web, estudiando cmo puede
ser adaptada la red neuronal utilizada y las transformaciones necesarias que deben
realizarse en los datos de los logs de acceso de los servidores Web, de modo de poder ser
utilizados como seales de entrada. Los patrones descubiertos se analizarn en orden a su
comprensin y explicacin, y sern contrastados con los resultados obtenidos utilizando un
mtodo tradicional, el algoritmo K-Means.
En el Captulo 2. Estado de la Cuestin se presenta el contexto terico para el estudio
de la integracin del agrupamiento por SOM como mtodo de identificacin de hbitos de
uso de sitios Web. Se presenta la explotacin de datos y la explotacin de datos en la Web,
para luego describir ms en detalle la explotacin de datos de uso de la Web y los trabajos

Damin A. MARTINELLI

- 10 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

realizados en esta rea. Por ltimo, se describen los mapas auto-organizados SOM,
realizando un anlisis de las similitudes y diferencias entre SOM y el algoritmo K-Means.
En el Captulo 3. Descripcin del Problema se presenta el problema a resolver, se
fundamenta el porqu de su eleccin y se seala su importancia en el contexto de estudio.
En el Captulo 4. Solucin Propuesta se describe la respuesta al problema planteado,
identificando sus parmetros, planteando las definiciones necesarias, describiendo el origen
de los casos de experimentacin, y finalmente, se realiza una descripcin del Banco de
Pruebas, abordando sus funcionalidades y describiendo su dinmica de funcionamiento.
En el Captulo 5. Resultados Obtenidos se exponen los resultados obtenidos en los
experimentos realizados. Se analizan los logs de dos sitios Web, uno sobre msica y otro
sobre gastronoma, de modo de poder analizar los resultados obtenidos y evaluar la calidad
de la solucin propuesta en esta tesis. Para cada sitio se realizan todos los pasos
involucrados en la identificacin de hbitos de usuarios, comparando los resultados
obtenidos mediante la red neuronal SOM y mediante el algoritmo K-Means.
En el Captulo 6. Conclusiones se resumen los aportes que el presente trabajo de
Tesis brinda en relacin a la problemtica especfica de la identificacin de hbitos de uso
de sitios Web.
En el Captulo 7. Trabajos Futuros se presentan las futuras lneas de investigacin y
desarrollo que se pueden considerar a fin de continuar con el presente trabajo.
En el Apndice I. Joone se describe el framework de redes neuronales artificiales
Joone y el porqu de su eleccin como parte del banco de pruebas desarrollado.
En el Apndice II. Manual del Usuario se transcribe el manual de usuario del banco
de pruebas.
En el Apndice III. Documentacin JavaDoc se transcribe la documentacin tcnica
del banco de pruebas.
En el Apndice IV. Desarrollo de la Solucin Mtrica Versin 3 se detalla el
desarrollo del banco de pruebas utilizando la metodologa Mtrica Versin 3, incluyendo
cada actividad que involucra la misma.
En el Apndice V. Pruebas se detallan las pruebas realizadas sobre el banco de
pruebas, describiendo cada una y los resultados obtenidos.

Damin A. MARTINELLI

- 11 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

2. Estado de la Cuestin
En este captulo se presenta el contexto terico para el estudio de la integracin de
agrupamiento por SOM como mtodo de identificacin de hbitos de uso de sitios Web. Se
presenta la explotacin de datos (seccin 2.1), poniendo especial nfasis en el algoritmo KMeans (seccin 2.1.4). Se presenta la explotacin de datos en la Web (seccin 2.2), para
luego describir ms en detalle la explotacin de datos de uso de la Web (seccin 2.3) y los
trabajos realizados en esta rea (seccin 2.4). Por ltimo, se describen los mapas autoorganizados SOM (seccin 2.5), realizando un anlisis de las similitudes y diferencias entre
SOM y el algoritmo K-Means (seccin 2.6).

2.1. Explotacin de Datos


Como se mencion anteriormente, se denomina Explotacin o Minera de Datos al
conjunto de tcnicas y herramientas aplicadas al proceso no trivial de extraer y presentar
conocimiento implcito, previamente desconocido, potencialmente til y humanamente
comprensible, a partir de grandes conjuntos de datos, con objeto de describir de forma
automatizada modelos previamente desconocidos, predecir de forma automatizada
tendencias y comportamientos [Felgaer, 2004; Frawley et al., 1991; Chen et al., 1996;
Mannila, 1997].
La Minera de Datos es un proceso completo de descubrimiento de conocimiento que
involucra varios pasos [Morales, 2003]:
1. Entendimiento del dominio de aplicacin, el conocimiento relevante a utilizar y las
metas del usuario.
2. Seleccionar un conjunto de datos en donde realizar el proceso de descubrimiento.
3. Limpieza y preprocesamiento de los datos, diseando una estrategia adecuada para
manejar ruido, valores incompletos, valores fuera de rango, valores inconsistentes,
etc..
4. Seleccin de la tarea de descubrimiento a realizar, por ejemplo, clasificacin,
agrupamiento o clustering, reglas de asociacin, etc..
5. Seleccin de los algoritmos a utilizar.
6. Transformacin de los datos al formato requerido por el algoritmo especifico de
explotacin de datos, hallando los atributos tiles, reduciendo las dimensiones de
los datos, etc..
7. Llevar a cabo el proceso de minera de datos para encontrar patrones interesantes.
8. Evaluacin de los patrones descubiertos y presentacin de los mismos mediante
tcnicas de visualizacin. Quizs sea necesario eliminar patrones redundantes o no
interesantes, o se necesite repetir algn paso anterior con otros datos, con otros
algoritmos, con otras metas o con otras estrategias.

Damin A. MARTINELLI

- 12 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

9. Utilizacin del conocimiento descubierto, ya sea incorporndolo dentro de un


sistema o simplemente para almacenarlo y reportarlo a las personas interesadas.
Es muy importante la etapa del preprocesamiento de los datos y su transformacin al
formato requerido por el algoritmo, ya que dependiendo de cmo se realicen estas tareas, va
a depender la calidad final de los patrones descubiertos.
Los patrones descubiertos se deben analizar, encontrando los patrones interesantes.
Un patrn es interesante si es fcilmente entendible por las personas, vlido sobre datos
nuevos o de prueba con algn grado de certidumbre, potencialmente til, novedoso o valida
alguna hiptesis que un usuario busca confirmar. Un patrn interesante representa
conocimiento [Ale, 2005a].
Debido a que la minera de datos es un proceso que involucra varios pasos,
enumerados anteriormente, se necesita un modelo que sirva de guia para la correcta
ejecucin de los mismos.
CRISP-DM es un modelo del proceso de explotacin de datos, el cual describe los
procedimientos utilizados por un experto al afrontar un proyecto de explotacin de datos.
CRISP-DM [Chapman et al., 2000] provee un modelo de referencia para guiar un proyecto
de explotacin. Este modelo contiene las fases del ciclo de vida de un proyecto, con sus
respectivas tareas y relaciones. El ciclo de vida consiste de seis fases [Figura 2.1]:

Entendimiento del Negocio: la fase inicial se focaliza en el entendimiento de


los objetivos del proyecto y los requerimientos desde la perspectiva del negocio,
para luego convertir este conocimiento en la definicin de un problema de
explotacin de datos y un plan preliminar diseado para alcanzar estos
objetivos.

Entendimiento de los Datos: esta fase comienza con una coleccin inicial de
datos y se procede a realizar actividades para familiarizarse con los datos, para
identificar problemas en la calidad de los mismos y para detectar subconjuntos
interesantes que permitan formular hiptesis sobre informacin oculta en los
datos.

Preparacin de Datos: la fase de preparacin de datos involucra todas las


actividades para construir el conjunto final de datos (los datos que sern
utilizados en la herramienta de modelado). Estas tareas generalmente son
realizadas varias veces y sin un orden previo. Las tareas incluyen la seleccin de
tablas, registros y atributos, como as tambin, la transformacin y la limpieza
de los datos para que puedan utilizarse correctamente en la herramienta de
modelado.

Modelado: en esta fase son seleccionadas y aplicadas las tcnicas de modelado,


calibrando sus parmetros a valores ptimos. Existen varias tcnicas disponibles
para el mismo tipo de problema de explotacin de datos, algunas de las cuales
poseen requerimientos especficos en la estructura de los datos de entrada. A
menudo es necesario volver a la etapa de preparacin de datos para seguir
perfeccionando estos datos.

Damin A. MARTINELLI

- 13 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Evaluacin: en esta fase se posee uno o varios modelos, los cuales poseen una
alta calidad desde la perspectiva del anlisis de los datos. Antes de proceder al
despliegue final del modelo, es importante evaluar el modelo y revisar los pasos
ejecutados en la construccin del mismo, de modo de estar seguro que se
alcanzaron los objetivos del negocio de forma satisfactoria. Luego de finalizar
esta fase, se debera poder tomar una decisin sobre el uso que se le darn a los
resultados de la explotacin de datos.

Despliegue: la creacin del modelo no es generalmente el fin del proyecto. El


conocimiento adquirido ser necesario organizarlo y presentarlo de forma que el
cliente pueda utilizarlo. En esta fase se puede necesitar simplemente generar un
reporte o quizs sea necesario implementar un proceso de explotacin de datos
repetitivo completo.

Figura 2.1. Fases de CRISP-DM

La secuencia de estas fases no es rgida, en muchas ocasiones es necesario volver a


fases anteriores para realizar ajustes. Las flechas de la figura [Figura 2.1] indican las
dependencias ms importantes y frecuentes entre las fases. El ciclo exterior simboliza la
naturaleza cclica de la explotacin de datos. El conocimiento adquirido durante el proceso
puede generar nuevas preguntas acerca del negocio.

Damin A. MARTINELLI

- 14 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Existen varios tipos de tcnicas de explotacin de datos, las cuales, en funcin de su


objetivo, pueden clasificarse en:

Descubrimiento de Reglas de Asociacin: consiste en hallar patrones,


asociaciones, correlaciones o estructuras causales frecuentes entre conjuntos de
objetos almacenados en un repositorio de informacin.

Clasificacin de Datos: proceso que encuentra las propiedades comunes entre


un conjunto de objetos y los clasifica en diferentes clases, de acuerdo a un
modelo de clasificacin.

Agrupamiento de Datos: consiste en agrupar un conjunto de datos, sin tener


clases predefinidas, basndose en la similitud de los valores de los atributos de
los distintos datos.

2.1.1. Descubrimiento de Reglas de Asociacin


La minera de reglas de asociacin consiste en encontrar reglas de la forma
(A1yA2y...yAm) => (B1yB2y...yBn), donde Ai y Bj son valores de atributos del conjunto
de datos [Chen et al., 1996]. Por ejemplo, se podra encontrar en un gran repositorio de
datos de compras en un supermercado, la regla de asociacin correspondiente a que si un
cliente compra leche, entonces compra pan. Una regla de asociacin es una sentencia
probabilstica acerca de la coocurrencia de ciertos eventos en una base de datos, y es
particularmente aplicable a grandes conjuntos de transacciones [Hand et al., 2001].
Dada una base de datos, es deseable descubrir las asociaciones importantes entre
tems, de modo que la presencia de algn tem en una transaccin implica la presencia de
otros tems en la misma transaccin. Siendo X un conjunto de tems, una transaccin T se
dice que contiene a X si y solo si X esta incluido en T. Una regla de asociacin es una
implicacin de la forma X => Y, donde X esta incluido en I (I es el conjunto de todos los
tems posibles), Y esta incluido en I y la interseccin de X e Y es vaca. La regla X => Y
posee en el conjunto de transacciones D una confidencia c, correspondiente a que c% de las
transacciones en D que contienen X tambin contienen Y. La regla X => Y posee un
soporte s en el conjunto de transacciones D si s% de las transacciones en D contienen X U
Y [Chen et al., 1996].
La confidencia denota la fuerza de la implicacin y el soporte indica la frecuencia de
ocurrencia de los patrones de la regla. Es a menudo deseable prestar atencin solo a
aquellas reglas que poseen un razonable alto soporte. Las reglas con alta confidencia y
fuerte soporte son consideradas reglas fuertes [Agrawal et al., 1993; Frawley et al., 1991].
La tarea de minera de reglas de asociacin es esencialmente el descubrimiento de reglas de
asociacin fuertes en grandes base de datos.
Existen varios algoritmos que realizan el descubrimiento de reglas de asociacin. Uno
de los algoritmos ms utilizado es el algoritmo Apriori. En cada iteracin, Apriori
construye un conjunto de itemsets (conjunto de tems presentes en una transaccin)
candidatos, cuenta el nmero de ocurrencias de cada candidato y luego determina los
itemsets frecuentes basndose en un soporte mnimo predeterminado [Agrawal & Srikant,

Damin A. MARTINELLI

- 15 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

1994]. En la primera iteracin, Apriori simplemente procesa todas las transacciones para
contar la cantidad de ocurrencias de cada tem, obteniendo el conjunto de candidatos 1itemsets. Luego de los candidatos se seleccionan los 1-itemsets frecuentes (con soporte
mayor al mnimo). Se sigue iterando para los 2-itemsets (conjunto de tems con dos
unidades cada uno), hasta obtener los k-itemsets frecuentes. Luego utiliza los itemsets
frecuentes para generar las reglas de asociacin. Apriori tiene en cuenta el hecho de que
todos los subconjuntos de un itemset frecuente deben ser tambin frecuentes (deben tener el
soporte mnimo), adems que si un itemset no es frecuente, ninguno de sus superconjuntos
es frecuente.
Se han hecho algunas mejoras al algoritmo bsico de reglas de asociacin Apriori
para hacerlo ms eficiente [Morales, 2003]:

Utilizar tablas de hash para reducir el tamao de los itemsets candidatos (DHP).

Eliminar transacciones que no contribuyan en superconjuntos a considerar.

Dividir las transacciones en particiones disjuntas, evaluar los itemsets locales y


luego, sobre la base de sus resultados, estimar los globales.

Hacer aproximaciones con muestreos del conjunto de todos los itemsets, para no
tener que leer todo el conjunto de datos.

Evitar generar candidatos usando estructuras de datos alternativas, como por


ejemplo, los FP-trees (Frequent Pattern tree).

Las reglas temporales son similares a las reglas de asociacin pero involucran la
nocin de tiempo, encontrando relaciones en los datos a travs del tiempo. Por ejemplo,
encontrar reglas en la evolucin de los valores de las acciones cotizadas en la bolsa [Chen
et al., 1996].

2.1.2. Clasificacin de Datos


La clasificacin se utiliza para clasificar un conjunto de datos basado en los valores
de sus atributos. Por ejemplo, se podra clasificar a distintas personas entre riesgo Bajo,
Medio y Alto, para la otorgacin de un prstamo, teniendo en cuenta la informacin de la
misma.
La clasificacin de datos es el proceso que encuentra las propiedades comunes entre
un conjunto de objetos y los clasifica en diferentes clases, de acuerdo a un modelo de
clasificacin. Para construir este modelo, se utiliza un conjunto de entrenamiento, en que
cada tupla consiste en un conjunto de atributos y el valor de la clase a la cual pertenece. El
objetivo de la clasificacin es analizar los datos de entrenamiento y, mediante un mtodo
supervisado, desarrollar una descripcin o un modelo para cada clase utilizando las
caractersticas disponibles en los datos. Esta descripcin o modelo es utilizado para
clasificar otras tuplas, cuya clase es desconocida. El mtodo se conoce como supervisado
debido a que, para el conjunto de entrenamiento, se conoce la clase a la cual pertenece cada
tupla del mismo y se le indica al modelo si la clasificacin que realiza es correcta o no. La

Damin A. MARTINELLI

- 16 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

construccin del modelo se realimenta de estas indicaciones del supervisor [Chen et al.,
1996; Lalani, 2003].
Para la clasificacin de datos se han utilizado distintas tcnicas, algunas de las cuales
utilizan las estadsticas, el machine learning, las redes neuronales o los sistemas expertos
[Weiss & Kulikowski, 1991].
La clasificacin basada en rboles de decisin es un mtodo de aprendizaje
supervisado que construye rboles de decisin a partir de un conjunto de entrenamiento.
Cada hoja del rbol posee un nombre de clase, cada nodo interior especifica una evaluacin
en un atributo y cada rama representa un resultado de esa evaluacin. La calidad de un
rbol depende de la precisin de la clasificacin y del tamao del rbol.
ID3 es un sistema tpico de construccin de rboles de decisin, el cual adopta una
estrategia de arriba hacia abajo e inspecciona solo una parte del espacio de bsqueda. ID-3
garantiza que ser encontrado un rbol simple, pero no necesariamente el ms simple. ID-3
utiliza la teora de la informacin para minimizar la cantidad de pruebas para clasificar un
objeto. Una heurstica selecciona el atributo que provee la mayor ganancia de la
informacin. Una extensin a ID3, C4.5 [Quinlan, 1993] extiende el dominio de
clasificacin de atributos categricos a numricos. J48 es una implementacin mejorada del
algoritmo de rboles de decisin C4.5. El algoritmo J48 funciona bien con atributos
nominales y numricos. Un paso importante en la construccin del rbol de decisin es la
poda, la cual elimina las ramas no necesarias, resultando en una clasificacin ms rpida y
una mejora en la precisin de la clasificacin de datos [Han & Kamber, 2001]. SPRINT
particiona recursivamente los datos hasta que todos los miembros pertenecen a la misma
clase o el nmero de miembros es suficientemente pequeo, para luego realizar una poda
del rbol generado, disminuyendo su complejidad [Ale, 2005b].
Existen muchos otros algoritmos de clasificacin de datos, incluyendo mtodos
estadsticos [Cheeseman & Stutz, 1996; Elder IV & Pregibon, 1996; Frawley et al., 1991],
como el anlisis de regresin lineal utilizada en [Elder IV & Pregibon, 1996]. Se han
estudiado tambin algoritmos de machine learning escalables que combinan clasificadores
bsicos de una particin del conjunto de datos [Cheeseman & Stutz, 1996]. Tambin
existen estudios de tcnicas de clasificacin en el contexto de grandes base de datos
[Agrawal et al., 1992]. Otro clasificador ha sido propuesto por [Agrawal et al., 1992] para
reducir el costo de la generacin de los rboles de decisin. Tambin se han utilizado las
redes neuronales para las tareas de clasificacin de datos [Lu et al., 1995], los algoritmos
genticos y la lgica difusa.

2.1.3. Agrupacin de Datos


La agrupacin o el clustering consiste en agrupar un conjunto de datos, sin tener
clases predefinidas, basndose en la similitud de los valores de los atributos de los distintos
datos. Esta agrupacin, a diferencia de la clasificacin, se realiza de forma no supervisada,
ya que no se conoce de antemano las clases del conjunto de datos de entrenamiento. El
clustering identifica clusters, o regiones densamente pobladas, de acuerdo a alguna medida
de distancia, en un gran conjunto de datos multidimensional [Chen et al., 1996]. El

Damin A. MARTINELLI

- 17 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

clustering se basa en maximizar la similitud de las instancias en cada cluster y minimizar la


similitud entre clusters [Han & Kamber, 2001].
La clusterizacion ha sido estudiada en las reas de estadstica [Cheeseman & Stutz,
1996; Jain & Dubes, 1988], de machine learning [Fisher, 1996], de base de datos espaciales
y de minera de datos [Cheeseman & Stutz, 1996; Ester et al., 1995; Ng & Han, 1994;
Zhang et al., 1996].
Existen varias categoras de los mtodos de clustering [Ale, 2005c]:

Mtodos Particionales: Construir varias particiones y evaluarlas por algn


criterio.

Mtodos Jerrquicos: Crear una descomposicin del conjunto de datos (u


objetos) utilizando algn criterio.

Mtodos Basados en Densidad: basado en funciones de conectividad y densidad.

Mtodos Basados en Grillas: basado en una estructura de granularidad de


niveles mltiples.

Mtodos Basados en Modelos: se hipotetiza un modelo para cada uno de los


clusters y la idea es hallar el mejor ajuste de ese modelo a cada uno de los otros.

2.1.3.1. Mtodos Particionales


Los mtodos particionales construyen una particin de una base de datos D de n
objetos en un conjunto de k clusters, buscando optimizar el criterio de particionamiento
elegido. Existen distintos algoritmos para la formacin de los clusters.
A continuacin se describen los algoritmos de particin mas conocidos:
En K-Means cada cluster est representado por su centro. K-Means intenta formar k
clusters, con k predeterminado antes del inicio del proceso. K-Means comienza
particionando los datos en k subconjuntos no vacos, calcula el centroide de cada particin
como el punto medio del cluster y asigna cada dato al cluster cuyo centroide sea el ms
prximo. Luego vuelve a particionar los datos iterativamente, hasta que no haya ms datos
que cambien de cluster de una iteracin a la otra.
En K-Medoids o PAM (Partition around medoids) [Kaufman & Rousseeuw, 1990]
cada cluster est representado por uno de los objetos en el cluster, llamado medioide del
cluster. El medioide es el objeto ms cercano al centro de un cluster. Luego de seleccionar
los k mediodes, el algoritmo intenta en forma iterativa realizar una mejor eleccin de los
mediodes, analizando todos los posibles pares de objetos, de modo que uno es un mediode
y el otro no. La medida de la calidad de la clusterizacin es calculada para cada uno de
estos pares. La mejor eleccin de los objetos en una iteracin es elegida como los
medioides para la iteracin siguiente. PAM funciona bien para conjuntos de datos
pequeos, pero es computacionalmente ineficiente para conjuntos de datos grandes.

Damin A. MARTINELLI

- 18 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

El algoritmo CLARA (Clustering LARge Applications) [Kaufman & Rousseeuw,


1990] realiza la misma tarea pero utiliza la tcnica de muestreo. Solo una porcin de los
datos completos es seleccionada como una representacin de los datos y los medioides son
elegidos en esta muestra utilizando PAM. La idea es que, si la muestra es seleccionada en
forma aleatoria, esta representa correctamente el conjunto de datos completos, y los objetos
representativos (medioides) elegidos sern similares a los elegidos a partir del conjunto de
datos completo. Como se puede esperar, CLARA puede manejar conjuntos de datos ms
grandes que PAM.
CLARANS [Ng & Han, 1994] integra los algoritmos PAM y CLARA en uno.
Adems, se han propuesto varias mejoras al algoritmo de CLARANS para mejorar su
desempeo [Ester et al., 1995].
El algoritmo K-Means se utilizar para contrastar los resultados obtenidos mediante
la red neuronal SOM propuesta en esta tesis. Por ello, a continuacin se detalla el
funcionamiento de este algoritmo, para una mejor comprensin del mismo.

2.1.4. K-Means
K-Means en un mtodo particional de clustering donde se construye una particin de
una base de datos D de n objetos en un conjunto de k grupos, buscando optimizar el criterio
de particionamiento elegido. En K-Means cada grupo est representado por su centro. KMeans intenta formar k grupos, con k predeterminado antes del inicio del proceso. Asume
que los atributos de los objetos forman un vector espacial. El objetivo que se intenta
alcanzar es minimizar la varianza total intra-grupo o la funcin de error cuadrtico:
k

V = x j i

i = 0 jS i

Ecuacin 2-1 Error cuadrtico

Donde existen k grupos Si, i=1,2,...,k y i es el punto medio o centroide de todos los
puntos Xj Si.
K-Means comienza particionando los datos en k subconjuntos no vacos,
aleatoriamente o usando alguna heurstica. Luego calcula el centroide de cada particin
como el punto medio del cluster y asigna cada dato al cluster cuyo centroide sea el ms
prximo. Luego los centroides son recalculados para los grupos nuevos y el algoritmo se
repite hasta la convergencia, la cual es obtenida cuando no haya ms datos que cambien de
grupo de una iteracin a otra.
Para calcular el centroide ms cercano a cada punto se debe utilizar una funcin de
distancia. Para datos reales se suele utilizar la distancia euclediana. Para datos categricos
se debe establecer una funcin especfica de distancia para ese conjunto de datos. Algunas
de las opciones son utilizar una matriz de distancias predefinidas o una funcin heurstica.

Damin A. MARTINELLI

- 19 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

El algoritmo no garantiza que se obtenga un optimo global. La calidad de la solucin


final depende principalmente del conjunto inicial de grupos. Debido a esto, se suelen
realizar varias ejecuciones del algoritmo con distintos conjuntos iniciales, de modo de
obtener una mejor solucin.
Dado k, el algoritmo K-Means se implementa en 4 pasos [Ale,2005c]:
1. Particionar los objetos en k subconjuntos no vacios.
2. Computar los puntos semilla como los centroides de los clusters de la particin
corriente. El centroide es el centro (punto medio) del cluster.
3. Asignar cada objeto al cluster con el punto semilla ms prximo.
4. Volver al paso 2, parar cuando no haya ms reasignaciones.
K-Means es ampliamente utilizado en la explotacin de datos, en la cuantificacin de
vectores, para cuantificar variable reales en k rangos no uniformes y para reducir el nmero
de colores en una imagen.

2.2. Explotacin de Datos en la Web


Como se mencion anteriormente, la aplicacin de las tcnicas de Explotacin de
Datos en la Web, llamada en ingls Web Data Mining o ms sintticamente Web Mining,
es definida como el estudio de las tcnicas de Data Mining que automticamente descubren
y extraen informacin desde la Web [Cernuzzi & Molas, 2004; Pierrakos et al., 2001;
Abraham & Ramos, 2003; Lalani, 2003; Huysmans et al., 2003].
La Explotacin de Datos en la Web (Web Mining) puede dividirse en tres categoras
[Pierrakos et al., 2001; Lalani, 2003; Batista & Silva, 2002; Chen et al., 1996; Marbn
Gallego, 2002; Huysmans et al., 2003; Srivastava et al., 2000]:

Explotacin de Datos en el Contenido de la Web (Web Content Mining),

Explotacin de Datos en la Estructura de la Web (Web Structure Mining), y

Explotacin de Datos de Uso de la Web (Web Usage Mining).

2.2.1. Explotacin de Datos en el Contenido de la Web


La Explotacin de Datos en el Contenido de la Web, llamada en ingles Web Content
Mining, consiste en la extraccin de conocimiento til a partir del contenido de las pginas
Web mediante el uso de tcnicas de data mining. El contenido de las pginas Web son los
datos que fueron diseados para mostrar a los usuarios y consiste de varios tipos, tales
como texto, grficos, sonido, video, etc. [Pierrakos et al., 2001; Lalani, 2003; Batista &
Silva, 2002; Chen et al., 1996; Huysmans et al., 2003; Srivastava et al., 2000]. Las
investigaciones en la explotacin de datos en los contenidos Web incluyen el
Damin A. MARTINELLI

- 20 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

descubrimiento de recursos, la categorizacin y la clusterizacion de documentos, y la


extraccin de informacin de las pginas Web [Chen et al., 1996].

2.2.2. Explotacin de Datos en la Estructura de la Web


La Explotacin de Datos en la Estructura de la Web, llamada en ingles Web Structure
Mining, intenta extraer informacin de la estructura de los links entre diferentes pginas de
la Web [Pierrakos et al., 2001; Batista & Silva, 2002; Chen et al., 1996; Huysmans et al.,
2003]. Los datos de la estructura representan el modo en que el contenido de las pginas
Web es organizado. Estos datos pueden corresponder con etiquetas HTML o XML y
vnculos entre pginas Web [Srivastava et al., 2000].

2.2.3. Explotacin de Datos de Uso de la Web


La Explotacin de Datos de Uso de la Web, conocida en ingls como Web Usage
Mining, consiste en el proceso de aplicar tcnicas de explotacin de datos para el
descubrimiento de patrones de uso en pginas Web [Srivastava et al., 2000; Kosala &
Blockeel, 2000], esta utiliza los datos registrados en los logs de acceso de los servidores
Web, donde se registra el comportamiento de navegacin de los usuarios. Este
comportamiento toma la forma de una secuencia de vnculos (links) seguidos por el
usuario, produciendo una sesin [Batista & Silva, 2002; Borges & Levene, 2000; Chen &
Chau, 2004].

2.3. Explotacin de Datos de Uso de la Web


El continuo crecimiento del World Wide Web, unido al entorno competitivo en el
cual se mueven las organizaciones modernas, ha hecho necesario disear los sitios Web
teniendo en cuenta, como aspecto fundamental, el conocimiento que se puede extraer de las
navegaciones de los usuarios que lo utilizan [Hochsztain, 2002].
Los servidores Web guardan datos de las interacciones de sus usuarios en todo pedido
recibido de algn recurso. Estos datos se almacenan en los logs de acceso del servidor Web,
conteniendo informacin sobre la experiencia del usuario en el sitio. El anlisis de los logs
de acceso de un servidor Web puede ayudar a entender el comportamiento de sus usuarios.
El tamao promedio de los archivos puede ser de varios megabytes diarios, por esto son
necesarias tcnicas y herramientas que faciliten el anlisis de su contenido [Cernuzzi &
Molas, 2004; Abraham & Ramos, 2003].
La identificacin de hbitos de uso de sitios Web, conocida en ingls como Web
Usage Mining, consiste en el proceso de aplicar tcnicas de explotacin de datos para el
descubrimiento de patrones de uso en pginas Web [Srivastava et al., 2000; Kosala &
Blockeel, 2000], utilizando los datos registrados en los logs de acceso de los servidores

Damin A. MARTINELLI

- 21 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Web. Los patrones de uso descubiertos deben cumplir la condicin de novedosos,


interesantes y tiles, permitiendo mejorar la efectividad del sitio Web, basndose en las
necesidades del usuario [Batista & Silva, 2002; Kerkhofs, 2001; Abraham & Ramos, 2003].
Con la identificacin de hbitos de uso de sitios Web se busca [Borges & Levene,
2000; Kosala & Blockeel, 2000; Srivastava et al., 2000; Lalani, 2003 Batista & Silva, 2002;
Marbn Gallego, 2002]:
a) entender el comportamiento de navegacin del usuario, permitiendo adaptar los
sitios Web a sus necesidades;
b) obtener la informacin para la personalizacin de los sitios,
c) realizar mejoras en el sistema,
d) modificar el sitio acorde a los patrones descubiertos,
e) realizar inteligencia del negocio,
f) ofrecer contenido a los visitantes de acuerdo a sus preferencias, y
g) caracterizar el uso del sitio Web por los usuarios.
Mediante estas acciones se busca [Abraham & Ramos, 2003; Cernuzzi & Molas,
2004]:
a) atraer nuevos clientes,
b) retener a los clientes actuales,
c) realizar campaas de promociones efectivas,
d) determinar estrategias de marketing efectivas, y
e) encontrar la mejor estructura lgica del espacio Web.
La identificacin de hbitos de uso de sitios Web consiste de tres etapas [Srivastava
et al., 2000; Batista-Silva, 2002; Mobasher et al., 1999]:
I.

preprocesamiento,

II.

descubrimiento de patrones, y

III.

anlisis de patrones.

2.3.1. Prepocesamiento
El preprocesamiento consiste en convertir la informacin de uso contenida en los logs
(registro de las pginas solicitadas por los clientes a un servidor), realizando previamente
una limpieza de los mismos, en una abstraccin de datos necesaria para el descubrimiento
de patrones. En esta etapa se identifican a los usuarios y al conjunto de sesiones de usuario
[Srivastava et al., 2000; Batista & Silva, 2002; Mobasher et al., 1999, Marbn Gallego,
2002]. Una sesin de usuario corresponde a una secuencia de vnculos (links) seguidos por
el usuario [Batista & Silva, 2002; Borges & Levene, 2000; Chen & Chau, 2004].

Damin A. MARTINELLI

- 22 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Los datos de los logs pueden ser recolectados a nivel del servidor, del cliente o del
servidor proxy [Abraham & Ramos, 2003; Chen et al., 1996; Batista & Silva, 2002]:

los servidores Web guardan el comportamiento de los visitantes del sitio Web,

la recoleccion de datos del lado del cliente puede ser implementada usando
agentes remotos o modificando los navegadores existentes, y

los servidores proxy actuan como un nivel intermedio de cacheo entre los
navegadores de los clientes y los servidores Web.

Estos datos pueden diferir en su contenido y en la forma en que es obtenida. Los


datos de uso recolectados de diferentes orgenes representan los patrones de navegacin de
diferentes segmentos del trfico de Internet, yendo desde el comportamiento de un usuario
nico en un sitio Web hasta el comportamiento de varios usuarios en varios sitios Web. La
informacin provista por los distintos orgenes puede ser usada para construir varias
abstracciones de datos diferentes [Abraham & Ramos, 2003; Batista & Silva, 2002].
La limpieza de los datos almacenados en los archivos de log involucra el tratamiento
de los valores fuera de rango, los errores en los datos y los datos incompletos, que pueden
ocurrir fcilmente debido a varias razones inherentes a la navegacin Web. Los campos
ms comunes de un archivo log de un servidor Web incluyen: direccin IP del cliente, hora
de acceso, mtodo de peticin, URL de la pgina accedida, protocolo de transmisin de
datos, cdigo de retorno, cantidad de bytes transmitidos por el servidor al cliente y el tipo
de navegador utilizado. Los servidores Web pueden tambin capturar en que pgina esta
localizado el usuario cuando realiza el prximo pedido.
Con esta informacin se debe identificar a los usuarios y las sesiones de los mismos.
Sin embargo, los datos recolectados en los logs pueden no ser enteramente confiables
debido a que algunas pginas pueden ser almacenadas en la memoria cache del navegador
del usuario o por un servidor proxy. Adems, para un servidor Web, todos los pedidos
desde un servidor proxy poseen el mismo identificador aunque los pedidos representen a
mas de un usuario, y es posible que varios usuarios accedan a una pgina almacenada en la
memoria cache del servidor proxy y, por ende, el servidor Web solo reciba un nico pedido.
El servidor Web puede adems guardar otro tipo de informacin de uso, como las cookies,
que son marcadores generados por el servidor Web para cada cliente individual,
permitiendo rastrear automticamente a los visitantes del sitio, o mediante la registracin de
los usuarios, pero cada mtodo posee sus contratiempos [Pitkow, 1997].
Una vez que cada usuario ha sido identificado (por medio de cookies, por medio de
un inicio de sesin o por medio de un anlisis de los datos del log de acceso del servidor),
la secuencia de vnculos para cada usuario puede ser dividido en sesiones. El principal
problema del protocolo HTTP es que no posee indicacin del estado (stateless), de forma
que es imposible saber cuando un usuario abandona el servidor, por lo se deben realizar
algunos supuestos para identificar las sesiones [Chen et al., 1996; Batista & Silva, 2002;
Marbn Gallego, 2002, Hochsztain, 2002].

Damin A. MARTINELLI

- 23 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

2.3.2. Descubrimiento de Patrones


La etapa siguiente es el descubrimiento de patrones mediante diversas tcnicas
disponibles, como por ejemplo, el anlisis estadstico, el descubrimiento de reglas de
asociacin, el agrupamiento, la clasificacin y los patrones secuenciales [Srivastava et al.,
2000; Pierrakos et al., 2001; Batista & Silva, 2002; Eirinaki & Vazirgiannis, 2003; Chen et
al., 1996].
El mtodo ms comn y simple que puede ser aplicado es el anlisis estadstico. Este
anlisis estadstico puede ser utilizado por los administradores Web para obtener
informacin sobre la carga actual del servidor. Sin embargo, los datos estadsticos
disponibles solo pueden proveer la informacin explcita debido a la naturaleza y las
limitaciones de la metodologa. Para sitios Web pequeos, estas estadsticas de uso pueden
ser adecuadas para analizar los patrones y las tendencias de uso; pero cuando el tamao y la
complejidad del sitio aumenta, estas estadsticas se vuelven inadecuadas y son necesarias
otras tcnicas [Abraham & Ramos, 2003; Eirinaki & Vazirgiannis, 2003].
Las reglas de asociacin es una tcnica para encontrar patrones, asociaciones y
correlaciones frecuentes entre conjuntos de tems. Las reglas de asociacin son utilizadas
para revelar la correlacin entre pginas accedidas en forma conjunta durante una nica
sesin de un usuario. Tales reglas indican la posible relacin entre pginas que son a
menudo vistas juntas aunque no estn conectadas directamente, y puede revelar
asociaciones entre grupos de usuarios con intereses especficos. Adems de poder ser
explotadas para cuestiones de negocios, tales observaciones pueden ser utilizadas para una
reestructuracin del sitio Web, agregando, por ejemplo, vnculos entre las pginas
accedidas generalmente juntas, o para mejorar la eficiencia, precargando pginas.
El descubrimiento de patrones secuenciales es una extensin a las reglas de
asociacin en el cual los patrones incorporan la nocin del tiempo. En el dominio de la
Web, tales patrones podran corresponder con una pgina Web o un conjunto de pginas
Web que son accedidas inmediatamente despus de otro conjunto de pginas. Utilizando
esta informacin pueden ser descubiertas tendencias de los usuarios tiles y pueden
realizarse predicciones de las visitas de los usuarios.
La agrupacin es utilizada para juntar tems que poseen caractersticas similares. En
el contexto de la minera de hbitos en Web, se pueden distinguir dos casos, agrupamiento
de usuarios y agrupamiento de pginas. El agrupamiento de pginas identifica conjuntos de
pginas que parecen estar conceptualmente relacionadas de acuerdo a la percepcin de los
usuarios. El agrupamiento de usuarios produce conjuntos de usuarios que poseen un
comportamiento similar cuando navegan el sitio Web. Tal conocimiento es utilizado en el
comercio electrnico para realizar una segmentacin del mercado, pero tambin es til
cuando el objetivo es la personalizacin del sitio Web.
La clasificacin es un proceso que mapea un tem en una de varias clases
predeterminadas. En el dominio de la Web, las clases representan usualmente diferentes
perfiles de usuarios y la clasificacin es realizada utilizando caractersticas seleccionadas
que describen cada categora de usuario [Eirinaki & Vazirgiannis, 2003; Srivastava et al.,
2000].

Damin A. MARTINELLI

- 24 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

2.3.3. Anlisis de Patrones


La ltima etapa del proceso completo de explotacin de hbitos en Web es el anlisis
de los patrones encontrados en la etapa anterior, filtrando reglas o patrones no interesantes,
y utilizando mtodos de visualizacin tiles para su anlisis [Srivastava et al., 2000; Batista
& Silva, 2002], realizando proyecciones dinmicas, filtros, zoom y distorsiones interactivas
sobre los grficos generados [Keim, 2002; Ankerst, 2001].

2.4. Trabajos Realizados en la Explotacin de Datos de Uso de la


Web
Mucho trabajo se ha realizado en la extraccin de patrones de informacin de los logs
de los servidores Web y las aplicaciones del conocimiento descubierto van desde la
perfeccin del diseo y la estructura del sitio Web hasta permitir que los negocios
funcionen ms eficientemente [Paliouras et al., 2000; Pazzani & Billsus, 1997; Perkowitz &
Etzioni, 1998; Pirolli et al., 1996; Spiliopoulou & Faulstich, 1999; Abraham & Ramos,
2003]. Debido a que es muy importante conocer al cliente para cumplir mejor sus
necesidades, las compaas tambin estn destinando dinero en el anlisis de sus archivos
de log. Como consecuencia, aparte de las herramientas que fueron desarrolladas por
investigadores acadmicos, existen simultneamente un nmero significativo de
herramientas comerciales que han sido desarrolladas para cumplir estas necesidades
[Kerkhofs, 2001].
[Jespersen et al., 2002] propuso un acercamiento hbrido para analizar las secuencias
de pginas accedidas por los usuarios, utilizando una combinacin de probabilidades
gramticas de hipertexto y una tabla rpida de vnculos para la minera de los logs; en
cambio [Borges & Levene, 2000], combina las probabilidades gramaticas de hipertexto con
heursticas para capturar patrones de navegacin de los usuarios. KOINOTITES,
presentado por [Pierrakos et al., 2001], realiza agrupamiento de usuarios mediante un
algoritmo basado en grafos. LOGSOM propuesto por [Smith & Ng, 2002], utiliza una red
neuronal SOM para organizar las pginas Web en un mapa bidimensional basado
nicamente en el comportamiento de navegacin del usuario, en vez del contenido de las
pginas Web. LumberJack propuesto por [Chi et al., 2002] construye perfiles de usuarios
combinando agrupamiento de sesiones de usuarios y anlisis de trafico estadstico
tradicional utilizando el algoritmo K-means. En [Abraham & Ramos, 2003] se utiliza el
agrupamiento basado en el comportamiento de las colonias de hormigas y la programacin
gentica para descubrir patrones de uso y para analizar la tendencia de los usuarios. El
framework i-Miner [Abraham, 2003] utiliza un algoritmo difuso de agrupamiento
implementado con un algoritmo evolutivo y un sistema difuso de inferencias basado en una
combinacin de algoritmos evolutivos y redes neuronales. [Yan et al., 1996] realiza
agrupacin en los datos de los logs para identificar usuarios que accedieron a pginas
similares. [Cohen et al., 1998] utiliza los patrones de trfico de un sitio Web extrados de
los logs para mejorar la performance de un sitio Web. [Koutsoupias, 2002] utiliza el
anlisis de correspondencia para explorar los logs en busca de patrones de navegacin.
[Nasraoui & Pavuluri, 2004] proponen un sistema de recomendacin de pginas Web

Damin A. MARTINELLI

- 25 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

basado en perfiles de usuarios utilizando redes neuronales. [Rangarajan et al., 2003] realiza
un agrupamiento de usuarios utilizando una red neuronal ART (teora de la Resonancia
Adaptativa). Otras herramientas desarrolladas por investigadores acadmicos son WebSIFT
[Cooley et al., 1999] y Web Utilization Miner [Spiliopoulou & Faulstich, 1999]. LOGML
(Log Markup Language) propuesto por [Punin et al., 2001], implementa un lenguaje de
marcas basado en XML para almacenar la informacin del uso de los sitios Web.
Mucho trabajo de investigacin ha sido realizado en la personalizacin de sitios Web
[Lalani, 2003]. Adaptative Sites usa informacin acerca de los patrones de acceso de los
usuarios para mejorar la organizacin y la presentacin para diferentes tipos de usuarios
[Perkowitz & Etzioni, 1997]. [Mobasher et al., 1999] y [Mobasher et al., 2001] proponen
tcnicas para capturar perfiles de usuarios utilizando reglas de asociacin y la agrupacin
de pginas basada en el uso de los visitantes. [Spiliopoulou et al., 2000] desarrollo una
metodologa para asegurar la calidad de un sitio Web basada en el descubrimiento y
comparacin de patrones de navegacin de clientes y no-clientes, proponiendo una tcnica
de adaptacin de sitios dinmicamente. Un algoritmo para reorganizar un sitio Web
utilizando la clasificacin de pginas y la frecuencia de acceso de las mismas, es propuesto
por [Fu et al., 2001]. Una herramienta es desarrollada y descripta en [Masseglia et al.,
1999] que permite personalizar un sitio Web dinmicamente. [Kitsuregawa et al., 2001]
realiza descubrimiento de reglas de asociacin para descubrir patrones de comportamiento
interesantes de usuarios en dispositivos mviles. La bsqueda de ubicaciones de pginas
que son diferentes a las que los usuarios esperan que sean, tambin ayuda a la
reestructuracin del sitio Web [Srikant & Yang, 2001].
Ejemplos de aplicaciones comerciales incluyen:

WebTrends desarrollada por NetIQ (http://www.netiq.com/webtrends/),

WebAnalyst por Megaputer (http://www.megaputer.com/products/wa/),

NetTracker por Sane Solutions (http://www.sane.com/products/NetTracker/),

EasyMiner, desarrollada por MINEit Software Ltd.,

NetGenesis, desarrollada por CustomerCentric


(http://www.customercentricsolutions.com/content/solutions/ent_Web_analytics
.cfm).

Mientras la mayora de las aplicaciones de anlisis del uso de sitios Web se focalizan
en un solo sitio, la compaa de publicidad DoubleClick (http://www.doubleclick.com/),
vendiendo y administrando 2.000 millones de publicidades online por da, recolecta
gigabytes de datos de acceso de diferentes sitios Web. Los logs de los motores de bsqueda
tambin proveen de conocimiento acerca del comportamiento de los usuarios en las
bsquedas de la Web. Varios anlisis han sido realizados en los logs del motor de bsqueda
Excite (http://www.excite.com/) [Jansen et al., 2000; Spink & Xu, 2000; Spink et al.,
2001]. [Silverstein et al., 1999] tambin conduce un estudio de 153 millones de consultas a
buscadores recolectadas de AltaVista (http://www.altavista.com/). Algunos de las
bsquedas ms interesantes de estos anlisis incluyen el conjunto de las palabras ms
utilizadas en las consultas a los buscadores Web, el largo promedio de las consultas, el uso
de operadores bolanos en las consultas, y la cantidad promedio de pginas del resultado

Damin A. MARTINELLI

- 26 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

vistas por los usuarios. Tal informacin es muy til para que los investigadores intenten
alcanzar un mejor entendimiento del comportamiento en las bsquedas y en la informacin
buscada, para mejorar el diseo de los sistemas de bsqueda de la Web [Chen et al., 1996].
Un completo resumen de las investigaciones realizadas en la identificacin de hbitos
de uso de sitios Web puede encontrarse en [Cooley, 2000; Kosala & Blockeel, 2000;
Srivastava et al., 2000; Koutri et al., 2004, Eirinaki & Vazirgiannis, 2003].
Adems existen varias aplicaciones que proveen de estadsticas de uso de sitios Web,
como Analog, ClickTracks, Hitbox, LogRover, Website Tracker, WebStat, WUSAGE,
Analog, Count Your Blessings, Webalizer o Awstats. Estas herramientas de anlisis de logs
(tambin llamadas herramientas de anlisis de trafico) toman como entrada el log del
servidor Web y lo procesan para extraer informacin estadstica. Tal informacin incluye
estadsticas como el nmero total de visitas, promedio de visitas por intervalo de tiempo,
pedidos de pginas exitosos, fallidos o redirigidos, errores del servidor, errores de pginas
no encontradas, pginas ms visitadas, pginas de entrada y salida del sitio, principales
ubicaciones geogrficas de los visitantes, navegadores de los visitantes, etc.. Algunas
herramientas tambin realizan anlisis de secuencias de pginas visitadas, que identifican
caminos seguidos por los visitantes a travs del sitio, agrupando pedidos consecutivos
desde la misma IP. Con estas estadsticas usualmente se realizan reportes y diagramas
[Eirinaki & Vazirgiannis, 2003]. Estas estadsticas pueden ser tiles para los
administradores Web para obtener informacin sobre la carga actual del servidor. Sin
embargo, los datos estadsticos disponibles pueden proveer solo la informacin explcita
debido a la naturaleza y las limitaciones de la metodologa. Para sitios Web pequeos, estas
estadsticas de uso pueden ser adecuadas para analizar los patrones y las tendencias de uso;
pero cuando el tamao y la complejidad del sitio aumenta, estas estadsticas se vuelven
inadecuadas y son necesarias otras tcnicas [Roussinov & Zhao, 2003; Yang & Zhang,
2003; Abraham, 2003; Zhang & Dong, 2003; Abraham & Ramos, 2003].

2.5. Self Organizing Maps (SOM)


Existen evidencias que demuestran que en el cerebro hay neuronas que se organizan
en muchas zonas, de forma que las informaciones captadas del entorno a travs de los
rganos sensoriales se representan internamente en forma de mapas bidimensionales
[Beveridge, 1996]. Por ejemplo, en el sistema visual se han detectado mapas del espacio
visual en zonas del crtex (capa externa del cerebro); tambin en el sistema auditivo se
detecta una organizacin segn la frecuencia a la que cada neurona alcanza mayor
respuesta [Hilera & Martnez, 2000].
Aunque en gran medida esta organizacin neuronal est predeterminada
genticamente, es probable que parte de ella se origine mediante el aprendizaje. Esto
sugiere, por tanto, que el cerebro podra poseer capacidad inherente de formar mapas
topolgicos de las informaciones recibidas del exterior.
A partir de estas ideas, Teuvo Kohonen present en 1982 un sistema con un
comportamiento semejante; se trata de un modelo de red neuronal con capacidad para

Damin A. MARTINELLI

- 27 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

formar mapas de caractersticas de manera similar a como ocurre en el cerebro. El objetivo


de Kohonen era demostrar que un estmulo externo (informacin de entrada) por s solo,
suponiendo una estructura propia y una descripcin funcional del comportamiento de la
red, era suficiente para forzar la formacin de mapas.

2.5.1. Algoritmo del SOM


El algoritmo de aprendizaje del SOM est basado en el aprendizaje no supervisado y
competitivo, lo cual quiere decir que no se necesita intervencin humana durante el mismo
y que se necesita saber muy poco sobre las caractersticas de la informacin de entrada.
Podramos, por ejemplo, usar un SOM para clasificar datos sin saber a qu clase pertenecen
los mismos [Hollmen, 1996]. El mismo provee un mapa topolgico de datos que se
representan en varias dimensiones utilizando unidades de mapa (las neuronas)
simplificando el problema [Kohonen, 1995]. Las neuronas usualmente forman un mapa
bidimensional por lo que el mapeo ocurre de un problema con muchas dimensiones en el
espacio a un plano. La propiedad de preservar la topologa significa que el mapeo preserva
las distancias relativas entre puntos. Los puntos que estn cerca unos de los otros en el
espacio original de entrada son mapeados a neuronas cercanas en el SOM; por lo tanto, el
SOM sirve como herramienta de anlisis de clases de datos de muchas dimensiones
[Vesanto & Alhoniemi, 2000]; adems tiene la capacidad de generalizar [Essenreiter et al.,
1999], lo que implica que la red puede reconocer o caracterizar entradas que nunca antes ha
encontrado; una nueva entrada es asimilada por la neurona a la cual queda mapeada.

2.5.2. Arquitectura de la red SOM


Es una red de dos capas con N neuronas de entradas y M neuronas de salida. Cada
una de las N neuronas de entrada se conecta a las M de salida a travs de conexiones hacia
delante (feedforward).
Entre las neuronas de la capa de salida, puede decirse que existen conexiones
laterales de inhibicin (peso negativo) implcitas, pues aunque no estn conectadas, cada
una de estas neuronas va a tener cierta influencia sobre sus vecinas. El valor que se asigne a
los pesos de las conexiones feedforward entre las capas de entrada y salida (wij) durante el
proceso de aprendizaje de la red va a depender precisamente de esta interaccin lateral.
La influencia que cada neurona ejerce sobre las dems es funcin de la distancia entre
ellas, siendo muy pequea cuando estn muy alejadas. Debido a que la red SOM intenta
establecer una correspondencia entre los datos de entrada y un espacio bidimensional de
salida, creando mapas topolgicos de dos dimensiones, de tal forma que ante datos de
entrada con caractersticas comunes se deben activar neuronas situadas en zonas prximas
de la capa de salida, se debe entender la distancia entre las neuronas de la capa de salida
como una zona bidimensional que existe en torno a cada neurona. Esta zona puede ser
circular, hexagonal o cualquier otro polgono regular centrado en la neurona en cuestin.

Damin A. MARTINELLI

- 28 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

En el algoritmo bsico del SOM, las relaciones topolgicas y el nmero de neuronas


son fijos desde el comienzo; este nmero de neuronas determina la escala o la granularidad
del modelo resultante. La seleccin de la granularidad afecta la certeza y la capacidad de
generalizar del modelo. Debe tenerse en cuenta que la granularidad y la generalizacin son
objetivos contradictorios. Mejorando el primero, se pierde en el segundo, y viceversa. Esto
se debe a que si aumentamos el primero se obtendrn muchos ms grupos para poder
clasificar los datos de entrada, evitando que se pueda generalizar el espacio en clases ms
abarcativas. De manera inversa, si se generaliza demasiado se puede perder informacin
que caracterice a un grupo especfico que quede incluido en otro por la falta de
granularidad [Grosser, 2004].

2.5.3. Funcionamiento
Cuando se presenta a la entrada una informacin Ek = (e1k, e2k,...,enk), cada una de
las M neuronas de la capa de salida la recibe a travs de las conexiones feedforward con
pesos wij. Tambin estas neuronas reciben las entradas correspondientes a las interacciones
laterales con el resto de las neuronas de salida y cuya influencia depender de la distancia a
la que se encuentren.
As, la salida generada por una neurona de salida j ante un vector de entrada Ek ser:
N

i =1

p =1

S j (t + 1) = f ( wij ei( k ) + Int pj S p (t ))


Ecuacin 2-2

Donde Int pj es una funcin del tipo sombrero mejicano que representa la influencia
lateral de la neurona p sobre la neurona j. La funcin de activacin de las neuronas de
salida (f) ser del tipo continuo, lineal o sigmoidal, ya que esta red trabaja con valores
reales.
Es evidente que se trata de una red de tipo competitivo, ya que al presentarse una
entrada Ek, la red evoluciona hasta alcanzar un estado estable en el que solo hay una
neurona activada, la ganadora. La formulacin matemtica del funcionamiento de esta red
puede simplificarse as [Hilera & Martnez, 2000]:
si
1 MIN || E k W j ||= MIN (
Sj =

resto
0

(e
i =1

(k )
i

wij ) 2 )

Ecuacin 2-3

Donde || E k W j || es una medida de la diferencia entre el vector de entrada y el


vector de pesos de las conexiones que llegan a la neurona j desde la entrada. Es en estos

Damin A. MARTINELLI

- 29 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

pesos donde se registran los datos almacenados por la red durante el aprendizaje. Durante el
funcionamiento, lo que se pretende es encontrar el dato aprendido ms parecido al de
entrada para averiguar qu neurona se activar y en qu zona del espacio bidimensional de
salida se encuentra.
La red SOM realiza una tarea de clasificacin ya que la neurona de salida activada
ante una entrada representa la clase a la que pertenece dicha informacin. Adems, como
ante otra entrada parecida se activa la misma neurona o una cercana a la anterior, se
garantiza que las neuronas topologicamente cercanas sean sensibles a entradas fsicamente
similares. Por esto, la red es muy til para establecer relaciones antes desconocidas entre
conjunto de datos.

2.5.4. Preprocesamiento de los datos


Los datos que alimentan al SOM incluyen toda la informacin que toma la red. Si se
le presenta informacin errnea, el resultado es errneo o de mala calidad. Entonces, el
SOM, tanto como los otros modelos de redes neuronales, deben eliminar la informacin
basura para que no ingrese al sistema. Por lo cual se debe trabajar con un subconjunto de
los datos; estos deben ser relevantes para el modelo a analizar. Tambin se deben eliminar
los errores en los datos; si los mismos se obtienen a travs de una consulta a una base de
datos, el resultado puede incluir datos errneos debido a la falta de integridad de la base;
entonces estos deben ser filtrados usando conocimientos previos del dominio del problema
y el sentido comn.
Comnmente los componentes de los datos de entrada se normalizan para tener una
escala de 0 a 1. Esto asegura que por cada componente, la diferencia entre dos muestras
contribuye un valor igual a la distancia medida calculada entre una muestra de entrada y un
patrn. Es decir que los datos deben previamente codificarse (normalizarse). De lo
contrario no ser posible usar la distancia como una medida de similitud. Esta medida debe
ser cuantificable por lo que la codificacin debe ser armnica con la medida de similitud
utilizada. La medida mayormente utilizada es la distancia Eucldea. Los datos simblicos
no pueden ser procesados por un SOM como tales, por lo que deben ser transformados a
una codificacin adecuada.

2.5.5. Aprendizaje
El aprendizaje en las redes SOM es del tipo off line, por lo que se distingue una etapa
de aprendizaje y otra de funcionamiento. En la etapa de aprendizaje se fijan los pesos de las
conexiones feedforward entre las capas de entrada y salida.
Esta red emplea un aprendizaje no supervisado de tipo competitivo. Las neuronas de
la capa de salida compiten por activarse y solo una de ellas permanece activa ante una
entrada determinada. Los pesos de las conexiones se ajustan en funcin de la neurona que
haya resultado vencedora.

Damin A. MARTINELLI

- 30 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Durante la etapa de entrenamiento, se presenta a la red un conjunto de informaciones


de entrada (vectores de entrenamiento) para que esta establezca, en funcin de la semejanza
entre los datos, las diferentes clases (una por neurona de salida) que servirn durante la fase
de funcionamiento para realizar clasificaciones de nuevos datos que se presenten a la red.
Los valores finales de los pesos de las conexiones feedforward que llegan a cada neurona
de salida se correspondern con los valores de los componentes del vector de aprendizaje
que consigue activar la neurona correspondiente. Si existiesen ms vectores de
entrenamiento que neuronas de salida, ms de un vector deber asociarse a la misma clase.
En tal caso, los pesos se obtienen como un promedio de dichos patrones.
Durante el entrenamiento habr que ingresar varias veces todo el juego de
entrenamiento para refinar el mapa topolgico de salida consiguiendo que la red pueda
realizar una clasificacin ms selectiva.
El algoritmo de aprendizaje es el siguiente [Hilera & Martnez, 2000]:
1. En primer lugar, se inicializan los pesos (wij) con valores aleatorios pequeos y se
fija la zona inicial de vecindad entre las neuronas de salida.
2. A continuacin se presenta a la red una informacin de entrada en forma de vector
E k = (e1( k ) , e2( k ) ,..., en( k ) ) , cuyas componentes sern valores continuos.
3. Se determina la neurona vencedora a la salida. Esta ser aquella j cuyo vector de
pesos Wj sea el ms parecido a la informacin de entrada E k . Para ello se calculan
las distancias entre ambos vectores, una para cada neurona de salida. Se suele
utilizar la distancia eucldea o bien la siguiente expresin similar sin la raz:
N

10.

d j = (ei( k ) wij ) 2

1 j M

i =1

Ecuacin 2-4

11.

Donde:

12.

ei(k ) : Componente i-simo del vector k-simo de entrada.

13.

wij : Peso de la conexin entre las neuronas i (de entrada) y j (de salida).

4. Una vez localizada la neurona vencedora j*, se actualizan los pesos de las
conexiones feedforward que llegan a dicha neurona y a sus vecinas. Con esto se
consigue asociar la informacin de entrada con cierta zona de la capa de salida.
14.

wij (t + 1) = wij (t ) + (t ) ei( k ) wij* (t )

j Zona j* (t )

Ecuacin 2-5

15.
16. Zona j* (t ) es la zona de vecindad de la neurona vencedora j*. El tamao de la zona
se puede reducir en cada iteracin del entrenamiento aunque en la practica es
habitual mantener esa zona fija.

Damin A. MARTINELLI

- 31 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

17. El termino (t ) es el coeficiente de aprendizaje y toma valores entre 0 y 1. Este


parmetro decrece con cada iteracin. De esta forma, cuando se ha presentado todo
el juego de datos un gran numero de veces, alfa tiende a cero y las variaciones de
pesos son insignificantes.
18.

(t ) suele tener alguna de las siguientes expresiones:


19.

(t ) =

1
t

(t ) = 1 1

Ecuacin 2-6

5. El proceso se repite un mnimo de 500 veces (t>=500).

2.5.6. Visualizacin
El SOM es una aproximacin de la funcin de densidad de probabilidad de los datos
de entrada [Kohonen, 1995] y puede representarse de una manera visual.
La representacin U-Matrix (Unified Distance Matrix) del SOM visualiza la distancia
entre neuronas adyacentes [Figura 2.2]. La misma se calcula y se presenta con diferentes
colores entre los nodos adyacentes. Un color oscuro entre neuronas corresponde a una
distancia grande que representa un espacio importante entre los valores de los patrones en
el espacio de entrada. Un color claro, en cambio, significa que los patrones estn cerca unos
de otros. Las reas claras pueden pensarse como clases y las oscuras como separadores.
Esta puede ser una representacin muy til de los datos de entrada sin tener informacin a
priori sobre las clases.

Figura 2.2. Representacin U-Matrix

En la [Figura 2.2] podemos observar las neuronas indicadas por un punto negro. La
representacin revela que existe una clase separada en la esquina superior derecha de la red.
Las clases estn separadas por una zona negra. Este resultado se logra con aprendizaje no
supervisado, es decir, sin intervencin humana. Ensear a un SOM y representarla con la
U-Matrix ofrece una forma rpida de analizar la distribucin de los datos.

Damin A. MARTINELLI

- 32 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

2.5.7. Aplicaciones
Se ha demostrado que los SOM son muy tiles en aplicaciones tcnicas. En la
industria, se ha utilizado, por ejemplo, en monitoreo de procesos y mquinas, identificacin
de fallas y control de robots [Ritter et al., 1992].
La capacidad de dividir el espacio en clases y patrones representativos lo hace muy
poderoso tambin para la clasificacin y segmentacin de los datos; en el caso de estudio
de este trabajo se presentan miles de sesiones de usuario de acceso a un sitio Web y las
redes SOM clasifican a los usuarios en base a sus hbitos.

2.6. Similitudes y Diferencias SOM y K-Means


En el presente trabajo se descubrirn grupos de usuarios en base a los hbitos de uso
de los mismos. Este agrupamiento se llevar a cabo mediante una red neuronal SOM y
mediante el algoritmo K-Means, de modo de comparar los resultados obtenidos por cada
mtodo. Por ello es interesante conocer las similitudes y diferencias entre estos dos
mtodos de agrupamiento.
La red neuronal SOM y el algoritmo K-Means permiten segmentar conjuntos de
datos. Estos dos mtodos poseen varias similitudes y diferencias.
Las similitudes entre la red neuronal SOM y el algoritmo K-Means son detalladas en
la siguiente tabla [Tabla 2.1]:

SOM
Tarea realizada
Supervisin necesaria
Funcin de Distancia

Necesita etapa de
aprendizaje

K-Means

Segmentacin.
Ninguna.
Es necesario definir una
funcin de distancia a
utilizar para la
determinacin de la neurona
vencedora.
Si.

Segmentacin.
Ninguna.
Es necesario definir una
funcin de distancia para
poder asociar cada dato a su
centroide ms cercano.
Si.

Tabla 2.1 Similitudes SOM y K-Means

Damin A. MARTINELLI

- 33 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

La diferencias entre la red neuronal SOM y el algoritmo K-Means son detalladas en


la tabla a continuacin [Tabla 2.2]:

SOM
Tipo de segmentador
Cantidad de grupos a
descubrir
Caractersticas de los datos
de entrada

Sensibilidad a los
parmetros iniciales

Posibilidad de determinar
grupos ms parecidos a
otros

K-Means

Red Neuronal.
Mapa bidimensional de
NxN, donde N es un
parmetro del mtodo.
Normalizacin de los datos
de entrada para tener una
escala de 0 a 1.

Mtodo Particional.
Construye K grupos, siendo
K un parmetro del mtodo.

Los datos deben ser


representables en un sistema
de dimensin n, donde n es
la cantidad de atributos de
los datos de entrada.
Deben inicializarse los pesos Deben elegirse los
de las conexiones con
centroides iniciales. Kvalores aleatorios pequeos, Means es sensible en la
pero esta asignacin no
eleccin de estos centroides
produce generalmente
con respecto al resultado que
grandes modificaciones en el se obtendr del algoritmo.
resultado de la red.
Los grupos ms cercanos en No se pueden determinar
el mapa bidimensional son
grupos ms parecidos a
ms parecido que los
otros.
alejados entre s.
Tabla 2.2 Diferencias SOM y K-Means

Damin A. MARTINELLI

- 34 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

3. Descripcin del problema


La identificacin de hbitos de uso de sitios Web ha sido obtenida tradicionalmente
utilizando mtodos estadsticos, con la consiguiente limitacin de estos para obtener
resultados novedosos e inesperados. Existen numerosas herramientas capaces de realizar
estos anlisis estadsticos, pero no logran obtener informacin ms all de la que se
encuentra explcita en los registros de acceso de los servidores Web.
A medida que crece Internet y, por consiguiente, los sitios Web en la misma, se hace
ms importante la capacidad de adaptacin de estos a sus usuarios, de modo de poder
diferenciarse de la competencia.
Mediante la utilizacin de un red neuronal mapa auto-organizativo (SOM), se pueden
encontrar de forma automtica relaciones no evidentes entre los usuarios de un sitio Web,
separndolos en distintos grupos. De esta forma, la informacin obtenida a partir de los
mismos, puede ser utilizada para adaptar el sitio a cada grupo de usuario y lograr una mejor
posicin frente a la competencia.

Damin A. MARTINELLI

- 35 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

4. Solucin propuesta
En este captulo se describe la respuesta al problema planteado. Se identifican los
parmetros del problema (seccin 4.1), se plantean definiciones necesarias (seccin 4.2). Se
describe el origen de los casos de experimentacin (seccin 4.3). Finalmente, se realiza una
descripcin del Banco de Pruebas (seccin 4.4), abordando sus funcionalidades (seccin
4.4.1) y describiendo su dinmica de funcionamiento (seccin 4.4.2).

4.1. Identificacin de los parmetros del problema


En esta seccin se identifican los parmetros del problema, realizando luego algunas
definiciones necesarias para la correcta comprensin de la terminologa utilizada en el
presente trabajo.
Los parmetros del problema que han sido identificados se muestran en la siguiente
tabla [Tabla 4.1]:

Descripcin del Parmetro

Nemotcnico

Cantidad de registros en el log del servidor Web

logCount

Cantidad de pginas distintas en el sitio Web a analizar

pageCount

Formato del archivo de log a utilizar.

logFormat

Extensiones de recursos includas en el armado de


sesiones de usuarios.

pageExtensions

Cdigos de error http considerados en la construccin de


sesiones de usuarios.

validsStatus

Variables identificadoras de pginas.

idsPages

Tiempo mximo entre peticiones consecutivas en una


sesin de usuario.

timeoutSession

Cantidad mnima de pginas en una sesin de usuario.

minPagesInSession

Frecuencia mnima de pgina en los registros de log del


servidor Web.

minPageFrequency

Cantidad de ciclos de entrenamiento de la red neuronal


SOM.

trainingCicles

Damin A. MARTINELLI

- 36 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Cardinalidad del mapa de clusterizacin de la red


neuronal SOM (NxN).

dimClusters

Cantidad de clusters a descubrir mediante el algoritmo K- K


Means.
Tabla 4.1 Parmetros identificados del problema

4.2. Definiciones
Para la mejor comprensin de cierta terminologa utilizada en el presente trabajo, es
til definir:

Archivos de Log

Preprocesamiento de Logs

Limpieza de Logs

Identificacin de Usuarios

Identificacin de Sesiones de Usuario

Identificacin de Transacciones de Usuarios

Identificacin de hbitos de Usuario

4.2.1. Archivos de Log


Cada acceso a una pgina de un sitio Web, como as tambin, la peticin de cada
imagen, sonido, etc., es almacenada en los logs de acceso de los servidores Web donde se
encuentra el sitio. Los archivo de log de un servidor Web poseen distintos campos,
siguiendo estndares [Eirinaki & Vazirgiannis, 2003]. Los campos del Formato Comn de
Log (CLF, Common Log Format) son:
IP-Cliente Identd Usuario Fecha/Hora Pedido Estado Bytes
Donde:

IP-Cliente es la direccin IP del usuario que realiza la peticin o, el nombre de


la computadora del mismo si el servidor Web esta configurado para resolver las
direcciones IP al nombre;

Identd es el nombre del usuario remoto, siguiendo la RFC 1413 [RFC 1413];

Damin A. MARTINELLI

- 37 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Usuario es el nombre de usuario que se autentico mediante http, en las pginas


que utilicen esta autenticacin;

Fecha/Hora es la fecha y la hora en que fue realizada la peticin al servidor


Web;

Pedido es el pedido que el cliente realizo al servidor, que generalmente incluye


el mtodo http utilizado, el URL solicitado y el protocolo empleado;

Estado es el cdigo de estado http devuelto al cliente, indicando si el pedido


pudo realizarse correctamente o no, y en este ultimo caso, el error ocurrido; y

Bytes es la cantidad de bytes devueltos al cliente a causa de la peticin del


mismo. Si algunos de los campos no pueden ser determinados, un guin (-) es
colocado en su lugar.

Luego, la W3C [W3Clog] present un formato mejorado para los archivos de logs de
los servidores Web denominado Formato Extendido de Log (EFF, Extended Log Format).
Este formato permite la personalizacin de los archivos de log para que sean almacenados
en un formato soportado por las herramientas de anlisis genricas. La principal extensin
al formato de log comn es la incorporacin de campos. Los ms importantes son el campo
Referrer, que indica la URL desde donde se realiza cada peticin; el campo Agente, donde
se indica qu aplicacin esta utilizando el cliente para realizar las peticiones; y el campo
Cookie, para almacenar las cookies de los usuarios del sitio Web, en caso que el mismo las
utilice.

4.2.2. Preprocesamiento de Logs


Un paso crtico en la efectividad de la identificacin de hbitos de uso de sitios Web
es la limpieza y la transformacin de los archivos de log del servidor Web, y la
identificacin de las sesiones de los usuarios [Mobasher, 1999].
La W3C Web Characterization Activity [WCA] ha publicado un borrador donde
establece en forma precisa el significado de varios conceptos, como Web site (sitio Web),
user (usuario), user session (sesion de usuario), server session (sesin de servidor),
pageview (pgina vista) y clickstreams (secuencia de clicks o vnculos).
Un sitio Web se define como una coleccin de pginas Web vinculadas, las cuales
residen en la misma ubicacin de red. El usuario es quien utiliza un cliente para obtener y
ver recursos del servidor. Un usuario accede a los archivos de un servidor Web utilizando
un navegador. Una sesin de usuario se define como un conjunto de vnculos seguidos por
el usuario a travs de uno o ms servidores Web. Una sesin de servidor se define como la
coleccin de vnculos seguidos por un usuario en un nico servidor Web, durante una
sesin de usuario. Tambin se denomina visita. Una pgina vista se define como una pgina
vista en un momento preciso. En otras palabras, una pgina vista consiste de varios tems,
como marcos, texto, grficos y scripts que construyen una nica pgina Web. Una
secuencia de clicks o vnculos es una secuencia de pginas vistas realizadas por un nico
usuario [Eirinaki & Vazirgiannis, 2003].

Damin A. MARTINELLI

- 38 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

4.2.3. Limpieza de Logs


La limpieza de los log de los servidores Web involucra varias tareas [Huysmans et
al., 2003; Mobasher, 1999; Pierrakos et al., 2001; Lalani, 2003; Kerkhofs, 2001; Cernuzzi
& Molas, 2004; Eirinaki & Vazirgiannis, 2003]. Cuando un usuario solicita una pgina, ese
pedido se graba en el archivo de log, pero, adems, si la pgina posee imgenes, se
guardar una lnea por cada imgen solicitada. Por ejemplo, si la pgina solicitada posee
tres imgenes, en el archivo de log se guardar una lnea para la solicitud de la pgina, y
tres lneas adicionales, una para cada imgen. Este comportamiento ocurre con cualquier
recurso que este referenciado desde la pgina solicitada originalmente, como pueden ser
archivos con scripts JavaScript, hojas de estilo, animaciones flash, videos, etc.. En la
mayora de los casos, estos registros adicionales almacenados en los archivos log no son
necesarios para la tarea de identificacin de hbitos de navegacin de los usuarios. Por esta
causa, es conveniente filtrar todos los registros del log donde los recursos solicitados
pertenezcan a algunos de estos tipos, tarea fcilmente llevada a cabo, mediante la extensin
del archivo solicitado. Se podran filtrar todos los registros cuyos archivo solicitados
posean las extensiones jpg, jpeg, gif, js, css, swf, avi, mov, etc.. Determinar qu extensiones
filtrar depende de qu informacin se busca obtener de la minera del archivo de log.
Algunas veces, tambin es conveniente filtrar algunas pginas contenidas en otras que
poseen varios marcos, como por ejemplo una pgina de informacin de derechos de copia,
incluida en todas las pginas, como un marco inferior. Esta pgina seguramente no agregar
ninguna informacin adicional para la minera. Tambin puede ser conveniente filtrar
algunas pginas generadas dinmicamente.
Otra opcin de filtrado es en base a los cdigos de error de http guardados en los
registros de log. Por cada recurso solicitado al servidor, se almacena el cdigo de error de
http, que indica si la peticin se proces correctamente (Cdigo de Error 200) o si ocurri
algn tipo de error. Existen cdigos para los distintos tipos de errores, algunos de los ms
comunes son 404 (Recurso no encontrado), 403 (Acceso denegado) y 500 (Error interno del
servidor). Para una completa enumeracin y descripcin ver RFC 2616 [RFC 2616].
Existen herramientas automatizadas, conocidas como Web robots, las cuales
recorren las pginas de Internet en forma automtica. Estas herramientas son generalmente
utilizadas por los motores de bsqueda, para indexar las pginas y guardar la informacin
en sus bases de datos. Estas herramientas, si siguen la convencin, primero solicitan el
archivo robots.txt, donde se especifica qu pginas pueden acceder los robots y cules no.
Por ende, si se desean filtrar del log las peticiones realizadas por una de estas herramientas,
se las puede identificar mediante este comportamiento. Otra forma posible es mediante el
campo del registro de log que indica el Agente del cliente. El Agente indica la aplicacin o
navegador que utiliza el usuario para solicitar los recursos del servidor. Cada robot puede
identificarse mediante un nombre, y de esta forma, podemos filtrar las peticiones de los
robots mediante este campo.

Damin A. MARTINELLI

- 39 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

4.2.4. Identificacin de Usuarios


Luego de la limpieza de los logs, se debe identificar a los distintos usuarios. Existen
distintos mtodos para identificar a los usuarios, cada uno de los cuales posee sus ventajas y
desventajas.
Un mtodo de identificar a los usuarios es mediante la utilizacin de cookies [Eirinaki
& Vazirgiannis, 2003; Huysmans et al., 2003; Kerkhofs, 2001]. La W3C [WCA] define a
una cookie como datos enviados por el servidor Web al cliente, el cual los almacena
localmente y los enva nuevamente al servidor en los sucesivos pedidos. En otras palabras,
una cookie es simplemente una cabecera http que consiste de una cadena de texto. Las
cookies son utilizadas para identificar a los usuarios durante las interacciones dentro de un
sitio Web y contiene datos que permiten al servidor mantener el registro de las identidades
de los usuarios y qu acciones realizan en el sitio Web, permitiendo reconocerlos en todas
las visitas que realicen posteriormente. Uno de los problemas del uso de las cookies para la
identificacin de los usuarios es que los mismos pueden deshabilitar el soporte para cookies
en sus navegadores, con lo cual ya no se almacenarn las cookies en el cliente y no se
tendr la posibilidad de identificarlo en las sucesivas visitas. Otro problema se debe al
hecho que las cookies son almacenadas en la computadora del usuario. El usuario podra
borrarla y, cuando ingrese nuevamente al sitio, ser reconocido como un nuevo visitante.
Otra forma de identificar a los usuarios es mediante la utilizacin de Identd [Eirinaki
& Vazirgiannis, 2003]. Identd es un protocolo de identificacin especificado en el RFC
1413 [RFC 1413] que permite identificar a los usuarios de una conexin TCP particular.
Dado un par de nmeros de puertos TCP, devuelve una cadena de texto, que identifica al
dueo de esa conexin (el cliente) en el sistema del servidor Web. El problema del uso de
identd para la identificacin de los usuarios reside en que el cliente debe estar configurado
para el soporte de identd.
Tambin se puede identificar a los usuarios mediante su direccin IP [Huysmans et
al., 2003; Kerkhofs, 2001; Eirinaki & Vazirgiannis, 2003; Lalani, 2003], en cada lnea del
archivo de log se almacena la direccin IP del cliente que realiz el pedido. Algunos de los
problemas tpicos son [Srivastava et al., 2000]:

Una direccin IP/Mltiples sesiones de servidor: los proveedores de servicios


de Internet (ISPs, por sus siglas en ingls) y las corporaciones poseen
tipicamente servidores proxy para que sus usuarios accedan a Internet a travs
de ellos. Un servidor proxy puede tener muchos usuarios accediendo a un sitio
Web, todos los cuales sern registrados en los logs del servidor Web con la
misma direccin IP, la direccin IP del servidor proxy.

Mltiples direcciones IP/Una sesin de servidor: algunos ISPs o algunas


herramientas de privacidad asignan aleatoriamente una direccin IP distinta para
cada pedido del usuario. En este caso, una nica sesin puede tener mltiples
direcciones IP.

Mltiples direcciones IP/Un usuario: un usuario que accede a un sitio Web


desde diferentes computadoras tendr diferentes direcciones IP de una sesin a
la otra.

Damin A. MARTINELLI

- 40 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Asignacin dinmica de direcciones IP: otro problema es la asignacin


dinmica de las direcciones IP que realizan comnmente los ISPs con sus
clientes. Por ende, una direccin IP puede identificar a un usuario un da, y al
da siguiente, pertenecer a un usuario distinto.

Para intentar minimizar estos problemas se han propuesto distintas tcnicas. La


primera es utilizar el agente del cliente para diferenciar distintos usuarios que posean la
misma direccin IP [Cooley et al, 1999]. Esta tcnica tiene el problema de que un usuario
que utiliza ms de un navegador desde la misma computadora, aparecer como varios
usuarios distintos. Tambin, si varios usuarios distintos que poseen la misma direccin IP,
utilizan el mismo agente, sern reconocidos como un nico usuario. Otra tcnica para
minimizar los problemas de la identificacin de usuarios mediante la direccin IP es utilizar
el campo referrer de los logs, que indica la pgina desde donde se hace la peticin de cada
recurso.
Otro mtodo para identificar a los usuarios es mediante la registracin explcita de
ellos [Huysmans et al., 2003; Kerkhofs, 2001; Eirinaki & Vazirgiannis, 2003], necesitando
que cada usuario inicie una sesin en el sitio Web con un usuario previamente registrado
por l. Este mtodo tiene el claro problema que se necesita la intervencin del usuario y,
para algunos tipos de sitios Web, es impracticable.
Muy parecido al ltimo mtodo resulta la utilizacin del campo Usuario (authuser) de
los archivos de log, donde se almacena el nombre del usuario que inici sesin mediante la
autenticacin de http. Este mtodo posee los mismos inconvenientes que el mtodo
anterior.

4.2.5. Identificacin de Sesiones de Usuario


Luego de la identificacin de los usuarios, se deben identificar las sesiones de los
mismos [Kerkhofs, 2001; Eirinaki & Vazirgiannis, 2003; Srivastava et al., 2000]. Para ello
se necesita dividir las distintas peticiones realizadas por un mismo usuario en una o ms
sesiones. Debido a que las peticiones a los recursos de otros servidores Web no estn
disponibles, es difcil saber cuando un usuario abandona el sitio Web. Para la formacin de
sesiones se utiliza generalmente un tiempo mximo entre sucesivas peticiones, de modo
que, si dos peticiones consecutivas de un usuario se realizan con un intervalo de tiempo
menor al mximo, las dos peticiones son consideradas como parte de la misma sesin. Si
dos peticiones consecutivas se realizan con un intervalo de tiempo mayor al mximo, las
dos peticiones corresponden a sesiones distintas; la primera es la ltima peticin de una
sesin y la otra es la primera de una nueva sesin. Se debe seleccionar un tiempo mximo
entre peticiones, para lo cual se han realizado investigaciones que buscan encontrar el valor
que mejor divida las sesiones de los usuarios. Catledge y Pitkow [Catledge & Pitkow,
1995] establecieron un valor ptimo en forma emprica de 25.5 minutos. Este valor debera
ser revisado, como se indica en [Huysmans et al., 2003], debido a que varios factores han
cambiado desde la realizacin de la experimentacin por parte de Catledge y Pitkow. Uno
de los factores que han cambiado es que ha aumentado considerablemente la cantidad de
conexiones de banda ancha, las cuales poseen un tiempo ilimitado de navegacin mensual a

Damin A. MARTINELLI

- 41 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

un costo fijo. Sin embargo, generalmente, es utilizado el valor de 30 minutos como valor
mximo entre dos peticiones de una misma sesin.
Para la identificacin de sesiones tambin puede utilizarse IDs de sesin incluidas en
la peticin por parte de la aplicacin Web [Srivastava et al., 2000], dado que el servidor de
contenido puede mantener variables para cada sesin activa. Este mtodo puede ser muy
til, pero su utilizacin depende del sitio Web a analizar.
Un problema adicional en la identificacin de las sesiones de los usuarios son las
pginas almacenadas en la memoria cache [Srivastava et al., 2000], ya sea en el cliente o en
servidores proxy. El campo referrer puede ser utilizado para detectar algunas de las pginas
almacenadas en la memoria cache que fueron accedidas por el usuario. Si una pgina es
accedida por un usuario en una sesin desde una pgina del mismo sitio, y la peticin de
esta pgina no fue registrada en el archivo de log, se puede inferir que dicha pgina fue
accedida y obtenida mediante un cache. El conocimiento de la estructura del sitio tambin
puede ayudar a detectar pginas almacenadas en la memoria cache [Huysmans et al., 2003],
de modo que si en el log aparecen dos peticiones consecutivas a dos pginas distintas (A y
luego B), las cuales no poseen un vnculo entre ellas, se puede inferir el acceso a la pgina
de conexin (C) entre estas dos pginas. Esto es vlido si es poco probable que el usuario
acceda directamente a B, o si el usuario no accedi anteriormente a otra pgina (D) que
posea un vinculo a B, debido a que la misma puede haber sido almacenada en la memoria
cache, y realmente se este accediendo a B desde D. Se pueden realizar heursticas basadas
en la estructura del sitio y en el campo referrer que mejoren la deteccin de pginas
almacenadas en la memoria cache.

4.2.6. Identificacin de Transacciones de Usuarios


Luego de identificar las sesiones de los usuarios, se pueden construir transacciones
con las mismas. Una transaccin puede contener todas las pginas de una sesin o pueden
utilizarse algunas tcnicas para filtrar algunas pginas o sesiones [Mobasher, 1999,
Huysmans et al., 2003]. Por ejemplo, podran filtrarse las sesiones con menos de una
cantidad predeterminada de pginas o eliminar las referencias a pginas que no poseen una
cantidad mnima de visitas por parte de los usuarios. Adems, podra querer filtrarse
nicamente las sesiones que accedan a pginas de alguna determinada categora, o filtrarse
pginas de alguna otra categora. En algunas ocasiones puede ser til diferenciar entre
pginas de contenido y pginas auxiliares o de navegacin [Cernuzzi & Molas, 2004],
donde las pginas de contenido son donde se encuentra la informacin que resulta de
inters para los usuarios, y las pginas de navegacin son aquellas utilizadas para encontrar
los vnculos a las pginas de contenido. El campo con la fecha y hora de acceso a cada
pgina puede ser utilizado para clasificar a cada pgina como de contenido o de
navegacin, dependiendo de la permanencia del usuario en cada una, tiempo estimado
sobre la base del clculo de la diferencia entre la hora de la peticin actual y la peticin
anterior. Tambin pueden armarse las transacciones utilizando la tcnica de referencias
mximas hacia delante, propuesta por [Chen et al., 1996]. Una referencia mxima hacia
delante es una pgina que se accede antes que otra pgina sea accedida nuevamente. Por
ejemplo, si un usuario visit las pginas A-B-C-A-D-B, las referencias hacia delante
mximas son C y D, ya que en el primer caso C es visitada antes que A sea visitada

Damin A. MARTINELLI

- 42 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

nuevamente, y en el segundo caso, D es visitada antes que B sea visitada nuevamente


[Lalani, 2003].
Luego del armado de las transacciones, se obtiene la secuencia de pginas accedidas
por cada usuario en cada transaccin. Esta secuencia se debe transformar en el formato
necesario para la posterior tarea de identificacin de hbitos de los usuarios.

4.2.7. Identificacin de Hbitos de Usuario


Luego del preprocesamiento del log, la limpieza del mismo, la identificacin de los
usuarios, sus sesiones y transacciones, se procede al descubrimiento de hbitos de los
usuarios.

4.3. Mtodo de Generacin de Casos de Experimentacin


Para evaluar la solucin propuesta se realizar el estudio de hbitos de uso de sitios
Web en dos sitios, de los cuales se posee los archivos de log. Se realizar una descripcin
general de cada uno de estos sitios, como as tambin de cada pgina que componen a estos.

4.4. Descripcin del Banco de Pruebas


El banco de pruebas es la herramienta utilizada para llevar adelante la
experimentacin.
Para el desarrollo del Banco de Pruebas se utiliz la metodologa de desarrollo de
sistemas denominada Metodologa Mtrica Versin 3 [Mtrica Versin 3]. En el Apndice
D se detallan todas las actividades de la metodologa realizadas para el desarrollo de la
herramienta que implementa la solucin propuesta en esta tesis.

4.4.1. Funcionalidades
El Banco de Pruebas provee las siguientes funcionalidades:

4.4.1.1. Preprocesamiento de archivos de log


Preprocesamiento de archivos de log de servidores Web, obteniendo la informacin
necesaria de cada registro, y nicamente de los registros considerados importantes por el
usuario.

Damin A. MARTINELLI

- 43 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Para el presente trabajo se decidi utilizar el formato de log comn (CLF) debido a la
gran utilizacin del mismo. Tambin se permite la utilizacin del formato de log comn
ms los campos Referrer y Agent.
Se realiz la herramienta parametrizable, de modo que las tareas de limpieza puedan
ser adaptadas a las necesidades de cada caso. Para ello, se utilizaron distintos filtros a los
archivos de log, los cuales permiten que el usuario defina su comportamiento.
El primer filtro que se implement es un filtro de extensiones de recursos. El usuario
puede indicar cules extensiones de los recursos deben ser includas en el armado de las
sesiones de los usuarios. Toda extensin no indicada por el usuario, ser filtrada e ignorada
para el armado de las sesiones.
El segundo filtro disponible es sobre la base de los cdigos de error de http. El
usuario indica qu cdigos de error son considerados para la tarea de la construccin de las
sesiones de usuarios. Solo las lneas del archivo de log que posean los cdigos de error
especificados por el usuario sern includas en el proceso de construccin de sesiones. En
forma predeterminada, solo el cdigo de error 200 es considerado.
El tercer filtro disponible viene dado por el amplio empleo actual de pginas
generadas dinmicamente. Muchas de estas pginas poseen una plantilla o un controlador,
donde son incluidas las distintas pginas. Por ende, en los archivos de log, queda registrada
la peticin solamente a la pgina correspondiente a la plantilla o al controlador. En varias
ocasiones, se puede diferenciar a las distintas pginas reales includas en un sitio debido al
uso de una variable que identifica la pgina a ser includa. Esta variable es comunicada
generalmente mediante el mtodo GET al servidor, por lo cual, el valor de esta variable
aparece en la URL de la peticin. No es el caso si el mtodo utilizado es POST. El filtro
permite indicar qu variables identifican a pginas distintas dentro de una misma plantilla o
controlador, de modo de poder ser reconocidas las distintas pginas reales visitadas por el
usuario. Este filtro resulta de gran utilidad en la actualidad y se presenta en este trabajo de
forma novedosa.

4.4.1.2. Identificacin de usuarios


Identificacin de los usuarios a partir de los archivos de log preprocesados.
Para la identificacin de los usuarios se utiliz la direccin IP, debido a que no se
necesita informacin adicional a la incluida en los log de formato comn. Todas las
peticiones originadas desde una misma direccin IP son consideradas pertenecientes al
mismo usuario. Adicionalmente, se utiliz el usuario de autenticacin http, cuando el
mismo este disponible para identificar a los distintos usuarios.

4.4.1.3. Identificacin de sesiones de usuario


Se construyen las sesiones de usuarios. Las sesiones fueron divididas teniendo en
cuenta un tiempo mximo entre peticiones consecutivas consideradas pertenecientes a la
misma sesin de usuario. Este tiempo es configurable por el usuario, teniendo el valor por
Damin A. MARTINELLI

- 44 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

defecto de treinta minutos. Tambin es posible indicar la cantidad mnima de pginas en


una sesin para tomarla en consideracin en la posterior tarea de identificacin de hbitos
de los usuarios. Adems, se permite indicar la frecuencia mnima de cada pgina, filtrando
las pginas que posean una frecuencia menor a la mnima en el total de peticiones de todos
los usuarios.

4.4.1.4. Identificacin de hbitos de uso mediante red neuronal mapa autoorganizativo (SOM)
La solucin propuesta consiste en la utilizacin de una red neuronal SOM para la
identificacin de hbitos de usuarios. Esta red neuronal debe agrupar a los usuarios de un
sitio Web sobre la base de las pginas accedidas por los mismos. Para ello, se debe procesar
el archivo de log del sitio a analizar, para identificar a los usuarios y a las sesiones de los
mismos. Luego, con estas sesiones de usuarios es entrenada la red, para agrupar a los
usuarios de forma automtica. La eleccin de la red neuronal SOM se debe a que posee un
entrenamiento no supervisado, permitiendo realizar el agrupamiento de los usuarios en
forma automtica, sin intervencin del usuario mas que para configurar algunos pocos
parmetros para el anlisis.
Luego de identificar todas las sesiones de los usuarios, se debe generar el formato
adecuado para poder ingresar las sesiones como patrones a la red neuronal. Para cada
sesin, se indica la presencia (1) o la ausencia (0) de cada pgina perteneciente al sitio
Web, resultando en un vector, de tamao igual a la cantidad de pginas del sitio, para cada
sesin. Cada elemento del vector es un nmero binario, indicando la presencia o no de la
pgina representada por esa posicin. Estos vectores corresponden con los patrones de
entrada de la red neuronal utilizada para la identificacin de hbitos de los usuarios.
La red neuronal empleada es un mapa auto-organizativo (SOM), que posee tantas
entradas como pginas frecuentes posea un sitio Web. Las pginas frecuentes son las que
poseen una frecuencia mayor a la especificada por el usuario en la tarea de
preprocesamiento. La red neuronal se construye en forma dinmica para permitir las
entradas necesarias para el sitio Web analizado. La salida de la red neuronal SOM es un
mapa de dos dimensiones de N x N, donde N es configurable por el usuario, y depende de
la cantidad de clusters que el mismo desee obtener. En el mapa de salida, solo una salida
ser activada, indicado por el valor binario uno. Todas las dems salidas tendrn un valor
nulo. La salida activada representa el cluster al cual pertenece el patrn ingresado. Patrones
similares pertenecern al mismo cluster o a clusters cercanos en el mapa de salida.

4.4.1.5. Identificacin de hbitos de uso mediante algoritmo K-Means


La herramienta permite, adicionalmente, la identificacin de hbitos de usuarios
utilizando el algoritmo K-Means, de modo de poder comparar los resultados obtenidos
mediante las dos tcnicas empleadas y analizar las ventajas y desventajas de la utilizacin
de redes neuronales SOM para la identificacin de hbitos de usuarios.

Damin A. MARTINELLI

- 45 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

4.4.1.6. Anlisis de los resultados


Es posible acceder a informacin sobre la identificacin de hbitos de uso realizada,
como la cantidad de sesiones de usuario en cada grupo descubierto, el detalle de las
sesiones en cada grupo y el porcentaje de acceso a cada pgina del sitio estudiado por parte
de los usuarios de cada grupo. Adicionalmente, permite la comparacin de esta informacin
entre los dos mtodos utilizados para la identificacin de hbitos de uso.

4.4.1.7. Usuarios y proyectos


Permite la creacin de usuarios y proyectos, de modo de poder realizar varios anlisis
independientes, controlando el acceso a los proyectos de cada usuario mediante una
contrasea.

4.5. Dinmica del Banco de Pruebas


La dinmica de trabajo del banco de prueba consiste en realizar un experimento en 5
pasos:

1. Preprocesado del archivo de log del servidor Web: indicando el archivo de log
que se utilizar, el formato del mismo y los parmetros deseados para el
preprocesado.
2. Identificacin de usuarios y sus sesiones: utilizando el log preprocesado de un
proyecto, se procede a la identificacin de los usuarios y sus sesiones. Se indican los
parmetros deseados para este paso.
3. Agrupamiento de usuarios utilizando red neuronal SOM: se procede al
agrupamiento de usuarios utilizando la red neuronal SOM, indicando los parmetros
a utilizarse.
4. Agrupamiento de usuarios utilizando algoritmo K-Means: se procede al
agrupamiento de usuarios utilizando el algoritmo K-Means, indicando los
parmetros a utilizarse.
5. Anlisis de los grupos descubiertos: se comparan los grupos descubiertos en los
dos pasos anteriores mediante las herramientas proporcionadas por el banco de
pruebas.
A continuacin se diagrama la dinmica del banco de pruebas [Figura 4.1]:

Damin A. MARTINELLI

- 46 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Figura 4.1. Dinmica del Banco de Pruebas

Se extrae el archivo de log del servidor Web utilizado por el sitio a analizar,
realizando su preprocesamiento y la posterior identificacin de usuarios y sus sesiones. El
agrupamiento de los usuarios es realizado utilizando la red neuronal SOM y el algoritmo KMeans, permitiendo el anlisis de los grupos descubiertos y su comparacin.

Damin A. MARTINELLI

- 47 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

5. Resultados Obtenidos
En este captulo se exponen los resultados obtenidos de los experimentos realizados.
Se analizaron los logs de dos sitios Web, uno sobre msica (seccin 5.1) y otro sobre
gastronoma (seccin 5.2), de modo de poder analizar los resultados obtenidos y evaluar la
calidad de la solucin propuesta en esta tesis. Para cada sitio se realizaron todos los pasos
involucrados en la identificacin de hbitos de usuarios, comparando los resultados
obtenidos mediante la red neuronal SOM y mediante el algoritmo K-Means.

5.1. Anlisis Logs sitio sobre msica


5.1.1. Descripcin sitio sobre msica
Sitio que permite la compra de canciones en el formato MP3. En el sitio se pueden
realizar bsquedas de canciones y escuchar un fragmento de las canciones antes de
comprarlas. Los usuarios que se hayan registrado previamente o lo hagan en ese momento,
podran comprar las canciones que resultaron de su agrado.

5.1.2. Pginas sitio sobre msica


A continuacin se detalla la lista de pginas que componen al sitio:

Nota: Cuando se solicita la pgina index.php, tambin se solicitan las pginas


thumbnail.php, top.php y flashes_home.php, por ende van a aparecer siempre juntas en el
archivo de log.

busqueda_album.php: pgina con los resultados de una bsqueda por album.

busqueda_artista.php: pgina con los resultados de una bsqueda por artista.

busqueda_general.php: pgina con los resultados de una bsqueda.

busqueda_tema.php: pgina con los resultados de una bsqueda por cancin.

catalogo/artistas/'nombre del grupo'/albumes/'nombre


informacin de un album de un grupo.

compania.php: informacin de la compaia.

comprar.php: pgina para comprar un tema. Recibe iTema: nmero de tema a


comprar.

detalle_album.php: pgina con detalle de un album seleccionado. Recibe


Album: nmero del album a detallar.

Damin A. MARTINELLI

- 48 -

del

album'/:

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

detalle_grupo: detalle de la informacin de un grupo. Recibe iGrupo: nmero de


grupo.

detalle_imagen.php: imagen en grande del album. Recibe TipoImagen: un


nmero. Id: identificador del album al cual pertenece la imagen.

flashes_home.php: texto de recuadros en flash.

index.php: pgina principal del sitio.

login.php: pgina para iniciar sesin.

olvido_password.php: pgina para recuperar la contrasea.

preview.php: pgina donde se escucha un fragmento de un tema seleccionado.


Recibe Id: nmero de tema a escuchar.

registracion.php: pgina para registrarse en el sitio.

softwate.php: pgina para descargar programas, como un reproductor de msica.

soporte.php: pgina para soporte de algn problema con las canciones


compradas en el sitio.

terminosdeuso.php: pgina con los trminos de uso del sitio.

terminosdeventa.php: pgina con los trminos de venta de las canciones.

thumbnail.php: pgina que muestra una imagen determinada en base a los


parmetros recibidos y del tamao recibido.

top.php: texto del men.

5.1.3. Anlisis Log 29/5/2005 al 3/6/2005 del sitio sobre msica


5.1.3.1. Registros en el archivo de log original
398280 Registros (77 MB).

5.1.3.2. Formato log


CLF+REFERRER+AGENT.

5.1.3.3. Carga log


A continuacin se muestra el resultado de la carga en el sistema del archivo de log
[Tabla 5.1]:

Damin A. MARTINELLI

- 49 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Carga de Archivo de Log


Carga:

155601

HitsSaves:

155601

Input:

access-emepe3-29-5-2005-3-62005.log

Extensions:

php

StatusCodes:

200

IdsPages:
Pginas Distintas
Cargadas:

37

Tabla 5.1. Carga de Archivo de Log

Tiempo de Carga Log: 58 segundos.


Armado Sesiones con valores por defecto (Cantidad mnima de pginas en una sesion
= 3, Timeout de sesion = 30 minutos, Frecuencia minima de pgina en el log = 1).

Tiempo de Armado Sesiones: 35 segundos.


A continuacin se muestra el resumen del proyecto luego de la carga del log y del
armado de las sesiones de usuarios [Tabla 5.2]:

Proyecto: emepe3-1
Cantidad de Registros de Log Cargados:

155601

Cantidad de Sesiones Cargadas:

28840

Tabla 5.2. Cantidad de registros y sesiones cargadas

5.1.3.4. Clusterizacin con SOM


Configuracin Clusterizacin con SOM:

Cantidad de ciclos de entrenamiento: 5

Cardinalidad del mapa de clusterizacin (NxN): 2

Damin A. MARTINELLI

- 50 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Tiempo Clusterizacin con SOM: 2 minutos 44 segundos.


A continuacin se muestra la cantidad de sesiones en cada cluster [Tabla 5.3] y el
porcentaje correspondiente a cada uno [Figura 5.1]:

Cantidad de Sesiones en cada Cluster


Cluster

Sesiones

770

25446

2611

13

Tabla 5.3. Cantidad de sesiones en cada cluster con SOM

Figura 5.1. Porcentaje de sesiones en cada cluster con SOM

5.1.3.5. Clusterizacin con K-Means


Configuracin Clusterizacin con K-Means:

Cantidad de clusters a descubrir (K): 4

Damin A. MARTINELLI

- 51 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Tiempo Clusterizacin con K-Means: 1 minutos 21 segundos.


A continuacin se muestra la cantidad de sesiones en cada cluster [Tabla 5.4] y el
porcentaje correspondiente a cada uno [Figura 5.2]:

Cantidad de Sesiones en cada Cluster


Cluster

Sesiones

17883

2237

5097

3623

Tabla 5.4. Cantidad de Sesiones en cada cluster con K-Means

Figura 5.2. Porcentaje de sesiones en cada cluster con K-Means

5.1.3.6. Comparacin
A continuacin se muestra la comparacin entre la cantidad de sesiones en cada
cluster obtenida mediante los dos mtodos [Tabla 5.5]:

Damin A. MARTINELLI

- 52 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Cantidad de Sesiones en cada Cluster


Cluster

Sesiones SOM

Sesiones K-Means

770

17883

25446

2237

2611

5097

13

3623

Tabla 5.5. Comparacin cantidad de sesiones en cada cluster

5.1.3.7. Representacin de los clusters mediante las pginas de sus sesiones


A continuacin se muestra las pginas que accedieron los usuarios de cada cluster
[Tabla 5.6]:

Pginas en cada Cluster (Porcentaje Minimo = 25%; Cantidad


Maxima de Pginas por Cluster = 100)
SOM
Pgina

K-Means
Porcentaje

Pgina

Porcentaje

Cluster 0
/top.php

98.8312

/thumbnail.php

96.7532

/flashes_home.php

95.7143

/login.php

92.6187

Cluster 1
/login.php

73.8426

/detalle_album.php

100.0

/detalle_album.php

28.1341

/login.php

100.0

Cluster 2
/top.php

96.7062

/thumbnail.php

96.1317

/detalle_album.php

76.7905

/preview.php

37.8782

/detalle_grupo.php

29.1076

Damin A. MARTINELLI

- 53 -

/detalle_album.php

100.0

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Cluster 3
/software.php

100.0

/top.php

94.2037

/thumbnail.php

100.0

/thumbnail.php

93.3757

/top.php

100.0

/detalle_album.php

51.8079

/detalle_album.php

92.3077

/preview.php

30.1408

/flashes_home.php

92.3077

/preview.php

92.3077

/login.php

76.9231

/registracion.php

76.9231

/carrito.php

69.2308

/download_software.php

69.2308

/index.php

69.2308

/micuenta.php

69.2308

/busqueda_artista.php

53.8462

/busqueda_general.php

53.8462

/detalle_grupo.php

53.8462

/terminosdeventa.php

38.4615

/olvido_password.php

30.7692

/soporte.php

30.7692

/terminosdeuso.php

30.7692

Tabla 5.6. Pginas en cada cluster

5.1.3.8. Anlisis de los Clusters de Usuarios Descubiertos


5.1.3.8.1. Mapa Auto-Organizativo (SOM)
Cluster 0
Usuarios que solo acceden a la pgina principal, ya que thumbnail.php, top.php y
flashes_home.php son solicitadas cuando se solicita la pgina principal (index.php).

Cluster 1
Usuarios que inician sesin, por ende son usuarios ya registrados. Tambin miran
detalles de albumes de msica.

Damin A. MARTINELLI

- 54 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Cluster 2
Usuarios que sin iniciar sesin, acceden a albumes de msica y a informacin sobre
grupos. Tambin escuchan fragmentos de temas de los albumes y grupos que visitaron.

Cluster 3
Usuarios que recorren mucho ms todo el sitio. Si estn registrados, inician sesin,
sino, se registran. Miran albumes, grupos, realizan bsquedas y compras algunos temas.

5.1.3.8.2. Algortimo K-Means


Cluster 0
Usuarios registrados que inician sesin.

Cluster 1
Usuarios registrados que inician sesin y acceden a detalles de albumes.

Cluster 2
Usuarios, que sin iniciar sesin, acceden a detalles de albumes.

Cluster 3
Usuarios, que sin iniciar sesin, acceden a detalles de albumes y escuchan fragmentos
de algunos temas.

5.1.3.9. Conclusin anlisis


La informacin obtenida mediante los clusters construidos mediante el mapa autoorganizativo (SOM) es mucho ms rica con respecto a las pginas que acceden los usuarios
de cada cluster, logrando una mejor comprensin de los distintos hbitos de los usuarios del
sitio, con el detalle de las acciones que los mismos realizan.

5.1.4. Anlisis Log 22/5/2005 al 29/5/2005 del sitio sobre msica


5.1.4.1. Registros en el archivo de log original
469131 Registros (91 MB).

Damin A. MARTINELLI

- 55 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

5.1.4.2. Formato log


CLF+REFERRER+AGENT

5.1.4.3. Carga log


A continuacin se muestra el resultado de la carga en el sistema del archivo de log
[Tabla 5.7]:

Carga de Archivo de Log


Carga:

163947

HitsSaves:

163947

Input:

access-emepe3-22-5-2005-29-52005.log

Extensions:

php

StatusCodes:

200

IdsPages:
Pginas Distintas
Cargadas:

38

Tabla 5.7. Carga de Archivo de Log

Tiempo de Carga Log: 56 segundos.


Armado Sesiones con valores por defecto (Cantidad mnima de pginas en una sesion
= 3, Timeout de sesion = 30 minutos, Frecuencia minima de pgina en el log = 1).

Tiempo de Armado Sesiones: 52 segundos.


A continuacin se muestra el resumen del proyecto luego de la carga del log y del
armado de las sesiones de usuarios [Tabla 5.8]:

Proyecto: emepe3-4
Cantidad de Registros de Log Cargados:

163948

Cantidad de Sesiones Cargadas:

9814

Tabla 5.8. Cantidad de registros y sesiones cargadas

Damin A. MARTINELLI

- 56 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

5.1.4.4. Clusterizacin con SOM


Configuracin Clusterizacin con SOM:

Cantidad de ciclos de entrenamiento: 5

Cardinalidad del mapa de clusterizacin (NxN): 2

Tiempo Clusterizacin con SOM: 2 minutos 14 segundos.


A continuacin se muestra la cantidad de sesiones en cada cluster [Tabla 5.9] y el
porcentaje correspondiente a cada uno [Figura 5.3]:

Cantidad de Sesiones en cada Cluster


Cluster

Sesiones

3792

209

5808

Tabla 5.9. Cantidad de sesiones en cada cluster con SOM

Damin A. MARTINELLI

- 57 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Figura 5.3. Porcentaje de sesiones en cada cluster con SOM

5.1.4.5. Clusterizacin con K-Means


Configuracin Clusterizacin con K-Means:

Cantidad de clusters a descubrir (K): 4

Tiempo Clusterizacin con K-Means: 2 minutos 3 segundos.


A continuacin se muestra la cantidad de sesiones en cada cluster [Tabla 5.10] y el
porcentaje correspondiente a cada uno [Figura 5.4]:

Cantidad de Sesiones en cada Cluster


Cluster

Sesiones

2768

2372

4335

339

Tabla 5.10. Cantidad de sesiones en cada cluster con K-Means

Damin A. MARTINELLI

- 58 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Figura 5.4. Porcentaje de sesiones en cada cluster con K-Means

5.1.4.6. Comparacin
A continuacin se muestra la comparacin entre la cantidad de sesiones en cada
cluster obtenida mediante los dos mtodos [Tabla 5.11]:

Cantidad de Sesiones en cada Cluster


Cluster

Sesiones SOM

Sesiones K-Means

3792

2768

209

2372

5808

4335

339

Tabla 5.11. Comparacin cantidad de sesiones en cada cluster

5.1.4.7. Representacin de los clusters mediante las pginas de sus sesiones


A continuacin se muestra las pginas que accedieron los usuarios de cada cluster
[Tabla 5.12]:

Damin A. MARTINELLI

- 59 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Pginas en cada Cluster (Porcentaje Minimo = 25%; Cantidad Maxima de


Pginas por Cluster = 100)
SOM
Pgina

K-Means
Porcentaje

Pgina

Porcentaje

Cluster 0
/thumbnail.php

58.2278

/login.php

51.3728

/top.php

56.6192

/detalle_grupo.php

29.7688

/login.php

39.3196
Cluster 1

/thumbnail.php

100.0

/top.php

100.0

/preview.php

86.6029

/detalle_grupo.php

83.2536

/detalle_album.php

82.7751

/flashes_home.php

62.201

/login.php

50.7177

/busqueda_genero_detalle.php

35.4067

/index.php

27.7512

/detalle_album.php 100.0

Cluster 2
/detalle_album.php

83.4366

/thumbnail.php

99.9077

/top.php

41.6322

/top.php

99.7232

/thumbnail.php

41.0124

/detalle_album.php 60.7843
/preview.php

32.3414

/flashes_home.php 25.5133
Cluster 3
/terminosdeuso.php

100.0

/terminosdeventa.php

100.0

/politica.php

80.0

/software.php

80.0

/detalle_album.php

60.0

/politicadeprivacidad.php

60.0

/registracion.php

60.0

/detalle_imagen.php

40.0

Damin A. MARTINELLI

- 60 -

/top.php

100.0

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

/olvido_password.php

40.0

Tabla 5.12. Pginas en cada cluster

5.1.4.8. Anlisis de los Clusters de Usuarios Descubiertos


5.1.4.8.1. Mapa Auto-Organizativo (SOM)
Cluster 0
Usuarios que acceden nicamente a la pgina principal, algunos de los cuales inician
sesin en el sitio.

Cluster 1
Usuarios que acceden a albumes de msica y a informacin sobre grupos. Tambin
escuchan fragmentos de temas de los albumes y grupos que visitaron. Realizan algunas
bsquedas.

Cluster 2
Usuarios que sin iniciar sesin, acceden a albumes de msica.

Cluster 3
Usuarios que recorren mucho ms todo el sitio. Acceden a varias pginas del sitio
donde obtienen informacin sobre el mismo. Tambin acceden a detalles de albumes de
msica, y muchos se registran en el sitio.

5.1.4.8.2. Algoritmo K-Means


Cluster 0
Usuarios registrados que inician sesin y acceden a detalles de grupos de msica.

Cluster 1
Usuarios, que sin iniciar sesin, acceden a detalles de albumes.

Cluster 2
Usuarios, que sin iniciar sesin, acceden a detalles de albumes y escuchan fragmentos
de algunos temas.

Cluster 3
Usuarios que no recorren mucho el sitio.

Damin A. MARTINELLI

- 61 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

5.1.4.9. Conclusin anlisis


La informacin obtenida mediante los clusters construidos mediante el mapa autoorganizativo (SOM) es mucho ms rica con respecto a las pginas que acceden los usuarios
de cada cluster, logrando una mejor comprensin de los distintos hbitos de los usuarios del
sitio, con el detalle de las acciones que los mismos realizan.

5.1.5. Conclusin Anlisis Logs sitio sobre msica


Comparando los resultados de las clusterizaciones de usuarios realizadas mediante la
red neuronal mapa auto-organizativo (SOM) y el mtodo convencional K-Means, se puede
apreciar la superioridad de la informacin suministrada por los clusters generados
utilizando la red neuronal.
La red neuronal mapa auto-organizativo (SOM) logra agrupar a los usuarios en
clusters donde existe ms similitud entre las pginas que acceden los usuarios
pertenecientes al mismo. Esto provoca que exista mayor cantidad de pginas con gran
porcentaje de acceso por los usuarios de cada cluster, permitiendo entender y analizar mejor
los hbitos de los usuarios. En los cluster descubiertos utilizando K-Means se posee solo
una o dos pginas con alto porcentaje de acceso por los usuarios pertenecientes a cada
cluster. Esto ocasiona que se posea poca informacin sobre los hbitos de los usuarios de
cada cluster.

Damin A. MARTINELLI

- 62 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

5.2. Anlisis Logs El Cuerpo de Cristo


5.2.1. Descripcin sitio El Cuerpo de Cristo
El tema central del sitio es la gastronomia. El sitio expone distintos artculos sobre
cuestiones culinarias, permitiendo que los usuarios registrados envien sus propios artculos,
para su aprobacin y posterior publicacin por los responsables del sitio. Adems, posee un
wiki sobre gastronoma. Un wiki son pginas Web que pueden ser modificadas por los
visitantes, agregando la informacin que ellos deseen. Tambin posee un sector con
galeras de imgenes y un sistema para obtener recetas de comidas en base a los
ingredientes disponibles en el momento.

5.2.2. Pginas www.elcuerpodecristo.com.ar


A continuacin se detalla la lista de pginas que componen al sitio:

recetodromoII/index.php:
ingredientes.

tiki-articles_rss.php: los artculos en formato RSS.

tiki-backlinks.php: pgina para actividades administrativas del sitio.

tiki-blogs_rss.php: lista de los wiki y los artculos en formato RSS.

tiki-browse_image.php: muestra una imgen con su informacin.

tiki-browse_categories.php: permite acceder a los wikis y a los artculos


mediante sus categoras.

tiki-directory_browse.php: permite acceder al directorio de sitios con temas


relacionados al sitio.

tiki-directory_ranking.php: lista de otros sitios.

tiki-edit_article.php: permite editar un artculo, si se tienen los permisos


necesarios.

tiki-edit_submission.php: permite cargar la informacin de un nuevo artculo y


enviarlo.

tiki-edit_templates.php: permite la edicin de las plantillas de las pginas.

tiki-edit_translation.php: permite editar la traduccin de una pgina.

tiki-editpage.php: permite editar una pgina.

tiki-forums.php: foro.

Damin A. MARTINELLI

permite

buscar

- 63 -

recetas

seleccionando

sus

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

tiki-galleries.php: lista de la galeria de imgenes.

tiki-index.php: informacin sobre distintos restaurantes.

tiki-lastchanges.php: ultimos cambios realizados a las pginas del wiki.

tiki-list_articles.php: lista de todos los artculos.

tiki-list_gallery.php: muestra las imgenes de una galera de fotos.

tiki-list_submissions.php: permite listar los artculos enviados, si se tienen los


permisos necesarios.

tiki-listpages.php: lista todas las pginas del wiki.

tiki-meta.php: pgina principal del sitios, con los artculos y wikis ms nuevos.

tiki-pagehistory.php: permite ver la historia de modificaciones de una pgina.

tiki-print.php: versin para impresin de los wikis.

tiki-print_article.php: versin para impresin de los artculos.

tiki-upload_image.php: permite subir imgenes, si se tienen los permisos


necesarios.

tiki-random_num_img.php: muestra una imgen con nmeros generados


aleatoriamente, para que el usuario deba introducirlos cuando edita un articulo.

tiki-register.php: formulario para registrarse como usuario.

tiki-searchindex.php: buscador en todo el sitio o en las secciones indicadas.

tiki-user_information.php: muestra informacin de un usuario.

tiki-view_articles.php: muestra todos los artculos.

tiki-view_forum_thread.php: muestra un comentario de un foro.

tiki-wiki_rss.php: lista de los wikis en formato RSS.

show_image.php: muestra una imgen.

topic_image.php: muestra una imgen sobre un tpico seleccionado.

5.2.3. Anlisis Log Semana 3 de Mayo de 2005 de


www.elcuerpodecristo.com.ar
5.2.3.1. Registros en el archivo de log original
203149 Registros (42 MB).

Damin A. MARTINELLI

- 64 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

5.2.3.2. Formato log


CLF+REFERRER+AGENT

5.2.3.3. Carga log


A continuacin se muestra el resultado de la carga en el sistema del archivo de log
[Tabla 5.13]:

Carga de Archivo de Log


Carga:

34086

HitsSaves:

34086

Input:

access-S03-05-2005.log

Extensions:

php

StatusCodes:

200

IdsPages:
Pginas Distintas Cargadas:

71

Tabla 5.13. Carga de Archivo de Log

Tiempo de Carga Log: 25 segundos.


Armado Sesiones con valores por defecto (Cantidad mnima de pginas en una sesin
= 3, Timeout de sesion = 30 minutos, Frecuencia mnima de pgina en el log = 1).

Tiempo de Armado Sesiones: 15 segundos.


A continuacin se muestra el resumen del proyecto luego de la carga del log y del
armado de las sesiones de usuarios [Tabla 5.14]:

Proyecto: cc-S03-05-2005 2
Cantidad de Registros de Log Cargados:

34086

Cantidad de Sesiones Cargadas:

5445

Tabla 5.14. Cantidad de registros y sesiones cargadas

Damin A. MARTINELLI

- 65 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

5.2.3.4. Clusterizacin con SOM


Configuracin Clusterizacin con SOM:

Cantidad de ciclos de entrenamiento: 5

Cardinalidad del mapa de clusterizacion (NxN): 2

Tiempo Clusterizacin con SOM: 26 segundos.


A continuacin se muestra la cantidad de sesiones en cada cluster [Tabla 5.15] y el
porcentaje correspondiente a cada uno [Figura 5.5]:

Cantidad de Sesiones en cada Cluster


Cluster

Sesiones

4563

808

67

Tabla 5.15. Cantidad de sesiones en cada cluster con SOM

Figura 5.5. Porcentaje de sesiones en cada cluster con SOM

Damin A. MARTINELLI

- 66 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

5.2.3.5. Clusterizacin con K-Means


Configuracin Clusterizacin con K-Means

Cantidad de clusters a descubrir (K): 4

Tiempo Clusterizacin con K-Means: 24 segundos.


A continuacin se muestra la cantidad de sesiones en cada cluster [Tabla 5.16] y el
porcentaje correspondiente a cada uno [Figura 5.6]:

Cantidad de Sesiones en cada Cluster


Cluster

Sesiones

724

394

3674

653

Tabla 5.16. Cantidad de sesiones en cada cluster con K-Means

Figura 5.6. Porcentaje de sesiones en cada cluster con K-Means

Damin A. MARTINELLI

- 67 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

5.2.3.6. Comparacin
A continuacin se muestra la comparacin entre la cantidad de sesiones en cada
cluster obtenida mediante los dos mtodos [Tabla 5.17]:

Cantidad de Sesiones en cada Cluster


Cluster

Sesiones SOM

Sesiones K-Means

724

4563

394

808

3674

67

653

Tabla 5.17. Comparacin cantidad de sesiones en cada cluster

5.2.3.7. Representacin de los clusters mediante las pginas de sus sesiones


A continuacin se muestra las pginas que accedieron los usuarios de cada cluster
[Tabla 5.18]:
Pginas en cada Cluster (Porcentaje Mnimo = 10%; Cantidad Mxima de
Pginas por Cluster = 100)
SOM
Pgina

K-Means
Porcentaje

Pgina

Porcentaje

Cluster 0
/tiki-edit_submission.php

100.0

/tiki-editpage.php

100.0

/tikiview_forum_thread.php

85.7143

/tikirandom_num_img.php

62.8453

/tiki-list_submissions.php 71.4286
/tiki-browse_image.php

57.1429

/show_image.php

42.8571

/tiki-edit_article.php

42.8571

/tiki-galleries.php

42.8571

/tiki-pagehistory.php

42.8571

/topic_image.php

42.8571

Damin A. MARTINELLI

- 68 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

/tikidirectory_browse.php

28.5714

/tiki-editpage.php

28.5714

/tiki-index.php

28.5714

/tiki-list_articles.php

28.5714

/tiki-meta.php

28.5714

/tiki-upload_image.php

28.5714

/tiki-wiki_rss.php

28.5714

/tiki-searchindex.php

14.2857

/tiki-view_articles.php

14.2857
Cluster 1

/recetodromoII/index.php

19.2417

/tiki-index.php

99.7462

/tiki-editpage.php

18.0145

/tiki-editpage.php

30.203

/tiki-articles_rss.php

14.3765

/tiki-listpages.php

23.0964

/tiki-wiki_rss.php

11.5494

/tiki-list_articles.php

22.5888

/tikirandom_num_img.php

10.103

/tiki-pagehistory.php

21.3198

/tiki-edit_translation.php

18.5279

/tiki-wiki_rss.php

18.2741

/tiki-edit_submission.php

17.7665

/tiki-register.php

17.7665

/tiki-articles_rss.php

17.5127

/tikiuser_information.php

17.2589

/tikiview_forum_thread.php

17.2589

/tiki-print.php

16.7513

/tiki-searchindex.php

10.9137

/show_image.php

10.4061

/tikibrowse_categories.php

10.1523

Cluster 2
/show_image.php

78.7129

/recetodromoII/index.php

21.8018

/tiki-browse_image.php

26.1139

/tiki-articles_rss.php

17.583

/show_image.php

15.1606

Damin A. MARTINELLI

- 69 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

/tiki-wiki_rss.php

14.1535

Cluster 3
/tiki-editpage.php

100.0

/tiki-pagehistory.php

69.0658

/tiki-edit_submission.php

100.0

/tiki-print.php

36.9066

/tiki-listpages.php

100.0

/tiki-listpages.php

24.8086

/tiki-list_articles.php

100.0

/tiki-editpage.php

18.0704

/tiki-articles_rss.php

98.5075

/tikibrowse_categories.php

15.6202

/tiki-index.php

98.5075

/tiki-edit_translation.php

14.5482

/tiki-register.php

98.5075

/tiki-backlinks.php

14.242

/tiki-wiki_rss.php

98.5075

/tikiuser_information.php

95.5224

/tiki-pagehistory.php

92.5373

/tiki-edit_translation.php

91.0448

/tiki-print.php

88.0597

/tikiview_forum_thread.php

44.7761

/tiki-edit_templates.php

40.2985

/tiki-view_forum.php

25.3731

/tiki-print_article.php

23.8806

/tiki-backlinks.php

22.3881

/tiki-list_submissions.php 22.3881
/tikibrowse_categories.php

20.8955

/tiki-forums.php

20.8955

/tiki-browse_image.php

19.403

/tiki-galleries.php

19.403

/tiki-list_gallery.php

16.4179

Tabla 5.18. Pginas en cada cluster

Damin A. MARTINELLI

- 70 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

5.2.3.8. Anlisis de los Clusters de Usuarios Descubiertos


5.2.3.8.1. Mapa Auto-Organizativo (SOM)
Cluster 0
Usuarios que realizan varias acciones en el sitio. Agregan y editan artculos, por ende
son usuarios registrados en el sitio, ya que para realizar estas acciones se deben tener los
permisos necesarios. Listan artculos y ven artculos. Listan imgenes y ven imgenes.
Tambien acceden a los foros.

Cluster 1
Usuarios que no recorren mucho el sitio. Algunos utilizan el recetodromo (buscador
de recetas), editan pginas del wiki y acceden a los artculos y a las pginas del wiki
mediante RSS.

Cluster 2
Usuarios que unicamente ven las galeras de imgenes y las imgenes de las mismas.

Cluster 3
Usuarios que recorren mucho ms todo el sitio. Listan, ven y editan pginas del wiki.
Tambien ven artculos y acceden al foro. Si no estan registrados, se registran. Ven artculos
y pginas del wiki mediante RSS. Algunos acceden a las galeras de imgenes.

5.2.3.8.2. Algoritmo K-Means


Cluster 0
Usuarios que unicamente editan una pgina del wiki. La pgina tikirandom_num_img.php se solicita automticamente cuando se solicita la pgina de edicin
del wiki.

Cluster 1
Usuarios que recorren bastante el sitio. Algunos ven y editan pginas del wiki.
Algunos ven artculos, acceden a las pginas y/o a los wikis mediante RSS. Algunos
usuarios se registran en el sitio.

Cluster 2
Usuarios que no recorren mucho el sitio. Algunos utilizan el recetodromo (buscador
de recetas), acceden a los artculos y a las pginas del wiki mediante RSS, y ven alguna
imgen.

Damin A. MARTINELLI

- 71 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Cluster 3
Usuarios que acceden a pginas relacionadas al wiki. Listan pginas del wiki, las
editan, editan las traducciones, ven la versin de impresin y ven la historia de
modificacin de una pgina.

5.2.3.9. Conclusin anlisis


La informacin obtenida mediante los clusters construidos mediante el mapa autoorganizativo (SOM) es mucho ms rica con respecto a las pginas que acceden los usuarios
de cada cluster, logrando una mejor comprensin de los distintos hbitos de los usuarios del
sitio, con el detalle de las acciones que los mismo realizan.

5.2.4. Anlisis Log Semana 1 de Junio de 2005 de


www.elcuerpodecristo.com.ar
5.2.4.1. Registros en el archivo de log original
128815 Registros (27 MB).

5.2.4.2. Formato log


CLF+REFERRER+AGENT

5.2.4.3. Carga log


A continuacin se muestra el resultado de la carga en el sistema del archivo de log
[Tabla 5.19]:

Carga de Archivo de Log

Damin A. MARTINELLI

Carga:

12489

HitsSaves:

12489

Input:

access-S01-06-2005.log

Extensions:

php

StatusCodes:

200

- 72 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Carga de Archivo de Log


IdsPages:
Pginas Distintas Cargadas:

71

Tabla 5.19. Carga de Archivo de Log

Tiempo de Carga Log: 14 segundos.


Armado Sesiones con valores por defecto (Cantidad mnima de pginas en una sesion
= 3, Timeout de sesion = 30 minutos, Frecuencia minima de pgina en el log = 1).

Tiempo de Armado Sesiones: 9 segundos.


A continuacin se muestra el resumen del proyecto luego de la carga del log y del
armado de las sesiones de usuarios [Tabla 5.20]:

Proyecto: cc-S01-06-2005 2
Cantidad de Registros de Log Cargados:

12489

Cantidad de Sesiones Cargadas:

4616

Tabla 5.20. Cantidad de registros y sesiones cargadas

5.2.4.4. Clusterizacin con SOM


Configuracin Clusterizacin con SOM:

Cantidad de ciclos de entrenamiento: 5

Cardinalidad del mapa de clusterizacin (NxN): 2

Tiempo Clusterizacin con SOM: 13 segundos.


A continuacin se muestra la cantidad de sesiones en cada cluster [Tabla 5.21] y el
porcentaje correspondiente a cada uno [Figura 5.7]:

Damin A. MARTINELLI

- 73 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Cantidad de Sesiones en cada Cluster


Cluster

Sesiones

3935

645

13

23

Tabla 5.21. Cantidad de sesiones en cada cluster con SOM

Figura 5.7. Porcentaje de sesiones en cada cluster con SOM

5.2.4.5. Clusterizacin con K-Means


Configuracin Clusterizacin con K-Means:

Cantidad de clusters a descubrir (K): 4

Tiempo Clusterizacin con K-Means: 10 segundos.


A continuacin se muestra la cantidad de sesiones en cada cluster [Tabla 5.22] y el
porcentaje correspondiente a cada uno [Figura 5.8]:

Damin A. MARTINELLI

- 74 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Cantidad de Sesiones en cada Cluster


Cluster

Sesiones

3880

125

206

405

Tabla 5.22. Cantidad de sesiones en cada cluster con K-Means

Figura 5.8. Porcentaje de sesiones en cada cluster con K-Means

5.2.4.6. Comparacin
A continuacin se muestra la comparacin entre la cantidad de sesiones en cada
cluster obtenida mediante los dos mtodos [Tabla 5.23]:

Damin A. MARTINELLI

- 75 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Cantidad de Sesiones en cada Cluster


Cluster

Sesiones SOM

Sesiones K-Means

3935

3880

645

125

13

206

23

405

Tabla 5.23. Comparacin cantidad de sesiones en cada cluster

5.2.4.7. Representacin de los clusters mediante las pginas de sus sesiones


A continuacin se muestra las pginas que accedieron los usuarios de cada cluster
[Tabla 5.24]:
Pginas en cada Cluster (Porcentaje Mnimo = 10%; Cantidad Mxima de
Pginas por Cluster = 100)
SOM
Pgina

K-Means
Porcentaje

Pgina

Porcentaje

Cluster 0
/recetodromoII/index.php

27.5222

/recetodromoII/index.php

30.6443

/tiki-articles_rss.php

13.291

/tiki-editpage.php

14.5103

/tiki-editpage.php

12.249

/show_image.php

13.299

/show_image.php

11.7154

/tiki-articles_rss.php

11.4948

/tikirandom_num_img.php

10.5155

Cluster 1
/recetodromoII/index.php

29.6124

/tiki-editpage.php

20.0

/show_image.php

14.1085

/tikirandom_num_img.php

13.1783

/tiki-blogs_rss.php

80.8

Cluster 2
/tiki-editpage.php

Damin A. MARTINELLI

46.1538

/tiki-editpage.php

- 76 -

22.8155

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

/tiki-index.php

30.7692

/recetodromoII/index.php

15.534

/tiki-searchindex.php

23.0769

/tiki-pagehistory.php

13.5922

/tiki-browse_image.php

15.3846

/tiki-edit_translation.php

12.6214

/tikidirectory_browse.php

15.3846

/tiki-list_articles.php

15.3846

/tiki-meta.php

15.3846

/tiki-read_article.php

15.3846
Cluster 3

/tiki-editpage.php

34.7826

/tiki-wiki_rss.php

61.9753

/tiki-searchindex.php

34.7826

/tiki-articles_rss.php

25.679

/tikiview_forum_thread.php

26.087

/recetodromoII/index.php

11.1111

/show_image.php

13.0435

/tiki-browse_image.php

13.0435

/tiki-index.php

13.0435

/tiki-meta.php

13.0435

Tabla 5.24. Pginas en cada cluster

5.2.4.8. Anlisis de los Clusters de Usuarios Descubiertos


5.2.4.8.1. Mapa Auto-Organizativo (SOM)
Cluster 0
Usuarios que no recorren mucho el sitio. Algunos utilizan el recetodromo (buscador
de recetas), editan pginas del wiki y acceden a los artculos mediante RSS. Tambin ven
algunas imgenes.

Cluster 1
Usuarios que no recorren mucho el sitio. Algunos utilizan el recetodromo (buscador
de recetas), editan pginas del wiki y ven algunas imgenes. Los hbitos de los usuarios de
este cluster son muy similares a los del cluster 0, las diferencias recaen en que un mayor
porcentaje de los usuarios del cluster 1 editan pginas del wiki y que lo usuarios del cluster
1 no acceden a los artculos mediante RSS.

Damin A. MARTINELLI

- 77 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Cluster 2
Usuarios que recorren ms todo el sitio. Editan pginas del wiki. Realizan bsquedas
en el sitio. Algunos acceden a las galeras de imgenes.

Cluster 3
Usuarios que recorren ms todo el sitio. Listan, ven y editan pginas del wiki y
artculos. Realizan bsquedas en el sitio. Algunos acceden a las galeras de imgenes.
Tambin acceden al foro.

5.2.4.8.2. Algoritmo K-Means


Cluster 0
Usuarios que no recorren mucho el sitio. Algunos utilizan el recetodromo (buscador
de recetas), editan pginas del wiki y acceden a los artculos mediante RSS. Tambin ven
algunas imgenes.

Cluster 1
Usuarios que nicamente acceden a los artculos y a las pginas del wiki mediante
RSS.

Cluster 2
Usuarios que utilizan el recetodromo (buscador de recetas), editan pginas del wiki,
editan las traducciones de las pginas del wiki y acceden al historial de modificacin de las
pginas del wiki.

Cluster 3
Usuarios que acceden a los artculos y a las pginas del wiki mediante RSS. Algunos
utilizan el recetdromo (buscador de recetas).

5.2.4.9. Conclusin anlisis


La informacin obtenida mediante los clusters construidos mediante SOM es mucho
ms rica, logrando una mejor comprensin de los distintos hbitos de los usuarios del sitio,
con el detalle de las acciones que los mismos realizan.

5.2.5. Conclusin Anlisis Logs El Cuerpo de Cristo


Comparando los resultados de las clusterizaciones de usuarios realizadas mediante la
red neuronal mapa auto-organizativo (SOM) y el mtodo convencional K-Means, se puede

Damin A. MARTINELLI

- 78 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

apreciar la superioridad de la informacin suministrada por los clusters generados


utilizando la red neuronal.
La red neuronal mapa auto-organizativo (SOM) logra agrupar a los usuarios en
clusters donde existe ms similitud entre las pginas que acceden los usuarios
pertenecientes al mismo. Esto provoca que exista mayor cantidad de pginas con gran
porcentaje de acceso por los usuarios de cada cluster, permitiendo entender y analizar mejor
los hbitos de los usuarios. En los cluster descubiertos utilizando el algoritmo K-Means se
posee solo una o dos pginas con alto porcentaje de acceso por los usuarios pertenecientes a
cada cluster. Esto ocasiona que se posea poca informacin sobre los hbitos de los usuarios
de cada cluster.

Damin A. MARTINELLI

- 79 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

6. Conclusiones
El presente trabajo constituye un aporte original en la identificacin de hbitos de uso
de sitios Web, para ello:

Adapta una red neuronal mapa auto-organizativo (SOM) para la identificacin


de hbitos de uso de sitios Web.

Analiza los resultados obtenidos mediante la aplicacin de la solucin


propuesta.

Compara la solucin propuesta con un mtodo tradicional como K-Means y


resalta la superioridad de la red neuronal en el agrupamiento de usuarios de
sitios Web, superioridad reflejada en la obtencin de mayor informacin sobre
sus hbitos.

Sistematiza el proceso completo de identificacin de hbitos de uso de sitios


Web.

Construye una herramienta para el anlisis de los hbitos de uso, aplicando un


marco metodolgico a travs de la metodologa Mtrica Versin 3.

Contribuye brindando mayor informacin para la realizacin efectiva de


campaas de marketing, como as tambin, mejores rediseos de sitios Web.

Los resultados obtenidos mediante la red neuronal SOM alientan a continuar


investigando la utilizacin de otros tipos de redes para la identificacin de hbitos de uso de
sitios Web, como as tambin, intentar identificar nuevos aspectos de los mismos.

Damin A. MARTINELLI

- 80 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

7. Trabajos Futuros
De la experiencia adquirida durante la realizacin del presente trabajo de Tesis surgen
las siguientes propuestas:

Investigar la factibilidad de la adaptacin de otros tipos de redes neuronales


artificiales en la identificacin de hbitos de uso de sitios Web.

Analizar la utilizacin de una red neuronal que permita obtener informacin


sobre los caminos seguidos por los usuarios en un sitio Web, teniendo en
cuenta no solo a qu pgina accedi cada usuario, sino tambin en qu
secuencia accedi a las mismas.

Identificar nuevos aspectos de los hbitos de uso que sean capaces de ser
descubiertos mediante redes neuronales artificiales.

Investigar la aplicacin de las redes neuronales artificiales en la clasificacin


de las pginas que conforman un sitio Web en base a los hbitos de acceso de
sus usuarios.

Analizar la utilizacin de la solucin propuesta aplicada fuera del mbito de la


Web, como ser aplicaciones de escritorio o motores de base de datos.

Ampliar las capacidades de la herramienta desarrollada, incluyendo nuevas


funcionalidades, como ser:

o Mejorar la performance de la red neuronal mapa auto-organizativo


(SOM) cuando se analizan sitios con mucha informacin de
navegacin.
o Incorporar la posibilidad del almacenamiento de una red neuronal ya
entrenada para su reutilizacin.
o Integracin con una herramienta de anlisis de sitios Web tradicional
para completar la informacin que se le provee al usuario.

Damin A. MARTINELLI

- 81 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

8. Referencias

[Abidi, S.S.R.; 1996] Abidi, S.S.R., Neural networks: their efficacy towards the
Malaysian IT environment. School of Computer Sciences. Universiti Sains
Malaysia. Penang. Malaysia, 1996.

[Abraham, A.; 2003] Abraham, A., i-Miner: A Web usage mining framework
using hierarchical intelligent systems. The IEEE International Conference on
Fuzzy Systems FUZZ-IEEE'03, pp. 1129/1134, IEEE Press, 2003.

[Abraham, A., Ramos, V.; 2003] Abraham, A., Ramos, V. Web Usage Mining
Using Artificial Ant Colony Clustering and Linear Genetic Programming, 2003.

[Agrawal, R., Srikant, R.; 1994] Agrawal, R., Srikant, R., Fast Algorithms for
Mining Association Rules. IBM Almaden Research Center. Proceedings of the
20th International Conference on Very Large Data Bases, pages 478/499,
Septiembre 1994.

[Agrawal, R., Gehrke, J., Gunopulos, D., Raghavan, P.; 1998] Agrawal, R.,
Gehrke, J., Gunopulos, D., Raghavan, P., Automatic Subspace Clustering of
High Dimensional Data for Data Mining Applications. IBM Almaden Research
Center, 1998.

[Agrawal, R., Ghosh S., Imielinski T., Iyer B., Swami A.; 1992] Agrawal, R.,
Ghosh S., Imielinski T., Iyer B., Swami A., An Interval Classifier for Database
Mining Applications. Proceedings of the 18th International Conference on Very
Large Data Bases, pginas 560/573, Agosto 1992.

[Agrawal, R., Imielinski, T., Swami, A.; 1993} Agrawal, R., Imielinski, T.,
Swami, A Mining Association Rules between Sets of Items in Large Databases.
Proceedings of ACM SIGMOD, pginas 207/216, Mayo 1993.

[Ale, J.; 2005] Ale, J., Introduccin a Data Mining, 2005.

[Ale, J.; 2005] Ale, J., Clasificacin Arboles de Decisin, 2005.

[Ale, J.; 2005] Ale, J., Anlisis de Clusters, 2005.

[Ankerst, M.; 2001] Ankerst, M., Visual Data Mining with Pixel-oriented
Visualization Techniques. The Boing Company. Seattle, WA., 2001.

[Ankerst, M., Breunig, M.M., Kriegel, H., Sander, J.; 1999] Ankerst, M.,
Breunig, M.M., Kriegel, H., Sander, J., OPTICS: Ordering Points To Identify
the Clustering Structure.Institute for Computer Science, University of Munich.
Munich, Germany, 1999.

[Batista, P., Silva, M.J.; 2002] Batista, P., Silva, M.J., Mining Web Access Logs
of an On-line Newspaper. Departamento de Informtica, Faculdade de Ciencias
Universidade de Lisboa. Lisboa. Portugal, 2002.

[Beveridge M.; 1996] Beveridge M., Self Organizing Maps.


http://Web.archive.org/Web/20021216231759/
http://www.dcs.napier.ac.uk/hci/martin/msc/node6.html. Vigente al 19/11/2005.

Damin A. MARTINELLI

- 82 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

[Borges, J., Levene, M.; 2000] Borges, J., Levene, M., A Fine Grained Heuristic
to Capture Web Navigation Patterns. ACM SIGKDD, Julio 2000.

[Catledge, L., Pitkow, J.; 1995] Catledge, L., Pitkow, J., Characterizing
browsing strategies in the world wide Web. Computer Networks and ISDN
Systems, 27(6): 10651073, Abril 1995.

[Cernuzzi, L., Molas, M.L.; 2004] Cernuzzi, L., Molas, M.L., Integrando
diferentes tcnicas de Data Mining en procesos de Web Usage Mining.
Universidad Catlica "Nuestra Seora de la Asuncin". Asuncin. Paraguay,
2004.

[Chapman, P., Clinton, J., Kerber, R., Khabaza, T., Reinartz, T., Shearer, C.,
Wirth, R.; 2000] Chapman, P., Clinton, J., Kerber, R., Khabaza, T., Reinartz, T.,
Shearer, C., Wirth, R. (2000). CRISP-DM 1.0 Step-by-step data mining guide.
http://www.crisp-dm.org/CRISPWP-0800.pdf. Vigente al 19/11/2005.

[Cheeseman, P., Stutz, J.; 1996] Cheeseman, P., Stutz, J., Bayesian
classification (AutoClass): Theory and results. In U.M. Fayyad, G. PiatetskyShapiro, P. Smyth, and R. Uthurusamy, editors, Advances in Knowledge
Discovery and Data Mining, pginas 153/180. AAAI/MIT Press, 1996.

[Chen, H., Chau, M.; 2004] Chen, H., Chau, M., Web Mining: Machine
Learning for Web Applications. Annual Review of Information Science and
Technology, 38, (289-329), 2004.

[Chen, M., Han, J., Yu, P.; 1996] Chen, M., Han, J., Data mining: An overview
from database perspective. IEEE Transactions on Knowledge and Data Eng.,
1996.

[Chen, M.S., Park, J.S., Yu, P.S.; 1996] Chen, M.S., Park, J.S., Yu, P.S., Data
mining for path traversal patterns in a Web environment. pginas 385/392,
1996.

[Chi, E.H., Rosien, A., Heer, J.; 2002] Chi, E.H., Rosien, A., Heer, J.,
LumberJack: Intelligent Discovery and Analysis of Web User Traffic
Composition. PARC (Palo Alto Research Center), 2002.

[Cohen, E., Krishnamurthy, B., Rexford, J.; 1998] Cohen, E., Krishnamurthy,
B., Rexford, J., Improving End-to-end Performance of the Web using Server
Volumes and Proxy Filters in Proceedings of the ACM SIGCOMM, pginas
241-253, 1998.

[Cooley R., Mobasher R., Srivastava J.; 1999] Cooley R., Mobasher R.,
Srivastava J., Data Preparation for Mining World Wide Web Browsing Patterns.
Knowledge and Information Systems, volumen 1, 1999.

[Cooley, R.; 2000] Cooley, R., Web usage mining: Discovery and application of
interesting patterns from Web data. PhD Thesis, Department of Computer
Science, University, 2000.

[Cooley, R., Tan, P.N., Srivastava, J.; 1999] Cooley, R., Tan, P.N., Srivastava,
J., Discovery of interesting usage patterns from Web data. University of
Minnesota, 1999.

Damin A. MARTINELLI

- 83 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

[Daza P., S.P.; 2003] Daza P., S.P., Redes neuronales artificiales: Fundamentos,
modelos y aplicaciones. Universidad Militar Nueva Granada. Facultad de
Ingeniera Mecatrnica. Bogot. Colombia, 2003.

[Eirinaki, M., Vazirgiannis, M.; 2003] Eirinaki, M., Vazirgiannis, M., Web
Mining for Web Personalization. Athens University of Economics and Business,
2003.

[Elder IV, J., Pregibon, D.; 1996] Elder IV, J., Pregibon, D., A statistical
perspective on knowledge discovery in databases. In U.M. Fayyad, G. PiatetskyShapiro, P. Smyth, and R. Uthurusamy, editors, Advances in Knowledge
Discovery and Data Mining, pginas 83/115. AAAI/MIT Press, 1996.

[Essenreiter R., Karrenbach, M., Treitel S.; 1999] Essenreiter R., Karrenbach,
M., Treitel S., Identification and classification of multiple reflections with
selforganizing maps. Geophysical Institute, University of Karlsruhe, Germany,
1999.

[Ester, M., Kriegel, H. P., Xu, X.; 1995] Ester, M., Kriegel, H. P., Xu, X.,
Knowledge discovery in large spatial databases: Focusing techniques for
efficient class identification. In Proc. 4th Int. Symp. on Large Spatial Databases
(SSD'95), pginas 67/82, Portland, Maine, Agosto 1995.

[Ester, M., Kriegel, H., Sander J., Xu X.; 1996] Ester, M., Kriegel, H., Sander J.,
Xu X., A Density-Based Algorithm for Discovering Clusters in Large Spatial
Databases with Noise. Institute for Computer Science, University of Munich.
Mnchen, Germany, 1996.

[Felgaer, Pablo E.; 2004] Felgaer, Pablo E., Redes bayesianas aplicadas a
minera de datos inteligente. Laboratorio de Sistemas Inteligentes. Facultad de
Ingeniera. UBA. Argentina, 2004.

[Fisher, D.; 1996] Fisher, D., Iterative optimization and simplification of


hierarchical clusterings. Departament of Computer Science. Vanderbilt
University, Nashville, USA, 1996.

[Frawley, W.J., Piatetski-Shapiro, G., Matheus, C.J.; 1991] Frawley, W.J.,


Piatetski-Shapiro, G., Matheus, C.J., Knowledge discovery in databases: an
overview. AAAI-MIT Press, Menlo Park, California, 1991.

[Fu, Y., Shih, M., Creado, M., Ju, C.; 2001] Fu, Y., Shih, M., Creado, M., Ju, C.,
Reorganizing websites based on user access patterns. Department of Computer
Science. University of Missouri-Rolla, 2001.

[Garca Martnez, R., Servente, M., Pasquini, D.; 2003] Garca Martnez, R.,
Servente, M., Pasquini, D., Sistemas Inteligentes. Nueva Librera. (Pginas 67148), 2003.

[Grosser, Hernn; 2004] Grosser, Hernn, Deteccin de Fraude en Telefona


Celular Usando Redes Neuronales. Tesis de Grado en Ingenieria Informatica.
Facultad de Ingenieria. Universidad de Buenos Aires, 2004.

[Guha, S., Rastogi, R., Shim, K.; 1998] Guha, S., Rastogi, R., Shim, K., CURE:
An efficient clustering algorithm for large databases, 1998.

Damin A. MARTINELLI

- 84 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

[Han, J., Kamber, M.; 2001] Han, J., Kamber, M.; Data mining: Concepts and
techniques. Morgan Kauffmann Publishers, 2001.

[Hand, D., Mannila, H., Smyth, P.; 2001] Hand, D., Mannila, H., Smyth, P.,
Principles of data mining. The MIT Press, 2001.

[Hilera J. R., Martnez V.; 2000] Hilera J. R., Martnez V., Redes Neuronales
Artificiales: Fundamentos, modelos y aplicaciones, RA-MA Editorial, Madrid,
2000.

[Hinneburg, A., Keim, D.; 1998] Hinneburg, A., Keim, D., An Efficient
Approach to Clustering in Large Multimedia Databases with Noise. Institute of
Computer Science, University of Halle, Germany, 1998.

[Hochsztain, Esther; 2002] Hochsztain, Esther, Cmputo de los logros de un


sitio Web mediante el anlisis de las sesiones de sus usuarios. Facultad de
Informtica. Universidad Politcnica de Madrid, 2002.

[Hollmen J.; 1996] Hollmen J., Process Modeling using the Self-Organizing
Map, Helsinki University of Technology Department of Computer Science,
1996.

[Hoppfield J.J.; 1982] Hoppfield J.J., Neural networks and physical systems with
emergent collective computational abilities. National Academy of Sciences, vol
79, Abril, (Pginas 2554-2558), 1982.

[Huysmans, J., Baesens B., Vanthienen J.; 2003] Huysmans, J., Baesens B.,
Vanthienen J., Web Usage Mining: A Practical Study. Katholieke Universiteit
Leuven, Dept. of Applied Economic Sciences, 2003.

[Jain, A. K., Dubes, R. C.; 1988] Jain, A. K., Dubes, R. C., Algorithms for
Clustering Data. Printice Hall, 1988.

[Jansen, B. J., Spink, A., Saracevic, T.; 2000] Jansen, B. J., Spink, A., Saracevic,
T., Real life, real users, and real needs: A study and analysis of user queries on
the Web. Information Processing and Management, 2000.

[Jespersen, S.E., Thorhauge, J., Pedersen, T.B.; 2002] Jespersen, S.E.,


Thorhauge, J., Pedersen, T.B., A Hybrid Approach To Web Usage Mining.
Department of Computer Science. Aalborg University, 2002.

[Kaufman, L., Rousseeuw, P. J.; 1990] Kaufman, L., Rousseeuw, P. J., Finding
Groups in Data: an Introduction to Cluster Analysis. Wiley-Interscience, 1990.

[Keim, D.A.; 2002] Keim, D.A., Information Visualization and Visual Data
Mining. IEEE Transactions on Visualization and Computer Graphics, VOL. 7,
NO. 1, Enero-Marzo 2002.

[Kerkhofs, J., Vanhoof, K., Pannemans, D.; 2001] Kerkhofs, J., Vanhoof, K.,
Pannemans, D., Web Usage Mining on Proxy Servers: A Case Study. Limburg
University Centre, 2001.

[Kitsuregawa, M., Shintani, T., Pramudiono, I.; 2001] Kitsuregawa, M.,


Shintani, T., Pramudiono, I., Web mining and its SQL based parallel execution.
IEEE Workshop on Information Technology for Virtual Enterprises, 2001.

Damin A. MARTINELLI

- 85 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

[Kohonen, T.; 1995] Kohonen , T., Self-Organizing Maps. Springer-Verlag,


1995.

[Kosala, R., Blockeel, H.; 2000] Kosala, R., Blockeel, H., Web Mining
Research: A Survey. ACM SIGKDD, Julio 2000.

[Koutri, M., Avouris, N., Daskalaki, S.; 2004] Koutri, M., Avouris, N.,
Daskalaki, S., A survey on Web usage mining techniques for Web-based
adaptive hypermedia systems. University of Patras. Greece, 2004.

[Koutsoupias, Nikos; 2002] Koutsoupias, Nikos, Exploring Web Access Logs


with Correspondence Analysis. Department of Balkan Studies. Aristotle
University of Thessaloniki, 2002.

[Lalani, A.S.; 2003] Lalani, A.S., Data mining of Web access logs. School of
Computer Science and Information Technology. Royal Melbourne Institute of
Technology. Melbourne, Victoria, Australia, 2003.

[Lu H., Setiono R., Liu, H.; 1995] Lu H., Setiono R., Liu, H., NeuroRule: A
Connectionist Approach to Data Mining. Proceedings of the 21th International
Conference on Very Large Data Bases, pginas 478/489, Septiembre 1995.

[Mannila, H.; 1997] Mannila, H., Methods and problems in data mining. In
Proc. of International Conference on Database Theory, Delphi, Greece, 1997.

[Marbn Gallego, scar; 2002] Marbn Gallego, scar, Estudio de perfiles de


visitantes de un website a partir de los logs de los servidores Web aplicando
tcnicas de Data mining (Webmining). Facultad de Informtica. Universidad
Politcnica de Madrid, 2002.

[Marrone, Paolo; 2005] Marrone, Paolo, The Complete Guide: All you need to
know
about
Joone.
http://prdownloads.sourceforge.net/joone/JooneCompleteGuide.pdf?download.
Vigente al 19/11/2005.

[Masseglia, F., Poncelet, P., Teisseire, M.; 1999] Masseglia, F., Poncelet, P.,
Teisseire, M., Using data mining techniques on Web access logs to dynamically
improve hypertext structure. In ACM SigWeb Letters, 8(3): 13-19, 1999.

Mtrica Versin 3. http://edic.lsi.uniovi.es/metricav3/. Vigente al 19/11/2005.

[Mobasher, B., Cooley R., Srivastava, J.; 1999] Mobasher, B., Cooley R.,
Srivastava, J., Creating Adaptive Web Sites Through Usage-Based Clustering of
URLs, 1999.

[Mobasher, B., Dai, H., Luo, T., Nakagawa, M.; 2001] Mobasher, B., Dai, H.,
Luo, T., Nakagawa, M., Effective personalization based on association rule
discovery from Web usage data. In Proc. of the 3rd ACM Workshop on Web
Information and Data Management (WIDM01), Atlanta, 2001.

[Morales, Eduardo; 2003] Morales, Eduardo, Descubrimiento de Conocimiento


en
Bases
de
Datos.
http://dns1.mor.itesm.mx/~emorales/Cursos/KDD03/principal.html. Vigente al
19/11/2005.

Damin A. MARTINELLI

- 86 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

[Nasraoui, O., Pavuluri, M.; 2004] Nasraoui, O., Pavuluri, M., Accurate Web
recommendations Based in Profile-Specific URL-Predictor Neural Networks.
Dept. of Electrical and Computer Engineering. The University of Menphis,
2004.

[Ng, R., Han, J.; 1994] Ng, R., Han, J., Efficient and effective clustering method
for spatial data mining. In Proc. 1994 Int. Conf. Very Large Data Bases,
(Pginas 144/155), Santiago, Chile, Septiembre 1994.

[Paliouras, G, Papatheodorou, C., Karkaletsisi, V., Spyropoulous, C.; 2000]


Paliouras, G, Papatheodorou, C., Karkaletsisi, V., Spyropoulous, C., Clustering
the users of large Web sites into communities. In Proc. of the 17th International
Conference on Machine Learning (ICML'00), (Pginas 719/726). USA: Morgan
Kaufmann, 2000.

[Pazzani, M., Billsus D.; 1997] Pazzani, M., Billsus D., Learning and revising
user profiles: The identification of interesting Web sites. Machine Learning, 27,
(Pginas 313/331), 1997.

[Perkowitz, M., Etzioni, O.; 1998] Perkowitz, M., Etzioni, O., Adaptive Web
sites: Automatically synthesizing Web pages. In Proc. of the 15th National
Conference on Artificial Intelligence, (Pginas 727/732), 1998.

[Perkowitz, M., Etzioni, O.; 1997] Perkowitz, M., Etzioni, O., Adaptive sites:
Automatically learning from user access patterns. In Proc. of the Sixth
International WWW Conference, Santa Clara, CA, 1997.

[Pierrakos, D., Paliouras, G., Papatheodorou, C., Spyropulos, C.D.; 2001]


Pierrakos, D., Paliouras, G., Papatheodorou, C., Spyropulos, C.D.,
KOINOTITES: A Web Usage Mining Tool for Personalization, 2001.

[Pirolli, P., Pitkow J., Rao R.; 1996] Pirolli, P., Pitkow J., Rao R., Silk from a
sow's ear: Extracting usable structures from the Web. In Proc. on Human
Factors in Computing Systems (CHI'96). ACM Press, 1996.

[Pitkow, J.; 1997] Pitkow, J., In search of reliable usage data on the WWW.
Xerox Palo Alto Research Center. Palo Alto, California, 1997.

[Punin, J., Krishnamoorthy, M., Zaki, M.; 2001] Punin, J., Krishnamoorthy, M.,
Zaki, M., LOGML: Log Markup Language for Web Usage Mining. Computer
Science Department. Rensselaer Polytechnic Institute, 2001.

[Quinlan, J. R.; 1993] Quinlan, J. R., C4.5: Programs for Machine Learning.
Morgan Kaufmann, 1993.

[Rangarajan, S., Phoha, V., Balagani, K., Iyengar, S., Selmic, R.; 2003]
Rangarajan, S., Phoha, V., Balagani, K., Iyengar, S., Selmic, R., Web User
Clustering and Its Application to Prefetching Using ART Neural Networks.
Louisiana Tech University & Louisiana State University, 2003.

RFC 1413. Identification Protocol. http://www.rfc-editor.org/rfc/rfc1413.txt.


Vigente al 19/11/2005.

Damin A. MARTINELLI

- 87 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

RFC
2616

Hypertext
Transfer
Protocol

http://www.faqs.org/rfcs/rfc2616.html. Vigente al 19/11/2005.

[Ritter H., Martinetz T., Schulten K.; 1992] Ritter H., Martinetz T., Schulten K.,
Neural Computation and Self-Organizing Maps. Addison-Wesley Publishing
Company, 1992.

[Roussinov, D., Zhao JL., 2003] Roussinov, D., Zhao JL., Automatic discovery
of similarity relationships through Web mining. Decision Support Systems,
35(1), (149/166), 2003.

[Roy, A., 2000] Roy, A., Artificial Neural Networks - A Science in Trouble.
ACM SIGKDD, Enero 2000.

[Sheikholeslami, G., Chatterjee, S., Zhang, A.; 1998] Sheikholeslami, G.,


Chatterjee, S., Zhang, A., WaveCluster: A Multi-Resolution Clustering
Approach for Very Large Spatial Databases, 1998.

[Silverstein, C., Henzinger, M., Marais, H., Moricz, M.; 1999] Silverstein, C.,
Henzinger, M., Marais, H., Moricz, M., Analysis of a Very Large Web Search
Engine Query Log. ACM SIGIR Forum, 33(1), (6-12), 1999.

[Smith, K.A., Ng, A.; 2002] Smith, K.A., Ng, A., Web page clustering usign a
self-organizing map of user navigation patterns. School of Business Systems.
Monash University. Victoria. Australia, 2002.

[Spiliopoulou, M., Faulstich L.C.; 1999] Spiliopoulou, M., Faulstich LC.,


WUM: A Web utilization miner. In Proc. of EDBT Workshop on the Web and
Data Bases (WebDB'98), (Pginas 109/115). Springer Verlag, 1999.

[Spiliopoulou, M., Pohle, C., Faulstich, L. C.; 2000] Spiliopoulou, M., Pohle,
C., Faulstich, L. C., Improving the effectiveness of a website with Web usage
mining. In Advances in Web Usage Analysis and User Profiling, Berln,
Springer, (Pginas 14162), 2000.

[Spink, A., Xu, J.; 2000] Spink, A., Xu, J., Selected Results from a Large Study
of Web Searching: The Excite Study. Information Research.

http://InformationR.net/ir/6-1/paper90.html. Vigente al 19/11/2005.

[Spink, A., Wolfram, D., Jansen, B. J., Saracevic, T.; 2001] Spink, A., Wolfram,
D., Jansen, B. J., Saracevic, T., Searching the Web: The Public and Their
Queries. Journal of the American Society for Information Science and
Technology, 52(3), (226-234), 2001.

[Srikant, R., Yang, Y.; 2001] Srikant, R., Yang, Y., Mining Web logs to improve
website organization. In Proc. of the tenth International World Wide Web
Conference, Hong Kong, 2001.

[Srivastava, J., Cooley, R., Deshpande, M., Tan, P.N.; 2000] Srivastava, J.,
Cooley, R., Deshpande, M., Tan, P.N., Web Usage Mining: Discovery and
Applications of Usage Patterns from Web Data. ACM SIGKDD, Enero 2000.

Damin A. MARTINELLI

- 88 -

HTTP/1.1.

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

[Vesanto J., Alhoniemi E.; 2000] Vesanto J., Alhoniemi E., Clustering of the
Self-Organizing Map. IEEE transactions on neural networks, Vol 11, No. 3,
2000.

W3CLOG. Extended log file format. http://www.w3.org/TR/WD-logfile.html.


Vigente al 19/11/2005.

[Wang, R., Yang, Y., Muntz, R.; 1997] Wang, R., Yang, Y., Muntz, R., STING:
A Statistical Information Grid Approach to Spatial Data. Department of
Computer Science. University of California, Los Angeles, 1997.

WCA.
Web
characterization
terminology
&
http://www.w3.org/1999/05/WCA-terms/. Vigente al 19/11/2005.

[Weiss, S.M., Kulikowski, C.A.; 1991] Weiss, S.M., Kulikowski, C.A.,


Computer Systems that Learn: Classification and Prediction Methods from
Statistics, Neural Nets, Machine Learning, and Expert Systems. Morgan
Kaufman Publishers, 1991.

[Yan, T., Javobsen, J., Garcia-Molina, H., Dayal, U.; 1996] Yan, T., Javobsen,
J., Garcia-Molina, H., Dayal, U., From User Access Patterns to Dynamic
Hypertext Linking, 1996.

[Yang, Q., Zhang HH.; 2003] Yang, Q., Zhang HH., Web-log mining for
predictive Web caching. IEEE Transactions on Knowledge and Data
Engineering, Vol. 15, No. 4, (Pginas 1050/1053), 2003.

[Zhang, D., Dong Y.; 2003] Zhang, D., Dong Y., A novel Web usage mining
approach for search engines. Computer Networks, 39(3), (303/310), 2003.

[Zhang, T., Ramakrishnan R., Livny, M.; 1996] Zhang, T., Ramakrishnan R.,
Livny, M., BIRCH: an efficient data clustering method for very large databases.
In Proc. 1996 ACM-SIGMOD Int. Conf. Management of Data, Montreal,
Canada, Junio 1996.

Damin A. MARTINELLI

- 89 -

definitions.

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

A. Apndice I: Joone
A.1. Descripcin de Joone.................................................................................................... 91
A.1.1. Capas de Neuronas ................................................................................................ 92
A.1.1.1. Capa Lineal..................................................................................................... 92
A.1.1.2. Capa Lineal Parcial......................................................................................... 93
A.1.1.3. Capa Sigmoidal............................................................................................... 93
A.1.1.4. Capa Tangente Hiperblica ............................................................................ 93
A.1.1.5. Capa Logartmica............................................................................................ 93
A.1.1.6. Capa Senoidal ................................................................................................. 93
A.1.1.7. Capa con Retraso ............................................................................................ 93
A.1.1.8. Capa con Contexto.......................................................................................... 93
A.1.1.9. Capa de Gauss ................................................................................................ 93
A.1.1.10. Capa RBF Gaussiana .................................................................................... 94
A.1.1.11. Capa El Ganador Se Lleva Todo............................................................... 94
A.1.1.12. Capa Gaussiana............................................................................................. 94
A.1.2. Sinapsis .................................................................................................................. 94
A.1.2.1. Sinapsis Directa .............................................................................................. 94
A.1.2.2. Sinapsis Completa .......................................................................................... 94
A.1.2.3. Sinapsis con Retraso ....................................................................................... 95
A.1.2.4. Sinapsis de Kohonen....................................................................................... 95
A.1.2.5. Sinapsis de Sanger .......................................................................................... 95
A.1.3. Sinapsis de Entrada................................................................................................ 95
A.1.3.1. Sinapsis de Entrada de Archivo...................................................................... 95
A.1.3.2. Sinapsis de Entrada de URL ........................................................................... 96
A.1.3.3. Sinapsis de Entrada de Excel.......................................................................... 96
A.1.3.4. Sinapsis de Entrada de JDBC ......................................................................... 96
A.1.3.5. Sinapsis de Entrada de Yahoo Finance........................................................... 96
A.1.3.6. Sinapsis de Entrada de Memoria .................................................................... 96
A.1.4. Sinapsis de Salida .................................................................................................. 96
A.1.5. Sinapsis Maestra .................................................................................................... 96
A.1.6. El Monitor.............................................................................................................. 97
A.2. Eleccin de Joone ......................................................................................................... 97

Damin A. MARTINELLI

- 90 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

A.1. Descripcin de Joone


Joone (http://www.joone.org/) es un framework en Java para construir y ejecutar
aplicaciones de inteligencia artificial basadas en redes neuronales. Las aplicaciones
realizadas con Joone pueden ser construidas en una maquina local, entrenadas en un
ambiente distribuido y ejecutarse en cualquier dispositivo [Marrone, 2005].
Joone consiste de una arquitectura modular basada en componentes vinculados que
pueden ser extendidos para construir nuevos algoritmos de aprendizaje y nuevas
arquitecturas de redes neuronales.
Todos los componentes poseen algunas caractersticas bsicas especificas, como
persistencia, multihilos (multithreading), serializacin y parametrizacin. Estas
caractersticas garantizan escalabilidad, reliability y expansibilidad, todas caractersticas
obligatorias para alcanzar el destino final de los estndares futuros en el mundo de la
inteligencia artificial.
Cada red neuronal esta compuesta de varias capas de neuronas conectadas mediante
sinapsis [Figura A.1]. Pueden crearse variadas arquitecturas de redes neuronales
dependiendo de cmo las neuronas son conectadas.

Figura A.1. Conexiones entre capas de neuronas

En la figura se observa un ejemplo de una red con dos capas y conectada mediante
una sinapsis. Cada capa esta compuesta de una cierta cantidad de neuronas, cada una de las
cuales poseen las mismas caractersticas (funcin de transferencia, tasa de aprendizaje,
etc.).
Una red neuronal construida con Joone puede estar compuesta de cualquier cantidad
de capas de diferentes tipos. Cada capa procesa sus seales de entrada, aplica la funcin de
transferencia y enva los patrones resultantes a la sinapsis que la conecta con la capa
siguiente.

Damin A. MARTINELLI

- 91 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Para asegurar que sea posible construir cualquier arquitectura de red neuronal, se
necesita un mtodo para transferir los patrones a travs de la red sin un punto central de
control. Para cumplir este objetivo, cada capa de neuronas es implementada como un objeto
Runnable, de modo que cada capa se ejecute independientemente de las otras, obteniendo
los patrones de entrada, aplicndoles la funcin de transferencia y colocando los patrones
resultantes en la sinapsis de salida, para que las capas siguientes puedan recibirlos,
procesarlos y continuar con las dems capas, hasta llegar a la capa de salida.
Este mecanismo de transporte es tambin utilizado durante la etapa de entrenamiento
para propagar el error desde la capa de salida a la capa de entrada [Figura A.2], permitiendo
modificar los pesos de las conexiones utilizando el algoritmo de aprendizaje seleccionado
(backpropagation, por ejemplo).

Figura A.2. Mecanismo de transporte en la red neuronal

Las capas y las sinapsis poseen sus propios mecanismos para ajustar los pesos
dependiendo del algoritmo de aprendizaje seleccionado.

A.1.1. Capas de Neuronas


El objeto Capa (Layer) es el elemento bsico que forma una red neuronal.
Cada capa esta compuesta de neuronas con las mismas caractersticas, que transfieren
los patrones de entrada a patrones de salida ejecutando una funcin de transferencia.
Existen diferentes tipos de capas, las cuales son detalladas a continuacin.

A.1.1.1. Capa Lineal


La Capa Lineal (LinearLayer) es el tipo de capa ms simple y solamente transfiere los
patrones de entrada a la salida aplicando una transformacin lineal.
La Capa Lineal es utilizada comnmente como un buffer, colocado como la capa de
entrada de la red, para permitir enviar copias de los patrones de entra sin modificaciones a
varias capas ocultas de la red.

Damin A. MARTINELLI

- 92 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

A.1.1.2. Capa Lineal Parcial


La Capa Lineal Parcial (BiasedLinearLayer) utiliza como funcin de transferencia la
adicin de un parmetro ajustable al valor de entrada. El parmetro puede ser modificado
durante la etapa de entrenamiento.

A.1.1.3. Capa Sigmoidal


La Capa Sigmoidal (SigmoidLayer) aplica una funcin de transferencia sigmoidal a
los patrones de entrada, limitando la salida al rango [0,1].

A.1.1.4. Capa Tangente Hiperblica


La Capa Tangente Hiperblica (TanhLayer) es similar a la Capa Sigmoidal excepto
que aplica la funcin tangente hiperblica, limitando la salida al rango [-1,1].

A.1.1.5. Capa Logartmica


La Capa Logartmica (LogarithmicLayer) aplica una funcin de transferencia
logartmica a los patrones de entrada, resultando en una salida cuyo rango es [0,infinito].

A.1.1.6. Capa Senoidal


La Capa Senoidal (SineLayer) utiliza como salida la funcin seno evaluada en la
suma de los valores de las entradas ponderadas por sus pesos.

A.1.1.7. Capa con Retraso


La Capa con Retraso (DelayLayer) aplica la suma de los valores de entrada a una
lnea de retraso, de modo que cada neurona es atrasada por la cantidad de iteraciones
especificada como parmetro.

A.1.1.8. Capa con Contexto


La Capa con Contexto (ContextLayer) es similar a la capa lineal excepto que posee
una conexin auto recurrente entre su salida y su entrada, que propaga hacia atrs la salida
de la neurona en el paso anterior.

A.1.1.9. Capa de Gauss

Damin A. MARTINELLI

- 93 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

La Capa de Gauss (GaussLayer) posee como salida la suma de las entradas


ponderadas por los pesos, aplicada a una funcin gaussiana.

A.1.1.10. Capa RBF Gaussiana


La Capa RBF Gaussiana (RBFGaussianLayer) posee como salida la suma de las
entradas ponderadas por los pesos, aplicada a una funcin gaussiana, al igual que la Capa
de Gauss, pero es posible ajustar el centro de la curva de gauss utilizada.

A.1.1.11. Capa El Ganador Se Lleva Todo


La Capa El Ganador Se Lleva Todo (WinnerTakeAllLayer) recibe las distancias
Euclideas entre los pesos de la sinapsis anterior ( una sinapsis de Kohonen) y sus entradas.
La capa calcula cual es el nodo que posee la menor distancia a la entrada y enva como
salida el valor 1 para ese nodo y 0 para los dems.

A.1.1.12. Capa Gaussiana


La Capa Gaussiana (GaussianLayer) es similar a la capa El Ganador Se Lleva
Todo, pero las neuronas son activadas de acuerda a una superficie gaussiana centrada en la
neurona mas activa (la ganadora).

A.1.2. Sinapsis
El objeto Sinapsis (Synapse) representa la conexin entre dos capas de neuronas,
permitiendo que un patrn se transfiera de una capa a la otra.
Las sinapsis poseen los pesos de las conexiones, los cuales son modificados en la
etapa de entrenamiento de acuerdo al algoritmo de aprendizaje seleccionado.

A.1.2.1. Sinapsis Directa


La Sinapsis Directa (DirectSynapse) representa una conexin directa uno a uno entre
los nodos de dos capas, las cuales poseen la misma cantidad de neuronas.
Cada conexin posee un peso igual a 1 que no es modificado en la etapa de
entrenamiento.

A.1.2.2. Sinapsis Completa

Damin A. MARTINELLI

- 94 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

La Sinapsis Completa (FullSynapse) conecta todos los nodos de una capa con todos
los nodos de otra capa.
Los pesos de sus conexiones se modifican en la etapa de entrenamiento de acuerdo al
algoritmo de aprendizaje seleccionado.

A.1.2.3. Sinapsis con Retraso


La Sinapsis con Retraso (DelayedSynapse) posee una arquitectura similar a la
Sinapsis Completa, pero cada conexin es implementada usando una matriz de filtros FIR
(Finite Impulse Response, Respuesta a Impulso Finito), que retrasa las conexiones
permitiendo implementar un algoritmo de propagacin hacia atrs temporal.

A.1.2.4. Sinapsis de Kohonen


La Sinapsis de Kohonen (KohonenSynapse) pertenece a un tipo especial de
componentes que permite construir redes neuronales no supervisadas.
Durante la etapa de entrenamiento, los pesos de sus conexiones son ajustados para
mapear los patrones de entrada N-dimensionales a un mapa de 2 dimensiones.

A.1.2.5. Sinapsis de Sanger


La Sinapsis de Sanger (SangerSynapse) se utiliza para construir redes neuronales no
supervisadas que implementan el algoritmo PCA (Principal Component Analysis, Anlisis
de Componentes Principales).
El Anlisis de Componentes Principales permite extraer los componentes ms
importantes de una seal, permitiendo separar el ruido de la seal original.

A.1.3. Sinapsis de Entrada


Joone tambin posee varias sinapsis de entrada, por donde son introducidos los
patrones a la red. Existen diversos tipos de sinapsis de entrada, dependiendo del origen de
los patrones, las cuales se detallan a continuacin.

A.1.3.1. Sinapsis de Entrada de Archivo


La Sinapsis de Entrada de Archivo (FileInputSynapse) permite introducir los patrones
a la red mediante un archivo. El archivo debe contener columnas de valores enteros o reales
delimitados por punto y coma.

Damin A. MARTINELLI

- 95 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

A.1.3.2. Sinapsis de Entrada de URL


La Sinapsis de Entrada de URL (URLInputSynapse) permite introducir los patrones a
la red desde una URL. El archivo apuntado por la URL debe tener el mismo formato que el
aceptado por la Sinapsis de Entrada de Archivo.
Los protocolos soportados son HTTP y FTP.

A.1.3.3. Sinapsis de Entrada de Excel


La Sinapsis de Entrada de Excel (ExcelInputSynapse) permite introducir los patrones
a la red mediante un archivo de Excel.

A.1.3.4. Sinapsis de Entrada de JDBC


La Sinapsis de Entrada de JDBC (JDBCInputSynapse) permite introducir los patrones
a la red mediante casi cualquier base de datos, utilizando el controlador JDBC para ese tipo
de base de datos.

A.1.3.5. Sinapsis de Entrada de Yahoo Finance


La Sinapsis de Entrada de Yahoo Finance (YahooFinanceInputSynapse) provee
soporte para la entrada de datos financieros, contactando los servicios de Yahoo Finance y
obteniendo los datos histricos del smbolo y el rango de fechas seleccionado.

A.1.3.6. Sinapsis de Entrada de Memoria


La Sinapsis de Entrada de Memoria (MemoryInputSynapse) permite introducir los
patrones a la red mediante un vector de nmeros reales.

A.1.4. Sinapsis de Salida


Joone tambin posee sinapsis de salida que permiten a la red neuronal escribir los
patrones de salida en varios soportes de almacenamiento, como por ejemplo, archivos
ASCII, hojas de calculo de Excel, tablas de base de datos utilizando JDBC y vectores de
Java.

A.1.5. Sinapsis Maestra

Damin A. MARTINELLI

- 96 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

La funcin de la Sinapsis Maestra (TeacherSynapse) es calcular la diferencia entre la


salida de una red neuronal y el valor deseado obtenido de un origen externo de datos.
La diferencia calculada es inyectada hacia atrs en la red, comenzando en la capa de
salida, de modo que cada componente pueda procesar el error para modificar los pesos de
las conexiones aplicando el algoritmo de aprendizaje seleccionado.
Tambin existen sinapsis para intercambiar entre dos o ms orgenes de datos, como
por ejemplo un conjunto de datos de entrenamiento y otro conjunto de datos de validacin,
como as tambin entre dos o ms salidas distintas para los patrones.

A.1.6. El Monitor
El objeto Monitor representa en punto central donde se encuentran todos los
parmetros necesarios para que los componentes de la red neuronal funcionen
correctamente, como la velocidad de aprendizaje, el momento, el algoritmo de aprendizaje,
la cantidad de ciclos de entrenamiento, el ciclo actual, etc.
Cada capa de neuronas y cada sinapsis de una red neuronal recibe un puntero a una
instancia de un objeto Monitor, de modo que, cuando el usuario desea cambiar algn
parmetro, solo debe hacerlo en el objeto Monitor.
El Monitor tambin provee a la aplicacin que lo utiliza de un mecanismo de
notificaciones basado en varios eventos arrojados cuando una accin en particular sucede.
Por ejemplo, una aplicacin externa puede ser informada cuando la red neuronal comienza
o termina los ciclos de entrenamiento, cuando finaliza un ciclo o cuando el valor del error
global cambia durante la etapa de entrenamiento.

A.2. Eleccin de Joone


Se eligi Joone para la realizacin de la herramienta por varios motivos:

Clases en Java que permiten integrarlo en una aplicacin: debido a que


Joone esta compuesto de clases en java, se lo puede integrar como parte de otra
aplicacin, pudiendo generar un sistema completo que utilice las ventajas de las
redes neuronales de Joone.

Manejo de componentes que permiten definir cualquier arquitectura de


red: ya que Joone esta construido sobre la base de componente modulares, que
permiten conectar distintos tipos de componentes, formando cualquier
arquitectura de red, pudiendo obtener exactamente la red necesaria.

Completa documentacin: documentacin completa, explicando el


funcionamiento de los componentes y como integrarlos para generar distintos
tipos de redes neuronales.

Damin A. MARTINELLI

- 97 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Cdigo fuente abierto: se posee a disposicin el cdigo fuente, permitiendo, en


caso que sea necesario, modificar alguno de los comportamientos de los
componentes para adecuarlos al funcionamiento deseado.

Licencia LGPL: distribuido bajo la licencia GNU Lesser General Public


License, permitiendo su uso como parte de la aplicacin de prueba a desarrollar.

Damin A. MARTINELLI

- 98 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

B. Apndice II: Manual del Usuario


El Sistema Automtico de Identificacin de Hbitos de Uso de Sitios Web involucra
todo un proceso que consiste en la carga y el preprocesado de log, la identificacin de las
sesiones de usuarios, para finalmente poder determinar los hbitos de uso. Este proceso
toma como entrada un archivo de log de un servidor Web y da como resultado una serie de
reportes que ayudarn a identificar los hbitos de uso del sitio Web analizado.
B.1. Pantalla Principal ........................................................................................................ 100
B.2. Registracin en el Sistema .......................................................................................... 101
B.3. Iniciar Sesin en el Sistema ........................................................................................ 101
B.4. Creacin de Proyectos ................................................................................................ 102
B.5. Listado de Proyectos ................................................................................................... 104
B.6. Pantalla Principal Proyecto ......................................................................................... 104
B.7. Men Principal............................................................................................................ 105
B.7.1. Resumen Proyecto ............................................................................................... 105
B.7.2. Ver Archivos........................................................................................................ 106
B.7.3. Logs ..................................................................................................................... 106
B.7.4. Construir Sesiones ............................................................................................... 107
B.7.5. Construir Clusters ................................................................................................ 107
B.7.6. Sesiones/Clusters ................................................................................................. 108
B.7.7. Detalle Sesiones ................................................................................................... 108
B.7.8. Pginas/Clusters................................................................................................... 109
B.7.9. Cerrar Proyecto .................................................................................................... 109
B.8. Subir Archivo de Log ................................................................................................. 109
B.9. Cargar Log .................................................................................................................. 111
B.10. Ver Log Cargado ...................................................................................................... 114
B.11. Construccin de Sesiones de Usuarios ..................................................................... 115
B.12. Contruccin de Grupos de Usuarios ......................................................................... 118
B.12.1. Construccin de Grupos de Usuarios Utilizando la Red Neuronal SOM.......... 118
B.12.2. Construccin de Grupos de Usuarios Utilizando el Algoritmo K-Means ......... 120
B.13. Ver Cantidad de Sesiones en Cada Grupo de Usuario Descubierto ......................... 123
B.13.1. Red Neuronal Mapa Auto-Organizativo (SOM)................................................ 123
B.13.2. Algoritmo K-Means ........................................................................................... 124
B.13.3. Comparacin ...................................................................................................... 125
B.14. Ver Detalle de Sesiones Indicando el Grupo de Usuarios al Cual Pertenece ........... 126
B.14.1. Red Neuronal Mapa Auto-Organizativo (SOM)................................................ 126
B.14.2. Algoritmo K-Means ........................................................................................... 128
B.14.3. Comparacin ...................................................................................................... 130
B.15. Ver Pginas Ms Frecuentes en Cada Grupo de Usuarios Descubierto ................... 132
B.15.1. Red Neuronal Mapa Auto-Organizativo (SOM)................................................ 132
B.15.2. Algoritmo K-Means ........................................................................................... 134
B.15.3. Comparacin ...................................................................................................... 136
B.16. Cerrar Sesin............................................................................................................. 138

Damin A. MARTINELLI

- 99 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

B.1. Pantalla Principal


Desde la pantalla principal se permite que los usuario inicien sesin en el sistema
utilizando el formulario ubicado en el ngulo superior derecho [Figura B.1]. Tambin se
tiene la opcin de registrarse como usuario del sistema clickeando en el boton
Registrarse.

Figura B.1. Pantalla Principal

Damin A. MARTINELLI

- 100 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

B.2. Registracin en el Sistema


Luego de clickear en el boton Registrarse se despliega la pantalla de registracin de
usuarios [Figura B.2], en la cual se debe completar los campos, colocando en el campo
Nombre el nombre de usuario y en los dos campos inferiores (Clave y Repetir Clave) la
clave de acceso, repitiendola para evitar errores de tipeo. Una vez llenados estos datos,
clickeando sobre el botn Registrarse se procede a la registracin del usuario.

Figura B.2. Registracin en el Sistema

A continuacin, se procede a la registracin del usuario prueba [Figura B.3], el cual


ser utilizado en este manual para ejemplificar el uso del sistema.

Figura B.3. Registracin usuario prueba

B.3. Iniciar Sesin en el Sistema


Para iniciar sesin en el sistema, se deben rellenar los datos correspondiente al
usuario en el formulario de inicio de sesin [Figura B.4]. En el campo Nombre coloque el
nombre de usuario y en el campo Password coloque la contrasea. Luego presione el botn
Entrar.

Damin A. MARTINELLI

- 101 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Figura B.4. Inicio de Sesin en el Sistema

Iniciamos sesin en el sistema con el usuario prueba registrado anteriormente


[Figura B.4]. Luego de presionar el botn Entrar, se ingresar al listado de los proyectos,
permitiendo agregar nuevos proyectos al sistema.

B.4. Creacin de Proyectos


La primera vez que acceda al sistema, no se tendr ningn proyecto, por lo que se
visualizar la siguiente pantalla [Figura B.5].

Damin A. MARTINELLI

- 102 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Figura B.5. Proyectos del Usuario

Para agregar un nuevo proyecto se debe presionar sobre el boton Nuevo Proyecto,
ubicado en el men de la izquierda.
Luego, completar el campo Nombre, indicando el nombre del proyecto a crear, y el
campo Descripcin, con la descripcin del mismo [Figura B.6]. Presionar sobre Crear
Proyecto para crear un proyecto nuevo.
A modo de ejemplo, se visualiza la creacin de un proyecto de prueba llamado
proyecto, cuya descripcin es Proyecto de Prueba [Figura B.6].

Figura B.6. Creacin de Proyectos

Damin A. MARTINELLI

- 103 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

B.5. Listado de Proyectos


En la misma pantalla desde donde se pueden crear proyectos, tambin se despliegan
todos los proyectos del usuario en el sistema [Figura B.7]. Para acceder a uno de ellos se
debe clickear el nombre del mismo. Si presiona sobre el tacho de residuos ubicado a la
derecha de cada proyecto, se proceder a eliminar el proyecto, previa solicitud de
confirmacin.

Figura B.7. Listado de Proyectos

B.6. Pantalla Principal Proyecto


Luego de seleccionar un proyecto, se accede a la pantalla principal del proyecto
[Figura B.8].

Damin A. MARTINELLI

- 104 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Figura B.8. Pantalla Principal Proyecto

En el centro de la pantalla se muestra un resumen del proyecto seleccionado,


indicando su nombre, la cantidad de registros de log cargados en el mismo y la cantidad de
sesiones cargadas en dicho proyecto. Sobre la izquierda se despliega el men principal del
sistema. Para luego poder acceder a esta pantalla que muestra el resumen del proyecto, se
debe seleccionar el primer elemento del men Resumen Proyecto.

B.7. Men Principal


El men principal del sistema se encuentra a la izquierda de la pantalla.

B.7.1. Resumen Proyecto


Permite ver el resumen del proyecto, mostrando informacin especifica sobre el
proyecto actual [Figura B.9].

Damin A. MARTINELLI

- 105 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Figura B.9. Resumen Proyecto

B.7.2. Ver Archivos


Permite ver y obtener los archivos de log subidos al servidor y todos los archivos de
entrada y salida al algoritmo K-Means y a la red neuronal SOM [Figura B.10].

Figura B.10. Men Ver Archivos

B.7.3. Logs
Permite subir un nuevo archivo de log, el cual estara disponible para todos los
proyectos del usuario, cargar ese log pre-procesandolo y ver todos los registros del log
cargado [Figura B.11].

Damin A. MARTINELLI

- 106 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Figura B.11. Men Logs

B.7.4. Construir Sesiones


Permite la contruccin de las sesiones de los usuarios, procesando el log cargado.

B.7.5. Construir Clusters


Permite contruir los grupos de usuarios utilizando la red neuronal SOM o el
algoritmo K-Means [Figura B.12].

Figura B.12. Men Construir Clusters

Damin A. MARTINELLI

- 107 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

B.7.6. Sesiones/Clusters
Permite acceder a las estadsticas mostrando la cantidad de sesiones en cada grupo de
usuarios generados utilizando la red neuronal mapa auto-organizativo (SOM), el algoritmo
K-Means y una comparacin entre estos dos [Figura B.13].

Figura B.13. Men Sesiones/Clusters

B.7.7. Detalle Sesiones


Permite acceder al detalle de todas las sesiones de usuario identificadas, indicando a
que grupo de usuarios pertenecen, teniendo en cuenta a los grupos generados mediante la
red neuronal mapa auto-organizativo (SOM), el algoritmo K-Means o una comparacin
entre estos dos [Figura B.14].

Figura B.14. Men Detalle Sesiones

Damin A. MARTINELLI

- 108 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

B.7.8. Pginas/Clusters
Permite acceder al detalle de las pginas mas frecuentes entre los accesos de los
usuarios de cada grupo descubierto mediante la red neuronal SOM, el algoritmo K-Means o
una comparacin entre estos dos [Figura B.15].

Figura B.15. Men Pginas/Clusters

B.7.9. Cerrar Proyecto


Cierra el proyecto actual y despliega la pantalla de seleccin de proyecto, permitiendo
adems la creacin de un proyecto nuevo.

B.8. Subir Archivo de Log


Para copiar al servidor un archivo de log, se debe acceder al sub-elemento Subir
Archivo de Log del elemento Logs del men principal del sistema [Figura B.16].

Damin A. MARTINELLI

- 109 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Figura B.16. Men Subir Archivo de Log

Luego, se despliega la pantalla que permite copiar un archivo de log al servidor


[Figura B.17]. El campo Descripcin corresponde con la descripcin del archivo de log a
copiar, y el campo Log, con el archivo de log mismo. Mediante el boton Browse... puede
navegar su disco en busca del archivo de log a copiar. Al presionar el boton Subir Log, se
procede a copiar el archivo de log al servidor. Una vez copiado el archivo, el sistema
despliega el nombre y la descripcin de todos los archivos de log del usuario.

Figura B.17. Subir Archivo de Log

A modo de ejemplo, se muestra cmo se procedera a copiar el archivo de log


seleccionado, cuya descripcin es Archivo de log de prueba, al servidor [Figura B.18].

Damin A. MARTINELLI

- 110 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Figura B.18. Ejemplo Subir Archivo de Log

B.9. Cargar Log


Para cargar un archivo de log y pre-procesarlo, se debe acceder al sub-elemento
Cargar Log del elemento Logs del men principal del sistema [Figura B.19].

Figura B.19. Men Cargar Log

Luego, se despliega la pantalla que permite cargar un archivo de log y pre-procesarlo


[Figura B.20].

Damin A. MARTINELLI

- 111 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Figura B.20. Cargar Log

Descripcin de campos:

Log: se selecciona el archivo de log subido al servidor que se desea utilizar.

Tipo de Log: se selecciona el tipo de log que posee el archivo de log


seleccionado, los cuales pueden ser CLF (formato de log comn) o
CLF+REFERRER+AGENT (formato de log comn, ms los campos referrer y
agent).

Extensiones: se indican las extensiones de los recursos que sern tenidos en


consideracin para pre-procesar el archivo de log. Estas extensiones deben estar
separadas por comas. Por defecto, las extensiones a considerar son php, html y
htm.

Cdigos: se indican los codigos de error devueltos por el servidor Web, que
seran tenidos en consideracin para pre-procesar el archivo de log. Estos
cdigos deben estar separados por comas. Por defecto, el nico codigo a
considerar es el cdigo 200, el cual significa respuesta correcta.

ID Pginas: se indican los nombre de las variables GET que son consideradas
diferenciadoras de pginas distintas dentro del sitio Web analizado. Estos
nombres deben estar separados por comas. Por defecto no se posee ningn
nombre de variable identificadora de pginas distintas.

Al presionar el boton Cargar Log, se procede a cargar y pre-procesar el archivo de


log. Una vez pre-procesado, el sistema muestra informacin sobre el log cargado [Figura
B.22].
A modo de ejemplo, se muestra el preproceso del archivo de log do2.com.ar-access,
de formato CLF, teniendo en cuenta solo los registros que solicitan recursos con
extensiones php, html o htm, y que hayan devuelto el codigo de error 200 (solicitud
exitosa). Adems, se establece a las variables pgina y page como variables identificadoras
de pginas distintas [Figura B.21].

Damin A. MARTINELLI

- 112 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Figura B.21. Ejemplo Cargar Log

Luego de presionar el boton Cargar Log y que termine el proceso de pre-procesado


se despliega la siguiente pantalla, mostrando un resumen del proceso realizado [Figura
B.22].

Figura B.22. Resultado Cargar Log

En el resumen del proyecto seleccionando el elemento Resumen Proyecto del men


principal, se ver la siguiente pantalla, indicando la cantidad de registros de log cargados e
indicando que todava no se posee ninguna sesin de usuario construida [Figura B.23].

Damin A. MARTINELLI

- 113 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Figura B.23. Resumen Proyecto luego de Cargar Log

B.10. Ver Log Cargado


Para ver los registros de un log cargado y pre-procesarlo, se debe acceder al subelemento Ver Log Cargado del elemento Logs del men principal del sistema [Figura
B.24].

Figura B.24. Men Ver Log Cargado

Luego se despliega la siguiente pantalla donde se muestra la informacin de todos los


registros cargados, en forma pginada [Figura B.25].

Damin A. MARTINELLI

- 114 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Figura B.25. Ver Log Cargado

B.11. Construccin de Sesiones de Usuarios


Para contruir las sesiones de usuarios utilizando el log cargado y preprocesado, se
debe acceder al elemento Construir Sesiones del men principal del sistema.
Luego, se despliega la pantalla que permite configurar las opciones para la
contruccin de las sesiones de usuarios [Figura B.26].

Damin A. MARTINELLI

- 115 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Figura B.26. Construccin de Sesiones de Usuarios

Descripcin de campos:

Cantidad mnima de pginas en una sesin: se indica la cantidad mnima de


pginas que debe poseer una sesin de usuario. Por defecto, posee un valor de 3.

Timeout de sesin: se indica el tiempo mximo entre dos solicitudes


consecutivas del mismo usuario para ser consideradas pertenecientes a la misma
sesin. Este campo debe completarse de la forma HHMMSS, donde HH son las
horas (si el valor es menor a una hora, no debe colocarse nada), MM son los
minutos y SS son los segundos. El valor por defecto es de treinta minutos.

Frecuencia mnima de pgina en el log: se indican la frecuencia mnima en la


totalidad del log que debe poseer una pgina para ser considerada en la
contruccin de sesiones. El valor por defecto es 1.

Al presionar el botn Construir Sesiones, se procede a la contruccin de las sesiones


de usuarios.
A modo de ejemplo, se proceder a construir las sesiones de usuarios utilizando el
valor 3 como la cantidad mnima de pginas en una sesin, el valor de 15 minutos para el
timeout de sesin y un valor de 10 para la frecuencia mnima de pgina en el log [Figura
B.27].

Damin A. MARTINELLI

- 116 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Figura B.27. Ejemplo Construccin Sesiones de Usuarios

Luego de presionar el botn Construir Sesiones y al terminar el proceso de


construccin de sesiones, se despliega la siguiente pantalla, mostrando un resumen del
proceso realizado [Figura B.28].

Figura B.28. Resultado Construccin Sesiones de Usuarios

Si ahora nos dirigimos al resumen del proyecto seleccionando el elemento Resumen


Proyecto del men principal, veremos la siguiente pantalla, indicando la cantidad de
registros de log cargados e indicando la cantidad de sesiones de usuario cargadas [Figura
B.29].

Damin A. MARTINELLI

- 117 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Figura B.29. Resumen Proyecto luego de la Construccin de Sesiones de Usuarios

B.12. Contruccin de Grupos de Usuarios


B.12.1. Construccin de Grupos de Usuarios Utilizando la Red Neuronal
SOM
Para construir los grupos de usuarios utilizando una red neuronal mapa autoorganizativo (SOM), se debe acceder al sub-elemento SOM del elemento Construir
Clusters del men principal del sistema [Figura B.30].

Figura B.30. Men Construir Clusters

Luego, se despliega la pantalla que permite configurar las opciones para la


contruccin de los grupos de usuarios [Figura B.31].

Damin A. MARTINELLI

- 118 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Figura B.31. Construccin de Grupos de Usuarios Utilizando la Red Neuronal SOM

Descripcin de campos:

Archivo donde se guardaran los patrones de entrada a la red: se indica el


nombre del archivo donde se guardaran los patrones de entrada a la red
neuronal.

Archivo donde se guardara la informacin sobre los clusters descubiertos: se


indica el nombre del archivo donde se guardara la informacin sobre los clusters
descubiertos.

Cantidad de ciclos de entrenamiento: se indica la cantidad de ciclos de


entrenamiento que se realizan con cada patrn de entrada a la red neuronal.

Cardinalidad del mapa de clusterizacin (NxN): se indica la cardinalidad del


mapa de clusterizacin, indicando el valor N, que resultar en un mapa de N x
N.

Al presionar el botn Construir Clusters, se procede a la contruccin de los clusters


de usuarios. Una vez construidos los clusters, el sistema muestra informacin sobre los
clusters creados.
A modo de ejemplo, se procede a construir los grupos de usuarios, obteniendo un
mapa de 2 x 2, representando 4 grupos de usuarios. Se realizarn 10 ciclos de
entrenamiento con los patrones de entrada. Los archivos de entrada y salida de la red sern
almacenados con los nombres indicados en el formulario [Figura B.32].

Damin A. MARTINELLI

- 119 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Figura B.32. Ejemplo Construccin de Grupos de Usuarios SOM

Luego de presionar el botn Construir Clusters y al terminar el proceso de


construccin de grupos de usuarios, se despliega la siguiente pantalla, mostrando un
resumen del proceso realizado [Figura B.33].

Figura B.33. Resultado Construccin de Grupos de Usuarios SOM

B.12.2. Construccin de Grupos de Usuarios Utilizando el Algoritmo KMeans


Para construir los grupos de usuarios utilizando el algoritmo K-Means, se debe
acceder al sub-elemento K-Means del elemento Construir Clusters del men principal del
sistema [Figura B.34].

Damin A. MARTINELLI

- 120 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Figura B.34. Men Construir Clusters

Luego, se despliega la pantalla que permite configurar las opciones para la


contruccin de los grupos de usuarios [Figura B.35].

Figura B.35. Construccin de Grupos de Usuarios Utilizando el Algoritmo K-Means

Descripcin de campos:

Archivo donde se guardaran los patrones de entrada en fomato ARFF: se


indica el nombre del archivo donde se guardaran los patrones de entrada en
formato ARFF, que utilizara como entrada el algoritmo K-Means.

Archivo donde se guardara la informacin sobre los clusters descubiertos: se


indica el nombre del archivo donde se guardara la informacin sobre los clusters
descubiertos.

Cantidad de clusters a descubrir (K): se indica la cantidad de grupos de


usuarios distintos a descubrir. Correspone con el valor K del algoritmo KMeans.

Damin A. MARTINELLI

- 121 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Al presionar el botn Construir Clusters, se procede a la contruccin de los clusters


de usuarios. Una vez construidos los clusters, el sistema muestra informacin sobre los
clusters creados.
A modo de ejemplo, se procede a construir los grupos de usuarios, obteniendo 4
grupos de usuarios. Los archivos de entrada y salida del algoritmo K-Means sern
almacenados con los nombres indicados en el formulario [Figura B.36].

Figura B.36. Ejemplo Construccin de Grupos de Usuarios K-Means

Luego de presionar el botn Construir Clusters y al terminar el proceso de


construccin de grupos de usuarios, se despliega la siguiente pantalla, mostrando un
resumen del proceso realizado [Figura B.37].

Figura B.37. Resultado Construccin de Grupos de Usuarios K-Means

Damin A. MARTINELLI

- 122 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

B.13. Ver Cantidad de Sesiones en Cada Grupo de Usuario


Descubierto
B.13.1. Red Neuronal Mapa Auto-Organizativo (SOM)
Para acceder al detalle de la cantidad de sesiones de usuario que posee cada grupo de
usuarios descubiertos mediante la red neuronal mapa auto-organizativo (SOM), se debe
acceder al sub-elemento SOM del elemento Sesiones/Clusters del men principal del
sistema [Figura B.38].

Figura B.38. Men Sesiones/Clusters SOM

Luego, se despliega la siguiente pantalla donde se muestra la informacin sobre la


cantidad de sesiones en cada grupo de usuarios [Figura B.39].

Damin A. MARTINELLI

- 123 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Figura B.39. Cantidad de Sesiones en cada Grupo de Usuarios SOM

B.13.2. Algoritmo K-Means


Para acceder al detalle de la cantidad de sesiones de usuario que posee cada grupo de
usuarios descubiertos mediante el algoritmo K-Means, se debe acceder al sub-elemento KMeans del elemento Sesiones/Clusters del men principal del sistema [Figura B.40].

Figura B.40. Men Sesiones/Clusters K-Means

Damin A. MARTINELLI

- 124 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Luego, se despliega la siguiente pantalla donde se muestra la informacin sobre la


cantidad de sesiones en cada grupo de usuarios [Figura B.41].

Figura B.41. Cantidad de Sesiones en cada Grupo de Usuarios K-Means

B.13.3. Comparacin
Para acceder al detalle de la cantidad de sesiones de usuario que posee cada grupo de
usuarios descubiertos mediante la red neuronal mapa auto-organizativo (SOM)
comparndolo con los descubiertos mediente el algoritmo K-Means, se debe acceder al subelemento Comparacin del elemento Sesiones/Clusters del men principal del sistema
[Figura B.42].

Damin A. MARTINELLI

- 125 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Figura B.42. Men Sesiones/Clusters Comparacin

Luego, se despliega la siguiente pantalla donde se muestra la informacin sobre la


cantidad de sesiones en cada grupo de usuarios [Figura B.43].

Figura B.43. Comparacin Cantidad de Sesiones en cada Grupo de Usuarios

B.14. Ver Detalle de Sesiones Indicando el Grupo de Usuarios al


Cual Pertenece
B.14.1. Red Neuronal Mapa Auto-Organizativo (SOM)
Para acceder al detalle de las sesiones indicando el grupo de usuario descubierto
mediante la red neuronal mapa auto-organizativo (SOM) al cual pertenece, se debe acceder

Damin A. MARTINELLI

- 126 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

al sub-elemento SOM del elemento Detalle Sesiones del men principal del sistema
[Figura B.44].

Figura B.44. Men Detalle Sesiones SOM

Luego, se despliega la siguiente pantalla donde se muestra las sesiones de usuarios


con su correspondiente nmero de grupo al cual pertenece [Figura B.45].

Damin A. MARTINELLI

- 127 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Figura B.45. Detalle Sesiones SOM

B.14.2. Algoritmo K-Means


Para acceder al detalle de las sesiones indicando el grupo de usuario descubierto
mediante el algoritmo K-Means al cual pertenece, se debe acceder al sub-elemento KMeans del elemento Detalle Sesiones del men principal del sistema [Figura B.46].

Damin A. MARTINELLI

- 128 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Figura B.46. Men Detalle Sesiones K-Means

Luego, se despliega la siguiente pantalla donde se muestra las sesiones de usuarios


con su correspondiente nmero de grupo al cual pertenece [Figura B.47].

Damin A. MARTINELLI

- 129 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Figura B.47. Detalle Sesiones K-Means

B.14.3. Comparacin
Para acceder al detalle de las sesiones indicando el grupo de usuario descubierto
mediante la red neuronal mapa auto-organizativo (SOM) y el algoritmo K-Means al cual
pertenece, se debe acceder al sub-elemento Comparacin del elemento Detalle Sesiones
del men principal del sistema [Figura B.48].

Damin A. MARTINELLI

- 130 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Figura B.48. Men Detalle Sesiones Comparacin

Luego, se despliega la siguiente pantalla donde se muestra las sesiones de usuarios


con su correspondiente nmero de grupo al cual pertenece [Figura B.49].

Figura B.49. Detalle Sesiones Comparacin

Damin A. MARTINELLI

- 131 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

B.15. Ver Pginas Ms Frecuentes en Cada Grupo de Usuarios


Descubierto
B.15.1. Red Neuronal Mapa Auto-Organizativo (SOM)
Para acceder al detalle de las pginas ms frecuentes entre las sesiones de los usuarios
de cada grupo descubierto mediante la red neuronal mapa auto-organizativo (SOM), se
debe acceder al sub-elemento SOM del elemento Pginas/Clusters del men principal del
sistema [Figura B.50].

Figura B.50. Men Pginas/Clusters SOM

Luego, se despliega la siguiente pantalla donde se muestra las pginas ms frecuentes


entre las sesiones de cada grupo de usuarios [Figura B.51].

Damin A. MARTINELLI

- 132 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Figura B.51. Pginas/Clusters SOM

Cambiando los campos Cambiar Porcentaje Mnimo a: y Cambiar Cantidad Mxima


de Pginas por Cluster a: se cambia el porcentaje mnimo que debe poseer cada pgina para
mostrarse en el detalle y se cambia la cantidad mxima de pginas que se muestran por
grupo de usuarios, respectivamente.

Damin A. MARTINELLI

- 133 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

B.15.2. Algoritmo K-Means


Para acceder al detalle de las pginas ms frecuentes entre las sesiones de los usuarios
de cada grupo descubierto mediante el algoritmo K-Means, se debe acceder al subelemento K-Means del elemento Pginas/Clusters del men principal del sistema [Figura
B.52].

Figura B.52. Men Pginas/Clusters K-Means

Luego, se despliega la siguiente pantalla donde se muestra las pginas ms frecuentes


entre las sesiones de cada grupo de usuarios [Figura B.53].

Damin A. MARTINELLI

- 134 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Figura B.53. Pginas/Clusters K-Means

Cambiando los campos Cambiar Porcentaje Mnimo a: y Cambiar Cantidad Mxima


de Pginas por Cluster a: se cambia el porcentaje mnimo que debe poseer cada pgina para
mostrarse en el detalle y se cambia la cantidad mxima de pginas que se muestran por
grupo de usuarios, respectivamente.

Damin A. MARTINELLI

- 135 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

B.15.3. Comparacin
Para acceder al detalle de las pginas ms frecuentes entre las sesiones de los usuarios
de cada grupo descubierto mediante la red neuronal SOM comparandolas con la de los
grupos descubiertos mediante el algoritmo K-Means, se debe acceder al sub-elemento
Comparacin del elemento Pginas/Clusters del men principal del sistema [Figura
B.54].

Figura B.54. Men Pginas/Clusters Comparacin

Luego, se despliega la siguiente pantalla donde se muestra las pginas ms frecuentes


entre las sesiones de cada grupo de usuarios [Figura B.55].

Damin A. MARTINELLI

- 136 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Figura B.55. Pginas/Clusters Comparacin

Damin A. MARTINELLI

- 137 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Cambiando los campos Cambiar Porcentaje Mnimo a: y Cambiar Cantidad Mxima


de Pginas por Cluster a: se cambia el porcentaje mnimo que debe poseer cada pgina para
mostrarse en el detalle y se cambia la cantidad mxima de pginas que se muestran por
grupo de usuarios, respectivamente.

B.16. Cerrar Sesin


Para cerrar la sesin en el sistema, se debe presionar el botn Cerrar Sesin, ubicado
en el ngulo superior derecho. De esta forma, se cierra la sesin en el sistema, volviendo a
la pgina principal.

Damin A. MARTINELLI

- 138 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

C. Apndice III: Documentacin JavaDoc


C.1. Resumen Clases .......................................................................................................... 140
C.2. Class BinarySessionClusterBean ................................................................................ 141
C.3. Class ClusterCounterBean .......................................................................................... 143
C.4. Class ClusterCounterGraphBean ................................................................................ 147
C.5. Class ConfigFileParserBean ....................................................................................... 150
C.6. Class CreateProjectBean............................................................................................. 153
C.7. Class CreateUserBean................................................................................................. 156
C.8. Class DeleteProjectBean............................................................................................. 158
C.9. Class FileBean ............................................................................................................ 160
C.10. Class FilesViewBean ................................................................................................ 164
C.11. Class InputMakerBean.............................................................................................. 168
C.12. Class KMeansBean ................................................................................................... 172
C.13. Class LogBean .......................................................................................................... 176
C.14. Class LogCleanerBean.............................................................................................. 179
C.15. Class LogFilesViewBean.......................................................................................... 182
C.16. Class LogFileUploadBean ........................................................................................ 184
C.17. Class LoginBean ....................................................................................................... 189
C.18. Class LogLoaderBean............................................................................................... 190
C.19. Class LogViewBean ................................................................................................. 196
C.20. Class NumericSessionClusterBean........................................................................... 200
C.21. Class PageCounterBean ............................................................................................ 202
C.22. Class PagesInClustersBean....................................................................................... 205
C.23. Class PagesInClustersViewBean .............................................................................. 208
C.24. Class SessionClusterBean......................................................................................... 213
C.25. Class SessionMakerBean .......................................................................................... 218
C.26. Class SessionSaver ................................................................................................... 222
C.27. Class SessionsClusterViewBean............................................................................... 226
C.28. Class SOMBean ........................................................................................................ 231
C.29. Class UserBean ......................................................................................................... 237

Damin A. MARTINELLI

- 139 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

C.1. Resumen Clases


Package ar.com.do2.iadh
Class Summary

BinarySessionClusterBean

Clase encargada de cargar en la base de datos la


informacin de clusterizacin almacenada en un archivo,
que posee en cada linea numeros binarios indicando si la
sesion pertenece o no al cluster correspondiente a la
posicion de dicho numero binario.

ClusterCounterBean

Clase utilizada para contabilizar la cantidad de sesiones


existentes en cada cluster descubierto.

ClusterCounterGraphBean

Clase utilizada para graficar la cantidad de sesiones en cada


cluster descubierto.

ConfigFileParserBean

Clase utilizada para obtener la configuracin de la


aplicacin.

CreateProjectBean

Clase utilizada para la creacion de un nuevo proyecto.

CreateUserBean

Clase utilizada para la creacion de nuevos usuarios.

DeleteProjectBean

Clase utilizada para la eliminacion de proyectos.

FileBean

Clase utilizada para guardar informacion en la base de datos


sobre los archivo utilizados en la herramienta.

FilesViewBean

Clase utilizada para obtener todos los archivos de un cierto


tipo, para un usuario y proyecto dado.

InputMakerBean

Clase encargada de crear el archivo de sesiones a utilizar


como entrada para el proceso de clusterizacion.

KMeansBean

Clase encargada de realizar la clusterizacion mediante KMeans

LogBean

Clase que representa la informacion de un registro de log a


almacenar en la base de datos.

LogCleanerBean

Clase utilizada para borrar todo los registros de log de un


proyecto.

LogFilesViewBean

Clase utilizada para listar todos los archivos de log cargados


por un usuario

LogFileUploadBean

Clase utilizada para guardar en la base de datos informacion


sobre un archivo de log y copiar el archivo al servidor.

LoginBean

Clase utilizada para iniciar sesin en la herramienta.

LogLoaderBean

Clase utilizada para leer el archivo de log y obtener la


informacion del mismo para almacenarla en la base de

Damin A. MARTINELLI

- 140 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Class Summary
datos.

LogViewBean

Clase encargada de obtener el detalle de todos los registros


de log cargados en la base de datos por un proyecto de un
usuario.

Clase encargada de cargar en la base de datos la


informacion de clusterizacion almacenada en un archivo,
NumericSessionClusterBean
que posee en cada linea el numero de cluster al cual
pertenece la sesion.

PageCounterBean

Clase encargarda de cargar todas las pginas encontradas en


un archivo de log.

PagesInClustersBean

Clase encargada de obtener la informacion de que pginas


aparecen en las sesiones de cada cluster.

PagesInClustersViewBean

Clase que se encarga de obtener la informacion de las


pginas que accedieron los usuarios de cada cluster,
indicando el porcentaje de acceso.

SessionClusterBean

Clase utilizada para contabilizar los clusters descubiertos y


cargar esta informacion en la base de datos.

SessionMakerBean

Clase SessionMakerBean encargada de armar las sesiones a


partir de los registros del log almacenados en la tabla log.

SessionSaver

Clase SessionSaver encargada de ir armando las sesiones y


guardarlas en la tabla session.

SessionsClusterViewBean

Clase encargada de obtener el detalle de las sesiones y a que


cluster pertenece cada una.

SOMBean

Clase SOMBean encargada de clusterizar las sesiones de


usuarios utilizando la red neuronal SOM.

UserBean

Clase que se encarga del manejo de la informacion de un


usuario y sus proyectos.

C.2. Class BinarySessionClusterBean


java.lang.Object
ar.com.do2.iadh.SessionClusterBean
ar.com.do2.iadh.BinarySessionClusterBean
ar.com.do2.iadh.BinarySessionClusterBean
public class BinarySessionClusterBean
extends SessionClusterBean

Damin A. MARTINELLI

- 141 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Clase encargada de cargar en la base de datos la informacion de clusterizacion


almacenada en un archivo, que posee en cada linea numeros binarios indicando si
la sesion pertenece o no al cluster correspondiente a la posicion de dicho numero
binario.
Author:
Damian Martinelli
Field Summary
Fields inherited from class ar.com.do2.iadh.SessionClusterBean
conn, filename, project, pstm, pstmDelete, type, user

Constructor Summary
BinarySessionClusterBean()

Method Summary
void count(java.lang.String inputFilename)

Realiza el conteo de los clusters descubiertos tomando como entrada el archivo


donde se encuentra a que cluster pertenece cada sesion.

Methods inherited from class ar.com.do2.iadh.SessionClusterBean


getCount, getFile, getProject, getType, getUser, setFile, setProject, setType, setUser

Methods inherited from class java.lang.Object


clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Constructor Detail

BinarySessionClusterBean
public BinarySessionClusterBean()
BinarySessionClusterBean
throws java.lang.Exception

Throws:
java.lang.Exception

Method Detail

Damin A. MARTINELLI

- 142 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

count
public void count(java.lang.String
inputFilename)
count
throws java.lang.Exception

Description copied from class: SessionClusterBean


Realiza el conteo de los clusters descubiertos tomando como entrada el archivo
donde se encuentra a que cluster pertenece cada sesion.
Specified by:
count in class SessionClusterBean
Parameters:
inputFilename - Nombre del archivo donde se encuentra la informacion de los
clusters descubiertos.
Throws:
java.lang.Exception

C.3. Class ClusterCounterBean


java.lang.Object
ar.com.do2.iadh.ClusterCounterBean
ar.com.do2.iadh.ClusterCounterBean
public class ClusterCounterBean
extends java.lang.Object

Clase utilizada para contabilizar la cantidad de sesiones existentes en cada cluster


descubierto.
Author:
Damian Martinelli
Constructor Summary
ClusterCounterBean()

Constructor de la clase ClusterCounter, encargada de contabilizar la cantidad de


sesiones en cada cluster descubierto.

Method Summary
void count()

Realiza el conteo de la cantidad de sesiones en cada cluster


descubierto

Damin A. MARTINELLI

- 143 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

int getClustersCount()

Obtiene la cantidad de clusters descubiertos.


java.lang.String getCount()

Realiza el conteo de la cantidad de sesiones en cada cluster


descubierto, si todos los atributos necesarios han sido seteados,
devolviendo la cantidad de sesiones en cada cluster.
java.lang.String getNextCluster()

Obtiene el numero del proximo cluster.


java.lang.String getNextClusterSessions()

Obtiene la cantidad de sesiones del proximo cluster.


java.lang.String getProject()

Obtiene el nombre del proyecto utilizado.


java.lang.String getType()

Obtiene el tipo de clustering utilizado.


java.lang.String getUser()

Obtiene el nombre de usuario utilizado.


void goFirstCluster()

Inicializa para la lectura de la cantidad de sesiones en cada cluster


descubierto.
boolean hasNextCluster()

Indica si existe otro cluster.


static void main(java.lang.String[] args)
void setProject(java.lang.String projectName)

Setea el nombre del proyecto que se utilizara.


void setType(java.lang.String typeClustering)

Setea el tipo de clustering a utilizar.


void setUser(java.lang.String userName)

Setea el nombre de usuario que se utilizara.

Methods inherited from class java.lang.Object


clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Constructor Detail

ClusterCounterBean

Damin A. MARTINELLI

- 144 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

public ClusterCounterBean()
ClusterCounterBean
throws java.lang.Exception

Constructor de la clase ClusterCounter, encargada de contabilizar la cantidad de


sesiones en cada cluster descubierto.
Throws:
java.lang.Exception

Method Detail

count
public void count()
count
throws java.lang.Exception

Realiza el conteo de la cantidad de sesiones en cada cluster descubierto


Throws:
java.lang.Exception

getCount
public java.lang.String getCount()
getCount
throws java.lang.Exception

Realiza el conteo de la cantidad de sesiones en cada cluster descubierto, si todos los


atributos necesarios han sido seteados, devolviendo la cantidad de sesiones en cada
cluster.
Returns:
Cantidad de sesiones en cada cluster.
Throws:
java.lang.Exception

getClustersCount
public int getClustersCount()
getClustersCount

Obtiene la cantidad de clusters descubiertos.


Returns:
Cantidad de clusters descubiertos.

goFirstCluster
public void goFirstCluster()
goFirstCluster

Inicializa para la lectura de la cantidad de sesiones en cada cluster descubierto.

Damin A. MARTINELLI

- 145 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

hasNextCluster
public boolean hasNextCluster()
hasNextCluster

Indica si existe otro cluster.


Returns:
true si existen mas clusters, false sino.

getNextCluster
public java.lang.String getNextCluster()
getNextCluster

Obtiene el numero del proximo cluster.


Returns:
Numero del proximo cluster.

getNextClusterSessions
public java.lang.String getNextClusterSessions()
getNextClusterSessions

Obtiene la cantidad de sesiones del proximo cluster.


Returns:
Cantidad de sesiones del proximo cluster.

setUser
public void setUser(java.lang.String
userName)
setUser

Setea el nombre de usuario que se utilizara.


Parameters:
userName - Nombre del usuario.

getUser
public java.lang.String getUser()
getUser

Obtiene el nombre de usuario utilizado.


Returns:
Nombre del usuario.

setProject
public void setProject(java.lang.String
projectName)
setProject

Setea el nombre del proyecto que se utilizara.


Parameters:
projectName - Nombre del proyecto.

Damin A. MARTINELLI

- 146 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

getProject
public java.lang.String getProject()
getProject

Obtiene el nombre del proyecto utilizado.


Returns:
Nombre del proyecto.

setType
public void setType(java.lang.String
typeClustering)
setType

Setea el tipo de clustering a utilizar.


Parameters:
typeClustering - Tipo de clustering a utilizar.

getType
public java.lang.String getType()
getType

Obtiene el tipo de clustering utilizado.


Returns:
Tipo de clustering utilizado.

main
public static void main(java.lang.String[]
args)
main
throws java.lang.Exception

Throws:
java.lang.Exception

C.4. Class ClusterCounterGraphBean


java.lang.Object
ar.com.do2.iadh.ClusterCounterGraphBean
public class ClusterCounterGraphBean
extends java.lang.Object

Clase utilizada para graficar la cantidad de sesiones en cada cluster descubierto.

Damin A. MARTINELLI

- 147 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Author:
Damian Martinelli
Constructor Summary
ClusterCounterGraphBean()

Constructor de la clase ClusterCounterGraphBean.

Method Summary
double[] getData()

Obtiene los datos utilizados en el grafico.


java.lang.String getGraph()

Obtiene el path al grafico generado.


java.lang.String[] getLabels()

Obtiene las etiquetas del grafico.


java.lang.String getMap()

Obtiene el mapa con informacion del grafico generado.


java.lang.String getPath()

Obtiene el path base donde se generan los graficos.


void setData(double[] data)

Setea los datos a utilizar en el grafico.


void setLabels(java.lang.String[] labels)

Setea las etiquetas del grafico.


void setPath(java.lang.String path)

Setea el path base donde se generaran los graficos.

Methods inherited from class java.lang.Object


clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Constructor Detail

ClusterCounterGraphBean
public ClusterCounterGraphBean()
ClusterCounterGraphBean
throws java.lang.Exception

Constructor de la clase ClusterCounterGraphBean.


Throws:
java.lang.Exception

Damin A. MARTINELLI

- 148 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Method Detail

getGraph
public java.lang.String getGraph()
getGraph

Obtiene el path al grafico generado.


Returns:
Path al grafico generado.

getMap
public java.lang.String getMap()
getMap

Obtiene el mapa con informacion del grafico generado.


Returns:
Informacion del grafico.

getData
public double[] getData()
getData

Obtiene los datos utilizados en el grafico.


Returns:
Datos del grafico.

setData
public void setData(double[]
data)
setData

Setea los datos a utilizar en el grafico.


Parameters:
data - Datos del grafico.

getLabels
public java.lang.String[] getLabels()
getLabels

Obtiene las etiquetas del grafico.


Returns:
Etiquetas del grafico.

setLabels
public void setLabels(java.lang.String[]
labels)
setLabels

Setea las etiquetas del grafico.

Damin A. MARTINELLI

- 149 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Parameters:
labels - Etiquetas del grafico.

getPath
public java.lang.String getPath()
getPath

Obtiene el path base donde se generan los graficos.


Returns:
Path base utilizado.

setPath
public void setPath(java.lang.String
path)
setPath

Setea el path base donde se generaran los graficos.


Parameters:
path - Path base a utilizar.

C.5. Class ConfigFileParserBean


java.lang.Object
ar.com.do2.iadh.ConfigFileParserBean
ar.com.do2.iadh.ConfigFileParserBean

All Implemented Interfaces:


java.io.Serializable
public class ConfigFileParserBean
extends java.lang.Object
implements java.io.Serializable

Author:
Damian Martinelli
See Also:
Serialized Form
Constructor Summary
ConfigFileParserBean()

Method Summary
java.lang.String getDatabaseName()

Damin A. MARTINELLI

- 150 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

java.lang.String getDatabasePass()
java.lang.String getDatabaseServer()
java.lang.String getDatabaseUser()
java.lang.String getDirFiles()
static void main(java.lang.String[] args)
void setDatabaseName(java.lang.String databaseName)
void setDatabasePass(java.lang.String databasePass)
void setDatabaseServer(java.lang.String databaseServer)
void setDatabaseUser(java.lang.String databaseUser)
void setDirFiles(java.lang.String dirFiles)

Methods inherited from class java.lang.Object


clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Constructor Detail

ConfigFileParserBean
public ConfigFileParserBean()
ConfigFileParserBean

Method Detail

getDatabaseServer
public java.lang.String getDatabaseServer
getDatabaseServer()
eServer

Damin A. MARTINELLI

- 151 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

setDatabaseServer
public void setDatabaseServer(java.lang.String
databaseServer)
setDatabaseServer

getDatabaseName
public java.lang.String getDatabaseName()
getDatabaseName

setDatabaseName
public void setDatabaseName(java.lang.String
databaseName)
setDatabaseName

getDatabaseUser
public java.lang.String getDatabaseUser()
getDatabaseUser

setDatabaseUser
public void setDatabaseUser(java.lang.String
databaseUser)
setDatabaseUser

getDatabasePass
public java.lang.String getDatabasePass()
getDatabasePass

setDatabasePass
public void setDatabasePass(java.lang.String
databasePass)
setDatabasePass

getDirFiles
public java.lang.String getDirFiles()
getDirFiles

setDirFiles
public void setDirFiles(java.lang.String
dirFiles)
setDirFiles

main
Damin A. MARTINELLI

- 152 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

public static void main(java.lang.String[]


args)
main
throws java.lang.Exception

Throws:
java.lang.Exception

C.6. Class CreateProjectBean


java.lang.Object
ar.com.do2.iadh.CreateProjectBean

All Implemented Interfaces:


java.io.Serializable
public class CreateProjectBean
extends java.lang.Object
implements java.io.Serializable

Clase utilizada para la creacion de un nuevo proyecto.


Author:
Damian Martinelli
See Also:
Serialized Form
Constructor Summary
CreateProjectBean()

Contructor de la clase CreateProjectBean, utilizada para la creacion de un nuevo


proyecto.

Method Summary
boolean createNewProject()

Crea un nuevo proyecto, si ha sido seteado el nombre del usuario y el


nombre del proyecto a crear.
java.lang.String getDescription()

Obtiene la descripcion utilizada.


java.lang.String getNewProject()

Crea un nuevo proyecto, si ha sido seteado el nombre del usuario y el


nombre del proyecto a crear.

Damin A. MARTINELLI

- 153 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

java.lang.String getProject()

Obtiene el nombre del proyecto utilizado.


java.lang.String getUser()

Obtiene el nombre de usuario utilizado.


void setDescription(java.lang.String description)

Setea la descripcion del proyecto a crear.


void setProject(java.lang.String projectName)

Setea el nombre del proyecto que se creara.


void setUser(java.lang.String userName)

Setea el nombre de usuario que se utilizara.

Methods inherited from class java.lang.Object


clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Constructor Detail

CreateProjectBean
public CreateProjectBean()
CreateProjectBean
throws java.lang.Exception

Contructor de la clase CreateProjectBean, utilizada para la creacion de un nuevo


proyecto.
Throws:
java.lang.Exception

Method Detail

setUser
public void setUser(java.lang.String
userName)
setUser

Setea el nombre de usuario que se utilizara.


Parameters:
userName - Nombre del usuario.

getUser
public java.lang.String getUser()
getUser

Obtiene el nombre de usuario utilizado.


Returns:
Nombre del usuario.

Damin A. MARTINELLI

- 154 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

setDescription
public void setDescription(java.lang.String
description)
setDescription

Setea la descripcion del proyecto a crear.


Parameters:
description - Descripcion del proyecto a crear.

getDescription
public java.lang.String getDescription()
getDescription

Obtiene la descripcion utilizada.

setProject
public void setProject(java.lang.String
projectName)
setProject

Setea el nombre del proyecto que se creara.


Parameters:
projectName - Nombre del proyecto.

getProject
public java.lang.String getProject()
getProject

Obtiene el nombre del proyecto utilizado.


Returns:
Nombre del proyecto.

getNewProject
public java.lang.String getNewProject()
getNewProject

Crea un nuevo proyecto, si ha sido seteado el nombre del usuario y el nombre del
proyecto a crear.
Returns:
Nombre del proyecto creado.

createNewProject
public boolean createNewProject()
createNewProject

Crea un nuevo proyecto, si ha sido seteado el nombre del usuario y el nombre del
proyecto a crear.

Damin A. MARTINELLI

- 155 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Returns:
true si creo el proyecto correctamente, false sino.

C.7. Class CreateUserBean


java.lang.Object
ar.com.do2.iadh.CreateUserBean
public class CreateUserBean
extends java.lang.Object

Clase utilizada para la creacion de nuevos usuarios.


Author:
Damian Martinelli
Constructor Summary
CreateUserBean()

Contructor de la clase CreateUserBean, encargado de la creacion de nuevos


usuarios.

Method Summary
boolean createNewUser()

Crea un nuevo usuario, si fueron ya seteados el nombre de usuario y


la contrasea.
java.lang.String getPassword()

Obtiene la contrasea utilizada.


java.lang.String getUser()

Obtiene el nombre de usuario utilizado.


void setPassword(java.lang.String pass)

Setea la contrasea del usuario a crear.


void setUser(java.lang.String userName)

Setea el nombre de usuario que se creara.

Methods inherited from class java.lang.Object


clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Damin A. MARTINELLI

- 156 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Constructor Detail

CreateUserBean
public CreateUserBean()
CreateUserBean
throws java.lang.Exception

Contructor de la clase CreateUserBean, encargado de la creacion de nuevos


usuarios.
Throws:
java.lang.Exception

Method Detail

setUser
public void setUser(java.lang.String
userName)
setUser

Setea el nombre de usuario que se creara.


Parameters:
userName - Nombre del usuario.

getUser
public java.lang.String getUser()
getUser

Obtiene el nombre de usuario utilizado.


Returns:
Nombre del usuario.

setPassword
public void setPassword(java.lang.String
pass)
setPassword

Setea la contrasea del usuario a crear.


Parameters:
pass - Contrasea del usuario.

getPassword
public java.lang.String getPassword()
getPassword

Obtiene la contrasea utilizada.


Returns:
Contrasea utilizada.

createNewUser
Damin A. MARTINELLI

- 157 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

public boolean createNewUser()


createNewUser

Crea un nuevo usuario, si fueron ya seteados el nombre de usuario y la contrasea.


Returns:
true si se pudo crear el usuario, false sino.

C.8. Class DeleteProjectBean


java.lang.Object
ar.com.do2.iadh.DeleteProjectBean

All Implemented Interfaces:


java.io.Serializable
public class DeleteProjectBean
extends java.lang.Object
implements java.io.Serializable

Clase utilizada para la eliminacion de proyectos.


Author:
Damian Martinelli
See Also:
Serialized Form
Constructor Summary
DeleteProjectBean()

Contructor de la clase DeleteProjectBean, encargada de eliminar un proyecto y todo


los elementos asociados al mismo.

Method Summary
boolean deleteProject()

Borra el proyecto, si fueron seteados el nombre de usuario y el


proyecto.
java.lang.String getDeleteProject()

Borra el proyecto, si fueron seteados el nombre de usuario y el


proyecto.
java.lang.String getProject()

Obtiene el nombre del proyecto utilizado.

Damin A. MARTINELLI

- 158 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

java.lang.String getUser()

Obtiene el nombre de usuario utilizado.


void setProject(java.lang.String projectName)

Setea el nombre del proyecto que se eliminara.


void setUser(java.lang.String userName)

Setea el nombre de usuario que se utilizara.

Methods inherited from class java.lang.Object


clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Constructor Detail

DeleteProjectBean
public DeleteProjectBean()
DeleteProjectBean
throws java.lang.Exception

Contructor de la clase DeleteProjectBean, encargada de eliminar un proyecto y todo


los elementos asociados al mismo.
Throws:
java.lang.Exception

Method Detail

setUser
public void setUser(java.lang.String
userName)
setUser

Setea el nombre de usuario que se utilizara.


Parameters:
userName - Nombre del usuario.

getUser
public java.lang.String getUser()
getUser

Obtiene el nombre de usuario utilizado.


Returns:
Nombre del usuario.

setProject
public void setProject(java.lang.String
projectName)
setProject

Setea el nombre del proyecto que se eliminara.


Damin A. MARTINELLI

- 159 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Parameters:
projectName - Nombre del proyecto.

getProject
public java.lang.String getProject()
getProject

Obtiene el nombre del proyecto utilizado.


Returns:
Nombre del proyecto.

getDeleteProject
public java.lang.String getDeleteProject()
getDeleteProject

Borra el proyecto, si fueron seteados el nombre de usuario y el proyecto.


Returns:
"BORRADO" si pudo borrar el proyecto, "ERROR" sino.

deleteProject
public boolean deleteProject()
deleteProject

Borra el proyecto, si fueron seteados el nombre de usuario y el proyecto.


Returns:
true si pudo eliminar al proyecto, false sino.

C.9. Class FileBean


java.lang.Object
ar.com.do2.iadh.FileBean

All Implemented Interfaces:


java.io.Serializable
public class FileBean
extends java.lang.Object
implements java.io.Serializable

Clase utilizada para guardar informacion en la base de datos sobre los archivo
utilizados en la herramienta.
Author:
Damin A. MARTINELLI

- 160 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Damian Martinelli
See Also:
Serialized Form

Constructor Summary
FileBean()

Constructor de la clase FileBean.

Method Summary
java.lang.String getDescription()

Obtiene la descripcion del archivo utilizado.


java.lang.String getFile()

Obtiene el nombre del archivo utilizado.


java.lang.String getFilePath()

Obtiene el path y el nombre del archivo que se cargo.


java.lang.String getProject()

Obtiene el nombre del proyecto utilizado.


java.lang.String getType()

Obtiene el tipo de archivo a cargar.


java.lang.String getUser()

Obtiene el nombre de usuario utilizado.


void setDescription(java.lang.String description)

Setea la descricion del archivo.


void setFile(java.lang.String filename)

Setea el nombre del archivo.


void setFilePath(java.lang.String set)

Si todos los atributos necesarios fueron seteados, setea el path y el


nombre del archivo donde se debe copiar el archivo y carga la informacion
del archivo en la base de datos.
void setProject(java.lang.String projectName)

Setea el nombre del proyecto que se utilizara.


void setSavePath(java.lang.String savePath)

Setea el path donde debe ser guardado el archivo.


void setType(java.lang.String typeFile)

Setea el tipo de archivo a cargar.


void setUser(java.lang.String userName)

Setea el nombre de usuario que se utilizara.

Damin A. MARTINELLI

- 161 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Methods inherited from class java.lang.Object


clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Constructor Detail

FileBean
public FileBean()
FileBean
throws java.lang.Exception

Constructor de la clase FileBean.


Throws:
java.lang.Exception

Method Detail

setFile
public void setFile(java.lang.String
filename)
setFile
throws java.lang.Exception

Setea el nombre del archivo.


Parameters:
filename - Nombre del archivo.
Throws:
java.lang.Exception

getFile
public java.lang.String getFile()
getFile

Obtiene el nombre del archivo utilizado.


Returns:
Nombre del archivo utilizado.

setUser
public void setUser(java.lang.String
userName)
setUser

Setea el nombre de usuario que se utilizara.


Parameters:
userName - Nombre del usuario.

getUser
Damin A. MARTINELLI

- 162 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

public java.lang.String getUser()


getUser

Obtiene el nombre de usuario utilizado.


Returns:
Nombre del usuario.

setDescription
public void setDescription(java.lang.String
description)
setDescription

Setea la descricion del archivo.


Parameters:
description - Descripcion del archivo.

getDescription
public java.lang.String getDescription()
getDescription

Obtiene la descripcion del archivo utilizado.


Returns:
Descripcion del archivo utilizado.

setProject
public void setProject(java.lang.String
projectName)
setProject

Setea el nombre del proyecto que se utilizara.


Parameters:
projectName - Nombre del proyecto.

getProject
public java.lang.String getProject()
getProject

Obtiene el nombre del proyecto utilizado.


Returns:
Nombre del proyecto.

setFilePath
public void setFilePath(java.lang.String
set)
setFilePath

Si todos los atributos necesarios fueron seteados, setea el path y el nombre del
archivo donde se debe copiar el archivo y carga la informacion del archivo en la
base de datos.
Parameters:
set - No se utiliza. Solo por compatibilidad con JavaBeans.

Damin A. MARTINELLI

- 163 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

getFilePath
public java.lang.String getFilePath()
getFilePath

Obtiene el path y el nombre del archivo que se cargo.


Returns:
Path completo del archivo cargado.

setSavePath
public void setSavePath(java.lang.String
savePath)
setSavePath

Setea el path donde debe ser guardado el archivo.


Parameters:
savePath - Path donde debe ser guardado el archivo.

setType
public void setType(java.lang.String
typeFile)
setType

Setea el tipo de archivo a cargar.


Parameters:
typeFile - Tipo de archivo a cargar.

getType
public java.lang.String getType()
getType

Obtiene el tipo de archivo a cargar.


Returns:
Tipo de archivo a cargar.

C.10. Class FilesViewBean


java.lang.Object
ar.com.do2.iadh.FilesViewBean

All Implemented Interfaces:


java.io.Serializable
public class FilesViewBean
extends java.lang.Object

Damin A. MARTINELLI

- 164 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

implements java.io.Serializable

Clase utilizada para obtener todos los archivos de un cierto tipo, para un usuario y
proyecto dado.
Author:
Damian Martinelli
See Also:
Serialized Form
Constructor Summary
FilesViewBean()

Constructor de la clase FilesViewBean.

Method Summary
java.lang.String getNextDescription()

Obtiene la descripcion del proximo archivo.


java.lang.String getNextFile()

Obtiene el nombre del proximo archivo.


java.lang.String getProject()

Obtiene el nombre del proyecto utilizado.


java.lang.String getType()

Obtiene el tipo de archivo utilizado.


java.lang.String getUser()

Obtiene el nombre de usuario utilizado.


void goFirstFile()

Inicializa para la lectura de todos los archivos de un tipo, para un


usuario y proyecto dado.
boolean hasNextFile()

Indica si hay mas archivos.


void setProject(java.lang.String projectName)

Setea el nombre del proyecto que se utilizara.


void setType(java.lang.String typeFile)

Setea el tipo de archivo.


void setUser(java.lang.String userName)

Setea el nombre de usuario que se utilizara.

Damin A. MARTINELLI

- 165 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Methods inherited from class java.lang.Object


clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Constructor Detail

FilesViewBean
public FilesViewBean()
FilesViewBean
throws java.lang.Exception

Constructor de la clase FilesViewBean.


Throws:
java.lang.Exception

Method Detail

goFirstFile
public void goFirstFile()
goFirstFile

Inicializa para la lectura de todos los archivos de un tipo, para un usuario y proyecto
dado.

hasNextFile
public boolean hasNextFile()
asNextFile

Indica si hay mas archivos.


Returns:
true si hay mas archivos, false sino.

getNextFile
public java.lang.String getNextFile()
getNextFile

Obtiene el nombre del proximo archivo.


Returns:
Nombre del proximo archivo.

getNextDescription
public java.lang.String getNextDescription()
getNextDescription

Obtiene la descripcion del proximo archivo.


Returns:
Descripcion del proximo archivo.

Damin A. MARTINELLI

- 166 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

setUser
public void setUser(java.lang.String
userName)
setUser

Setea el nombre de usuario que se utilizara.


Parameters:
userName - Nombre del usuario.

getUser
public java.lang.String getUser()
getUser

Obtiene el nombre de usuario utilizado.


Returns:
Nombre del usuario.

setProject
public void setProject(java.lang.String
projectName)
setProject

Setea el nombre del proyecto que se utilizara.


Parameters:
projectName - Nombre del proyecto.

getProject
public java.lang.String getProject()
getProject

Obtiene el nombre del proyecto utilizado.


Returns:
Nombre del proyecto.

setType
public void setType(java.lang.String
typeFile)
setType

Setea el tipo de archivo.


Parameters:
typeFile - Tipo de archivo.

getType
public java.lang.String getType()
getType

Obtiene el tipo de archivo utilizado.


Returns:
Tipo de archivo utilizado.
Damin A. MARTINELLI

- 167 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

C.11. Class InputMakerBean


java.lang.Object
ar.com.do2.iadh.InputMakerBean
public class InputMakerBean
extends java.lang.Object

Clase encargada de crear el archivo de sesiones a utilizar como entrada para el


proceso de clusterizacion.
Author:
Damian Martinelli
Constructor Summary
InputMakerBean()

Constructor de la clase InputMaker, encargada de crear el archivo de sesiones a


utilizar como entrada para el proceso de clusterizacion.

Method Summary
java.lang.String getKMeansEnabled()

Obtiene si esta seleccionada la creacion del archivo de sesiones de


K-means.
java.lang.String getKMeansFile()

Obtiene el nombre del archivo de K-Means.


java.lang.String getProject()

Obtiene el nombre del proyecto utilizado.


java.lang.String getSessions()

Si estan todos los atributos necesarios seteados, crean los archivos de


sesiones seleccionados.
java.lang.String getSOMEnabled()

Obtiene si esta seleccionada la creacion del archivo de sesiones de


SOM.
java.lang.String getSOMFile()

Obtiene el nombre del archivo de SOM.


java.lang.String getUser()

Obtiene el nombre de usuario utilizado.

Damin A. MARTINELLI

- 168 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

static void main(java.lang.String[] args)


void make()

Arma el archivo de sesiones a partir de la informacion de las tablas


session y page, dejando listo el archivo para el proceso de clusterizacion.
void setKMeansEnabled(java.lang.String enabled)

Setea si se quiere crear el archivo de sesiones de K-Means.


void setKMeansFile(java.lang.String name)

Setea el nombre del archivo de K-Means.


void setProject(java.lang.String projectName)

Setea el nombre del proyecto que se utilizara.


void setSOMEnabled(java.lang.String enabled)

Setea si se quiere crear el archivo de sesiones de SOM.


void setSOMFile(java.lang.String name)

Setea el nombre del archivo de SOM.


void setUser(java.lang.String userName)

Setea el nombre de usuario que se utilizara.

Methods inherited from class java.lang.Object


clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Constructor Detail

InputMakerBean
public InputMakerBean()
InputMakerBean
throws java.lang.Exception

Constructor de la clase InputMaker, encargada de crear el archivo de sesiones a


utilizar como entrada para el proceso de clusterizacion.
Throws:
java.lang.Exception

Method Detail

make
public void make()
make
throws java.lang.Exception

Damin A. MARTINELLI

- 169 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Arma el archivo de sesiones a partir de la informacion de las tablas session y page,


dejando listo el archivo para el proceso de clusterizacion.
Throws:
java.lang.Exception

setKMeansFile
public void setKMeansFile(java.lang.String
name)
setKMeansFile
throws java.lang.Exception

Setea el nombre del archivo de K-Means.


Parameters:
name - Nombre del archivo de K-Means.
Throws:
java.lang.Exception

getKMeansFile
public java.lang.String getKMeansFile()
getKMeansFile

Obtiene el nombre del archivo de K-Means.


Returns:
Nombre del archivo de K-Means.

setSOMFile
public void setSOMFile(java.lang.String
name)
setSOMFile
throws java.lang.Exception

Setea el nombre del archivo de SOM.


Parameters:
name - Nombre del archivo de SOM.
Throws:
java.lang.Exception

getSOMFile
public java.lang.String getSOMFile()
getSOMFile

Obtiene el nombre del archivo de SOM.


Returns:
Nombre del archivo de SOM.

setKMeansEnabled
Damin A. MARTINELLI

- 170 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

public void setKMeansEnabled(java.lang.String


enabled)
setKMeansEnabled

Setea si se quiere crear el archivo de sesiones de K-Means.


Parameters:
enabled - Si es "YES" indica que se quiere crear el archivo de sesiones de K-Means.

getKMeansEnabled
public java.lang.String getKMeansEnabled()
getKMeansEnabled

Obtiene si esta seleccionada la creacion del archivo de sesiones de K-means.


Returns:
"YES" si esta seleccionada, "NO" sino.

setSOMEnabled
public void setSOMEnabled(java.lang.String
setSOMEnabled
enabled)

Setea si se quiere crear el archivo de sesiones de SOM.


Parameters:
enabled - Si es "YES" indica que se quiere crear el archivo de sesiones de SOM.

getSOMEnabled
public java.lang.String getSOMEnabled()
getSOMEnabled

Obtiene si esta seleccionada la creacion del archivo de sesiones de SOM.


Returns:
"YES" si esta seleccionada, "NO" sino.

getSessions
public java.lang.String getSessions()
getSessions
throws java.lang.Exception

Si estan todos los atributos necesarios seteados, crean los archivos de sesiones
seleccionados.
Returns:
Resumen de la cantidad de sesiones representadas en los archivos creados.
Throws:
java.lang.Exception

setUser
public void setUser(java.lang.String
userName)
setUser

Damin A. MARTINELLI

- 171 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Setea el nombre de usuario que se utilizara.


Parameters:
userName - Nombre del usuario.

getUser
public java.lang.String getUser()
getUser

Obtiene el nombre de usuario utilizado.


Returns:
Nombre del usuario.

setProject
public void setProject(java.lang.String
projectName)
setProject

Setea el nombre del proyecto que se utilizara.


Parameters:
projectName - Nombre del proyecto.

getProject
public java.lang.String getProject()
getProject

Obtiene el nombre del proyecto utilizado.


Returns:
Nombre del proyecto.

main
public static void main(java.lang.String[]
args)
main
throws java.lang.Exception

Throws:
java.lang.Exception

C.12. Class KMeansBean


java.lang.Object
ar.com.do2.iadh.KMeansBean
ar.com.do2.iadh.KMeansBean

All Implemented Interfaces:


java.io.Serializable

Damin A. MARTINELLI

- 172 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

public class KMeansBean


extends java.lang.Object
implements java.io.Serializable

Clase encargada de realizar la clusterizacion mediante K-Means


Author:
Damian Martinelli
See Also:
Serialized Form
Constructor Summary
KMeansBean()

Constructor por defecto de la clase KMeansBean


KMeansBean(java.lang.String input, java.lang.String output, int k)

Contructor de la clase KMeans, encargada de clusterizar las sesiones de usuarios.

Method Summary
java.lang.String getClusters()

Si se setearon todos los atributos necesarios, realiza la clusterizacion


de los datos del archivo de entrada, descubriendo la cantidad de clusters
indicada y colocando los resultados en el archivo de salida.
java.lang.String getInput()

Obtiene el nombre del archivo de entrada utilizado.


java.lang.String getK()

Obtiene la cantidad de clusters a descubrir utilizada.


java.lang.String getOutput()

Obtiene el nombre del archivo de salida utilizado.


static void main(java.lang.String[] args)
void save(java.lang.String fileName)

Graba el modelo generado por K-Means en el archivo indicado.


void setInput(java.lang.String file)

Setea el nombre del archivo de entrada.


void setK(java.lang.String k)

Setea la cantidad de clusters a descubrir.


void setOutput(java.lang.String file)

Damin A. MARTINELLI

- 173 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Setea el nombre del archivo de salida.

Methods inherited from class java.lang.Object


clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Constructor Detail

KMeansBean
public KMeansBean()
KMeansBean

Constructor por defecto de la clase KMeansBean

KMeansBean
public KMeansBean(java.lang.String
input,
KMeansBean
java.lang.String output,
int k)
throws java.lang.Exception

Contructor de la clase KMeans, encargada de clusterizar las sesiones de usuarios.


Parameters:
input - Nombre del archivo de entrada.
output - Nombre del archivo de salida.
k - Cantidad de clusters a descubrir.
Throws:
java.lang.Exception

Method Detail

setInput
public void setInput(java.lang.String
file)
setInput

Setea el nombre del archivo de entrada.


Parameters:
file - Nombre del archivo de entrada.

getInput
public java.lang.String getInput()
getInput

Obtiene el nombre del archivo de entrada utilizado.


Returns:
Nombre del archivo de entrada.

Damin A. MARTINELLI

- 174 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

setOutput
public void setOutput(java.lang.String
file)
setOutput

Setea el nombre del archivo de salida.


Parameters:
file - Nombre del archivo de salida.

getOutput
public java.lang.String getOutput()
getOutput

Obtiene el nombre del archivo de salida utilizado.


Returns:
Nombre del archivo de salida.

setK
public void setK(java.lang.String
k)
setK

Setea la cantidad de clusters a descubrir.


Parameters:
k - Cantidad de clusters a descubrir.

getK
public java.lang.String getK()
getK

Obtiene la cantidad de clusters a descubrir utilizada.


Returns:
Cantidad de clusters a descubrir.

getClusters
public java.lang.String getClusters()
getClusters

Si se setearon todos los atributos necesarios, realiza la clusterizacion de los datos


del archivo de entrada, descubriendo la cantidad de clusters indicada y colocando
los resultados en el archivo de salida.
Returns:
Mensaje de exito o error.

save

Damin A. MARTINELLI

- 175 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

public void save(java.lang.String


fileName)
save

Graba el modelo generado por K-Means en el archivo indicado.


Parameters:
fileName - Nombre del archivo.

main
public static void main(java.lang.String[]
args)
main

C.13. Class LogBean


java.lang.Object
ar.com.do2.iadh.LogBean

All Implemented Interfaces:


java.io.Serializable
public class LogBean
extends java.lang.Object
implements java.io.Serializable

Clase que representa la informacion de un registro de log a almacenar en la base


de datos.
Author:
Damian Martinelli
See Also:
Serialized Form
Constructor Summary
LogBean()

Constructor por defecto.


LogBean(java.lang.String IP, java.lang.String authuser, java.lang.String page,
java.lang.String timestamp)

Contructor de la clase LogBean.

Method Summary
java.lang.String getAuthuser()

Damin A. MARTINELLI

- 176 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Obtiene el nombre de usuario autenticado mediante HTTP.


java.lang.String getIP()

Obtiene la direccion IP.


java.lang.String getPage()

Obtiene la pgina solicitada.


java.lang.String getTimestamp()

Obtiene la marca de tiempo cuando se realizo la peticion.


void setAuthuser(java.lang.String authuser)

Setea el nombre de usuario autenticado mediante HTTP.


void setIP(java.lang.String IP)

Setea la direccion IP.


void setPage(java.lang.String page)

Setea la pgina solicitada.


void setTimestamp(java.lang.String timestamp)

Setea la marca de tiempo cuando se realizo la peticion.


java.lang.String toString()

Methods inherited from class java.lang.Object


clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait

Constructor Detail

LogBean
public LogBean()
LogBean

Constructor por defecto.

LogBean
public LogBean(java.lang.String
IP,
LogBean
java.lang.String authuser,
java.lang.String page,
java.lang.String timestamp)

Contructor de la clase LogBean.


Parameters:
IP - Direccion IP del solicitante de la pgina.

Damin A. MARTINELLI

- 177 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

authuser

- Nombre del usuario autenticado mediante HTTP.


page - Pgina solicitada.
timestamp - Marca de tiempo cuando se realizo la peticion.

Method Detail

setIP
public void setIP(java.lang.String
IP)
setIP

Setea la direccion IP.


Parameters:
IP - Direccion IP.

getIP
public java.lang.String getIP()
getIP

Obtiene la direccion IP.


Returns:
Direccion IP.

setAuthuser
public void setAuthuser(java.lang.String
authuser)
setAuthuser

Setea el nombre de usuario autenticado mediante HTTP.


Parameters:
authuser - Nombre de usuario.

getAuthuser
public java.lang.String getAuthuser()
getAuthuser

Obtiene el nombre de usuario autenticado mediante HTTP.


Returns:
Nombre del usuario.

setPage
public void setPage(java.lang.String
page)
setPage

Setea la pgina solicitada.


Parameters:
page - Pgina solicitada.

Damin A. MARTINELLI

- 178 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

getPage
public java.lang.String getPage()
getPage

Obtiene la pgina solicitada.


Returns:
Pgina solicitada.

setTimestamp
public void setTimestamp(java.lang.String
timestamp)
etTimestamp

Setea la marca de tiempo cuando se realizo la peticion.


Parameters:
timestamp - Marca de tiempo.

getTimestamp
public java.lang.String getTimestamp()
getTimestamp

Obtiene la marca de tiempo cuando se realizo la peticion.


Returns:
Marca de tiempo.

toString
public java.lang.String toString()
toString

Overrides:
toString in class java.lang.Object

C.14. Class LogCleanerBean


java.lang.Object
ar.com.do2.iadh.LogCleanerBean
ar.com.do2.iadh.LogCleanerBean

All Implemented Interfaces:


java.io.Serializable
public class LogCleanerBean
extends java.lang.Object
implements java.io.Serializable

Clase utilizada para borrar todo los registros de log de un proyecto.


Damin A. MARTINELLI

- 179 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Author:
Damian Martinelli
See Also:
Serialized Form
Constructor Summary
LogCleanerBean()

Constructor de la clase LogCleanerBean, encargada de borrar todos los registros de


log de un proyecto.

Method Summary
void clean()

Borra todo el log de un proyecto.


java.lang.String getCleaneds()

Si toda la informacion necesaria esta seteada, borra todos los


registros de log de la tabla de logs.
java.lang.String getProject()

Obtiene el nombre del proyecto utilizado.


java.lang.String getUser()

Obtiene el nombre de usuario utilizado.


static void main(java.lang.String[] args)
void setProject(java.lang.String projectName)

Setea el nombre del proyecto que se utilizara.


void setUser(java.lang.String userName)

Setea el nombre de usuario que se utilizara.

Methods inherited from class java.lang.Object


clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Constructor Detail

LogCleanerBean
public LogCleanerBean()
LogCleanerBean
throws java.lang.Exception

Constructor de la clase LogCleanerBean, encargada de borrar todos los registros de


log de un proyecto.
Throws:
Damin A. MARTINELLI

- 180 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

java.lang.Exception

Method Detail

clean
public void clean()
clean
throws java.lang.Exception

Borra todo el log de un proyecto.


Throws:
java.lang.Exception

getCleaneds
public java.lang.String getCleaneds()
getCleaneds
throws java.lang.Exception

Si toda la informacion necesaria esta seteada, borra todos los registros de log de la
tabla de logs.
Returns:
Cantidad de registros eliminados.
Throws:
java.lang.Exception

setUser
public void setUser(java.lang.String
userName)
setUser
throws java.lang.Exception

Setea el nombre de usuario que se utilizara.


Parameters:
userName - Nombre del usuario.
Throws:
java.lang.Exception

getUser
public java.lang.String getUser()
getUser

Obtiene el nombre de usuario utilizado.


Returns:
Nombre del usuario.

setProject

Damin A. MARTINELLI

- 181 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

public void setProject(java.lang.String


projectName)
setProject
throws java.lang.Exception

Setea el nombre del proyecto que se utilizara.


Parameters:
projectName - Nombre del proyecto.
Throws:
java.lang.Exception

getProject
public java.lang.String getProject()
getProject

Obtiene el nombre del proyecto utilizado.


Returns:
Nombre del proyecto.

main
public static void main(java.lang.String[]
args)
main
throws java.lang.Exception

Throws:
java.lang.Exception

C.15. Class LogFilesViewBean


java.lang.Object
ar.com.do2.iadh.LogFilesViewBean

All Implemented Interfaces:


java.io.Serializable
public class LogFilesViewBean
extends java.lang.Object
implements java.io.Serializable

Clase utilizada para listar todos los archivos de log cargados por un usuario
Author:
Damian Martinelli
See Also:
Serialized Form

Damin A. MARTINELLI

- 182 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Constructor Summary
LogFilesViewBean()

Constructor de la clase LogFilesViewBean.

Method Summary
java.lang.String getNextDescription()

Obtiene la descripcion del proximo archivo de log.


java.lang.String getNextLog()

Obtiene el nombre del proximo archivo de log.


java.lang.String getUser()

Obtiene el nombre de usuario utilizado.


void goFirstLog()

Inicializa para la lectura de todos los archivos de log de un usuario.


boolean hasNextLog()

Indica si hay mas archivos de log.


void setUser(java.lang.String userName)

Setea el nombre de usuario que se utilizara.

Methods inherited from class java.lang.Object


clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Constructor Detail

LogFilesViewBean
public LogFilesViewBean()
LogFilesViewBean
throws java.lang.Exception

Constructor de la clase LogFilesViewBean.


Throws:
java.lang.Exception

Method Detail

goFirstLog
public void goFirstLog()
goFirstLog

Inicializa para la lectura de todos los archivos de log de un usuario.

Damin A. MARTINELLI

- 183 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

hasNextLog
public boolean hasNextLog()
hasNextLog

Indica si hay mas archivos de log.


Returns:
true si hay mas archivos, false sino.

getNextLog
public java.lang.String getNextLog()
getNextLog

Obtiene el nombre del proximo archivo de log.


Returns:
Nombre del proximo archivo.

getNextDescription
public java.lang.String getNextDescription()
getNextDescription

Obtiene la descripcion del proximo archivo de log.


Returns:
Descripcion del proximo archivo.

setUser
public void setUser(java.lang.String
userName)
setUser

Setea el nombre de usuario que se utilizara.


Parameters:
userName - Nombre del usuario.

getUser
public java.lang.String getUser()
getUser

Obtiene el nombre de usuario utilizado.


Returns:
Nombre del usuario.

C.16. Class LogFileUploadBean


java.lang.Object
ar.com.do2.iadh.LogFileUploadBean

Damin A. MARTINELLI

- 184 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

All Implemented Interfaces:


java.io.Serializable
public class LogFileUploadBean
extends java.lang.Object
implements java.io.Serializable

Clase utilizada para guardar en la base de datos informacion sobre un archivo de


log y copiar el archivo al servidor.
Author:
Budi Kurniawan, Damian Martinelli
See Also:
Serialized Form
Constructor Summary
LogFileUploadBean()

Constructor de la clase LogFileUploadBean.

Method Summary
void doUpload(javax.servlet.http.HttpServletRequest request)

Sube el archivo al servidor.


java.lang.String getContentType()

Obtiene el tipo de contenido del archivo.


java.lang.String getFieldsValues()

Obtiene todos los campos con sus valores.


java.lang.String getFieldValue(java.lang.String fieldName)

Obtiene el valor de un campo, cuyo nombre es pasado por parametro.


java.lang.String getFilename()

Obtiene el nombre del archivo a copiar.


java.lang.String getFilepath()

Obtiene el path donde se copiara el archivo.


java.lang.String getInput()

Obtiene el nombre del archivo de log utilizado.


boolean getUpload()

Si los atributos necesarios fueron seteados, copia el archivo al


servidor y carga la informacion del archivo en la base de datos.

Damin A. MARTINELLI

- 185 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

java.lang.String getUser()

Obtiene el nombre de usuario utilizado.


void setLogFile(java.lang.String filename)

Setea el nombre del archivo de log.


void setRequest(javax.servlet.http.HttpServletRequest request)

Setea el objeto HttpServletRequest a utilizar.


void setSavePath(java.lang.String savePath)

Setea el path donde se copiara el archivo.


void setUser(java.lang.String userName)

Setea el nombre de usuario que se utilizara.

Methods inherited from class java.lang.Object


clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Constructor Detail

LogFileUploadBean
public LogFileUploadBean()
LogFileUploadBean
throws java.lang.Exception

Constructor de la clase LogFileUploadBean.


Throws:
java.lang.Exception

Method Detail

setLogFile
public void setLogFile(java.lang.String
filename)
setLogFile
throws java.lang.Exception

Setea el nombre del archivo de log.


Parameters:
filename - Nombre del archivo.
Throws:
java.lang.Exception

getInput
public java.lang.String getInput()
getInput

Obtiene el nombre del archivo de log utilizado.


Damin A. MARTINELLI

- 186 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Returns:
Nombre del archivo.

getUpload
public boolean getUpload()
getUpload

Si los atributos necesarios fueron seteados, copia el archivo al servidor y carga la


informacion del archivo en la base de datos.
Returns:
true si pudo copiar y cargar el archivo, false sino.

setRequest
public void setRequest(javax.servlet.http.HttpServletRequest
request)
setRequest

Setea el objeto HttpServletRequest a utilizar.


Parameters:
request - Objeto HttpServletRequest.

setUser
public void setUser(java.lang.String
userName)
setUser

Setea el nombre de usuario que se utilizara.


Parameters:
userName - Nombre del usuario.

getUser
public java.lang.String getUser()
getUser

Obtiene el nombre de usuario utilizado.


Returns:
Nombre del usuario.

getFilename
public java.lang.String getFilename()
getFilename

Obtiene el nombre del archivo a copiar.


Returns:
Nombre del archivo.

getFilepath

Damin A. MARTINELLI

- 187 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

public java.lang.String getFilepath()


getFilepath

Obtiene el path donde se copiara el archivo.


Returns:
Path donde se copiara el archivo.

setSavePath
public void setSavePath(java.lang.String
savePath)
setSavePath

Setea el path donde se copiara el archivo.


Parameters:
savePath - Path donde se copiara el archivo.

getContentType
public java.lang.String getContentType()
getContentType

Obtiene el tipo de contenido del archivo.


Returns:
Tipo de contenido del archivo.

getFieldValue
public java.lang.String getFieldValue(java.lang.String
fieldName)
getFieldValue

Obtiene el valor de un campo, cuyo nombre es pasado por parametro.


Parameters:
fieldName - Nombre del campo.
Returns:
Valor del campo.

getFieldsValues
public java.lang.String getFieldsValues()
getFieldsValues

Obtiene todos los campos con sus valores.


Returns:
Todos los campos con sus valores.

doUpload
public void doUpload(javax.servlet.http.HttpServletRequest
request)
doUpload
throws java.io.IOException

Sube el archivo al servidor.


Parameters:

Damin A. MARTINELLI

- 188 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

request

- Objeto HttpServletRequest de la solicitud.


Throws:
java.io.IOException

C.17. Class LoginBean


java.lang.Object
ar.com.do2.iadh.LoginBean
public class LoginBean
extends java.lang.Object

Clase utilizada para iniciar sesin en la herramienta.


Author:
Damian Martinelli
Constructor Summary
LoginBean()

Constructor de la clase LoginBean.

Method Summary
java.lang.String getUser()

Obtiene el nombre de usuario utilizado.


boolean isValidUser()

Intenta autenticar al usuario, devolviendo si es un usuario valido o


no.
void setPass(java.lang.String password)

Setea la contrasea del usuario.


void setUser(java.lang.String userName)

Setea el nombre de usuario que se utilizara.

Methods inherited from class java.lang.Object


clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Constructor Detail

Damin A. MARTINELLI

- 189 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

LoginBean
public LoginBean()
LoginBean
throws java.lang.Exception

Constructor de la clase LoginBean.


Throws:
java.lang.Exception

Method Detail

setUser
public void setUser(java.lang.String
userName)
setUser

Setea el nombre de usuario que se utilizara.


Parameters:
userName - Nombre del usuario.

getUser
public java.lang.String getUser()
getUser

Obtiene el nombre de usuario utilizado.


Returns:
Nombre del usuario.

setPass
public void setPass(java.lang.String
password)
setPass

Setea la contrasea del usuario.


Parameters:
password - Contrasea del usuario.

isValidUser
public boolean isValidUser()
isValidUser

Intenta autenticar al usuario, devolviendo si es un usuario valido o no.


Returns:
true si se autentico al usuario satisfactoriamente, false sino.

C.18. Class LogLoaderBean

Damin A. MARTINELLI

- 190 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

java.lang.Object
ar.com.do2.iadh.LogLoaderBean

All Implemented Interfaces:


java.io.Serializable
public class LogLoaderBean
extends java.lang.Object
implements java.io.Serializable

Clase utilizada para leer el archivo de log y obtener la informacion del mismo para
almacenarla en la base de datos.
Author:
Damian Martinelli
See Also:
Serialized Form
Constructor Summary
LogLoaderBean()

Constructor de la clase LogLoader, encargada de cargar todo un log en la tabla log.

Method Summary
java.lang.String getExtensions()

Obtiene las extensiones, separadas por coma.


java.lang.String getHitsSaves()

Obtiene la cantidad de registros guardados en la tabla de logs.


java.lang.String getIdsPage()

Obtiene las variables que identifican pginas distintas, separadas por


coma.
java.lang.String getInput()

Obtiene el nombre del archivo de log.


java.lang.String getLoad()

Si toda la informacion necesaria esta seteada, carga el archivo de log


en la tabla de logs.
java.lang.String getProject()

Obtiene el nombre del proyecto utilizado.


java.lang.String getStatusCodes()

Obtiene los codigos de error, separados por coma.

Damin A. MARTINELLI

- 191 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

java.lang.String getTypeLog()

Obtiene el tipo de log.


java.lang.String getUser()

Obtiene el nombre de usuario utilizado.


void load(java.lang.String inputFilename)

Carga todo un log en la tabla log.


static void main(java.lang.String[] args)
void setExtensions(java.lang.String values)

Setea las extensiones de los archivos considerados de pginas, o las


extensiones que se necesitan tener en cuenta.
void setIdsPage(java.lang.String values)

Setea las variables que identifican pginas distintas.


void setInput(java.lang.String inputFilename)

Setea el nombre del archivo de log.


void setProject(java.lang.String projectName)

Setea el nombre del proyecto que se utilizara.


void setStatusCodes(java.lang.String values)

Setea los codigos de error a tener en cuenta.


void setTypeLog(java.lang.String type)

Setea el tipo de log.


void setUser(java.lang.String userName)

Setea el nombre de usuario que se utilizara.

Methods inherited from class java.lang.Object


clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Constructor Detail

LogLoaderBean
public LogLoaderBean()
LogLoaderBean
throws java.lang.Exception

Constructor de la clase LogLoader, encargada de cargar todo un log en la tabla log.


Throws:
java.lang.Exception

Method Detail

Damin A. MARTINELLI

- 192 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

load
public void load(java.lang.String
inputFilename)
load
throws java.lang.Exception

Carga todo un log en la tabla log.


Parameters:
inputFilename - Nombre del archivo de log.
Throws:
java.lang.Exception

getLoad
public java.lang.String getLoad()
getLoad
throws java.lang.Exception

Si toda la informacion necesaria esta seteada, carga el archivo de log en la tabla de


logs. Devuelve la cantidad de registros guardados o un mensaje de error.
Returns:
Cantidad de registros de log cargados o un mensaje de error.
Throws:
java.lang.Exception

setInput
public void setInput(java.lang.String
inputFilename)
setInput
throws java.lang.Exception

Setea el nombre del archivo de log.


Parameters:
inputFilename - Nombre del archivo de log.
Throws:
java.lang.Exception

getInput
public java.lang.String getInput()
getInput

Obtiene el nombre del archivo de log.


Returns:
Nombre del archivo de log.

setTypeLog

Damin A. MARTINELLI

- 193 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

public void setTypeLog(java.lang.String


type)
setTypeLog
throws java.lang.Exception

Setea el tipo de log.


Parameters:
type - Tipo de archivo de log.
Throws:
java.lang.Exception

getTypeLog
public java.lang.String getTypeLog()
getTypeLog

Obtiene el tipo de log.


Returns:
Tipo de archivo de log.

setUser
public void setUser(java.lang.String
userName)
setUser
throws java.lang.Exception

Setea el nombre de usuario que se utilizara.


Parameters:
userName - Nombre del usuario.
Throws:
java.lang.Exception

getUser
public java.lang.String getUser()
getUser

Obtiene el nombre de usuario utilizado.


Returns:
Nombre del usuario.

setProject
public void setProject(java.lang.String
projectName)
setProject
throws java.lang.Exception

Setea el nombre del proyecto que se utilizara.


Parameters:
projectName - Nombre del proyecto.
Throws:

Damin A. MARTINELLI

- 194 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

java.lang.Exception

getProject
public java.lang.String getProject()
getProject

Obtiene el nombre del proyecto utilizado.


Returns:
Nombre del proyecto.

setExtensions
public void setExtensions
setExtensions(java.lang.String
values)
Extensions

Setea las extensiones de los archivos considerados de pginas, o las extensiones que
se necesitan tener en cuenta.
Parameters:
values - Extensiones validas.

getExtensions
public java.lang.String getExtensions()
getExtensions

Obtiene las extensiones, separadas por coma.


Returns:
Obtiene las extensiones validas.

setStatusCodes
public void setStatusCodes(java.lang.String
values)
setStatusCodes

Setea los codigos de error a tener en cuenta.


Parameters:
values - Codigos de error validos.

getStatusCodes
public java.lang.String getStatusCodes()
getStatusCodes

Obtiene los codigos de error, separados por coma.


Returns:
Codigos de error validos separados por coma.

setIdsPage

Damin A. MARTINELLI

- 195 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

public void setIdsPage(java.lang.String


values)
setIdsPage

Setea las variables que identifican pginas distintas.


Parameters:
values - Nombre de las variables identificadoras de pginas.

getIdsPage
public java.lang.String getIdsPage()
getIdsPage

Obtiene las variables que identifican pginas distintas, separadas por coma.
Returns:
Nombre de variables identificadoras de pgina.

getHitsSaves
public java.lang.String getHitsSaves()
getHitsSaves

Obtiene la cantidad de registros guardados en la tabla de logs.


Returns:
Cantidad de registros de log guardados.

main
public static void main(java.lang.String[]
args)
main
throws java.lang.Exception

Throws:
java.lang.Exception

C.19. Class LogViewBean


java.lang.Object
ar.com.do2.iadh.LogViewBean

All Implemented Interfaces:


java.io.Serializable
public class LogViewBean
extends java.lang.Object
implements java.io.Serializable

Damin A. MARTINELLI

- 196 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Clase encargada de obtener el detalle de todos los registros de log cargados en la


base de datos por un proyecto de un usuario.
Author:
Damian Martinelli
See Also:
Serialized Form
Field Summary
protected logsPerPage
int

Constructor Summary
LogViewBean()

Contructor de la clase LogViewBean.

Method Summary
java.lang.String getCurrentLog()

Obtiene el archivo de log utilizado.


java.lang.String getLogsPerPage()

Obtiene la cantidad de registros de log por pgina utilizada.


LogBean getNextLog()

Obtiene el registro de log actual.


java.lang.String getProject()

Obtiene el nombre del proyecto utilizado.


java.lang.String getUser()

Obtiene el nombre de usuario utilizado.


void goFirstLog()

Se posiciona en el primer registro de log del proyecto actual.


boolean hasNextLog()

Indica si existe un proximo registro de log.


static void main(java.lang.String[] args)
void setCurrentLog(java.lang.String log)

Setea el archivo de log a utilizar.

Damin A. MARTINELLI

- 197 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

void setLogsPerPage(java.lang.String logs)

Setea la cantidad de registros de log a obtener por pgina.


void setProject(java.lang.String projectName)

Setea el nombre del proyecto que se utilizara.


void setUser(java.lang.String userName)

Setea el nombre de usuario que se utilizara.

Methods inherited from class java.lang.Object


clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Field Detail

logsPerPage
protected int logsPerPage

Constructor Detail

LogViewBean
public LogViewBean()
LogViewBean
throws java.lang.Exception

Contructor de la clase LogViewBean.


Throws:
java.lang.Exception

Method Detail

goFirstLog
public void goFirstLog()
goFirstLog

Se posiciona en el primer registro de log del proyecto actual.

hasNextLog
public boolean hasNextLog()
hasNextLog

Indica si existe un proximo registro de log.


Returns:
true si existe un proximo registro de log, false sino.

getNextLog

Damin A. MARTINELLI

- 198 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

public LogBean getNextLog()


getNextLog

Obtiene el registro de log actual.


Returns:
Registro de log actual.

setUser
public void setUser(java.lang.String
userName)
setUser

Setea el nombre de usuario que se utilizara.


Parameters:
userName - Nombre del usuario.

getUser
public java.lang.String getUser()
getUser

Obtiene el nombre de usuario utilizado.


Returns:
Nombre del usuario.

setProject
public void setProject(java.lang.String
projectName)
setProject

Setea el nombre del proyecto que se utilizara.


Parameters:
projectName - Nombre del proyecto.

getProject
public java.lang.String getProject()
getProject

Obtiene el nombre del proyecto utilizado.


Returns:
Nombre del proyecto.

setLogsPerPage
public void setLogsPerPage(java.lang.String
logs)
setLogsPerPage

Setea la cantidad de registros de log a obtener por pgina.


Parameters:
logs - Cantidad de registros.

Damin A. MARTINELLI

- 199 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

getLogsPerPage
public java.lang.String getLogsPerPage()
getLogsPerPage

Obtiene la cantidad de registros de log por pgina utilizada.


Returns:
Cantidad de registros de log.

setCurrentLog
public void setCurrentLog(java.lang.String
log)
setCurrentLog

Setea el archivo de log a utilizar.


Parameters:
log - Nombre del archivo de log.

getCurrentLog
public java.lang.String getCurrentLog()
getCurrentLog

Obtiene el archivo de log utilizado.


Returns:
Nombre del archivo de log.

main
public static void main(java.lang.String[]
args)
main
throws java.lang.Exception

Throws:
java.lang.Exception

C.20. Class NumericSessionClusterBean


java.lang.Object
ar.com.do2.iadh.SessionClusterBean
ar.com.do2.iadh.NumericSessionClusterBean
public class NumericSessionClusterBean
extends SessionClusterBean

Damin A. MARTINELLI

- 200 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Clase encargada de cargar en la base de datos la informacion de clusterizacion


almacenada en un archivo, que posee en cada linea el numero de cluster al cual
pertenece la sesion.
Author:
Damian Martinelli
Field Summary
Fields inherited from class ar.com.do2.iadh.SessionClusterBean
conn, filename, project, pstm, pstmDelete, type, user

Constructor Summary
NumericSessionClusterBean()

Constructor por defecto de la clase NumericSessionClusterBean.

Method Summary
void count(java.lang.String inputFilename)

Realiza el conteo de los clusters descubiertos tomando como entrada el archivo


donde se encuentra a que cluster pertenece cada sesion.

Methods inherited from class ar.com.do2.iadh.SessionClusterBean


getCount, getFile, getProject, getType, getUser, setFile, setProject, setType, setUser

Methods inherited from class java.lang.Object


clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Constructor Detail

NumericSessionClusterBean
public NumericSessionClusterBean()
NumericSessionClusterBean
throws java.lang.Exception

Constructor por defecto de la clase NumericSessionClusterBean.


Throws:
java.lang.Exception

Method Detail

Damin A. MARTINELLI

- 201 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

count
public void count(java.lang.String
inputFilename)
count
throws java.lang.Exception

Description copied from class: SessionClusterBean


Realiza el conteo de los clusters descubiertos tomando como entrada el archivo
donde se encuentra a que cluster pertenece cada sesion.
Specified by:
count in class SessionClusterBean
Parameters:
inputFilename - Nombre del archivo donde se encuentra la informacion de los
clusters descubiertos.
Throws:
java.lang.Exception

C.21. Class PageCounterBean


java.lang.Object
ar.com.do2.iadh.PageCounterBean
public class PageCounterBean
PageCounterBean
extends java.lang.Object

Clase encargarda de cargar todas las pginas encontradas en un archivo de log.


Author:
Damian Martinelli
Constructor Summary
PageCounterBean()

Constructor de la clase PageCounterBean, encargada de numerar todas las pginas


encontradas en un log.

Method Summary
java.lang.String getPages()

Realiza el conteo de las pginas que se encuentran en los log


cargados en un proyecto.
java.lang.String getProject()

Obtiene el nombre del proyecto utilizado.

Damin A. MARTINELLI

- 202 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

java.lang.String getUser()

Obtiene el nombre de usuario utilizado.


static void main(java.lang.String[] args)
void setProject(java.lang.String projectName)

Setea el nombre del proyecto que se utilizara.


void setUser(java.lang.String userName)

Setea el nombre de usuario que se utilizara.


void start()

Comienza el conteo de las pginas que aparecen en el log

Methods inherited from class java.lang.Object


clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Constructor Detail

PageCounterBean
public PageCounterBean()
ageCounterBean
throws java.lang.Exception

Constructor de la clase PageCounterBean, encargada de numerar todas las pginas


encontradas en un log.
Throws:
java.lang.Exception

Method Detail

start
public void start()
start
throws java.lang.Exception

Comienza el conteo de las pginas que aparecen en el log


Throws:
java.lang.Exception

getPages
public java.lang.String getPages()
getPages
throws java.lang.Exception

Damin A. MARTINELLI

- 203 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Realiza el conteo de las pginas que se encuentran en los log cargados en un


proyecto.
Returns:
Cantidad de pginas.
Throws:
java.lang.Exception

setUser
public void setUser(java.lang.String
userName)
setUser
throws java.lang.Exception

Setea el nombre de usuario que se utilizara.


Parameters:
userName - Nombre del usuario.
Throws:
java.lang.Exception

getUser
public java.lang.String getUser()
getUser

Obtiene el nombre de usuario utilizado.


Returns:
Nombre del usuario.

setProject
public void setProject(java.lang.String
projectName)
setProject
throws java.lang.Exception

Setea el nombre del proyecto que se utilizara.


Parameters:
projectName - Nombre del proyecto.
Throws:
java.lang.Exception

getProject
public java.lang.String getProject()
getProject

Obtiene el nombre del proyecto utilizado.


Returns:
Nombre del proyecto.

Damin A. MARTINELLI

- 204 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

main
public static void main(java.lang.String[]
args)
main
throws java.lang.Exception

Throws:
java.lang.Exception

C.22. Class PagesInClustersBean


java.lang.Object
ar.com.do2.iadh.PagesInClustersBean
public class PagesInClustersBean
extends java.lang.Object

Clase encargada de obtener la informacion de que pginas aparecen en las


sesiones de cada cluster.
Author:
Damian Martinelli
Constructor Summary
PagesInClustersBean()

Constructor de la clase PagesInClustes, encargada de obtener la informacion de que


pginas aparecen en las sesiones de cada cluster

Method Summary
java.lang.String getPages()

Si los parametros necesarios han sido seteados, comienza a obtener


la informacion de los clusters.
java.lang.String getProject()

Obtiene el nombre del proyecto utilizado.


java.lang.String getType()

Obtiene el tipo de clusters que se estan analizando.


java.lang.String getUser()

Obtiene el nombre de usuario utilizado.

Damin A. MARTINELLI

- 205 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

void setProject(java.lang.String projectName)

Setea el nombre del proyecto que se utilizara.


void setType(java.lang.String typeClustering)

Setea el tipo de clusters que se estan analizando.


void setUser(java.lang.String userName)

Setea el nombre de usuario que se utilizara.


void start()

Comienza a cargar en la tabla pageInCluster, las tuplas


(pgina,cluster, porcentaje), correspondiente a si una pgina aparece en las
sesiones de un cluster y el porcentaje de sesiones de ese cluster en que la
pgina aparece.

Methods inherited from class java.lang.Object


clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Constructor Detail

PagesInClustersBean
public PagesInClustersBean()
PagesInClustersBean
throws java.lang.Exception

Constructor de la clase PagesInClustes, encargada de obtener la informacion de que


pginas aparecen en las sesiones de cada cluster
Throws:
java.lang.Exception

Method Detail

start
public void start()
start
throws java.lang.Exception

Comienza a cargar en la tabla pageInCluster, las tuplas (pgina,cluster, porcentaje),


correspondiente a si una pgina aparece en las sesiones de un cluster y el porcentaje
de sesiones de ese cluster en que la pgina aparece.
Throws:
java.lang.Exception

getPages
public java.lang.String getPages()
getPages

Damin A. MARTINELLI

- 206 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

throws java.lang.Exception

Si los parametros necesarios han sido seteados, comienza a obtener la informacion


de los clusters.
Returns:
"OK" si se realizo la operacion correctamente, un mensaje de error en caso
contrario.
Throws:
java.lang.Exception

setUser
public void setUser(java.lang.String
userName)
setUser

Setea el nombre de usuario que se utilizara.


Parameters:
userName - Nombre del usuario.

getUser
public java.lang.String getUser()
getUser

Obtiene el nombre de usuario utilizado.


Returns:
Nombre del usuario.

setProject
public void setProject
projectName)
setProject(java.lang.String
ct

Setea el nombre del proyecto que se utilizara.


Parameters:
projectName - Nombre del proyecto.

getProject
public java.lang.String getProject()
getProject

Obtiene el nombre del proyecto utilizado.


Returns:
Nombre del proyecto.

setType
public void setType(java.lang.String
typeClustering)
setType

Setea el tipo de clusters que se estan analizando.

Damin A. MARTINELLI

- 207 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Parameters:
typeClustering

- Tipo de clusters.

getType
public java.lang.String getType()
getType

Obtiene el tipo de clusters que se estan analizando.


Returns:
Tipo de clusters.

C.23. Class PagesInClustersViewBean


java.lang.Object
ar.com.do2.iadh.PagesInClustersViewBean
public class PagesInClustersViewBean
extends java.lang.Object

Clase que se encarga de obtener la informacion de las pginas que accedieron los
usuarios de cada cluster, indicando el porcentaje de acceso.
Author:
Damian Martinelli
Constructor Summary
PagesInClustersViewBean()

Constructor de la clase PagesInClustersViewBean.

Method Summary
java.lang.String getCluster()

Obtiene el numero de cluster.


java.lang.String getMaxPagesPerCluster()

Obtiene la cantidad maxima de pginas por cluster a mostrar.


java.lang.String getMinPercentage()

Obtiene el minimo porcentaje de frecuencia de pgina a mostrar.


java.lang.String getNextCluster()

Obtiene el proximo cluster.

Damin A. MARTINELLI

- 208 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

java.lang.String getNextPage()

Obtiene la proxima pgina.


java.lang.String getNextPercentage()

Obtiene el proximo porcentaje de pgina.


java.lang.String getProject()

Obtiene el nombre del proyecto utilizado.


java.lang.String getType()

Obtiene el tipo de clusters que se estan analizando.


java.lang.String getUser()

Obtiene el nombre de usuario utilizado.


void goFirstCluster()

Se situa en el primer cluster.


void goFirstPage()

Se situa en la primera pgina.


boolean hasNextCluster()

Indica se existen mas clusters.


boolean hasNextPage()

Indica si existen mas pginas.


void setCluster(java.lang.String clusterNumber)

Setea el numero de cluster.


void setMaxPagesPerCluster(java.lang.String pages)

Setea la cantidad maxima de pginas por cluster a mostrar.


void setMinPercentage(java.lang.String percentage)

Setea el minimo porcentaje de frecuencia de pgina a mostrar.


void setProject(java.lang.String projectName)

Setea el nombre del proyecto que se utilizara.


void setType(java.lang.String typeClustering)

Setea el tipo de clusters que se estan analizando.


void setUser(java.lang.String userName)

Setea el nombre de usuario que se utilizara.

Methods inherited from class java.lang.Object


clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Constructor Detail

Damin A. MARTINELLI

- 209 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

PagesInClustersViewBean
public PagesInClustersViewBean()
PagesInClustersViewBean
throws java.lang.Exception

Constructor de la clase PagesInClustersViewBean.


Throws:
java.lang.Exception

Method Detail

goFirstPage
public void goFirstPage()
goFirstPage

Se situa en la primera pgina.

hasNextPage
public boolean hasNextPage()
hasNextPage

Indica si existen mas pginas.


Returns:
true si existen mas pginas, false sino.

getNextPage
public java.lang.String getNextPage()
getNextPage

Obtiene la proxima pgina.


Returns:
Proxima pgina.

getNextPercentage
public java.lang.String getNextPercentage()
getNextPercentage

Obtiene el proximo porcentaje de pgina.


Returns:
Porcentaje de pgina.

goFirstCluster
public void goFirstCluster()
goFirstCluster

Se situa en el primer cluster.

Damin A. MARTINELLI

- 210 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

hasNextCluster
public boolean hasNextCluster()
hasNextCluster

Indica se existen mas clusters.


Returns:
true si existen mas clusters, false sino.

getNextCluster
public java.lang.String getNextCluster()
getNextCluster

Obtiene el proximo cluster.


Returns:
Proximo cluster.

setUser
public void setUser(java.lang.String
userName)
setUser

Setea el nombre de usuario que se utilizara.


Parameters:
userName - Nombre del usuario.

getUser
public java.lang.String getUser()
getUser

Obtiene el nombre de usuario utilizado.


Returns:
Nombre del usuario.

setProject
public void setProject(java.lang.String
projectName)
setProject

Setea el nombre del proyecto que se utilizara.


Parameters:
projectName - Nombre del proyecto.

getProject
public java.lang.String getProject()
getProject

Obtiene el nombre del proyecto utilizado.


Returns:
Nombre del proyecto.

Damin A. MARTINELLI

- 211 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

setType
public void setType(java.lang.String
typeClustering)
setType

Setea el tipo de clusters que se estan analizando.


Parameters:
typeClustering - Tipo de clusters.

getType
public java.lang.String getType()
getType

Obtiene el tipo de clusters que se estan analizando.


Returns:
Tipo de clusters.

setCluster
public void setCluster(java.lang.String
clusterNumber)
setCluster

Setea el numero de cluster.


Parameters:
clusterNumber - Numero de cluster.

getCluster
public java.lang.String getCluster()
getCluster

Obtiene el numero de cluster.


Returns:
Numero de cluster.

setMinPercentage
public void setMinPercentage(java.lang.String
percentage)
setMinPercentage

Setea el minimo porcentaje de frecuencia de pgina a mostrar.


Parameters:
percentage - Minimo porcentaje de frecuencia de pgina.

getMinPercentage
public java.lang.String getMinPercentage()
getMinPercentage

Obtiene el minimo porcentaje de frecuencia de pgina a mostrar.

Damin A. MARTINELLI

- 212 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Returns:
Minimo porcentaje de frecuencia de pgina.

setMaxPagesPerCluster
public void setMaxPagesPerCluster(java.lang.String
pages)
setMaxPagesPerCluster

Setea la cantidad maxima de pginas por cluster a mostrar.


Parameters:
pages - Cantidad maxima de pginas por cluster.

getMaxPagesPerCluster
public java.lang.String getMaxPagesPerCluster()
getMaxPagesPerCluster

Obtiene la cantidad maxima de pginas por cluster a mostrar.


Returns:
Cantidad maxima de pginas por cluster.

C.24. Class SessionClusterBean


java.lang.Object
ar.com.do2.iadh.SessionClusterBean

Direct Known Subclasses:


BinarySessionClusterBean, NumericSessionClusterBean
public abstract class SessionClusterBean
extends java.lang.Object

Clase utilizada para contabilizar los clusters descubiertos y cargar esta


informacion en la base de datos.
Author:
Damian Martinelli
Field Summary
protected conn
java.sql.Connection
protected java.lang.String filename

Damin A. MARTINELLI

- 213 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

protected java.lang.String project


protected pstm
java.sql.PreparedStatement
protected pstmDelete
java.sql.PreparedStatement
protected java.lang.String type
protected java.lang.String user

Constructor Summary
SessionClusterBean()

Contructor encargado de inicializar la conexion con la base de datos y preparar las


consultas que se realizaran en ella.

Method Summary
abstract void count(java.lang.String inputFilename)

Realiza el conteo de los clusters descubiertos tomando como entrada


el archivo donde se encuentra a que cluster pertenece cada sesion.
java.lang.String getCount()

Realiza el conteo de los clusters descubiertos, si todos los atributos


necesarios han sido seteados, devolviendo la cantidad de sesiones
contabilizadas.
java.lang.String getFile()

Obtiene el nombre del archivo donde se encuentran las sesiones con


el cluster al cual pertenecen.
java.lang.String getProject()

Obtiene el nombre del proyecto utilizado.


java.lang.String getType()

Obtiene el tipo de clustering utilizado.


java.lang.String getUser()

Obtiene el nombre de usuario utilizado.


void setFile(java.lang.String name)

Setea el nombre del archivo donde se encuentran las sesiones con el


cluster al cual pertenecen.

Damin A. MARTINELLI

- 214 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

void setProject(java.lang.String projectName)

Setea el nombre del proyecto que se utilizara.


void setType(java.lang.String typeClustering)

Setea el tipo de clustering que se realizo, cuyo resultado se encuentra


en el archivo a procesar.
void setUser(java.lang.String userName)

Setea el nombre de usuario que se utilizara.

Methods inherited from class java.lang.Object


clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Field Detail

conn
protected java.sql.Connection conn

pstm
protected java.sql.PreparedStatement pstm

pstmDelete
protected java.sql.PreparedStatement pstmDelete

user
protected java.lang.String user

project
protected java.lang.String project

filename
protected java.lang.String filename

Damin A. MARTINELLI

- 215 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

type
protected java.lang.String type

Constructor Detail

SessionClusterBean
public SessionClusterBean()
SessionClusterBean
throws java.lang.Exception

Contructor encargado de inicializar la conexion con la base de datos y preparar las


consultas que se realizaran en ella.
Throws:
java.lang.Exception

Method Detail

count
public abstract void count(java.lang.String
inputFilename)
count
throws java.lang.Exception

Realiza el conteo de los clusters descubiertos tomando como entrada el archivo


donde se encuentra a que cluster pertenece cada sesion.
Parameters:
inputFilename - Nombre del archivo donde se encuentra la informacion de los
clusters descubiertos.
Throws:
java.lang.Exception

getCount
public java.lang.String getCount()
getCount
throws java.lang.Exception

Realiza el conteo de los clusters descubiertos, si todos los atributos necesarios han
sido seteados, devolviendo la cantidad de sesiones contabilizadas.
Returns:
Cantidad de sesiones contabilizadas.
Throws:
java.lang.Exception

setFile
public void setFile(java.lang.String
name)
setFile

Damin A. MARTINELLI

- 216 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

throws java.lang.Exception

Setea el nombre del archivo donde se encuentran las sesiones con el cluster al cual
pertenecen.
Parameters:
name - Nombre del archivo.
Throws:
java.lang.Exception

getFile
public java.lang.String getFile()
getFile

Obtiene el nombre del archivo donde se encuentran las sesiones con el cluster al
cual pertenecen.
Returns:
String Nombre del archivo.

setUser
public void setUser(java.lang.String
userName)
setUser

Setea el nombre de usuario que se utilizara.


Parameters:
userName - Nombre del usuario.

getUser
public java.lang.String getUser()
getUser

Obtiene el nombre de usuario utilizado.


Returns:
Nombre del usuario.

setProject
public void setProject(java.lang.String
projectName)
setProject

Setea el nombre del proyecto que se utilizara.


Parameters:
projectName - Nombre del proyecto.

getProject
public java.lang.String getProject()
getProject

Damin A. MARTINELLI

- 217 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Obtiene el nombre del proyecto utilizado.


Returns:
Nombre del proyecto.

setType
public void setType(java.lang.String
typeClustering)
setType

Setea el tipo de clustering que se realizo, cuyo resultado se encuentra en el archivo a


procesar.
Parameters:
typeClustering - Tipo de clustering.

getType
public java.lang.String getType()
getType

Obtiene el tipo de clustering utilizado.


Returns:
Tipo de clustering.

C.25. Class SessionMakerBean


java.lang.Object
ar.com.do2.iadh.SessionMakerBean

All Implemented Interfaces:


java.io.Serializable
public class SessionMakerBean
extends java.lang.Object
implements java.io.Serializable

Clase SessionMakerBean encargada de armar las sesiones a partir de los


registros del log almacenados en la tabla log.
Author:
Damian Martinelli
See Also:
Serialized Form
Constructor Summary

Damin A. MARTINELLI

- 218 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

SessionMakerBean()

Constructor de la clase SessionMaker, encargada de armar las sesiones a partir de


los registros del log almacenados en la tabla log.

Method Summary
java.lang.String getMinPageFrequency()

Obtiene la frecuencia minima de pgina.


java.lang.String getMinPagesInSession()

Obtiene la cantidad minima de pginas en cada sesion.


java.lang.String getProject()

Obtiene el nombre del proyecto utilizado.


java.lang.String getSessions()

Si toda la informacion necesaria esta seteada, arma todas las sesiones


para un pryecto de un usuario.
java.lang.String getTimeoutSession()

Obtiene el timeout de sesion.


java.lang.String getUser()

Obtiene el nombre de usuario utilizado.


static void main(java.lang.String[] args)
void make()

Arma las sesiones a partir de los registros de la tabla log.


void setMinPageFrequency(java.lang.String frequency)

Setea la frecuencia minima de pgina.


void setMinPagesInSession(java.lang.String pages)

Setea la cantidad minima de pginas en cada sesion.


void setProject(java.lang.String projectName)

Setea el nombre del proyecto que se utilizara.


void setTimeoutSession(java.lang.String timeout)

Setea el timeout de sesion.


void setUser(java.lang.String userName)

Setea el nombre de usuario que se utilizara.

Methods inherited from class java.lang.Object


clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Damin A. MARTINELLI

- 219 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Constructor Detail

SessionMakerBean
public SessionMakerBean()
SessionMakerBean
throws java.lang.Exception

Constructor de la clase SessionMaker, encargada de armar las sesiones a partir de


los registros del log almacenados en la tabla log.
Throws:
java.lang.Exception

Method Detail

make
public void make()
make
throws java.lang.Exception

Arma las sesiones a partir de los registros de la tabla log.


Throws:
java.lang.Exception

getSessions
public java.lang.String getSessions()
getSessions
throws java.lang.Exception

Si toda la informacion necesaria esta seteada, arma todas las sesiones para un
pryecto de un usuario. Devuelve la cantidad de sesiones distintas generadas.
Returns:
Cantidad de sesiones distintas generadas.
Throws:
java.lang.Exception

setUser
public void setUser(java.lang.String
userName)
setUser
throws java.lang.Exception

Setea el nombre de usuario que se utilizara.


Parameters:
userName - Nombre del usuario.
Throws:
java.lang.Exception

Damin A. MARTINELLI

- 220 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

getUser
public java.lang.String getUser()
getUser

Obtiene el nombre de usuario utilizado.


Returns:
Nombre del usuario.

setProject
public void setProject(java.lang.String
projectName)
setProject
throws java.lang.Exception

Setea el nombre del proyecto que se utilizara.


Parameters:
projectName - Nombre del proyecto.
Throws:
java.lang.Exception

getProject
public java.lang.String getProject()
getProject

Obtiene el nombre del proyecto utilizado.


Returns:
Nombre del proyecto.

setMinPagesInSession
public void setMinPagesInSession(java.lang.String
pages)
setMinPagesInSession

Setea la cantidad minima de pginas en cada sesion.


Parameters:
pages - Cantidad minima de pginas.

getMinPagesInSession
public java.lang.String getMinPagesInSession()
getMinPagesInSession

Obtiene la cantidad minima de pginas en cada sesion.


Returns:
Cantidad minima de pginas.

setTimeoutSession

Damin A. MARTINELLI

- 221 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

public void setTimeoutSession(java.lang.String


timeout)
setTimeoutSession

Setea el timeout de sesion.


Parameters:
timeout - Timeout de sesion.

getTimeoutSession
public java.lang.String getTimeoutSession()
getTimeoutSession

Obtiene el timeout de sesion.


Returns:
Timeout de sesion.

setMinPageFrequency
public void setMinPageFrequency(java.lang.String
setMinPageFrequency
frequency)

Setea la frecuencia minima de pgina.


Parameters:
frequency - Frecuencia minima de pgina.

getMinPageFrequency
public java.lang.String getMinPageFrequency
getMinPageFrequency()
PageFrequency

Obtiene la frecuencia minima de pgina.


Returns:
Frecuencia minima de pgina.

main
public static void main(java.lang.String[]
args)
main
throws java.lang.Exception

Throws:
java.lang.Exception

C.26. Class SessionSaver


java.lang.Object
ar.com.do2.iadh.SessionSaver

Damin A. MARTINELLI

- 222 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

public class SessionSaver


extends java.lang.Object

Clase SessionSaver encargada de ir armando las sesiones y guardarlas en la


tabla session.
Author:
Damian Martinelli
Constructor Summary
SessionSaver()

Constructor de la clase SessionSaver, encargada de ir armando las sesiones y


guardarlas en la tabla session.

Method Summary
int getMinPagesInSession()

Obtiene la cantidad minima de pginas en cada sesion.


java.lang.String getProject()

Obtiene el nombre del proyecto utilizado.


int getSessionsCount()

Obtiene la cantidad de sesiones guardadas.


long getTimeoutSession()

Obtiene el timeout de sesion.


java.lang.String getUser()

Obtiene el nombre de usuario utilizado.


static void main(java.lang.String[] args)
void save(java.lang.String IP, java.lang.String authuser, java.lang.String page,
java.lang.String timestamp)

Graba la informacion de un registro de log, teniendo en cuenta si


pertenece a la misma sesion o a una nueva.
void setMinPagesInSession(int pages)

Setea la cantidad minima de pginas en cada sesion.


void setProject(java.lang.String projectName)

Setea el nombre del proyecto que se utilizara.


void setTimeoutSession(long timeout)

Setea el timeout de sesion.

Damin A. MARTINELLI

- 223 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

void setUser(java.lang.String userName)

Setea el nombre de usuario que se utilizara.

Methods inherited from class java.lang.Object


clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Constructor Detail

SessionSaver
public SessionSaver()
SessionSaver
throws java.lang.Exception

Constructor de la clase SessionSaver, encargada de ir armando las sesiones y


guardarlas en la tabla session.
Throws:
java.lang.Exception

Method Detail

save
public void save(java.lang.String
IP,
save
java.lang.String authuser,
java.lang.String page,
java.lang.String timestamp)
throws java.lang.Exception

Graba la informacion de un registro de log, teniendo en cuenta si pertenece a la


misma sesion o a una nueva.
Parameters:
IP - Direccion IP del registro de log.
authuser - Authuser del registro de log.
page - Pgina solicitada en el registro de log.
timestamp - Marca de tiempo del registro de log.
Throws:
java.lang.Exception

setUser
public void setUser(java.lang.String
userName)
setUser
throws java.lang.Exception

Setea el nombre de usuario que se utilizara.


Damin A. MARTINELLI

- 224 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Parameters:
userName - Nombre del usuario.
Throws:
java.lang.Exception

getUser
public java.lang.String getUser()
getUser

Obtiene el nombre de usuario utilizado.


Returns:
Nombre del usuario.

setProject
public void setProject(java.lang.String
setProject
projectName)
throws java.lang.Exception

Setea el nombre del proyecto que se utilizara.


Parameters:
projectName - Nombre del proyecto.
Throws:
java.lang.Exception

getProject
public java.lang.String getProject()
getProject

Obtiene el nombre del proyecto utilizado.


Returns:
Nombre del proyecto.

getSessionsCount
public int getSessionsCount()
getSessionsCount

Obtiene la cantidad de sesiones guardadas.


Returns:
Cantidad de sesiones.

setTimeoutSession
public void setTimeoutSession(long
timeout)
setTimeoutSession

Setea el timeout de sesion.

Damin A. MARTINELLI

- 225 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Parameters:
timeout - Timeout de sesion.

getTimeoutSession
public long getTimeoutSession()
getTimeoutSession

Obtiene el timeout de sesion.


Returns:
Timeout de sesion.

setMinPagesInSession
public void setMinPagesInSession(int
pages)
setMinPagesInSession

Setea la cantidad minima de pginas en cada sesion.


Parameters:
pages - Cantidad minima de pginas.

getMinPagesInSession
public int getMinPagesInSession()
getMinPagesInSession

Obtiene la cantidad minima de pginas en cada sesion.


Returns:
Cantidad minima de pginas.

main
public static void main(java.lang.String[]
args)
main
throws java.lang.Exception

Throws:
java.lang.Exception

C.27. Class SessionsClusterViewBean


java.lang.Object
ar.com.do2.iadh.SessionsClusterViewBean
public class SessionsClusterViewBean
SessionsClusterViewBean
extends java.lang.Object

Damin A. MARTINELLI

- 226 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Clase encargada de obtener el detalle de las sesiones y a que cluster pertenece


cada una.
Author:
Damian Martinelli
Field Summary
protected conn
java.sql.Connection
protected pstm
java.sql.PreparedStatement
protected int sessionsPerPage

Constructor Summary
SessionsClusterViewBean()

Contructor de la clase SessionsClusterViewBean.

Method Summary
java.lang.String getCurrentSession()

Obtiene el identificador de sesion actual.


java.lang.String getNextCluster()

Obtiene el numero de cluster de la sesion actual.


java.lang.String getNextSequencePages()

Obtiene la secuencia de pginas accedidas en la sesion actual.


java.lang.String getNextSession()

Obtiene el identificador de la proxima sesion.


java.lang.String getProject()

Obtiene el nombre del proyecto utilizado.


java.lang.String getSessionsPerPage()

Obtiene la cantidad de sesiones a mostrar por pgina.


java.lang.String getType()

Obtiene el tipo de clusters que se estan analizando.


java.lang.String getUser()

Obtiene el nombre de usuario utilizado.

Damin A. MARTINELLI

- 227 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

void goFirstSession()

Se situa en la primera sesion.


boolean hasNextSession()

Indica se existen mas sesiones.


void setCurrentSession(java.lang.String session)

Setea el identificador de sesion actual.


void setProject(java.lang.String projectName)

Setea el nombre del proyecto que se utilizara.


void setSessionsPerPage(java.lang.String sessions)

Setea la cantidad de sesiones a mostrar por pgina.


void setType(java.lang.String typeClustering)

Setea el tipo de clusters que se estan analizando.


void setUser(java.lang.String userName)

Setea el nombre de usuario que se utilizara.

Methods inherited from class java.lang.Object


clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Field Detail

conn
protected java.sql.Connection conn

pstm
protected java.sql.PreparedStatement pstm

sessionsPerPage
protected int sessionsPerPage

Constructor Detail

SessionsClusterViewBean
public SessionsClusterViewBean()
SessionsClusterViewBean
throws java.lang.Exception

Damin A. MARTINELLI

- 228 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Contructor de la clase SessionsClusterViewBean.


Throws:
java.lang.Exception

Method Detail

goFirstSession
public void goFirstSession()
goFirstSession
throws java.lang.Exception

Se situa en la primera sesion.


Throws:
java.lang.Exception

hasNextSession
public boolean hasNextSession()
hasNextSession

Indica se existen mas sesiones.


Returns:
true si existen mas sesiones, false sino.

getNextSession
public java.lang.String getNextSession()
getNextSession

Obtiene el identificador de la proxima sesion.


Returns:
Identificador de sesion.

getNextCluster
public java.lang.String getNextCluster()
getNextCluster

Obtiene el numero de cluster de la sesion actual.


Returns:
Numero de cluster.

getNextSequencePages
public java.lang.String getNextSequencePages()
getNextSequencePages

Obtiene la secuencia de pginas accedidas en la sesion actual.


Returns:
Secuencia de pginas.

Damin A. MARTINELLI

- 229 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

setUser
public void setUser(java.lang.String
userName)
setUser

Setea el nombre de usuario que se utilizara.


Parameters:
userName - Nombre del usuario.

getUser
public java.lang.String getUser()
getUser

Obtiene el nombre de usuario utilizado.


Returns:
Nombre del usuario.

setProject
public void setProject(java.lang.String
projectName)
setProject

Setea el nombre del proyecto que se utilizara.


Parameters:
projectName - Nombre del proyecto.

getProject
public java.lang.String getProject()
getProject

Obtiene el nombre del proyecto utilizado.


Returns:
Nombre del proyecto.

setType
public void setType(java.lang.String
typeClustering)
setType

Setea el tipo de clusters que se estan analizando.


Parameters:
typeClustering - Tipo de clusters.

getType
public java.lang.String getType()
getType

Obtiene el tipo de clusters que se estan analizando.


Returns:
Tipo de clusters.
Damin A. MARTINELLI

- 230 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

setSessionsPerPage
public void setSessionsPerPage(java.lang.String
sessions)
setSessionsPerPage

Setea la cantidad de sesiones a mostrar por pgina.


Parameters:
sessions - Cantidad de sesiones por pgina.

getSessionsPerPage
public java.lang.String getSessionsPerPage()
getSessionsPerPage

Obtiene la cantidad de sesiones a mostrar por pgina.


Returns:
Cantidad de sesiones por pgina.

setCurrentSession
public void setCurrentSession
session)
setCurrentSession(java.lang.String
entSession

Setea el identificador de sesion actual.


Parameters:
session - Identificador de la sesion.

getCurrentSession
public java.lang.String getCurrentSession()
getCurrentSession

Obtiene el identificador de sesion actual.


Returns:
Identificador de la sesion.

C.28. Class SOMBean


java.lang.Object
ar.com.do2.iadh.SOMBean

All Implemented Interfaces:


java.io.Serializable, java.util.EventListener, org.joone.engine.NeuralNetListener
public class SOMBean
extends java.lang.Object

Damin A. MARTINELLI

- 231 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

implements java.io.Serializable, org.joone.engine.NeuralNetListener

Clase SOMBean encargada de clusterizar las sesiones de usuarios utilizando la


red neuronal SOM.
Author:
Damian Martinelli
See Also:
Serialized Form
Constructor Summary
SOMBean()

Contructor por defecto.


SOMBean(java.lang.String input, java.lang.String output, int dim)

Contructor de la clase SOMBean, encargada de clusterizar las sesiones de usuarios.

Method Summary
void cicleTerminated(org.joone.engine.NeuralNetEvent e)

Metodo que se ejecuta cada vez que termina un ciclo de


entrenamiento.
void errorChanged(org.joone.engine.NeuralNetEvent e)

Metodo que se ejecuta cada vez que cambia el error.


java.lang.String getClusters()

Realiza la clusterizacion de los usuarios.


java.lang.String getDim()

Obtiene la dimension del mapa de clusterizacion.


java.lang.String getInput()

Obtiene el nombre del archivo de entrada.


java.lang.String getOutput()

Obtiene el nombre del archivo de salida.


java.lang.String getTrainingCicles()

Obtiene la cantidad de ciclos de entrenamiento a realizar.


static void main(java.lang.String[] args)
void netStarted(org.joone.engine.NeuralNetEvent e)

Metodo que se ejecuta cuando comienza el entrenamiento de la red.


void netStopped(org.joone.engine.NeuralNetEvent e)

Damin A. MARTINELLI

- 232 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Metodo que se ejecuta cuando termina el entrenamiento de la red.


void netStoppedError(org.joone.engine.NeuralNetEvent e, java.lang.String error)

Metodo que se ejecuta cuando termina el entrenamiento de la red,


debido a un error.
void save(java.lang.String fileName)

Graba la red en el archivo indicado.


void setDim(java.lang.String dim)

Setea la dimension del mapa de clusterizacion.


void setInput(java.lang.String file)

Setea el nombre del archivo de entrada.


void setOutput(java.lang.String file)

Setea el nombre del archivo de salida.


void setTrainingCicles(java.lang.String cicles)

Setea la cantidad de ciclos de entrenamiento a realizar.


void train(int cicles)

Entrena la red utilizando los patrones de entrada.

Methods inherited from class java.lang.Object


clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Constructor Detail

SOMBean
public SOMBean()
SOMBean

Contructor por defecto.

SOMBean
public SOMBean(java.lang.String
input,
SOMBean
java.lang.String output,
int dim)
throws java.lang.Exception

Contructor de la clase SOMBean, encargada de clusterizar las sesiones de usuarios.


Recibe los archivos de entrada, de salida y la dimension de la clusterizacion (dim X
dim).
Parameters:
input - Nombre el archivo de entrada.

Damin A. MARTINELLI

- 233 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

output

- Nombre del archivo de salida.


dim - Dimension del mapa de clusterizacion (dim x dim).
Throws:
java.lang.Exception

Method Detail

setInput
public void setInput(java.lang.String
file)
setInput

Setea el nombre del archivo de entrada.


Parameters:
file - Nombre del archivo.

getInput
public java.lang.String getInput()
getInput

Obtiene el nombre del archivo de entrada.


Returns:
Nombre del archivo.

setOutput
public void setOutput(java.lang.String
file)
setOutput

Setea el nombre del archivo de salida.


Parameters:
file - Nombre del archivo.

getOutput
public java.lang.String getOutput()
getOutput

Obtiene el nombre del archivo de salida.


Returns:
Nombre del archivo.

setDim
public void setDim(java.lang.String
dim)
setDim

Setea la dimension del mapa de clusterizacion.


Parameters:
dim - Dimension del mapa de clusterizacion.

Damin A. MARTINELLI

- 234 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

getDim
public java.lang.String getDim()
getDim

Obtiene la dimension del mapa de clusterizacion.


Returns:
Dimension del mapa de clusterizacion.

setTrainingCicles
public void setTrainingCicles(java.lang.String
cicles)
setTrainingCicles

Setea la cantidad de ciclos de entrenamiento a realizar.


Parameters:
cicles - Cantidad de ciclos de entrenamiento.

getTrainingCicles
public java.lang.String getTrainingCicles()
getTrainingCicles

Obtiene la cantidad de ciclos de entrenamiento a realizar.


Returns:
Cantidad de ciclos de entrenamiento.

getClusters
public java.lang.String getClusters()
getClusters

Realiza la clusterizacion de los usuarios.


Returns:
Mensaje indicando el exito o el error de la operacion.

train
public void train(int
cicles)
train

Entrena la red utilizando los patrones de entrada.


Parameters:
cicles - Cantidad de ciclos de entrenamiento.

cicleTerminated
public void cicleTerminated(org.joone.engine.NeuralNetEvent
e)
cicleTerminated

Metodo que se ejecuta cada vez que termina un ciclo de entrenamiento.


Specified by:
cicleTerminated in interface org.joone.engine.NeuralNetListener

Damin A. MARTINELLI

- 235 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Parameters:
e - Evento de la red neuronal.

errorChanged
public void errorChanged(org.joone.engine.NeuralNetEvent
e)
errorChanged

Metodo que se ejecuta cada vez que cambia el error.


Specified by:
errorChanged in interface org.joone.engine.NeuralNetListener
Parameters:
e - Evento de la red neuronal.

netStarted
public void netStarted(org.joone.engine.NeuralNetEvent
e)
netStarted

Metodo que se ejecuta cuando comienza el entrenamiento de la red.


Specified by:
netStarted in interface org.joone.engine.NeuralNetListener
Parameters:
e - Evento de la red neuronal.

netStopped
public void netStopped(org.joone.engine.NeuralNetEvent
e)
netStopped

Metodo que se ejecuta cuando termina el entrenamiento de la red.


Specified by:
netStopped in interface org.joone.engine.NeuralNetListener
Parameters:
e - Evento de la red neuronal.

netStoppedError
public void netStoppedError(org.joone.engine.NeuralNetEvent
e,
netStoppedError
java.lang.String error)

Metodo que se ejecuta cuando termina el entrenamiento de la red, debido a un error.


Specified by:
netStoppedError in interface org.joone.engine.NeuralNetListener
Parameters:
e - Evento de la red neuronal.
error - Error.

Damin A. MARTINELLI

- 236 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

save
public void save(java.lang.String
fileName)
save

Graba la red en el archivo indicado.


Parameters:
fileName - Nombre del archivo.

main
public static void main(java.lang.String[]
args)
main

C.29. Class UserBean


java.lang.Object
ar.com.do2.iadh.UserBean
public class UserBean
extends java.lang.Object

Clase que se encarga del manejo de la informacion de un usuario y sus proyectos.


Author:
Damian Martinelli
Constructor Summary
UserBean()

Constructor de la clase UserBean.

Method Summary
java.lang.String getLogCount()

Calcula la cantidad de registros de log cargados en el proyecto


actual.
java.lang.String getNextDescription()

Obtiene la descripcion del proyecto siguiente.


java.lang.String getNextProject()

Obtiene el nombre del siguiente proyecto.

Damin A. MARTINELLI

- 237 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

java.lang.String getProject()

Obtiene el nombre del proyecto utilizado.


java.lang.String getProjects()

Obtiene todos los proyectos del usuario.


java.lang.String getSessionCount()

Obtiene la cantidad de sesiones en el proyecto actual.


java.lang.String getUser()

Obtiene el nombre de usuario utilizado.


void goFirstProject()

Se sitia en el primer proyecto del usuario.


boolean hasNextProject()

Indica si existen mas proyectos.


boolean isSetProject()

Indica si existe seteado un proyecto.


void setProject(java.lang.String projectName)

Setea el nombre del proyecto que se utilizara.


void setUser(java.lang.String userName)

Setea el nombre de usuario que se utilizara.


void unsetProject()

Des-setea el proyecto actual.

Methods inherited from class java.lang.Object


clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Constructor Detail

UserBean
public UserBean()
UserBean
throws java.lang.Exception

Constructor de la clase UserBean.


Throws:
java.lang.Exception

Method Detail

setUser

Damin A. MARTINELLI

- 238 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

public void setUser(java.lang.String


userName)
setUser

Setea el nombre de usuario que se utilizara.


Parameters:
userName - Nombre del usuario.

getUser
public java.lang.String getUser()
getUser

Obtiene el nombre de usuario utilizado.


Returns:
Nombre del usuario.

setProject
public void setProject(java.lang.String
setProject
projectName)

Setea el nombre del proyecto que se utilizara.


Parameters:
projectName - Nombre del proyecto.

getProject
public java.lang.String getProject()
getProject

Obtiene el nombre del proyecto utilizado.


Returns:
Nombre del proyecto.

isSetProject
public boolean isSetProject()
isSetProject

Indica si existe seteado un proyecto.


Returns:
true si esta seteado algun proyectom false sino.

unsetProject
public void unsetProject()
unsetProject

Des-setea el proyecto actual.

getProjects

Damin A. MARTINELLI

- 239 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

public java.lang.String getProjects()


getProjects

Obtiene todos los proyectos del usuario.


Returns:
El nombre de todos los proyectos del usuario separados por un guion.

goFirstProject
public void goFirstProject()
goFirstProject

Se sitia en el primer proyecto del usuario.

hasNextProject
public boolean hasNextProject()
hasNextProject

Indica si existen mas proyectos.


Returns:
true si existen mas proyectos, false sino.

getNextProject
public java.lang.String getNextProject()
getNextProject

Obtiene el nombre del siguiente proyecto.


Returns:
Nombre del proyecto.

getNextDescription
public java.lang.String getNextDescription
getNextDescription()
scription

Obtiene la descripcion del proyecto siguiente.


Returns:
Descripcion del proyecto.

getLogCount
public java.lang.String getLogCount()
getLogCount

Calcula la cantidad de registros de log cargados en el proyecto actual.


Returns:
Cantidad de registros.

getSessionCount

Damin A. MARTINELLI

- 240 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

public java.lang.String getSessionCount()


getSessionCount

Obtiene la cantidad de sesiones en el proyecto actual.


Returns:
Cantidad de sesiones.

Damin A. MARTINELLI

- 241 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

D. Apndice IV: Desarrollo de la Solucin


Mtrica Versin 3
Para el desarrollo de la solucin se utiliz la metodologa de desarrollo de sistemas
denominada Metodologa Mtrica Versin 3 [Mtrica Versin 3]. A continuacin se
detallan todas las actividades de la metodologa realizadas para el desarrollo de la
herramienta que implementa la solucin propuesta en esta tesis.
D.1. Planificacin de Sistemas de Informacin.................................................................. 246
D.1.1. Actividad PSI 1: Inicio del Plan de Sistemas de Informacin............................. 246
D.1.1.1. Tarea PSI 1.1: Anlisis de la Necesidad....................................................... 246
D.1.1.2. Tarea PSI 1.2: Identificacin del Alcance .................................................... 246
D.1.1.3. Tarea PSI 1.3: Determinacin de Responsables ........................................... 246
D.1.2. Actividad PSI 2: Definicin y Organizacin del Plan ......................................... 246
D.1.2.1. Tarea PSI 2.1: Especificacin del mbito y Alcance................................... 246
D.1.2.2. Tarea PSI 2.2: Definicin del Plan de Trabajo ............................................. 247
D.1.2.3. Tarea PSI 2.3: Comunicacin del Plan de Trabajo....................................... 248
D.1.3. Actividad PSI 7: Definicin de la Arquitectura Tecnolgica.............................. 248
D.1.3.1. Tarea PSI 7.1: Identificacin de las Necesidades de Infraestructura
Tecnolgica ................................................................................................................ 248
D.1.3.2. Tarea PSI 7.2: Seleccin de la Arquitectura Tecnolgica ............................ 249
D.1.4. Actividad PSI 8: Definicin del Plan de Accin ................................................. 249
D.1.5. Actividad PSI 9: Revisin y Aprobacin del PSI................................................ 250
D.1.5.1. Tarea PSI 9.1: Convocatoria de la Presentacin........................................... 250
D.1.5.2. Tarea PSI 9.2: Aprobacin del PSI............................................................... 250
D.2. Estudio de Viabilidad del Sistema.............................................................................. 250
D.2.1. Actividad EVS 1: Establecimiento del Alcance del Sistema............................... 250
D.2.1.1. Tarea EVS 1.1: Estudio de la Solicitud ........................................................ 250
D.2.1.2. Tarea EVS 1.2: Identificacin del Alcance del Sistema............................... 251
D.2.2. Actividad EVS 2: Estudio de la Situacin Actual ............................................... 251
D.2.2.1. Tarea EVS 2.1: Valoracin del Estudio de la Situacin Actual ................... 251
D.2.3. Actividad EVS 3: Definicin de Requisitos del Sistema..................................... 251
D.2.3.1. Tarea EVS 3.1: Identificacin de Requisitos................................................ 251
D.2.4. Actividad EVS 4: Estudio de Alternativas de Solucin ...................................... 251
D.2.4.1. Tarea EVS 4.1: Preseleccin de Alternativas de Solucin ........................... 251
D.2.4.2. Tarea EVS 4.2: Descripcin de las Alternativas de Solucin ...................... 252
D.2.5. Actividad EVS 5: Valoracin de las Alternativas ............................................... 253
D.2.5.1. Tarea EVS 5.1: Estudio de la Inversin ....................................................... 253
D.2.5.2. Tarea EVS 5.2: Planificacin de Alternativas .............................................. 254
D.2.6. Actividad EVS 6: Seleccin de la Solucin ........................................................ 255
D.2.6.1. Tarea EVS 6.1: Evaluacin de las Alternativas y Seleccin ........................ 255
D.2.6.2. Tarea 6.2: Aprobacin de la Solucin .......................................................... 256
D.3. Anlisis del Sistema de Informacin .......................................................................... 256
D.3.1. Actividad ASI 1: Definicin del Sistema ............................................................ 256
D.3.1.1. Tarea ASI 1.1: Determinacin del Alcance del Sistema .............................. 256

Damin A. MARTINELLI

- 242 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

D.3.1.2. Tarea ASI 1.2: Identificacin del Entorno Tecnolgico............................... 257


D.3.1.3. Tarea ASI 1.3: Especificacin de Estndares y Normas .............................. 257
D.3.2. Actividad ASI 2: Establecimiento de Requisitos ................................................ 258
D.3.2.1. Tarea ASI 2.1: Obtencin de Requisitos ...................................................... 258
D.3.2.2. Tarea ASI 2.2: Especificacin de Casos de Uso .......................................... 260
D.3.3. Actividad ASI 3: Anlisis de los Casos de Uso................................................... 267
D.3.3.1. Tarea ASI 3.1: Identificacin de Clases Asociadas a un Caso de Uso......... 267
D.3.3.2. Tarea ASI 3.2: Descripcin de la Interaccin de Objetos ............................ 268
D.3.4. Actividad ASI 4: Anlisis de Clases.................................................................... 268
D.3.4.1. Tarea ASI 4.1: Identificacin de Responsabilidades y Atributos................. 269
D.3.5. Actividad ASI 5: Definicin de Interfaces de Usuario........................................ 270
D.3.5.1. Tarea ASI 5.1: Especificacin de Principios Generales de la Interfaz ......... 270
D.3.5.2. Tarea ASI 5.2: Especificacin de Formatos Individuales de la Interfaz de
Pantalla ....................................................................................................................... 271
D.3.5.3. Tarea ASI 5.3: Especificacin del Comportamiento Dinmico de la Interfaz
.................................................................................................................................... 274
D.3.5.4. Tarea ASI 5.4: Especificacin de Formatos de Impresin ........................... 274
D.3.6. Actividad ASI 6: Anlisis de Consistencia y Especificacin de Requisitos ....... 274
D.3.6.1. Tarea ASI 6.1: Verificacin y Validacin de los Modelos........................... 274
D.3.6.2. Tarea ASI 6.2: Elaboracin de la Especificacin de Requisitos Software
(ERS) .......................................................................................................................... 274
D.3.7. Actividad ASI 7: Especificacin del Plan de Pruebas ......................................... 276
D.3.7.1. Tarea ASI 7.1: Definicin del Alcance de las Pruebas................................. 276
D.3.7.2. Tarea ASI 7.2: Definicin de Requisitos del Entorno de Pruebas................ 277
D.3.7.3. Tarea ASI 7.3: Definicin de las Pruebas de Aceptacin del Sistema ......... 277
D.3.8. Actividad ASI 8: Aprobacin del Anlisis del Sistema de Informacin ............. 277
D.3.8.1. Tarea ASI 8.1: Presentacin y Aprobacin del Anlisis del Sistema de
Informacin ................................................................................................................ 277
D.4. Diseo del Sistema de Informacin............................................................................ 277
D.4.1. Actividad DSI 1: Definicin de la Arquitectura del Sistema .............................. 277
D.4.1.1. Tarea DSI 1.1: Definicin de Niveles de Arquitectura................................. 277
D.4.1.2. Tarea DSI 1.2: Identificacin de Requisitos de Diseo y Construccin ...... 278
D.4.1.3. Tarea DSI 1.3: Especificacin de Excepciones ............................................ 278
D.4.1.4. Tarea DSI 1.4: Especificacin de Estndares y Normas de Diseo y
Construccin............................................................................................................... 278
D.4.1.5. Tarea DSI 1.5: Identificacin de Subsistemas de Diseo............................. 279
D.4.1.6. Tarea DSI 1.6: Especificacin del Entorno Tecnolgico ............................. 279
D.4.1.7. Tarea DSI 1.7: Especificacin de Requisitos de Operacin y Seguridad..... 279
D.4.2. Actividad DSI 2: Diseo de la Arquitectura de Soporte ..................................... 279
D.4.2.1. Tarea DSI 2.1: Diseo de Subsistemas de Soporte....................................... 279
D.4.2.2. Tarea DSI 2.2: Identificacin de Mecanismos Genricos de Diseo ........... 279
D.4.3. Actividad DSI 3: Diseo de Casos de Uso Reales .............................................. 280
D.4.3.1. Tarea DSI 3.1: Identificacin de Clases Asociadas a un Caso de Uso......... 280
D.4.3.2. Tarea DSI 3.2: Diseo de la Realizacin de los Casos de Uso .................... 285
D.4.3.3. Tarea DSI 3.3: Revisin de la Interfaz de Usuario....................................... 295
D.4.3.4. Tarea DSI 3.4: Revisin de Subsistemas de Diseo e Interfaces ................. 305
D.4.4. Actividad DSI 4: Diseo de Clases ..................................................................... 305
D.4.4.1. Tarea DSI 4.1: Identificacin de Clases Adicionales ................................... 305

Damin A. MARTINELLI

- 243 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

D.4.4.2. Tarea DSI 4.2: Identificacin de Atributos de las Clases............................. 306


D.4.4.3. Tarea DSI 4.3: Identificacin de Operaciones de las Clases y Descripcin de
sus Mtodos ................................................................................................................ 317
D.4.4.4. Tarea DSI 4.4: Diseo de la Jerarqua .......................................................... 344
D.4.4.5. Tarea DSI 4.5: Especificacin de Necesidades de Migracin y Carga Inicial
de Datos ...................................................................................................................... 345
D.4.5. Actividad DSI 5: Diseo Fsico de Datos............................................................ 345
D.4.5.1. Tarea DSI 5.1: Diseo del Modelo Fsico de Datos ..................................... 345
D.4.5.2. Tarea DSI 5.2: Especificacin de los Caminos de Acceso a los Datos ........ 346
D.4.5.3. Tarea DSI 5.3: Optimizacin del Modelo Fsico de Datos........................... 351
D.4.5.4. Tarea DSI 5.4: Especificacin de la Distribucin de Datos ......................... 351
D.4.6. Actividad DSI 6: Verificacin y Aceptacin de la Arquitectura del Sistema ..... 351
D.4.6.1. Tarea DSI 6.1: Verificacin de las Especificaciones de Diseo .................. 351
D.4.6.2. Tarea DSI 6.2: Anlisis de Consistencia de las Especificaciones de Diseo351
D.4.6.3. Tarea DSI 6.3: Aceptacin de la Arquitectura del Sistema .......................... 351
D.4.7. Actividad DSI 7: Generacin de Especificaciones de Construccin................... 351
D.4.7.1. Tarea DSI 7.1: Especificacin del Entorno de Construccin ....................... 351
D.4.7.2. Tarea DSI 7.2: Definicin de Componentes y Subsistemas de Construccin
.................................................................................................................................... 351
D.4.7.3. Tarea DSI 7.3: Elaboracin de Especificaciones de Construccin .............. 352
D.4.7.4. Tarea DSI 7.4: Elaboracin de Especificaciones del Modelo Fsico de Datos
.................................................................................................................................... 352
D.4.8. Actividad DSI 8: Especificacin Tcnica del Plan de Pruebas ........................... 355
D.4.8.1. Tarea DSI 8.1: Especificacin del Entorno de Pruebas................................ 355
D.4.8.2. Tarea DSI 8.2: Especificacin Tcnica de Niveles de Prueba...................... 355
D.4.8.3. Tarea DSI 8.3: Revisin de la Planificacin de Pruebas .............................. 355
D.4.9. Actividad DSI 9: Establecimiento de Requisitos de Implantacin...................... 355
D.4.9.1. Tarea DSI 9.1: Especificacin de Requisitos de Documentacin de Usuario
.................................................................................................................................... 355
D.4.9.2. Tarea DSI 9.2: Especificacin de Requisitos de Implantacin .................... 355
D.4.10. Actividad DSI 10: Aprobacin del Diseo del Sistema de Informacin........... 356
D.4.10.1. Tarea DSI 10.1: Presentacin y Aprobacin del Diseo del Sistema de
Informacin ................................................................................................................ 356
D.5. Construccin del Sistema de Informacin.................................................................. 358
D.5.1. Actividad CSI 1: Preparacin del Entorno de Generacin y Construccin......... 358
D.5.1.1. Tarea CSI 1.1: Implantacin de la Base de Datos Fsica o Ficheros............ 358
D.5.1.2. Tarea CSI 1.2: Preparacin del Entorno de Construccin............................ 358
D.5.2. Actividad CSI 2: Generacin del Cdigo de los Componentes y Procedimientos
........................................................................................................................................ 358
D.5.2.1. Tarea CSI 2.1: Generacin del Cdigo de Componentes ............................. 358
D.5.2.2. Tarea CSI 2.2: Generacin del Cdigo de los Procedimientos de Operacin y
Seguridad .................................................................................................................... 358
D.5.3. Actividad CSI 3: Ejecucin de las Pruebas Unitarias.......................................... 358
D.5.3.1. Tarea CSI 3.1: Preparacin del Entorno de las Pruebas ............................... 358
D.5.3.2. Tarea CSI 3.2: Realizacin y Evaluacin de las Pruebas Unitarias ............. 359
D.5.4. Actividad CSI 4: Ejecucin de las Pruebas de Integracin y del Sistema........... 359
D.5.4.1. Tarea CSI 4.1: Preparacin del Entorno de las Pruebas de Integracin y del
Sistema ....................................................................................................................... 359

Damin A. MARTINELLI

- 244 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

D.5.4.2. Tarea CSI 4.2: Realizacin de las Pruebas de Integracin y del Sistema..... 359
D.5.4.3. Tarea CSI 4.3: Evaluacin del Resultado de las Pruebas de Integracin y del
Sistema ....................................................................................................................... 362
D.5.5. Actividad CSI 5: Elaboracin de los Manuales de Usuario ................................ 362
D.5.5.1. Tarea CSI 5.1: Elaboracin de los Manuales de Usuario ............................. 362
D.5.6. Actividad CSI 6: Aprobacin del Sistema de Informacin ................................. 362
D.5.6.1. Tarea CSI 6.1: Presentacin y Aprobacin del Sistema de Informacin ..... 362

Damin A. MARTINELLI

- 245 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

D.1. Planificacin de Sistemas de Informacin


El Plan de Sistemas de Informacin tiene como objetivo la obtencin de un marco de
referencia para el desarrollo de sistemas de informacin que responda a los objetivos
estratgicos de la organizacin.

D.1.1. Actividad PSI 1: Inicio del Plan de Sistemas de Informacin


D.1.1.1. Tarea PSI 1.1: Anlisis de la Necesidad
El presente plan de Sistemas de Informacin tiene dos objetivo principales, permitir
al tesista obtener el ttulo de Ingeniero en Informtica y construir una herramienta que
permita experimentar la solucin propuesta en esta tesis, de modo de poder verificar la
efectividad de la misma y contrastarla con soluciones ya existentes al mismo problema.

D.1.1.2. Tarea PSI 1.2: Identificacin del Alcance


El presente sistema se basa en el anlisis realizado en una empresa que se dedica a la
venta de temas musicales por medio de Internet.
El factor crtico de xito a considerar es lograr obtener mediante la red neuronal SOM
grupos de usuarios que posean ms informacin sobre su comportamiento que los
obtenidos mediante el algoritmo K-Means.

D.1.1.3. Tarea PSI 1.3: Determinacin de Responsables


Debido a las particularidades de este desarrollo, los responsables son las personas
implicadas en esta tesis. El tesista, el Sr. Damin Martinelli, es el responsable de todo el
desarrollo y los directores de esta tesis, M.Ing. Paola Britos y M.Ing. Hernn Merlino, de la
evaluacin de las tareas realizadas por el tesista.

D.1.2. Actividad PSI 2: Definicin y Organizacin del Plan


D.1.2.1. Tarea PSI 2.1: Especificacin del mbito y Alcance
A modo de ejemplo, podemos decir que tratndose de una empresa con un
organigrama tipo, el Departamento de Marketing utilizar el sistema para conocer mejor a
los usuarios del sitio Web, permitindoles organizar mejores campaas de promocin y

Damin A. MARTINELLI

- 246 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

poder desplegarlas en los medios que logren el mayor impacto sobre los receptores de las
mismas.
El Departamento de Diseo Grfico utilizar las descripciones de los grupos de
usuarios para modificar la estructura y navegacin del sitio, de modo de mantener unidas
las pginas que acceden cada grupo de usuarios descubierto. De esta forma, se le facilita el
acceso a los usuarios de la informacin que necesitan.
Los Administradores de los servidores Web tendrn que suministrar al sistema los
registros de logs de los sitios, para que se pueda realizar el estudio de los mismos.

D.1.2.2. Tarea PSI 2.2: Definicin del Plan de Trabajo


Las actividades includas en el plan de trabajo del PSI son las siguientes:
-

Definicin del equipo de trabajo

o Analista Semi-Senior
o Analista Senior
o Diseador
o Programador Senior
Al tratarse de un proyecto de tesis, todos los roles sern cumplidos por el
autor de la misma.
-

Descripcin general del PSI:


El sistema ser utilizado para el agrupamiento de usuarios, mediante una red
neuronal SOM y el algoritmo K-Means, de modo de poder comparar los grupos
generados por cada mtodo.

Catlogo de objetivos del PSI

o Interfaz Web: la aplicacin debe ser accedida en un entorno Web, de


modo que el usuario pueda utilizarla directamente desde su navegador
favorito.
o Multiplataforma: la aplicacin deber ser desarrollada en un lenguaje que
soporte mltiples plataformas. De esta forma se la independiza del
sistema operativo sobre el cual se ejecutar.
o Facilidad de Uso: deber tener una interfaz de usuario simple y
amigable, de modo que usuarios sin experiencia en el uso de
herramientas de este tipo puedan trabajar con la misma y realizar los
estudios que necesiten.

Damin A. MARTINELLI

- 247 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

D.1.2.3. Tarea PSI 2.3: Comunicacin del Plan de Trabajo


El plan de trabajo es comunicado a los directores de esta tesis, el cual es analizado y
aprobado [Tabla D.1].

Fecha de
Fecha de
Duracin
Comienzo Finalizacin
(das)
02/05/2005 03/05/2005
1
03/05/2005 04/05/2005
1
04/05/2005 07/05/2005
3

Tarea
Definicin del equipo de trabajo
Descripcin general del PSI
Catlogo de objetivos del PSI
Descripcin general de procesos de la
organizacin afectados
Catlogo de usuarios

09/05/2005 11/05/2005

11/05/2005 12/05/2005

Tabla D.1. Plan de Trabajo

A continuacin se representa el plan de trabajo mediante un diagrama de Gantt


[Figura D.1]:

Figura D.1. Gantt del Plan de Trabajo

D.1.3. Actividad PSI 7: Definicin de la Arquitectura Tecnolgica


D.1.3.1. Tarea PSI 7.1: Identificacin de las Necesidades de Infraestructura
Tecnolgica
Es necesario contar con estaciones de trabajo para el desarrollo del sistema y
servidores donde se desplegar el mismo.
Existir un servidor donde se tendr la versin de desarrollo y sobre la cual trabajar
el equipo de anlisis, diseo y programacin.
Un servidor se utilizar para la ejecucin de las pruebas y otro ser utilizado para el
ambiente de produccin. Las caractersticas de los mismos sern idnticas.
Tambin es necesario otro servidor como repositorio del cdigo fuente del sistema,
que ser utilizado por los desarrolladores para obtener la ltima versin disponible y
actualizarla.

Damin A. MARTINELLI

- 248 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Todos estos servidores y las estaciones de trabajo deben estar interconectados


mediante una red local de alta velocidad [Figura D.2].

Figura D.2. Infraestructura Tecnolgica

D.1.3.2. Tarea PSI 7.2: Seleccin de la Arquitectura Tecnolgica


El sistema ser desarrollado utilizando el lenguaje de programacin Java, el cual
permite ser ejecutado en plataformas Unix y Windows.

D.1.4. Actividad PSI 8: Definicin del Plan de Accin


El plan de accin es un plan anual, que detalla todos los proyectos que se realizarn
en el transcurso del ao. Como en este caso se trata de un trabajo de tesis, el nico proyecto
es el desarrollo de un sistema de Identificacin de Hbitos de Uso de Sitios Web.

Damin A. MARTINELLI

- 249 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

D.1.5. Actividad PSI 9: Revisin y Aprobacin del PSI


D.1.5.1. Tarea PSI 9.1: Convocatoria de la Presentacin
Se presentan los siguientes puntos:
-

Identificacin de los requisitos del PSI

Definicin de la arquitectura tecnolgica

Definicin del plan de accin.

D.1.5.2. Tarea PSI 9.2: Aprobacin del PSI


El proyecto a realizar fue presentado a los directores de esta tesis, M.Ing. Paola Britos
y M.Ing. Hernn Merlino, quienes han dado su aprobacin y conformidad.

D.2. Estudio de Viabilidad del Sistema


Mientras que el Plan de Sistemas de Informacin tiene como objetivo proporcionar
un marco estratgico que sirva de referencia para los Sistemas de Informacin de un mbito
concreto de una organizacin, el objetivo del Estudio de Viabilidad del Sistema es el
anlisis de un conjunto concreto de necesidades para proponer una solucin a corto plazo,
que tenga en cuenta restricciones econmicas, tcnicas, legales y operativas. La solucin
obtenida como resultado del estudio puede ser la definicin de uno o varios proyectos que
afecten a uno o varios sistemas de informacin ya existentes o nuevos. Para ello, se
identifican los requisitos que se ha de satisfacer y se estudia, si procede, la situacin actual.

D.2.1. Actividad EVS 1: Establecimiento del Alcance del Sistema


D.2.1.1. Tarea EVS 1.1: Estudio de la Solicitud
El sistema ser utilizado para el agrupamiento de usuarios, mediante una red neuronal
SOM y el algoritmo K-Means, de modo de poder comparar los grupos generados por cada
mtodo.
Debido a que se est realizando un trabajo de tesis y que no se dispone de un
presupuesto asignado, no son tenidas en cuenta las restricciones econmicas.
Se posee todo el equipo tcnico necesario para el desarrollo y prueba del sistema. Y
se cuenta con personal capacitado para el desarrollo.

Damin A. MARTINELLI

- 250 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Como restriccin legal se debe tener en consideracin que no pueden ser publicados
los accesos de navegacin de una persona en particular, de modo de preservar su
privacidad.

D.2.1.2. Tarea EVS 1.2: Identificacin del Alcance del Sistema


Esta tarea no es necesario realizarla debido a que en ella se debe considerar la
sincronizacin con otros proyectos. En este caso existe un nico proyecto.

D.2.2. Actividad EVS 2: Estudio de la Situacin Actual


D.2.2.1. Tarea EVS 2.1: Valoracin del Estudio de la Situacin Actual
Se ha buscado en Internet y consultado a especialistas en el tema, mas no se encontr
ningn sistema actual que provea la funcionalidad que se desarrollar en este proyecto. Por
lo tanto, esta tarea no se realiza.

D.2.3. Actividad EVS 3: Definicin de Requisitos del Sistema


D.2.3.1. Tarea EVS 3.1: Identificacin de Requisitos
Se debe poder realizar la agrupacin de usuarios en base a sus hbitos de uso de un
sitio Web, permitiendo la comparacin entre los grupos obtenidos mediante la red neuronal
SOM y el algoritmo K-Means. Los grupos descubiertos mediante la red neuronal SOM
debern poder ser mejor descriptos en base a su comportamiento en el sitio que los
equivalentes descubiertos mediante el algoritmo K-Means.

D.2.4. Actividad EVS 4: Estudio de Alternativas de Solucin


D.2.4.1. Tarea EVS 4.1: Preseleccin de Alternativas de Solucin
Se identifican tres mdulos que podran tener soluciones independientes [Tabla D.2]:

Mdulo
Preprocesamiento y construccin de
sesiones de usuarios

Damin A. MARTINELLI

Solucin
Desarrollo de una herramienta a medida, para
poder realizar todas las tareas de
preprocesamiento requeridas.

- 251 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Mdulo

Solucin
Realizacin de estas tareas mediante comandos
de tipo scripts, como grep, sed, awk, etc.. No se
posee disponible ningn producto estndar
como para poder llevar a cabo esta tarea de
forma completa.
Utilizacin de herramientas disponibles que
realizan esta actividad, como Weka.
Realizacin a medida de los algoritmos de
agrupamiento, ya sea la red neuronal SOM o el
algoritmo K-Means.

Agrupamiento de usuarios
Incorporacin de componentes ya
implementados, como una red neuronal SOM o
el algoritmo K-Means, en una herramienta
realizada a medida, adaptando dichos
componentes, de modo que lleven a cabo las
tareas requeridas.
Realizacin de una herramienta a medida. Es la
solucin que mejor se adapta debido a que se
desea analizar resultados para los cuales no se
ha encontrado herramienta que permita dicho
anlisis.

Anlisis de resultados

Tabla D.2. Alternativas de Solucin

D.2.4.2. Tarea EVS 4.2: Descripcin de las Alternativas de Solucin


Mdulo Preprocesamiento y construccin de sesiones de usuario:

Solucin herramienta a medida: se debe realizar una herramienta capaz de preprocesar los registros de archivos de log, para luego identificar a los usuarios y a
sus sesiones. Para ello se tendrn distintas clases encargadas de realizar cada
tarea, obteniendo como entrada los resultados del procesamiento de la clase
anterior.

Solucin mediante comandos de tipo scripts: con esta solucin se deben realizar
varios scripts que realicen cada una de las tareas de preprocesamiento, para ser
ejecutadas secuencialmente por el usuario, o mediante otro script que automatice
esta operacin.
Mdulo Agrupamiento de usuarios:

Damin A. MARTINELLI

- 252 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Solucin utilizacin de herramientas estndares: se debe elegir qu herramienta


se utilizar, que permita realizar las tareas necesarias, teniendo que adaptar los
resultados del mdulo anterior a los formatos de entrada de las herramientas
seleccionadas.

Solucin implementacin de algoritmos de agrupamiento: se deben implementar


los algoritmos de la red neuronal SOM y de K-Means, para permitir el
agrupamiento de los usuarios en base a sus hbitos de navegacin en sitios Web.

Solucin mixta, utilizando componentes existentes y adaptndolos mediante


programacin especfica: se debe seleccionar qu componentes sern utilizados,
analizar la adaptacin a realizar en los mismos y luego implementar dicha
adaptacin.
Mdulo Anlisis de resultados:

La solucin que mejor se adapta es la realizacin de una herramienta a medida,


capaz de analizar los resultados obtenidos en el mdulo anterior y mostrarlos de
diversos modos, para permitir el anlisis de los mismos por parte del usuario del
sistema. Esta herramienta debe ser capaz de tomar la salida del mdulo anterior,
mostrar la cantidad de sesiones que existen en cada grupo de usuarios
descubierto, mostrar las pginas que acceden frecuentemente los usuarios de
cada grupo e indicar a qu grupo de usuarios corresponde cada sesin de usuario
construida mediante el primer mdulo.

D.2.5. Actividad EVS 5: Valoracin de las Alternativas


D.2.5.1. Tarea EVS 5.1: Estudio de la Inversin
Debido a las particularidades de este desarrollo, el estudio de los beneficios y costos
no ser realizado basado en conceptos econmicos, sino que sern valorados en base a los
costos en tiempo de trabajo necesarios para realizar cada solucin propuesta y la calidad de
los resultados que otorguen.
Mdulo Preprocesamiento y construccin de sesiones de usuario:

Solucin herramienta a medida: posee como beneficio que la herramienta


implementada tendr gran capacidad de adaptacin a los cambios que puedan
surgir en el futuro en los formatos de los diferentes preprocesamientos que se
realizan en este mdulo. El costo de este beneficio es un mayor trabajo
necesario para la realizacin de la herramienta.

Solucin mediante comandos de tipo scripts: esta solucin posee el beneficio


que es de ms rpida implementacin, pero a costa de una peor capacidad de
adaptacin a los cambios y un sistema poco mantenible, los cuales son los
problemas que aparecen en las soluciones en base a scripts cuando son utilizadas
para resolver cuestiones que poseen una complejidad como la realizada aqu.

Damin A. MARTINELLI

- 253 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Mdulo Agrupamiento de usuarios:

Solucin utilizacin de herramientas estndares: el beneficio inmediato es la no


necesidad de desarrollar ninguna herramienta, pero a costa de perder flexibilidad
en las actividades a realizar.

Solucin implementacin de algoritmos de agrupamiento: con esta solucin se


puede implementar lo que realmente necesitamos y cmo lo necesitamos, pero
es necesario un gran trabajo para realizar esta implementacin.

Solucin mixta, utilizando componentes existentes y adaptndolos mediante


programacin especfica: esta solucin permite utilizar componentes ya
existentes que cumplan con nuestras necesidades y adaptarlos cuando existan
diferencias entre lo disponible y lo deseado. El beneficio es que se utilizan
componentes de alta calidad, ya probados y con mltiples funcionalidades, y
solo con algunas tareas de adaptacin pueden ser utilizados para resolver nuestro
trabajo. Los costos de esta solucin desaparecen si los componentes utilizados
son lo suficientemente flexibles para poder ser adaptados a nuestras necesidades.
Mdulo Anlisis de resultados:

No se encontraron soluciones alternativas para la realizacin de este mdulo.

D.2.5.2. Tarea EVS 5.2: Planificacin de Alternativas


Mdulo Preprocesamiento y construccin de sesiones de usuario:

Solucin herramienta a medida:

o Implementacin del preprocesamiento de los registros del archivo de log.


o Implementacin de la identificacin de usuarios.
o Implementacin de la identificacin de sesiones de usuarios.

Solucin mediante comandos de tipo scripts:

o Implementacin del preprocesamiento de los registros del archivo de log.


o Implementacin de la identificacin de usuarios.
o Implementacin de la identificacin de sesiones de usuarios.
Mdulo Agrupamiento de usuarios:

Solucin utilizacin de herramientas estndares:

o Seleccin de herramientas estndares a analizar.


o Seleccin de la o las herramientas mejores para este caso.
o Especificacin de los procedimientos a seguir para la utilizacin de estas
herramientas para realizar el agrupamiento de usuarios.

Damin A. MARTINELLI

- 254 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Solucin implementacin de algoritmos de agrupamiento:

o Identificar algoritmos necesarios a implementar.


o Identificar las distintas alternativas para la implementacin de dichos
algoritmos.
o Implementar todos los algoritmos necesarios.
o Integrar los algoritmos implementados para realizar el agrupamiento de
usuarios.

Solucin mixta, utilizando componentes existentes y adaptndolos mediante


programacin especifica:

o Seleccin de componentes existentes a analizar.


o Seleccin del o de los componentes mejores para este caso.
o Anlisis de las adaptaciones necesarias a realizar en los componentes
seleccionados.
o Implementacin de las adaptaciones necesarias.
Mdulo Anlisis de resultados:

o Solucin herramienta a medida:


o Anlisis de las implementaciones a realizar.
o Diseo de las implementaciones a realizar.
o Implementacin de la herramienta.

D.2.6. Actividad EVS 6: Seleccin de la Solucin


D.2.6.1. Tarea EVS 6.1: Evaluacin de las Alternativas y Seleccin
Mdulo Preprocesamiento y construccin de sesiones de usuario:

Solucin herramienta a medida: posee las mejores caractersticas para resolver la


actividad necesaria.

Solucin mediante comandos de tipo scripts: no es capaz de cumplir con todas


las necesidades de esta actividad.
Mdulo Agrupamiento de usuarios:

Solucin utilizacin de herramientas estndares: no poseen la flexibilidad


necesaria para realizar esta actividad.

Damin A. MARTINELLI

- 255 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Solucin implementacin de algoritmos de agrupamiento: posee una gran carga


de trabajo, no justificable con los resultados que pueden ser obtenidos mediante
la utilizacin de la tercer alternativa.

Solucin mixta, utilizando componentes existentes y adaptndolos mediante


programacin especfica: es la solucin que provee de la flexibilidad buscada.
Mdulo Anlisis de resultados:

Solucin herramienta a medida: no se identificaron otras posibles soluciones.


Por ende, las soluciones seleccionadas fueron [Tabla D.3]:

Mdulo

Solucin

Preprocesamiento y construccin de
sesiones de usuarios

Agrupamiento de usuarios

Anlisis de resultados

Desarrollo herramienta a medida.


Utilizar componentes existentes y adaptarlos
mediante programacin especfica.

Desarrollo herramienta a medida.

Tabla D.3. Soluciones Seleccionadas

D.2.6.2. Tarea 6.2: Aprobacin de la Solucin


La solucin seleccionada fue presentada a los directores de esta tesis, los cuales
dieron su conformidad con la misma.

D.3. Anlisis del Sistema de Informacin


D.3.1. Actividad ASI 1: Definicin del Sistema
D.3.1.1. Tarea ASI 1.1: Determinacin del Alcance del Sistema
El sistema debe permitir el pre-procesado de archivos de logs, armando las sesiones
de usuarios, para luego realizar el agrupamiento de usuarios. Debe, adems, tener mtodos
para analizar los resultados obtenidos. Queda fuera del alcance del sistema cualquier uso

Damin A. MARTINELLI

- 256 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

que se le desee dar a los resultados obtenidos, el sistema nicamente los despliega para la
correcta comprensin por parte del usuario del sistema.
A continuacin se muestra el diagrama de contexto [Figura D.3]:

Figura D.3. Diagrama de Contexto

D.3.1.2. Tarea ASI 1.2: Identificacin del Entorno Tecnolgico


El sistema deber poder ejecutarse bajo plataformas Unix y Windows, tendr interfaz
Web y arquitectura cliente-servidor. El sistema ser desarrollado utilizando el lenguaje de
programacin Java, el cual permite ser ejecutado en plataformas Unix y Windows.

D.3.1.3. Tarea ASI 1.3: Especificacin de Estndares y Normas


Los formatos de archivos de logs que debe permitir utilizar el sistema son:

CLF (Common Log Format)


[http://www.w3.org/Daemon/User/Config/Logging.html].

Damin A. MARTINELLI

- 257 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

CLF Extendido utilizando los campos Referrer y Agent (Common Log Format
Extendido, Combined Log Format) [http://www.w3.org/TR/WD-logfile.html].

Estos formatos son soportados por los principales servidores Web disponibles,
como por ejemplo Apache HTTP Server, Apache Tomcat, Microsoft IIS y Netscape
Enterprise Server.

D.3.2. Actividad ASI 2: Establecimiento de Requisitos


D.3.2.1. Tarea ASI 2.1: Obtencin de Requisitos
Los requisitos del sistema son:

R1.

Preprocesamiento de archivos de log de servidores Web, obteniendo la


informacin necesaria de cada registro, y nicamente de los registros
considerados importantes por el usuario.

R2.

Identificacin de usuarios a partir de los archivos de log pre-procesados.

R3.

Identificacin de las sesiones de usuarios.

R4.

Agrupamiento de usuarios en base a las sesiones de usuario identificadas


anteriormente, utilizando la red neuronal SOM propuesta en esta tesis.

R5.

Agrupamiento de usuarios en base a las sesiones de usuario identificadas


anteriormente, utilizando el algoritmo K-Means.

R6.

Mtodos que permitan el anlisis de los resultados obtenidos en el


agrupamiento de usuarios, que permitan mostrar la cantidad de sesiones que
existen en cada grupo de usuarios descubierto, mostrar las pginas que acceden
frecuentemente los usuarios de cada grupo e indicar a qu grupo de usuarios
corresponde cada sesin de usuario identificada anteriormente.

R7.

Se deben poder tener varios usuarios en el sistema, los cuales deben iniciar
sesin mediante una contrasea.

R8.

Cada usuario puede tener varios proyectos, donde se realizan distintos anlisis
de sitios Web.

R9.

Los formatos de log que debe soportar el sistema son el formato de log comn
(CLF) y el formato extendido con los campos del CLF ms los campos Referer y
Agent.

R10. Para el preprocesamiento se decidio utilizar tres filtros distintos:


o El primero es un filtro de extensiones de recursos. El usuario puede
indicar cuales extensiones de los recursos deben ser incluidas en el
armado de las sesiones de los usuarios. Toda extensin no indicada por
el usuario, ser filtrada e ignorada para el armado de las sesiones.
o El segundo filtro es sobre la base de los cdigos de error de http. El
usuario indica qu cdigos de error son considerados para la tarea de la

Damin A. MARTINELLI

- 258 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

construccin de las sesiones de usuarios. Solo las lneas del archivo de


log que posean los cdigos de error especificados por el usuario sern
incluidas en el proceso de construccin de sesiones. En forma
predeterminada, solo el cdigo de error 200 debera ser considerado.

o El tercer filtro incorpora la distincion de pginas distintas en base a


variables GET. Se deber permitir indicar variables GET que son
identificadoras de pginas distintas, las cuales sern consideradas para
diferenciar a las pginas del sitio.
R11. Los distintos usuarios sern identificados sobre la base de su direccin IP.
Todas las peticiones originadas desde una misma direccin IP son consideradas
pertenecientes al mismo usuario. Adicionalmente, se utilizar el usuario de
autenticacin http cuando el mismo este disponible, para identificar a los
distintos usuarios.
R12. Las sesiones sern divididas teniendo en cuenta un tiempo mximo entre
peticiones consecutivas consideradas pertenecientes a la misma sesin de
usuario. Este tiempo deber ser configurable por el usuario. Tambin ser
posible indicar la cantidad mnima de pginas en una sesin para tomarla en
consideracin en la posterior tarea de identificacin de hbitos de los usuarios.
Adems se permitir indicar la frecuencia mnima de cada pgina, filtrando las
pginas que posean una frecuencia menor a la mnima en el total de peticiones de
todos los usuarios.
R13. La red neuronal a emplear ser un mapa auto-organizativo (SOM), que posee
tantas entradas como pginas frecuentes posea un sitio Web. Las pginas
frecuentes son las que poseen una frecuencia mayor a la especificada por el
usuario en la tarea de preprocesamiento. La red neuronal se construir en forma
dinmica para permitir las entradas necesarias para el sitio Web analizado. La
salida de la red neuronal SOM es un mapa de dos dimensiones de N x N, donde
N es configurable por el usuario, y depende de la cantidad de clusters que el
mismo desee obtener. En el mapa de salida, solo una salida ser activada,
indicado por el valor binario uno. Todas las dems salidas tendrn un valor nulo.
La salida activada representa el cluster al cual pertenece el patrn ingresado.
Patrones similares pertenecern al mismo cluster o a clusters cercanos en el
mapa de salida.
A continuacin se muestra el agrupamiento de los requisitos en base a las
caractersticas de su funcionalidad [Tabla D.4]:

Damin A. MARTINELLI

- 259 -

X
X
X
X
X

X
X

X
X

Tabla D.4. Agrupamiento de Requisitos

D.3.2.2. Tarea ASI 2.2: Especificacin de Casos de Uso


Los casos de uso del sistema se pueden observar a continuacin [Figura D.4]:

Damin A. MARTINELLI

- 260 -

Disponibilidad del Sistema

Implantacin

X
X
X
X
X
X

Seguridad

R1 Preprocesamiento Log
R2 Identificacin de Usuarios
R3 Identificacin de Sesiones de Usuarios
R4 Agrupamiento de Usuarios con SOM
R5 Agrupamiento de Usuarios con K-Means
R6 Anlisis de Resultados
R7 Usuarios del Sistema
R8 Proyectos de Usuarios
R9 Formatos de Logs
R10 Filtros de Preprocesamiento de Logs
R11 Criterios para la Identificacin de Usuarios
R12 Criterios para la Identificacin de Sesiones de Usuarios
R13 Caractersticas de la Red Neuronal SOM

Rendimiento

Funcional

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Figura D.4. Casos de Uso

Damin A. MARTINELLI

- 261 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Caso de Uso

Pre-procesar archivo de log

Descripcin

Pre-procesa el archivo de log que el usuario desea, tomando


en cuenta nicamente los registros considerados importantes
por el usuario y los campos tiles para las posteriores
actividades.

Precondiciones

El usuario posee un archivo de log para pre-procesar.

Poscondiciones

El archivo de log se encuentra pre-procesado y listo


para que se proceda a la identificacin de usuarios.

Especificacin

Damin A. MARTINELLI

Paso

Accin

El usuario selecciona un archivo de log a preprocesar.

El usuario indica el tipo de archivo de log.

El usuario indica las extensiones de los archivos


solicitados que sern considerados para seleccionar
registros.

El usuario indica los cdigos de error HTTP que


sern considerados para seleccionar registros.

El usuario indica que variables pasadas por el mtodo


GET son consideradas identificadoras de pgina.

El usuario inicia el pre-procesado del archivo de log.

El sistema selecciona los registros que cumplen con


las restricciones indicadas por el usuario.

El archivo de log fue pre-procesado.

- 262 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Caso de Uso

Identificar usuarios

Descripcin

Toma como entrada el archivo de log pre-procesado, para


realizar la identificacin de los distintos usuarios que han
realizado peticiones al sitio Web analizado.

Precondiciones

El archivo de log fue pre-procesado.

Poscondiciones

Se identificaron los distintos usuarios del sitio Web.

Especificacin

Damin A. MARTINELLI

Paso

Accin

El usuario indica que se proceda a la identificacin de


usuarios

El sistema identifica a los usuarios en base a la


direccin IP y al campo authuser de los registros del
archivo de log pre-procesado.

Se identificaron los distintos usuarios presentes en el


archivo de log.

- 263 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Caso de Uso

Identificar sesiones de usuario

Descripcin

Se identifican las distintas sesiones de usuarios, tomando en


cuenta los distintos parmetros indicados por el usuario para
realizar esta identificacin.

Precondiciones

El archivo de log fue pre-procesado.


Los usuarios fueron identificados.

Poscondiciones

Se identificaron las sesiones de usuario en el sitio


Web de anlisis.

Especificacin

Damin A. MARTINELLI

Paso

Accin

El usuario indica la cantidad mnima de solicitudes


de pginas que deben existir en una sesin para ser
considerada.

El usuario indica el tiempo mximo entre peticiones


del mismo usuario para ser consideradas como
pertenecientes a la misma sesin.

El usuario indica la frecuencia mnima que debe


aparecer cada pgina en el total del archivo de log
pre-procesado para ser tomada en consideracin en el
armado de las sesiones.

El usuario inicia la identificacin de sesiones de


usuario.

El sistema agrupa las sesiones de usuario en base a


las opciones suministradas por el usuario, juntando
varios registros de log en una sesin de usuario.

Se han identificado las sesiones de los usuarios.

- 264 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Caso de Uso

Agrupar usuarios utilizando red neuronal SOM

Descripcin

Se procede a agrupar a los distintos usuarios descubiertos


anteriormente, utilizando para ello la red neuronal SOM
propuesta en esta tesis. El usuario debe indicar cuantos
grupos se desean obtener y cuanto entrenamiento se realizar
con la red neuronal.

Precondiciones

El archivo de log fue pre-procesado.


Los usuarios fueron identificados.
Las sesiones de usuario fueron identificadas.

Poscondiciones

Se poseen los grupos de usuario identificados.

Especificacin

Damin A. MARTINELLI

Paso

Accin

El usuario indica la cardinalidad del mapa de


clusterizacin utilizado en la red neuronal.

El usuario indica la cantidad de ciclos de


entrenamiento que se realizarn con el conjunto de
sesiones de usuario descubiertas anteriormente.

El usuario inicia la agrupacin de los usuarios.

El sistema transforma las sesiones de los usuarios en


un formato apto como entrada para la red neuronal.

El sistema ingresa a la red neuronal todos los


patrones correspondientes a todas las sesiones de
usuario, repitiendo esta operacin la cantidad de
ciclos indicada por el usuario, procediendo al
entrenamiento de la red neuronal.

El sistema realiza la agrupacin de los usuarios


utilizando la red neuronal previamente entrenada.

Se han agrupado a los usuarios.

- 265 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Caso de Uso

Agrupar usuarios utilizando K-Means

Descripcin

Se procede a agrupar a los distintos usuarios descubiertos


anteriormente, utilizando para ello el algoritmo K-Means. El
usuario debe indicar cuantos grupos se desean obtener.

Precondiciones

El archivo de log fue pre-procesado.


Los usuarios fueron identificados.
Las sesiones de usuario fueron identificadas.

Poscondiciones

Se poseen los grupos de usuario identificados.

Especificacin

Damin A. MARTINELLI

Paso

Accin

El usuario indica la cantidad de clusters (grupos) de


usuarios a descubrir.

El usuario inicia la agrupacin de los usuarios.

El sistema transforma las sesiones de los usuarios en


un formato apto como entrada para el algoritmo KMeans.

El sistema ingresa al algoritmo K-Means todos los


patrones correspondientes a todas las sesiones de
usuario.

El sistema realiza la agrupacin de los usuarios.

Se han agrupado a los usuarios.

- 266 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Caso de Uso

Analizar grupos de usuarios descubiertos

Descripcin

Se procede al anlisis de los resultados obtenidos en el


agrupamiento de usuarios, que permitan mostrar la cantidad
de sesiones que existen en cada grupo de usuarios
descubierto, mostrar las pginas que acceden frecuentemente
los usuarios de cada grupo e indicar a que grupo de usuarios
corresponde cada sesin de usuario identificada
anteriormente. Adicionalmente, se debe facilitar al usuario la
comparacin de los resultados obtenidos mediante los dos
mtodos de agrupacin de usuarios.

Precondiciones

Los grupos de usuarios fueron descubiertos.

Poscondiciones

Se posee el anlisis de los grupos de usuarios


descubiertos.

Especificacin

Paso

Accin

El usuario indica que se realice el anlisis de los


grupos descubiertos.

El sistema contabiliza la cantidad de sesiones


existentes en cada grupo de usuarios.

El sistema calcula la frecuencia de acceso de cada


pgina del sitio Web por parte de los usuarios
pertenecientes a cada cluster.

El sistema indica a que cluster pertenece cada sesin


de usuario descubiertas anteriormente.

D.3.3. Actividad ASI 3: Anlisis de los Casos de Uso


D.3.3.1. Tarea ASI 3.1: Identificacin de Clases Asociadas a un Caso de Uso
Caso de Uso
Clases
Asociadas

Damin A. MARTINELLI

Pre-procesar archivo de log

Pre-procesadorLog

- 267 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Caso de Uso
Clases
Asociadas

Caso de Uso
Clases
Asociadas

Caso de Uso
Clases
Asociadas

Caso de Uso
Clases
Asociadas

Caso de Uso
Clases
Asociadas

Identificar usuarios

IdentificadorUsuarios

Identificar sesiones de usuario

IdentificadorSesiones

Agrupar usuarios utilizando red


neuronal SOM

AgruparSOM

Agrupar usuarios utilizando K-Means

AgruparK-Means

Analizar grupos de usuarios descubiertos

ContadorSesiones

ContadorPginas

SesionesEnCluster

D.3.3.2. Tarea ASI 3.2: Descripcin de la Interaccin de Objetos


En esta primera aproximacin solo se identificaron una clase por caso de uso, por lo
tanto no existe interaccin entre objetos utilizados para la realizacin de un caso de uso. En
el caso de uso Analizar grupos de usuarios descubiertos se identificaron tres clases, pero
las mismas trabajan de forma independientes.

D.3.4. Actividad ASI 4: Anlisis de Clases

Damin A. MARTINELLI

- 268 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

D.3.4.1. Tarea ASI 4.1: Identificacin de Responsabilidades y Atributos


A continuacin se detallan las responsabilidades y atributos de las clases [Tabla D.5]:
Caso de Uso

Pre-procesar
archivo de
log

Identificar
usuarios

Identificar
sesiones de
usuario

Agrupar
usuarios
utilizando
red neuronal
SOM

Clase

Atributos

Responsabilidades

Seleccionar de un archivo de log


los campos direccin IP,
authuser, fecha y hora, y recurso
solicitado, cumpliendo con las
opciones seleccionadas por el
Pre-procesadorLog
usuario y filtrando todos los
registros que no cumplan con los
criterios especificados por el
usuario.

Identificar a los distintos usuarios


del log pre-procesado en base a
IdentificadorUsuarios
su direccin IP y al campo
authuser.
Identificar a las distintas sesiones
de usuario separando todas las
peticiones de cada usuario en
sesiones, teniendo en cuenta el
tiempo mximo entre peticiones
consecutivas para considerarlas
como peticiones pertenecientes a

una misma sesin, la cantidad


IdentificadorSesiones mnima de solicitudes de pginas
que deben existir en una sesin
para ser considerada y la
frecuencia mnima que debe
aparecer cada pgina en el total
del archivo de log pre-procesado
para ser tomada en consideracin
en el armado de las sesiones.

AgruparSOM

Damin A. MARTINELLI

En base a las sesiones de


usuarios, se genera un formato
para las mismas apto como
entrada de la red neuronal, y
luego se procede a generar la red
con las caractersticas necesarias
para realizar la agrupacin de los
usuarios, teniendo en cuenta las
distintas pginas que aparecen en
las sesiones de los usuarios, la

cardinalidad del mapa autoorganizativo que posee como


salida la red neuronal. Una vez
generada la red, se procede al
entrenamiento con todos los
patrones correspondientes a las
sesiones de usuario, para luego
realizar la agrupacin de los

- 269 -

archivoLog
tipoArchivoLog
extensionesPgina
erroresValidos
variablesIdentificadorasPgina

tiempoMaximoEntrePeticiones
cantidadMinimaPginasEnSesion
minimaFrecuenciaDePgina

cardinalidadMapa
cantidadCiclosEntrenamiento

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Caso de Uso

Clase

Atributos

Responsabilidades
usuarios, utilizando la red
entrenada. El entrenamiento se
debe realizar la cantidad de ciclos
seteada.

Agrupar
usuarios
utilizando KMeans

AgruparK-Means

ContadorSesiones

Analizar
grupos de
usuarios
descubiertos

ContadorPginas

SesionesEnCluster

En base a las sesiones de


usuarios, se genera un formato
apto como entrada al algoritmo
K-Means. Luego se agrupan los
usuarios utilizando el algoritmo
K-Means, generando la cantidad
de grupos seteada previamente.
Contabilizar la cantidad de
sesiones de usuario
pertenecientes a cada grupo de
usuarios descubiertos, ya sea
mediante la red neuronal SOM o
mediante el algoritmo K-Means.

cantidadDeGrupos

Calcular la frecuencia de cada


pgina del sitio en las sesiones de
usuario pertenecientes a cada
grupo descubierto, ya sea
mediante la red neuronal SOM o
mediante el algoritmo K-Means.
Indicar a que grupo de usuarios
corresponde cada sesin de
usuario, ya sea a los grupos
descubiertos mediante la red
neuronal SOM o mediante el
algoritmo K-Means.

Tabla D.5. Identificacin de Responsabilidades y Atributos

D.3.5. Actividad ASI 5: Definicin de Interfaces de Usuario


D.3.5.1. Tarea ASI 5.1: Especificacin de Principios Generales de la Interfaz
El sistema tendr un men de navegacin que se ubicar en todo momento a la
izquierda de la pantallla. Dependiendo de lo que el usuario seleccione en el men se
desplegar en la parte derecha (cuerpo principal) el contenido.
En la parte superior se encontrar el nombre del sistema. En caso que el usuario haya
iniciado sesin, se mostrar un botn en la parte superior derecha para permitir el cierre de
la misma.

Damin A. MARTINELLI

- 270 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Cada pantalla tendr un ttulo descriptivo que le informar al usuario en que seccin
del sistema se encuentra.
Cuando se necesite el ingreso de datos por parte del usuario, se har en formularios
con no ms de cinco campos cada uno. En caso de requerirse ms cantidad de datos, los
mismos sern ingresados en sucesivos pasos, donde se lo guiar para completarlos.
Todos los mensajes de error en el sistema sern desplegados en la parte superior del
cuerpo principal utilizando fuente en color rojo.

D.3.5.2. Tarea ASI 5.2: Especificacin de Formatos Individuales de la Interfaz de


Pantalla
Caso de Uso: Pre-procesar archivo de log
Posee una primer interfaz donde se ingresan los datos necesarios para realizar el
preprocesamiento del archivo de log.
Un prototipo se muestra a continuacin [Figura D.5]:

Figura D.5. Prototipo Pre-procesar Log

Cuando se presiona el botn del mouse en Pre-procesar Log se realiza el


preprocesamiento del archivo de log y luego se muestra un mensaje indicando el xito o un
mensaje de error, en caso de que surja algn inconveniente.

Caso de Uso: Identificar usuarios


Posee una pantalla donde se indica que se comience con la identificacin de usuarios.
Un prototipo se muestra a continuacin [Figura D.6]:

Damin A. MARTINELLI

- 271 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Figura D.6. Prototipo Identificar Usuarios

Cuando se presiona el botn del mouse en Identificar Usuarios se procede a la


identificacin de usuarios y luego se muestra un mensaje indicando el xito o un mensaje
de error, en caso de que surja algn inconveniente.

Caso de Uso: Identificar sesiones de usuario


Posee una primer interfaz donde se ingresan los datos necesarios para realizar la
construccin de las sesiones de usuario.
Un prototipo se muestra a continuacin [Figura D.7]:

Figura D.7. Prototipo Identificar Sesiones de Usuario

Cuando se presiona el botn del mouse en Construir Sesiones se procede a la


identificacin de sesiones de usuario y luego se muestra un mensaje indicando el xito o un
mensaje de error, en caso de que surja algn inconveniente.

Caso de Uso: Agrupar usuarios utilizando red neuronal SOM


Posee una primer interfaz donde se ingresan los datos necesarios para realizar la
construccin de los clusters de usuarios.
Un prototipo se muestra a continuacin [Figura D.8]:

Damin A. MARTINELLI

- 272 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Figura D.8. Prototipo Agrupar Usuarios Utilizando Red Neuronal SOM

Cuando se presiona el botn del mouse en Construir Clusters se procede al


agrupamiento de los usuarios y luego se muestra un mensaje indicando el xito o un
mensaje de error, en caso de que surja algn inconveniente.

Caso de Uso: Agrupar usuarios utilizando K-Means


Posee una primer interfaz donde se ingresan los datos necesarios para realizar la
construccin de los clusters de usuarios.
Un prototipo se muestra a continuacin [Figura D.9]:

Figura D.9. Prototipo Agrupar Usuarios Utilizando K-Means

Cuando se presiona el botn del mouse en Construir Clusters se procede al


agrupamiento de los usuarios y luego se muestra un mensaje indicando el xito o un
mensaje de error, en caso de que surja algn inconveniente.

Caso de Uso: Analizar grupos de usuarios descubiertos


Aqu se poseen tres interfaces ms:

La primera corresponde con el contador de sesiones pertenecientes a cada grupo


de usuarios descubiertos. Se selecciona si se desean ver los grupos construidos
mediante la red neuronal SOM o mediante el algoritmo K-Means, y luego se
despliega una tabla con el numero de grupo y la cantidad de sesiones de usuarios
que pertenecen a ese grupo, para cada grupo descubierto.

La segunda corresponde con el contador de pginas, donde se calcula la


frecuencia de cada pgina del sitio en las sesiones de usuario pertenecientes a
cada grupo de usuarios. Se selecciona si se desean ver los grupos construidos

Damin A. MARTINELLI

- 273 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

mediante la red neuronal SOM o mediante el algoritmo K-Means, y luego se


despliega una tabla con el numero de grupo, la pgina y el porcentaje de
sesiones de usuarios en ese grupo que accedieron a esa pgina, para cada grupo
descubierto y pgina del sitio.

La tercera corresponde con el indicador de a qu grupo de usuarios corresponde


cada sesin. Se selecciona si se desean ver los grupos construidos mediante la
red neuronal SOM o mediante el algoritmo K-Means, y luego se despliega una
tabla donde se muestras todas las sesiones de los usuarios y se indica a que
grupo pertenece cada sesin.

D.3.5.3. Tarea ASI 5.3: Especificacin del Comportamiento Dinmico de la Interfaz


El comportamiento dinmico de la interfaz ya fue especificado en la tarea anterior.
Adems, se tendr un men, donde se podr seleccionar que actividad se desea realizar.

D.3.5.4. Tarea ASI 5.4: Especificacin de Formatos de Impresin


El aspecto visual del sistema ser especificado mediante hojas de estilo en cascada
CSS.
Uno de los rasgos ms importantes de las hojas de estilo es que especifican cmo
debe ser presentado un documento en diferentes medios: en la pantalla, en papel, con un
sintetizador de voz, con un dispositivo braille, etc.
Para los formatos de impresin, se proveer de una hoja de estilo CSS para el medio
PRINT. De esta forma, se definir en esta hoja de estilo cmo deber ser impreso cada
reporte del sistema.
El usuario podr utilizar las opciones de impresin del navegador, permitiendo
adems acceder a la vista previa del mismo y ver cmo quedar el reporte una vez impreso
en papel.

D.3.6. Actividad ASI 6: Anlisis de Consistencia y Especificacin de


Requisitos
D.3.6.1. Tarea ASI 6.1: Verificacin y Validacin de los Modelos
Se procedi a la verificacin y validacin de los modelos junto a los Directores de
esta tesis, M.Ing. Paola Britos y M.Ing. Hernn Merlino. Estos modelos fueron encontrados
correctos.

D.3.6.2. Tarea ASI 6.2: Elaboracin de la Especificacin de Requisitos Software (ERS)

Damin A. MARTINELLI

- 274 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Los requisitos identificados son:

Preprocesamiento de archivos de log de servidores Web, filtrando nicamente


los registros tiles para el usuario.

Identificacin de usuarios en base a los registros de log pre-procesados.

Identificacin de las sesiones de los usuarios.

Agrupamiento de los usuarios en base a sus hbitos de navegacin, utilizando


una red neuronal SOM, como la propuesta en esta tesis.

Agrupamiento de los usuarios en base a sus hbitos de navegacin, utilizando KMeans.

Mtodos para facilitar el anlisis por parte del usuario de los resultados
obtenidos. Cantidad de sesiones por grupo de usuarios, porcentaje de acceso a
pginas en cada grupo, y detalle de las sesiones.

A continuacin se detallan los Requisitos de Software especificando la entrada, el


proceso y la salida de cada uno [Tabla D.6]:

Damin A. MARTINELLI

- 275 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Requisito

Entrada

Proceso

Preprocesamiento Archivo de log


de archivos de Log Formato del archivo de log
Seleccin de extensiones de
recursos
Cdigos http
Identificadores de pginas
Identificacin de
Archivo de log preprocesado
Usuarios
Log preprocesado con los
usuarios identificados.
Cantidad mnima de pginas en
una sesin
Timeout de sesin
Frecuencia mnima de pgina
en el log
Agrupamiento de
Sesiones de usuarios
Usuarios con SOM Cantidad de ciclos de
entrenamiento
Cardinalidad del mapa de
clusterizacin
Agrupamiento de
Sesiones de usuarios
Usuarios con K Cantidad de clusters a
Means
descubrir
Identificacin de
Sesiones

Anlisis de
Resultados

Sesiones de usuarios con grupo


SOM asignado
Sesiones de usuarios con grupo
K-Means asignado

Salida

Se procesa el archivo de
log dejando solo los
registros que posean las
extensiones y los
cdigos seleccionados
por el usuario.

Archivo de
log procesado
segn los
parmetros
ingresados por el
usuario.

A partir del log


preprocesado se asigna a
cada registro un usuario
determinado.
Se recorre el log
preprocesado
construyendo las
sesiones de usuario con
los criterios
especificados por el
usuario.

Log
preprocesado con
los usuarios
identificados.
Sesiones de
usuarios.

Las sesiones de usuario


son agrupadas mediante
la red neuronal SOM.

Sesiones de
usuarios con
grupo SOM
asignado.

Sesiones de
usuarios con
grupo K-Means
asignado.
Se contabiliza la
Reporte de
cantidad de sesiones en cantidad de
cada grupo. Se
sesiones por
determina el porcentaje grupo.
de acceso a cada pgina Reporte de
por parte de las sesiones porcentaje de
de cada grupo.
accesos a pginas
por grupo.
Reporte de
detalle de
sesiones.
Las sesiones de usuario
son agrupadas mediante
el algoritmo K-Means.

Tabla D.6. Especificacin de Requisitos Software

D.3.7. Actividad ASI 7: Especificacin del Plan de Pruebas


D.3.7.1. Tarea ASI 7.1: Definicin del Alcance de las Pruebas
Se realizarn las pruebas en todas las clases que se construyan y se realizaran pruebas
de integracin de las mismas. Se realizarn pruebas a la aplicacin analizando un archivo
de log en su totalidad.

Damin A. MARTINELLI

- 276 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

D.3.7.2. Tarea ASI 7.2: Definicin de Requisitos del Entorno de Pruebas


Las pruebas sern realizadas utilizando servidores con plataforma Windows 2000
Profesional y Linux Debian Sarge Stable.
El entorno de pruebas se encuentra separado del entorno de desarrollo y de
produccin. Los encargados de realizar las pruebas ejecutarn las mismas desde estaciones
de trabajo accediendo a los servidores antes mencionados.
Las estaciones de trabajo tendrn diferentes plataformas Windows, como ser
Windows 98, Windows 2000, Windows XP y diferentes plataformas Linux, como ser
Debian, Ubuntu y Mandrake. En las estaciones de trabajo se utilizarn diferentes
navegadores Web: Internet Explorer, Mozilla Firefox y Opera.

D.3.7.3. Tarea ASI 7.3: Definicin de las Pruebas de Aceptacin del Sistema
Se le solicitar al usuario que realice un proceso completo de anlisis de un archivo
de log. Mientras el usuario realiza este anlisis podr evaluar cada paso del mismo. En caso
de ser necesario, deber hacer llegar los comentarios pertinentes al encargado del proyecto,
de modo de que ste pueda ejecutar una accin correctiva y lograr finalmente la aceptacin
del sistema por parte del usuario final.

D.3.8. Actividad ASI 8: Aprobacin del Anlisis del Sistema de


Informacin
D.3.8.1. Tarea ASI 8.1: Presentacin y Aprobacin del Anlisis del Sistema de
Informacin
Se presenta el anlisis del sistema de informacin y el mismo es aprobado por los
directores de esta tesis.

D.4. Diseo del Sistema de Informacin


D.4.1. Actividad DSI 1: Definicin de la Arquitectura del Sistema
D.4.1.1. Tarea DSI 1.1: Definicin de Niveles de Arquitectura
El sistema se desarrollar mediante la arquitectura cliente/servidor, con interfaz Web,
utilizando el protocolo HTTP.

Damin A. MARTINELLI

- 277 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

En el cliente no es necesario ningn desarrollo, se podr acceder a la aplicacin


mediante un navegador convencional. En el servidor ser necesario un servidor Web y un
servidor de base de datos, para almacenar los datos de la aplicacin. El cliente se comunica
con el servidor Web, el cual obtiene los datos en el servidor de base de datos [Figura D.10].

Figura D.10. Arquitectura del Sistema

D.4.1.2. Tarea DSI 1.2: Identificacin de Requisitos de Diseo y Construccin


El sistema ser desarrollado utilizando el lenguaje de programacin Java. Se
utilizaran JavaBeans para las clases del modelo de datos, accediendo a la base de datos
utilizando JDBC. Para la presentacin se utilizaran Java Server Pages, realizando todas las
pginas de la interfaz cumpliendo el estndar XHTML y utilizando hojas de estilo en
cascada (CSS) para la definicin de los estilos de todas las pginas del sistema.

D.4.1.3. Tarea DSI 1.3: Especificacin de Excepciones


No se generar una jerarqua de excepciones particular, sino que se utilizarn las ya
definidas en Java.

D.4.1.4. Tarea DSI 1.4: Especificacin de Estndares y Normas de Diseo y


Construccin

Se realizarn clases de tipo JavaBeans para todas las clases que se correspondan
a esta estructura.

Los nombres de las clases deben poseer cada inicial de palabra en mayscula.

Damin A. MARTINELLI

- 278 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Las clases que sean JavaBeans tendrn concatenadas a su nombre la palabra


Bean.

Los nombres de los mtodos y de los atributos de las clases deben poseer cada
inicial de palabra en mayscula, a excepcin de la primera que deber comenzar
en minscula. Esta misma nomenclatura se utilizara para los nombres de las
variables.

Todos los nombres debern estar en ingls.

Todo el cdigo ser documentado utilizando la sintaxis de JavaDoc, para luego


poder generar la documentacin a nivel de cdigo de forma automtica.

En las pginas JSP solo se utilizaran etiquetas para acceder a JavaBeans y


simples condiciones (if) y ciclos (for y while).

D.4.1.5. Tarea DSI 1.5: Identificacin de Subsistemas de Diseo


Debido a que el sistema no posee una gran complejidad, no es necesario dividir al
sistema en subsistemas.

D.4.1.6. Tarea DSI 1.6: Especificacin del Entorno Tecnolgico

Para el servidor Web se utilizar Tomcat.

Para el servidor de base de datos se utilizar MySQL.

Se deber tener instalada la maquina virtual de Java para poder ejecutar la


aplicacin en el servidor.

D.4.1.7. Tarea DSI 1.7: Especificacin de Requisitos de Operacin y Seguridad


Se utilizar registracin de usuarios con contrasea para acceder al sistema.

D.4.2. Actividad DSI 2: Diseo de la Arquitectura de Soporte


D.4.2.1. Tarea DSI 2.1: Diseo de Subsistemas de Soporte
No existen subsistemas de soporte.

D.4.2.2. Tarea DSI 2.2: Identificacin de Mecanismos Genricos de Diseo


Se generarn Beans de JavaBeans para acceder a los datos desde las pginas JSP.

Damin A. MARTINELLI

- 279 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

D.4.3. Actividad DSI 3: Diseo de Casos de Uso Reales


D.4.3.1. Tarea DSI 3.1: Identificacin de Clases Asociadas a un Caso de Uso
Adicionalmente a los casos de uso identificados en la actividad anterior, se identifican
ahora los siguientes casos de uso:

Caso de Uso

Iniciar sesin usuario

Descripcin

Este caso de uso surge cuando el usuario accede


al sistema y quiere iniciar sesin en el mismo.

Clases
Asociadas

LoginBean

UserBean

Caso de Uso

Registrar usuario

Descripcin

Este caso de uso aparece cuando un usuario


nuevo accede al sistema y desea registrarse en el
mismo.

Clases
Asociadas

CreateUserBean

Caso de Uso

Crear proyecto

Descripcin

Este caso de uso surge cuando el usuario desea


crear un nuevo proyecto en el sistema.

Clases
Asociadas

Damin A. MARTINELLI

CreateProjectBean

- 280 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Caso de Uso

Seleccionar proyecto

Descripcin

Este caso de uso surge cuando un usuario desea


seleccionar uno de los proyectos que posee, para
acceder a la informacin del mismo y/o para
trabajar en el proyecto seleccionado.

Clases
Asociadas

UserBean

Caso de Uso

Eliminar proyecto

Descripcin

Este caso de uso corresponde con el borrado de


toda la informacin referida a un proyecto de un
usuario, que el mismo desea eliminar.

Clases
Asociadas

DeleteProjectBean

LogCleanerBean

Caso de Uso

Subir archivo de log

Descripcin

Debido a que la aplicacin ser desarrollada


mediante la arquitectura cliente/servidor, primero
se debe enviar al servidor el archivo de log con el
cual se desea trabajar. Este caso de uso
corresponde con dicha actividad.

Clases
Asociadas

Damin A. MARTINELLI

LogFileUploadBean

- 281 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Caso de Uso

Cargar y pre-procesar archivo de log


(reemplaza a Caso de Uso: Pre-procesar
archivo de log)

Descripcin

Se selecciona uno de los archivos de log subidos


al servidor para ser pre-procesado, quedando
listo para construir las sesiones de usuario del
mismo.

Clases
Asociadas

LogLoaderBean

PageCounterBean

Caso de Uso

Ver archivo de log cargado

Descripcin

Este caso de uso surge cuando el usuario desea


ver el archivo de log ya pre-procesado.

Clases
Asociadas

LogViewBean

LogBean

Los casos de uso Identificar usuarios y Identificar sesiones de usuario sern


unificados en un caso de uso: Construir sesiones de usuario.
Este caso de uso se encarga de identificar a los usuarios y dividir las peticiones de los
usuarios en sesiones. Se junto en un solo caso de uso debido a que son dos operaciones que
se realizan siempre en forma conjunta.

Caso de Uso

Construir sesiones de usuario

Descripcin

Este caso de uso se encarga de identificar a los


usuarios y dividir las peticiones de los usuarios
en sesiones.

Clases
Asociadas

Damin A. MARTINELLI

SessionMakerBean

SessionSaver

- 282 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Caso de Uso

Agrupar usuarios utilizando red neuronal


SOM

Descripcin

Este caso de uso se encarga de realizar el


agrupamiento de usuarios utilizando la red
neuronal SOM.

Clases
Asociadas

InputMakerBean

SOMBean

BinarySessionClusterBean

FileBean

ClusterCounterBean

PagesInClustersBean

Caso de Uso

Agrupar usuarios utilizando K-Means

Descripcin

Este caso de uso se encarga de realizar el


agrupamiento de usuarios utilizando el algoritmo
K-Means.

Clases
Asociadas

Damin A. MARTINELLI

InputMakerBean

KMeansBean

NumericSessionClusterBean

FileBean

ClusterCounterBean

PagesInClustersBean

- 283 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

El Caso de Uso Analizar grupos de usuarios descubiertos es dividido en tres casos


de uso:

Caso de Uso

Ver cantidad de sesiones en cada cluster


descubierto

Descripcin

Permite calcular la cantidad de sesiones de


usuarios en cada grupo descubierto.

Clases
Asociadas

ClusterCounterBean

ClusterCounterGraphBean

Caso de Uso

Ver detalle de sesiones y cluster al cual


pertenecen

Descripcin

Permite acceder al detalle de cada sesin de


usuario, mostrando las pginas que se accedieron
y el grupo al que pertenece.

Clases
Asociadas

SessionsClusterViewBean

Caso de Uso

Ver porcentaje de acceso a cada pgina por


los usuarios de cada cluster

Descripcin

Permite obtener el porcentaje de acceso a cada


pgina por parte de los usuarios de cada grupo
descubierto.

Clases
Asociadas

Damin A. MARTINELLI

PagesInClustersViewBean

- 284 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Caso de Uso

Ver archivo

Descripcin

Este caso se uso surge cuando un usuario desea


acceder a algunos de los archivos generados en
su proyecto o cuando se quiere ver todos los
archivos de log subidos al servidor por l.

Clases
Asociadas

FilesViewBean

LogFilesViewBean

D.4.3.2. Tarea DSI 3.2: Diseo de la Realizacin de los Casos de Uso


Caso de Uso

Iniciar sesin usuario

Descripcin

Este caso de uso surge cuando el usuario accede al sistema y


quiere iniciar sesin en el mismo.

Especificacin

Paso

Accin

El usuario ingresa en un formulario su nombre de


usuario y su contrasea.

El sistema autentica al usuario utilizando un objeto


de la clase LoginBean, comparando el nombre de
usuario y contrasea ingresado por el usuario con el
nombre de usuario y contrasea almacenados en la
base de datos (en la tabla user). Para ello, primero
setea el nombre de usuario y la contrasea utilizando
los mtodos setUser y setPass, respectivamente.
Luego autentica al usuario mediante el mtodo
isValidUser.

Si la autenticacin es exitosa, se crea un objeto de


sesin UserBean para el usuario, seteando el nombre
de usuario utilizando el mtodo setUser.

Damin A. MARTINELLI

- 285 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Caso de Uso

Iniciar sesin usuario

Descripcin

Este caso de uso surge cuando el usuario accede al sistema y


quiere iniciar sesin en el mismo.

Especificacin

Paso

Accin

El usuario ingresa en un formulario su nombre de


usuario y su contrasea.

El sistema autentica al usuario utilizando un objeto


de la clase LoginBean, comparando el nombre de
usuario y contrasea ingresado por el usuario con el
nombre de usuario y contrasea almacenados en la
base de datos (en la tabla user). Para ello, primero
setea el nombre de usuario y la contrasea utilizando
los mtodos setUser y setPass, respectivamente.
Luego autentica al usuario mediante el mtodo
isValidUser.

Si la autenticacin es exitosa, se crea un objeto de


sesin UserBean para el usuario, seteando el nombre
de usuario utilizando el mtodo setUser.

Caso de Uso

Registrar usuario

Descripcin

Este caso de uso aparece cuando un usuario nuevo accede al


sistema y desea registrarse en el mismo.

Especificacin

Paso

Accin

El usuario ingresa en un formulario el nombre de


usuario que desea poseer en el sistema y la
contrasea del mismo, repitindola para chequear que
sea ingresada correctamente.

El sistema registra al nuevo usuario utilizando un


objeto de la clase CreateUserBean. Para ello, primero
setea el nombre de usuario y la contrasea utilizando
los mtodos setUser y setPassword, respectivamente.
Luego registra al usuario mediante el mtodo
createNewUser, el cual agrega el nombre de usuario
y su contrasea en la base de datos (en la tabla
user), si el nombre de usuario no exista
previamente.

Damin A. MARTINELLI

- 286 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Caso de Uso

Crear proyecto

Descripcin

Este caso de uso surge cuando el usuario desea crear un


nuevo proyecto en el sistema.

Especificacin

Paso

Accin

El usuario ingresa en un formulario el nombre y la


descripcin del proyecto a crear.

El sistema crea un nuevo proyecto para el usuario


logoneado, utilizando en objeto de la clase
CreateProjectBean. Para ello, primero se setea el
nombre de usuario logoneado, el nombre del
proyecto a crear y su descripcin, utilizando los
mtodos setUser, setProject y setDescription,
respectivamente. Luego se crea el proyecto utilizando
el mtodo getNewProject, el cual inserta en la base
de datos (en la tabla project) la informacin del
nuevo proyecto.

Caso de Uso

Seleccionar proyecto

Descripcin

Este caso de uso surge cuando un usuario desea seleccionar


uno de los proyectos que posee, para acceder a la
informacin del mismo y/o para trabajar en el proyecto
seleccionado.

Especificacin

Paso

Accin

El usuario selecciona uno de los proyectos que posee.

El sistema setea el proyecto elegido por el usuario


como el proyecto actual, utilizando el mtodo
setProject del objeto de sesin UserBean.

Damin A. MARTINELLI

- 287 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Caso de Uso

Eliminar proyecto

Descripcin

Este caso de uso corresponde con el borrado de toda la


informacin referida a un proyecto de un usuario, que el
mismo desea eliminar.

Especificacin

Paso

Accin

El usuario selecciona uno de sus proyectos para ser


eliminado.

El sistema elimina el proyecto utilizando un objeto de


la clase DeleteProjectBean. Para ello, primero se
setea el nombre de usuario logoneado y el nombre del
proyecto a eliminar, utilizando los mtodos setUser y
setProject, respectivamente. Luego se elimina el
proyecto utilizando el mtodo getDeleteProject, el
cual elimina toda la informacin del proyecto en la
base de datos.

Caso de Uso

Subir archivo de log

Descripcin

Debido a que la aplicacin ser desarrollada mediante la


arquitectura cliente/servidor, primero se debe enviar al
servidor el archivo de log con el cual se desea trabajar. Este
caso de uso corresponde con dicha actividad.

Especificacin

Paso

Accin

El usuario selecciona un archivo de log en su


computadora para ser copiado al servidor,
colocndole un descripcin al mismo.

El usuario enva el archivo de log.

El sistema almacena el archivo de log en el servidor


utilizando un objeto de la clase LogFileUploadBean.
Adems, se inserta en la tabla logFile la
informacin del archivo de log subido por el usuario.

Damin A. MARTINELLI

- 288 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Caso de Uso

Cargar y pre-procesar archivo de log (reemplaza a Caso


de Uso: Pre-procesar archivo de log)

Descripcin

Se selecciona uno de los archivos de log subidos al servidor


para ser pre-procesado, quedando listo para construir las
sesiones de usuario del mismo.

Especificacin

Paso

Accin

El usuario selecciona uno de los archivos de log que


subi al servidor.

El usuario indica que tipo de log es el seleccionado.

El usuario indica que extensiones de pginas sern


utilizadas.

El usuario indica que cdigos de error HTTP sern


utilizados.

El usuario indica que variables GET identifican


pginas distintas.

El usuario indica que se comience con la carga y preprocesado del archivo de log.

El sistema realiza la carga y el pre-procesado del


archivo de log utilizando un objeto de la clase
LogLoaderBean. Para ello, primero se setea el
nombre de usuario logoneado, el nombre del
proyecto actual, las extensiones de pgina a utilizar,
el archivo de log a pre-procesar, el tipo de log, las
variables que identifican pginas distintas, los
cdigos de error a utilizar, utilizando los mtodos
setUser, setProject, setExtensions, setInput,
setTypeLog, setIdsPage y setStatusCodes,
respectivamente. Luego se realiza el pre-procesado
del archivo de log utilizando el mtodo getLoad, el
cual pre-procesado y carga todo el log en la tabla
log.

Damin A. MARTINELLI

- 289 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Caso de Uso

Ver archivo de log cargado

Descripcin

Este caso de uso surge cuando el usuario desea ver el archivo


de log ya pre-procesado.

Especificacin

Paso

Accin

El usuario indica que desea ver el archivo de log preprocesado.

El sistema muestra el archivo de log pre-procesado


utilizando un objeto de la clase LogViewBean.

Caso de Uso

Construir sesiones de usuario

Descripcin

Este caso de uso se encarga de identificar a los usuarios y


dividir las peticiones de los usuarios en sesiones.

Especificacin

Paso

Accin

El usuario indica la cantidad mnima de pginas en


una sesin.

El usuario indica el timeout de sesin.

El usuario indica la frecuencia mnima de pgina en


el log.

El usuario indica que se comience con la


construccin de sesiones de usuario.

El sistema realiza la construccin de las sesiones de


usuario utilizando un objeto de la clase
SessionMakerBean. Para ello, primero se setea el
nombre de usuario logoneado, el nombre del
proyecto actual, la cantidad mnima de pginas en
una sesin, el timeout de sesin y la frecuencia
mnima de pgina en el log, utilizando los mtodos
setUser, setProject, setMinPagesInSession,
setTimeoutSession y setMinPageFrequency,
respectivamente. Luego se realiza la construccin de
las sesiones de usuario utilizando el mtodo
getSessions. El objeto SessionMakerBean utiliza al
objeto SessionSaver para guardar las sesiones de
usuario en la tabla session.

Damin A. MARTINELLI

- 290 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Caso de Uso

Agrupar usuarios utilizando red neuronal SOM

Descripcin

Este caso de uso se encarga de realizar el agrupamiento de


usuarios utilizando la red neuronal SOM.

Especificacin

Paso

Accin

El usuario indica el nombre del archivo donde se


guardaran los patrones de entrada a la red neuronal.

El usuario indica el nombre del archivo donde se


guardara la informacin sobre los clusters
descubiertos.

El usuario indica la cantidad de ciclos de


entrenamiento a realizar en la red neuronal con los
patrones de entrada.

El usuario indica la cardinalidad del mapa de


clusterizacin (NxN).

El usuario indica que se comience la construccin de


clusters.

El sistema utiliza un objeto de la clase


InputMakerBean para crear el archivo con los
patrones de entrada a la red neuronal, que representan
las sesiones de los usuarios.

El sistema utiliza un objeto de la clase SOMBean


para realizar la agrupacin de los usuarios e
identificar los clusters de usuarios.

El sistema utiliza un objeto de la clase FileBean para


generar un archivo donde se almacena la informacin
sobre los clusters descubiertos.

El sistema utiliza un objeto de la clase


BinarySessionClusterBean para guardar en la tabla
sessionCluster a qu cluster pertenece cada sesin.

10

El sistema utiliza un objeto de la clase


ClusterCounterBean para obtener la cantidad de
sesiones que pertenecen a cada cluster.

11

El sistema utiliza un objeto de la clase


PagesInClustersBean para calcular la frecuencia de
cada pgina en todas las sesiones de cada cluster y
guardar esta informacin en la tabla pageInCluster.

Damin A. MARTINELLI

- 291 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Caso de Uso

Agrupar usuarios utilizando K-Means

Descripcin

Este caso de uso se encarga de realizar el agrupamiento de


usuarios utilizando el algoritmo K-Means.

Especificacin

Paso

Accin

El usuario indica el nombre del archivo donde se


guardaran los patrones de entrada en formato ARFF.

El usuario indica el nombre del archivo donde se


guardara la informacin sobre los clusters
descubiertos.

El usuario indica la cantidad de clusters a descubrir


(K).

El usuario indica que se comience la construccin de


clusters.

El sistema utiliza un objeto de la clase


InputMakerBean para crear el archivo con los
patrones de entrada al algoritmo K-Means, que
representan las sesiones de los usuarios.

El sistema utiliza un objeto de la clase KMeansBean


para realizar la agrupacin de los usuarios e
identificar los clusters de usuarios.

El sistema utiliza un objeto de la clase FileBean para


generar un archivo donde se almacena la informacin
sobre los clusters descubiertos.

El sistema utiliza un objeto de la clase


NumericSessionClusterBean para guardar en la tabla
sessionCluster a qu cluster pertenece cada sesin
de usuario.

El sistema utiliza un objeto de la clase


ClusterCounterBean para obtener la cantidad de
sesiones que pertenecen a cada cluster.

10

El sistema utiliza un objeto de la clase


PagesInClustersBean para calcular la frecuencia de
cada pgina en todas las sesiones de cada cluster y
guardar esta informacin en la tabla pageInCluster.

Damin A. MARTINELLI

- 292 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Caso de Uso

Ver cantidad de sesiones en cada cluster descubierto

Descripcin

Permite calcular la cantidad de sesiones de usuarios en cada


grupo descubierto.

Especificacin

Paso

Accin

El usuario selecciona si desea ver los clusters


descubiertos mediante la red neuronal, mediante el
algoritmo K-Means o realizar una comparacin de los
mismos.

El sistema utiliza un objeto de la clase


ClusterCounterBean para obtener la cantidad de
sesiones en cada cluster descubierto mediante la
tcnica seleccionada por el usuario.

El sistema utiliza un objeto de la clase


ClusterCounterGraphBean para graficar la cantidad
de sesiones en cada cluster descubierto mediante la
tcnica seleccionada por el usuario.

Caso de Uso

Ver detalle de sesiones y cluster al cual pertenecen

Descripcin

Permite acceder al detalle de cada sesin de usuario,


mostrando las pginas que se accedieron y el grupo al que
pertenece.

Especificacin

Paso

Accin

El usuario selecciona si desea ver las sesiones con el


cluster al cual pertenecen, descubierto mediante la
red neuronal, mediante el algoritmo K-Means o
realizar una comparacin de los mismos.

El sistema utiliza un objeto de la clase


SessionsClusterViewBean para obtener el detalle de
las sesiones y a que cluster pertenecen, descubierto
mediante la tcnica seleccionada por el usuario.

Damin A. MARTINELLI

- 293 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Caso de Uso

Ver porcentaje de acceso a cada pgina por los usuarios


de cada cluster

Descripcin

Permite obtener el porcentaje de acceso a cada pgina por


parte de los usuarios de cada grupo descubierto.

Especificacin

Paso

Accin

El usuario selecciona si desea ver los porcentaje de


acceso a cada pgina por los usuarios de cada cluster
descubierto mediante la red neuronal, mediante el
algoritmo K-Means o realizar una comparacin de los
mismos.

El sistema utiliza un objeto de la clase


PagesInClustersViewBean para obtener el porcentaje
de acceso a cada pgina por los usuarios de cada
cluster descubierto mediante la tcnica seleccionada
por el usuario.

Caso de Uso

Ver archivo

Descripcin

Este caso se uso surge cuando un usuario desea acceder a


algunos de los archivos generados en su proyecto o cuando
se quiere ver todos los archivos de log subidos al servidor
por l.

Especificacin

Paso

Accin

El usuario selecciona que tipo de archivo desea ver


(Log, Input SOM, Output SOM, Input ARFF o Ouput
K-Means).

El sistema muestra todos los archivos del tipo


seleccionado por el usuario, utilizando un objeto de la
clase FilesViewBean (LogFilesViewBean, si el tipo
seleccionado es Log).

El usuario selecciona que archivo desea ver.

El sistema enva al usuario el archivo que selecciono.

Damin A. MARTINELLI

- 294 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Caso de Uso

Ver resumen proyecto

Descripcin

Este caso se uso surge cuando un usuario desea ver el


resumen de un proyecto suyo, mostrndole informacin
sobre el proyecto.

Especificacin

Paso

Accin

El usuario indica que desea ver el resumen del


proyecto.

El sistema muestra la informacin del proyecto,


utilizando un objeto de la clase ProjectBean.

D.4.3.3. Tarea DSI 3.3: Revisin de la Interfaz de Usuario


Mediante el men de la aplicacin se podr acceder a todas sus funcionalidades. Los
prototipos del men se muestran a continuacin:

Men principal
A continuacin se muestra el prototipo de la interfaz Men principal [Figura D.11]:

Figura D.11. Interfaz Men principal

Submen Ver Archivos


A continuacin se muestra el prototipo de la interfaz Submen Ver Archivos
[Figura D.12]:

Damin A. MARTINELLI

- 295 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Figura D.12. Interfaz Submen "Ver Archivos"

Submen Logs
A continuacin se muestra el prototipo de la interfaz Submen Logs [Figura D.13]:

Figura D.13. Interfaz Submen "Logs"

Submen Construir Clusters


A continuacin se muestra el prototipo de la interfaz Submen Construir Clusters
[Figura D.14]:

Damin A. MARTINELLI

- 296 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Figura D.14. Interfaz Submen "Construir Clusters

Submen Sesiones/Clusters
A continuacin se muestra el prototipo de la interfaz Submen Sesiones/Clusters
[Figura D.15]:

Figura D.15. Interfaz Submen "Sesiones/Clusters"

Submen Detalle Sesiones


A continuacin se muestra el prototipo de la interfaz Submen Detalle Sesiones
[Figura D.16]:

Damin A. MARTINELLI

- 297 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Figura D.16. Interfaz Submen "Detalle Sesiones"

Submen Pginas/Clusters
A continuacin se muestra el prototipo de la interfaz Submen Detalle Sesiones
[Figura D.17]:

Figura D.17. Interfaz Submen Pginas/Clusters

Caso de Uso: Iniciar sesin usuario


A continuacin se muestra el prototipo de la interfaz Caso de Uso: Iniciar sesin
usuario [Figura D.18]:

Damin A. MARTINELLI

- 298 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Figura D.18. Interfaz Caso de Uso: Iniciar sesin usuario

Caso de Uso: Registrar usuario


A continuacin se muestra el prototipo de la interfaz Caso de Uso: Registrar usuario
[Figura D.19]:

Figura D.19. Interfaz Caso de Uso: Registrar usuario

Caso de Uso: Crear proyecto


A continuacin se muestra el prototipo de la interfaz Caso de Uso: Crear proyecto
[Figura D.20]:

Figura D.20. Interfaz Caso de Uso: Crear proyecto

Caso de Uso: Seleccionar proyecto


A continuacin se muestra el prototipo de la interfaz Caso de Uso: Seleccionar
proyecto [Figura D.21]:

Damin A. MARTINELLI

- 299 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Figura D.21. Interfaz Caso de Uso: Seleccionar proyecto

Caso de Uso: Eliminar proyecto


A continuacin se muestra el prototipo de la interfaz Caso de Uso: Eliminar proyecto
[Figura D.22]:

Figura D.22. Interfaz Caso de Uso: Eliminar proyecto

Caso de Uso: Subir archivo de log


A continuacin se muestra el prototipo de la interfaz Caso de Uso: Subir archivo de
log [Figura D.23]:

Figura D.23. Interfaz Caso de Uso: Subir archivo de log

Damin A. MARTINELLI

- 300 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Caso de Uso: Cargar y pre-procesar archivo de log


A continuacin se muestra el prototipo de la interfaz Caso de Uso: Cargar y preprocesar archivo de log [Figura D.24]:

Figura D.24. Interfaz Caso de Uso: Cargar y pre-procesar archivo de log

Caso de Uso: Ver archivo de log cargado


A continuacin se muestra el prototipo de la interfaz Caso de Uso: Ver archivo de log
cargado [Figura D.25]:

Registros de Log Cargados del Usuario usuario en el Proyecto proyecto


IP

Authuser

Fecha y Hora

Pgina

192.168.1.101

2005-05-22 07:15:06.0

/pgina1.php

192.168.1.101

2005-05-22 07:18:56.0

/pgina2.php

192.168.1.102

2005-05-22 07:19:02.0

/pgina2.php

192.168.1.101

2005-05-22 07:19:04.0

/pgina1.php

192.168.1.101

2005-05-22 07:20:45.0

/pgina3.php

192.168.1.103

usuario

2005-05-22 07:21:15.0

/pgina1.php

192.168.1.103

usuario

2005-05-22 07:23:17.0

/pgina3.php

Damin A. MARTINELLI

- 301 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Registros de Log Cargados del Usuario usuario en el Proyecto proyecto

192.168.1.101

2005-05-22 07:23:35.0

/pgina3.php

192.168.1.105

2005-05-22 07:23:43.0

/pgina6.php

192.168.1.105

2005-05-22 07:23:45.0

/pgina1.php

192.168.1.105

2005-05-22 07:24:01.0

/pgina1.php

192.168.1.102

2005-05-22 07:24:07.0

/pgina1.php

192.168.1.102

2005-05-22 07:59:02.0

/pgina2.php

192.168.1.102

2005-05-22 07:59:03.0

/pgina2.php

Figura D.25. Interfaz Caso de Uso: Ver archivo de log cargado

Caso de Uso: Construir sesiones de usuario


A continuacin se muestra el prototipo de la interfaz Caso de Uso: Construir sesiones
de usuario [Figura D.26]:

Figura D.26. Interfaz Caso de Uso: Construir sesiones de usuario

Damin A. MARTINELLI

- 302 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Caso de Uso: Agrupar usuarios utilizando red neuronal SOM


A continuacin se muestra el prototipo de la interfaz Caso de Uso: Agrupar usuarios
utilizando red neuronal SOM [Figura D.27]:

Figura D.27. Interfaz Caso de Uso: Agrupar usuarios utilizando red neuronal SOM

Caso de Uso: Agrupar usuarios utilizando K-Means


A continuacin se muestra el prototipo de la interfaz Caso de Uso: Agrupar usuarios
utilizando K-Means [Figura D.28]:

Figura D.28. Interfaz Caso de Uso: Agrupar usuarios utilizando K-Means

Damin A. MARTINELLI

- 303 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Caso de Uso: Ver cantidad de sesiones en cada cluster descubierto


A continuacin se muestra el prototipo de la interfaz Caso de Uso: Ver cantidad de
sesiones en cada cluster descubierto [Figura D.29]:

Figura D.29. Interfaz Caso de Uso: Ver cantidad de sesiones en cada cluster descubierto

Adems, se mostrara un grfico de torta, separando proporcionalmente cada porcin


en base al porcentaje de sesiones en cada cluster.

Caso de Uso: Ver detalle de sesiones y cluster al cual pertenecen


A continuacin se muestra el prototipo de la interfaz Caso de Uso: Ver detalle de
sesiones y cluster al cual pertenecen [Figura D.30]:

Figura D.30. Interfaz Caso de Uso: Ver detalle de sesiones y cluster al cual pertenecen

Damin A. MARTINELLI

- 304 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Caso de Uso: Ver porcentaje de acceso a cada pgina por los usuarios de cada cluster
A continuacin se muestra el prototipo de la interfaz Caso de Uso: Ver porcentaje de
acceso a cada pgina por los usuarios de cada cluster [Figura D.31]:

Figura D.31. Interfaz Caso de Uso: Ver porcentaje de acceso a cada pgina por los usuarios de cada
cluster

D.4.3.4. Tarea DSI 3.4: Revisin de Subsistemas de Diseo e Interfaces


No existen subsistemas.

D.4.4. Actividad DSI 4: Diseo de Clases


D.4.4.1. Tarea DSI 4.1: Identificacin de Clases Adicionales

Damin A. MARTINELLI

- 305 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Las clases identificadas en el sistema son:

LoginBean

UserBean

CreateUserBean

CreateProjectBean

DeleteProjectBean

LogCleanerBean

LogFileUploadBean

LogLoaderBean

PageCounterBean

LogViewBean

SessionMakerBean

SessionSaver

InputMakerBean

SOMBean

BinarySessionClusterBean

FileBean

ClusterCounterBean

PagesInClustersBean

KMeansBean

NumericSessionClusterBean

ClusterCounterGraphBean

SessionsClusterViewBean

PagesInClustersViewBean

FilesViewBean

LogFilesViewBean

LogBean

Entre las clases BinarySessionClusterBean y NumericSessionClusterBean existe la


clase SessionClusterBean de la cual heredan las dos primeras.

D.4.4.2. Tarea DSI 4.2: Identificacin de Atributos de las Clases

Damin A. MARTINELLI

- 306 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Clase
Atributos

Clase
Atributos

Clase
Atributos

Clase
Atributos

Damin A. MARTINELLI

LoginBean

Connection conn

PreparedStatement pstm

String user

String pass

UserBean

Connection conn

PreparedStatement pstm

String user

String project

ResultSet rsProjects

boolean moreProjects

CreateUserBean

Connection conn

PreparedStatement pstm

String user

String pass

CreateProjectBean

Connection conn

PreparedStatement pstm

String user

String project

String description

- 307 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Clase
Atributos

Clase
Atributos

Damin A. MARTINELLI

DeleteProjectBean

Connection conn

PreparedStatement pstm

String user

String project

LogCleanerBean

Connection conn

PreparedStatement pstm

String user

String project

int cleaneds

- 308 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Clase
Atributos

Clase
Atributos

Damin A. MARTINELLI

LogFileUploadBean

Connection conn

PreparedStatement pstm

String logFile

String user

String savePath

String filepath

String filename

String contentType

Dictionary fields

HttpServletRequest request

LogLoaderBean

Connection conn

PreparedStatement pstm

String inputFile

String[] pageExtensions

String[] validsStatus

String[] idsPage

int hits

String user

String project

int ID

String savePath

int typeLog

- 309 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Clase
Atributos

Clase
Atributos

Clase
Atributos

Damin A. MARTINELLI

PageCounterBean

Connection conn

PreparedStatement pstm

String user

String project

int pages

LogViewBean

Connection conn

PreparedStatement pstm

String user

String project

ResultSet rsLogs

boolean moreLogs

int logsPerPage

int currentLog

SessionMakerBean

Connection conn

PreparedStatement pstm

String user

String project

int minPagesInSession

long timeoutSession

int sessionsCount

int minPageFrequency

- 310 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Clase
Atributos

Damin A. MARTINELLI

SessionSaver

Connection conn

PreparedStatement pstm

String user

String project

String lastIP

String lastAuthuser

String lastTimestamp

String firstTimestamp

long timeoutSession

long maxTimeSession

int ID

int sequence

int sessionsCount

int minPagesInSession

String pagesWaiting[]

- 311 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Clase
Atributos

Clase
Atributos

Damin A. MARTINELLI

InputMakerBean

Connection conn

String user

String project

FileOutputStream fosSOM

FileOutputStream fosKMeans

int pagesCount

boolean session[]

int sessionsSOM

int sessionsKMeans

String SOMFilename

String KMeansFilename

boolean SOMEnabled

boolean KMeansEnabled

SOMBean

NeuralNet nnet

FileInputSynapse inputStream

FileOutputSynapse
outputSynapse

String inputFilename

String outputFilename

int dimClusters

int columns

int patterns

int trainingCicles

- 312 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Clase
Atributos

Clase
Atributos

Clase
Atributos

Damin A. MARTINELLI

SessionClusterBean

Connection conn

PreparedStatement pstm

String user

String project

PreparedStatement pstmDelete

String filename

String type

int countSessions

BinarySessionClusterBean

int countSessions

FileBean

Connection conn

PreparedStatement pstm

String user

String project

String file

String type

String basePath

String savePath

String description

String filePath

- 313 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Clase
Atributos

Clase
Atributos

Damin A. MARTINELLI

ClusterCounterBean

Connection conn

PreparedStatement pstm

String user

String project

PreparedStatement pstmInsert

String type

String count

ResultSet rsClusters

boolean moreClusters

PagesInClustersBean

Connection conn

String user

String project

PreparedStatement pstmDelete

PreparedStatement pstmInsert

PreparedStatement pstmQuery

PreparedStatement
pstmQuerySessionsInCluster

String type

- 314 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Clase
Atributos

Clase
Atributos

Clase
Atributos

Damin A. MARTINELLI

KmeansBean

String inputFilename

String outputFilename

int K

int columns

int patterns

SimpleKMeans kmeans

NumericSessionClusterBean

int countSessions

ClusterCounterGraphBean

double[] data

String[] labels

ChartDirector.PieChart chart

String path

- 315 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Clase
Atributos

Clase
Atributos

Damin A. MARTINELLI

SessionsClusterViewBean

Connection conn

PreparedStatement pstm

String user

String project

String type

ResultSet rsSessions

boolean moreSessions

int sessionsPerPage

int currentSession

PagesInClustersViewBean

Connection conn

PreparedStatement pstm

String user

String project

String type

PreparedStatement pstmClusters

ResultSet rsPages

boolean morePages

ResultSet rsClusters

boolean moreClusters

int cluster

int minPercentage

int maxPagesPerCluster

- 316 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Clase
Atributos

Clase
Atributos

Clase
Atributos

FilesViewBean

Connection conn

PreparedStatement pstm

String user

String project

String type

ResultSet rsFiles

boolean moreFiles

LogFilesViewBean

Connection conn

PreparedStatement pstm

String user

ResultSet rsLogs

boolean moreLogs

LogBean

String IP

String authuser

String page

String timestamp

D.4.4.3. Tarea DSI 4.3: Identificacin de Operaciones de las Clases y Descripcin de


sus Mtodos

Damin A. MARTINELLI

- 317 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

LoginBean
Clase utilizada para iniciar la sesin a un usuario en la herramienta.

Constructor Summary
LoginBean()

Constructor de la clase LoginBean.

Method Summary
java.lang.String getUser()

Obtiene el nombre de usuario utilizado.


boolean isValidUser()

Intenta autenticar al usuario, devolviendo si es un usuario valido o


no.
void setPass(java.lang.String password)

Setea la contrasea del usuario.


void setUser(java.lang.String userName)

Setea el nombre de usuario que se utilizara.

UserBean
Clase que se encarga del manejo de la informacin de un usuario y sus proyectos.

Constructor Summary
UserBean()

Constructor de la clase UserBean.

Method Summary
java.lang.String getLogCount()

Calcula la cantidad de registros de log cargados en el proyecto


actual.
java.lang.String getNextDescription()

Obtiene la descripcin del proyecto siguiente.


java.lang.String getNextProject()

Damin A. MARTINELLI

- 318 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Method Summary
Obtiene el nombre del siguiente proyecto.
java.lang.String getProject()

Obtiene el nombre del proyecto utilizado.


java.lang.String getProjects()

Obtiene todos los proyectos del usuario.


java.lang.String getSessionCount()

Obtiene la cantidad de sesiones en el proyecto actual.


java.lang.String getUser()

Obtiene el nombre de usuario utilizado.


void goFirstProject()

Se sitia en el primer proyecto del usuario.


boolean hasNextProject()

Indica si existen mas proyectos.


boolean isSetProject()

Indica si existe seteado un proyecto.


void setProject(java.lang.String projectName)

Setea el nombre del proyecto que se utilizara.


void setUser(java.lang.String userName)

Setea el nombre de usuario que se utilizara.


void unsetProject()

Des-setea el proyecto actual.

CreateUserBean
Clase utilizada para la creacin de nuevos usuarios.

Constructor Summary
CreateUserBean()

Contructor de la clase CreateUserBean, encargado de la creacin de nuevos


usuarios.

Method Summary

Damin A. MARTINELLI

- 319 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

boolean createNewUser()

Crea un nuevo usuario, si fueron ya seteados el nombre de usuario y


la contrasea.
java.lang.String getPassword()

Obtiene la contrasea utilizada.


java.lang.String getUser()

Obtiene el nombre de usuario utilizado.


void setPassword(java.lang.String pass)

Setea la contrasea del usuario a crear.


void setUser(java.lang.String userName)

Setea el nombre de usuario que se creara.

CreateProjectBean
Clase utilizada para la creacin de un nuevo proyecto.

Constructor Summary
CreateProjectBean()

Contructor de la clase CreateProjectBean, utilizada para la creacin de un nuevo


proyecto.

Method Summary
boolean createNewProject()

Crea un nuevo proyecto, si ha sido seteado el nombre del usuario y el


nombre del proyecto a crear.
java.lang.String getDescription()

Obtiene la descripcin utilizada.


java.lang.String getNewProject()

Crea un nuevo proyecto, si ha sido seteado el nombre del usuario y el


nombre del proyecto a crear.
java.lang.String getProject()

Obtiene el nombre del proyecto utilizado.


java.lang.String getUser()

Obtiene el nombre de usuario utilizado.


void setDescription(java.lang.String description)

Damin A. MARTINELLI

- 320 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Setea la descripcin del proyecto a crear.


void setProject(java.lang.String projectName)

Setea el nombre del proyecto que se creara.


void setUser(java.lang.String userName)

Setea el nombre de usuario que se utilizara.

DeleteProjectBean
Clase utilizada para la eliminacin de proyectos.

Constructor Summary
DeleteProjectBean()

Contructor de la clase DeleteProjectBean, encargada de eliminar un proyecto y todo


los elementos asociados al mismo.

Method Summary
boolean deleteProject()

Borra el proyecto, si fueron seteados el nombre de usuario y el


proyecto.
java.lang.String getDeleteProject()

Borra el proyecto, si fueron seteados el nombre de usuario y el


proyecto.
java.lang.String getProject()

Obtiene el nombre del proyecto utilizado.


java.lang.String getUser()

Obtiene el nombre de usuario utilizado.


void setProject(java.lang.String projectName)

Setea el nombre del proyecto que se eliminara.


void setUser(java.lang.String userName)

Setea el nombre de usuario que se utilizara.

LogCleanerBean
Clase utilizada para borrar todo los registros de log de un proyecto.

Damin A. MARTINELLI

- 321 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Constructor Summary
LogCleanerBean()

Constructor de la clase LogCleanerBean, encargada de borrar todos los registros de


log de un proyecto.

Method Summary
void clean()

Borra todo el log de un proyecto.


java.lang.String getCleaneds()

Si toda la informacin necesaria esta seteada, borra todos los


registros de log de la base de datos para un proyecto de un usuario.
java.lang.String getProject()

Obtiene el nombre del proyecto utilizado.


java.lang.String getUser()

Obtiene el nombre de usuario utilizado.


static void main(java.lang.String[] args)
void setProject(java.lang.String projectName)

Setea el nombre del proyecto que se utilizara.


void setUser(java.lang.String userName)

Setea el nombre de usuario que se utilizara.

LogFileUploadBean
Clase utilizada para guardar en la base de datos informacin sobre un archivo de log y
copiar el archivo al servidor.

Method Summary
void doUpload(javax.servlet.http.HttpServletRequest request)

Sube el archivo al servidor.


java.lang.String getContentType()

Obtiene el tipo de contenido del archivo.


java.lang.String getFieldsValues()

Obtiene todos los campos con sus valores.

Damin A. MARTINELLI

- 322 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

java.lang.String getFieldValue(java.lang.String fieldName)

Obtiene el valor de un campo, cuyo nombre es pasado por parmetro.


java.lang.String getFilename()

Obtiene el nombre del archivo a copiar.


java.lang.String getFilepath()

Obtiene el path donde se copiara el archivo.


java.lang.String getInput()

Obtiene el nombre del archivo de log utilizado.


boolean getUpload()

Si los atributos necesarios fueron seteados, copia el archivo al


servidor y carga la informacin del archivo en la base de datos.
java.lang.String getUser()

Obtiene el nombre de usuario utilizado.


private void setContentType(java.lang.String s)

Setea el tipo de contenido a partir del string enviado por el cliente al


querer subir el archivo.
private void setFilename(java.lang.String s)

Setea el nombre del archivo.


void setLogFile(java.lang.String filename)

Setea el nombre del archivo de log.


void setRequest(javax.servlet.http.HttpServletRequest request)

Setea el objeto HttpServletRequest a utilizar.


void setSavePath(java.lang.String savePath)

Setea el path donde se copiara el archivo.


void setUser(java.lang.String userName)

Setea el nombre de usuario que se utilizara.

LogLoaderBean
Clase utilizada para leer el archivo de log y obtener la informacin del mismo para
almacenarla en la base de datos.

Constructor Summary
LogLoaderBean()

Constructor de la clase LogLoader, encargada de cargar todo un log en la tabla log.

Damin A. MARTINELLI

- 323 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Method Summary
private getExtension(java.lang.String url)
static java.lang.String

Obtiene la extension de la pgina de una url.

java.lang.String getExtensions()

Obtiene las extensiones, separadas por coma.


java.lang.String getHitsSaves()

Obtiene la cantidad de registros guardados en la tabla de logs.


java.lang.String getIdsPage()

Obtiene las variables que identifican pginas distintas,


separadas por coma.
java.lang.String getInput()

Obtiene el nombre del archivo de log.


java.lang.String getLoad()

Si toda la informacion necesaria esta seteada, carga el archivo


de log en la tabla de logs.
private int getMaxID()

Obtiene el maximo ID de registro de log para un proyecto de


un usuario.
private java.lang.String getPage(java.lang.String url)

Obtiene la pgina junto con sus variables identificadoras de


pgina, a partir de una url.
java.lang.String getProject()

Obtiene el nombre del proyecto utilizado.


java.lang.String getStatusCodes()

Obtiene los codigos de error, separados por coma.


private getTimestamp(java.lang.String datetime)
static java.lang.String

Devuelve la marca de tiempo.

java.lang.String getTypeLog()

Obtiene el tipo de log.


java.lang.String getUser()

Obtiene el nombre de usuario utilizado.


private initMonths()
static java.util.Hashtable

Damin A. MARTINELLI

Inicializa la tabla de meses y sus numeros.

- 324 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

private boolean isIdPage(java.lang.String nameVar)

Devuelve si un nombre de variable es identificadora de


pgina o no.
private boolean isPageExtension(java.lang.String extension)

Checkea si una extension corresponde con la de una pgina


valida.
private boolean isValidStatus(java.lang.String status)

Devuelve si un status devuelto por el servidor es valido o no.


void load(java.lang.String inputFilename)

Carga todo un log en la tabla log.


static void main(java.lang.String[] args)
private static int min(int nro1, int nro2)

Devuelve el minimo entre dos numeros.


private monthToNumber(java.lang.String month)
static java.lang.String

Convierte un mes a su numero.

private void saveRegister(java.lang.String register)

Graba un registro en la tabla de log, si es considerado valido.


void setExtensions(java.lang.String values)

Setea las extensiones de los archivos considerados de


pginas, o las extensiones que se necesitan tener en cuenta.
void setIdsPage(java.lang.String values)

Setea las variables que identifican pginas distintas.


void setInput(java.lang.String inputFilename)

Setea el nombre del archivo de log.


void setProject(java.lang.String projectName)

Setea el nombre del proyecto que se utilizara.


void setStatusCodes(java.lang.String values)

Setea los codigos de error a tener en cuenta.


void setTypeLog(java.lang.String type)

Setea el tipo de log.


void setUser(java.lang.String userName)

Setea el nombre de usuario que se utilizara.

PageCounterBean

Damin A. MARTINELLI

- 325 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Clase encargada de cargar todas las pginas encontradas en un archivo de log.

Constructor Summary
PageCounterBean()

Constructor de la clase PageCounterBean, encargada de numerar todas las pginas


encontradas en un log.

Method Summary
java.lang.String getPages()

Realiza el conteo de las pginas que se encuentran en los log


cargados en un proyecto.
java.lang.String getProject()

Obtiene el nombre del proyecto utilizado.


java.lang.String getUser()

Obtiene el nombre de usuario utilizado.


static void main(java.lang.String[] args)
void setProject(java.lang.String projectName)

Setea el nombre del proyecto que se utilizara.


void setUser(java.lang.String userName)

Setea el nombre de usuario que se utilizara.


void start()

Comienza el conteo de las pginas que aparecen en el log

LogViewBean
Clase encargada de obtener el detalle de todos los registros de log cargados en la base
de datos por un proyecto de un usuario.

Constructor Summary
LogViewBean()

Contructor de la clase LogViewBean.

Method Summary

Damin A. MARTINELLI

- 326 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

java.lang.String getCurrentLog()

Obtiene el archivo de log utilizado.


java.lang.String getLogsPerPage()

Obtiene la cantidad de registros de log por pgina utilizada.


LogBean getNextLog()

Obtiene el registro de log actual.


java.lang.String getProject()

Obtiene el nombre del proyecto utilizado.


java.lang.String getUser()

Obtiene el nombre de usuario utilizado.


void goFirstLog()

Se posiciona en el primer registro de log del proyecto actual.


boolean hasNextLog()

Indica si existe un proximo registro de log.


static void main(java.lang.String[] args)
void setCurrentLog(java.lang.String log)

Setea el archivo de log a utilizar.


void setLogsPerPage(java.lang.String logs)

Setea la cantidad de registros de log a obtener por pgina.


void setProject(java.lang.String projectName)

Setea el nombre del proyecto que se utilizara.


void setUser(java.lang.String userName)

Setea el nombre de usuario que se utilizara.

SessionMakerBean
Clase SessionMakerBean encargada de armar las sesiones a partir de los registros de
log almacenados en la base de datos.

Constructor Summary
SessionMakerBean()

Constructor de la clase SessionMakerBean, encargada de armar las sesiones a partir


de los registros de log.

Damin A. MARTINELLI

- 327 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Method Summary
java.lang.String getMinPageFrequency()

Obtiene la frecuencia mnima de pgina.


java.lang.String getMinPagesInSession()

Obtiene la cantidad mnima de pginas en cada sesin.


java.lang.String getProject()

Obtiene el nombre del proyecto utilizado.


java.lang.String getSessions()

Si toda la informacin necesaria esta seteada, arma todas las sesiones


para un proyecto de un usuario.
java.lang.String getTimeoutSession()

Obtiene el timeout de sesin.


java.lang.String getUser()

Obtiene el nombre de usuario utilizado.


void make()

Arma las sesiones a partir de los registros de la tabla log.


void setMinPageFrequency(java.lang.String frequency)

Setea la frecuencia minima de pgina.


void setMinPagesInSession(java.lang.String pages)

Setea la cantidad minima de pginas en cada sesin.


void setProject(java.lang.String projectName)

Setea el nombre del proyecto que se utilizara.


void setTimeoutSession(java.lang.String timeout)

Setea el timeout de sesin.


void setUser(java.lang.String userName)

Setea el nombre de usuario que se utilizara.

SessionSaver
Clase SessionSaver encargada de ir armando las sesiones y guardarlas en la base de
datos.

Constructor Summary
SessionSaver()

Constructor de la clase SessionSaver, encargada de ir armando las sesiones y


guardarlas en la base de datos.

Damin A. MARTINELLI

- 328 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Method Summary
private getLongTimestamp(java.lang.String timestamp)
static long

Obtiene el valor long de un timestamp String.

private int getMaxID()

Obtiene el mximo ID de sesin para un proyecto de un usuario.


int getMinPagesInSession()

Obtiene la cantidad minima de pginas en cada sesin.


java.lang.String getProject()

Obtiene el nombre del proyecto utilizado.


int getSessionsCount()

Obtiene la cantidad de sesiones guardadas.


long getTimeoutSession()

Obtiene el timeout de sesin.


java.lang.String getUser()

Obtiene el nombre de usuario utilizado.


private boolean isNewSession(java.lang.String IP, java.lang.String authuser, java.lang.String page,
java.lang.String timestamp)

Indica si la informacin de un registro pertenece a una nueva sesin


o pertenece a la misma sesin en proceso.
void save(java.lang.String IP, java.lang.String authuser, java.lang.String page,
java.lang.String timestamp)

Graba la informacin de un registro de log, teniendo en cuenta si


pertenece a la misma sesin o a una nueva.
void setMinPagesInSession(int pages)

Setea la cantidad minima de pginas en cada sesin.


void setProject(java.lang.String projectName)

Setea el nombre del proyecto que se utilizara.


void setTimeoutSession(long timeout)

Setea el timeout de sesin.


void setUser(java.lang.String userName)

Setea el nombre de usuario que se utilizara.

InputMakerBean

Damin A. MARTINELLI

- 329 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Clase encargada de crear el archivo de sesiones a utilizar como entrada para el


proceso de clusterizacin.

Constructor Summary
InputMakerBean()

Constructor de la clase InputMaker, encargada de crear el archivo de sesiones a


utilizar como entrada para el proceso de clusterizacin.

Method Summary
java.lang.String getKMeansEnabled()

Obtiene si esta seleccionada la creacin del archivo de sesiones de


K-means.
java.lang.String getKMeansFile()

Obtiene el nombre del archivo de K-Means.


private int getMaxPageID()

Devuelve el ID de pgina mayor.


java.lang.String getProject()

Obtiene el nombre del proyecto utilizado.


java.lang.String getSessions()

Si estn todos los atributos necesarios seteados, crean los archivos de


sesiones seleccionados.
java.lang.String getSOMEnabled()

Obtiene si esta seleccionada la creacin del archivo de sesiones de


SOM.
java.lang.String getSOMFile()

Obtiene el nombre del archivo de SOM.


java.lang.String getUser()

Obtiene el nombre de usuario utilizado.


void make()

Arma el archivo de sesiones a partir de la informacin de las tablas


session y page, dejando listo el archivo para el proceso de clusterizacin.
private void makeSessions(java.sql.ResultSet rs)

A partir del resultado de la consulta, setea las pginas de cada sesin.


private void saveInput(boolean[] session)

Graba la informacin de una sesin en el archivo de sesiones.

Damin A. MARTINELLI

- 330 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

void setKMeansEnabled(java.lang.String enabled)

Setea si se quiere crear el archivo de sesiones de K-Means.


void setKMeansFile(java.lang.String name)

Setea el nombre del archivo de K-Means.


void setProject(java.lang.String projectName)

Setea el nombre del proyecto que se utilizara.


void setSOMEnabled(java.lang.String enabled)

Setea si se quiere crear el archivo de sesiones de SOM.


void setSOMFile(java.lang.String name)

Setea el nombre del archivo de SOM.


void setUser(java.lang.String userName)

Setea el nombre de usuario que se utilizara.

SOMBean
Clase SOMBean encargada de clusterizar las sesiones de usuarios utilizando la red
neuronal SOM. Esta clase se implementar utilizando los componentes de redes neuronales
artificiales provistos por Joone [Apndice I].

Constructor Summary
SOMBean()

Contructor por defecto.


SOMBean(java.lang.String input, java.lang.String output, int dim)

Contructor de la clase SOMBean, encargada de clusterizar las sesiones de usuarios.

Method Summary
void cicleTerminated(org.joone.engine.NeuralNetEvent e)

Mtodo que se ejecuta cada vez que termina un ciclo de


entrenamiento.
void errorChanged(org.joone.engine.NeuralNetEvent e)

Mtodo que se ejecuta cada vez que cambia el error.


java.lang.String getClusters()

Realiza la clusterizacin de los usuarios.


java.lang.String getDim()

Obtiene la dimensin del mapa de clusterizacin.

Damin A. MARTINELLI

- 331 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Method Summary
java.lang.String getInput()

Obtiene el nombre del archivo de entrada.


java.lang.String getOutput()

Obtiene el nombre del archivo de salida.


java.lang.String getTrainingCicles()

Obtiene la cantidad de ciclos de entrenamiento a realizar.


private void initNeuralNet()

Inicializa la red, creando las capas y las synapsis.


private void interrogate()

Calcula a que cluster pertenece cada sesin del archivo de entrada.


void netStarted(org.joone.engine.NeuralNetEvent e)

Mtodo que se ejecuta cuando comienza el entrenamiento de la red.


void netStopped(org.joone.engine.NeuralNetEvent e)

Mtodo que se ejecuta cuando termina el entrenamiento de la red.


void netStoppedError(org.joone.engine.NeuralNetEvent e, java.lang.String error)

Mtodo que se ejecuta cuando termina el entrenamiento de la red,


debido a un error.
void save(java.lang.String fileName)

Graba la red en el archivo indicado.


void setDim(java.lang.String dim)

Setea la dimensin del mapa de clusterizacin.


void setInput(java.lang.String file)

Setea el nombre del archivo de entrada.


void setOutput(java.lang.String file)

Setea el nombre del archivo de salida.


void setTrainingCicles(java.lang.String cicles)

Setea la cantidad de ciclos de entrenamiento a realizar.


void train(int cicles)

Entrena la red utilizando los patrones de entrada.

KMeansBean
Clase encargada de realizar la clusterizacin mediante K-Means. El algoritmo KMeans
se
implementar
utilizando
las
clases
provistas
por
Weka
[http://www.cs.waikato.ac.nz/ml/weka/].

Damin A. MARTINELLI

- 332 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Constructor Summary
KMeansBean()

Constructor por defecto de la clase KMeansBean


KMeansBean(java.lang.String input, java.lang.String output, int k)

Contructor de la clase KMeans, encargada de clusterizar las sesiones de usuarios.

Method Summary
java.lang.String getClusters()

Si se setearon todos los atributos necesarios, realiza la clusterizacin


de los datos del archivo de entrada, descubriendo la cantidad de clusters
indicada y colocando los resultados en el archivo de salida.
java.lang.String getInput()

Obtiene el nombre del archivo de entrada utilizado.


java.lang.String getK()

Obtiene la cantidad de clusters a descubrir utilizada.


java.lang.String getOutput()

Obtiene el nombre del archivo de salida utilizado.


void save(java.lang.String fileName)

Graba el modelo generado por K-Means en el archivo indicado.


void setInput(java.lang.String file)

Setea el nombre del archivo de entrada.


void setK(java.lang.String k)

Setea la cantidad de clusters a descubrir.


void setOutput(java.lang.String file)

Setea el nombre del archivo de salida.

SessionClusterBean
Clase utilizada para contabilizar los clusters descubiertos y cargar esta informacin en
la base de datos.

Constructor Summary
SessionClusterBean()

Contructor encargado de inicializar la conexin con la base de datos y preparar las


consultas que se realizaran en ella.

Damin A. MARTINELLI

- 333 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Method Summary
void count(java.lang.String inputFilename)

Realiza el conteo de los clusters descubiertos tomando como entrada


el archivo donde se encuentra a que cluster pertenece cada sesin.
java.lang.String getCount()

Realiza el conteo de los clusters descubiertos, si todos los atributos


necesarios han sido seteados, devolviendo la cantidad de sesiones
contabilizadas.
java.lang.String getFile()

Obtiene el nombre del archivo donde se encuentran las sesiones con


el cluster al cual pertenecen.
java.lang.String getProject()

Obtiene el nombre del proyecto utilizado.


java.lang.String getType()

Obtiene el tipo de clustering utilizado.


java.lang.String getUser()

Obtiene el nombre de usuario utilizado.


void setFile(java.lang.String name)

Setea el nombre del archivo donde se encuentran las sesiones con el


cluster al cual pertenecen.
void setProject(java.lang.String projectName)

Setea el nombre del proyecto que se utilizara.


void setType(java.lang.String typeClustering)

Setea el tipo de clustering que se realizo, cuyo resultado se encuentra


en el archivo a procesar.
void setUser(java.lang.String userName)

Setea el nombre de usuario que se utilizara.

BinarySessionClusterBean
Clase encargada de cargar en la base de datos la informacin de clusterizacin
almacenada en un archivo, que posee en cada lnea nmeros binarios indicando si la sesin
pertenece o no al cluster correspondiente a la posicin de dicho numero binario.

Constructor Summary

Damin A. MARTINELLI

- 334 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

BinarySessionClusterBean()

Method Summary
void count(java.lang.String inputFilename)

Realiza el conteo de los clusters descubiertos tomando como entrada el archivo


donde se encuentra a que cluster pertenece cada sesin.

NumericSessionClusterBean
Clase encargada de cargar en la base de datos la informacin de clusterizacin
almacenada en un archivo, que posee en cada lnea el nmero de cluster al cual pertenece la
sesin.

Constructor Summary
NumericSessionClusterBean()

Constructor por defecto de la clase NumericSessionClusterBean.

Method Summary
void count(java.lang.String inputFilename)

Realiza el conteo de los clusters descubiertos tomando como entrada el archivo


donde se encuentra a que cluster pertenece cada sesin.

FileBean
Clase utilizada para guardar informacin en la base de datos sobre los archivo
utilizados en la herramienta.

Constructor Summary
FileBean()

Constructor de la clase FileBean.

Damin A. MARTINELLI

- 335 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Method Summary
java.lang.String getDescription()

Obtiene la descripcin del archivo utilizado.


java.lang.String getFile()

Obtiene el nombre del archivo utilizado.


java.lang.String getFilePath()

Obtiene el path y el nombre del archivo que se cargo.


java.lang.String getProject()

Obtiene el nombre del proyecto utilizado.


java.lang.String getType()

Obtiene el tipo de archivo a cargar.


java.lang.String getUser()

Obtiene el nombre de usuario utilizado.


private initPaths()
static java.util.Hashtable

Inicializa la tabla de tipos de archivos y la carpeta donde se


almacenaran.

void setDescription(java.lang.String description)

Setea la descripcin del archivo.


void setFile(java.lang.String filename)

Setea el nombre del archivo.


void setFilePath(java.lang.String set)

Si todos los atributos necesarios fueron seteados, setea el path


y el nombre del archivo donde se debe copiar el archivo y carga la
informacin del archivo en la base de datos.
void setProject(java.lang.String projectName)

Setea el nombre del proyecto que se utilizara.


void setSavePath(java.lang.String savePath)

Setea el path donde debe ser guardado el archivo.


void setType(java.lang.String typeFile)

Setea el tipo de archivo a cargar.


void setUser(java.lang.String userName)

Setea el nombre de usuario que se utilizara.

ClusterCounterBean

Damin A. MARTINELLI

- 336 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Clase utilizada para contabilizar la cantidad de sesiones existentes en cada cluster


descubierto.

Constructor Summary
ClusterCounterBean()

Constructor de la clase ClusterCounter, encargada de contabilizar la cantidad de


sesiones en cada cluster descubierto.

Method Summary
void count()

Realiza el conteo de la cantidad de sesiones en cada cluster


descubierto
int getClustersCount()

Obtiene la cantidad de clusters descubiertos.


java.lang.String getCount()

Realiza el conteo de la cantidad de sesiones en cada cluster


descubierto, si todos los atributos necesarios han sido seteados,
devolviendo la cantidad de sesiones en cada cluster.
java.lang.String getNextCluster()

Obtiene el numero del prximo cluster.


java.lang.String getNextClusterSessions()

Obtiene la cantidad de sesiones del prximo cluster.


java.lang.String getProject()

Obtiene el nombre del proyecto utilizado.


java.lang.String getType()

Obtiene el tipo de clustering utilizado.


java.lang.String getUser()

Obtiene el nombre de usuario utilizado.


void goFirstCluster()

Inicializa para la lectura de la cantidad de sesiones en cada cluster


descubierto.
boolean hasNextCluster()

Indica si existe otro cluster.


static void main(java.lang.String[] args)

Damin A. MARTINELLI

- 337 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

void setProject(java.lang.String projectName)

Setea el nombre del proyecto que se utilizara.


void setType(java.lang.String typeClustering)

Setea el tipo de clustering a utilizar.


void setUser(java.lang.String userName)

Setea el nombre de usuario que se utilizara.

PagesInClustersBean
Clase encargada de obtener la informacin de que pginas aparecen en las sesiones de
cada cluster.

Constructor Summary
PagesInClustersBean()

Constructor de la clase PagesInClustes, encargada de obtener la informacin de que


pginas aparecen en las sesiones de cada cluster

Method Summary
private int getMaxCluster()

Obtiene la cantidad de clusters existentes.


java.lang.String getPages()

Si los parametros necesarios han sido seteados, comienza a obtener


la informacin de los clusters.
java.lang.String getProject()

Obtiene el nombre del proyecto utilizado.


java.lang.String getType()

Obtiene el tipo de clusters que se estn analizando.


java.lang.String getUser()

Obtiene el nombre de usuario utilizado.


void setProject(java.lang.String projectName)

Setea el nombre del proyecto que se utilizara.


void setType(java.lang.String typeClustering)

Setea el tipo de clusters que se estn analizando.


void setUser(java.lang.String userName)

Setea el nombre de usuario que se utilizara.

Damin A. MARTINELLI

- 338 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

void start()

Comienza a cargar en la tabla pageInCluster, las tuplas (pgina,


cluster, porcentaje), correspondiente a si una pgina aparece en las sesiones
de un cluster y el porcentaje de sesiones de ese cluster en que la pgina
aparece.

ClusterCounterGraphBean
Clase encargada de generar los grficos de porcentajes de sesiones en cada cluster. Se
implementar
utilizando
la
librera
de
grficos
Chart
Director
[http://www.advsofteng.com/].

Constructor Summary
ClusterCounterGraphBean()

Constructor de la clase ClusterCounterGraphBean.

Method Summary
double[] getData()

Obtiene los datos utilizados en el grafico.


java.lang.String getGraph()

Obtiene el path al grafico generado.


java.lang.String[] getLabels()

Obtiene las etiquetas del grafico.


java.lang.String getMap()

Obtiene el mapa con informacion del grafico generado.


java.lang.String getPath()

Obtiene el path base donde se generan los graficos.


void setData(double[] data)

Setea los datos a utilizar en el grafico.


void setLabels(java.lang.String[] labels)

Setea las etiquetas del grafico.


void setPath(java.lang.String path)

Setea el path base donde se generaran los graficos.

SessionsClusterViewBean

Damin A. MARTINELLI

- 339 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Clase encargada de obtener el detalle de las sesiones y a que cluster pertenece cada
una.

Constructor Summary
SessionsClusterViewBean()

Contructor de la clase SessionsClusterViewBean.

Method Summary
java.lang.String getCurrentSession()

Obtiene el identificador de sesin actual.


java.lang.String getNextCluster()

Obtiene el numero de cluster de la sesin actual.


java.lang.String getNextSequencePages()

Obtiene la secuencia de pginas accedidas en la sesin actual.


java.lang.String getNextSession()

Obtiene el identificador de la prxima sesin.


java.lang.String getProject()

Obtiene el nombre del proyecto utilizado.


java.lang.String getSessionsPerPage()

Obtiene la cantidad de sesiones a mostrar por pgina.


java.lang.String getType()

Obtiene el tipo de clusters que se estn analizando.


java.lang.String getUser()

Obtiene el nombre de usuario utilizado.


void goFirstSession()

Se sita en la primera sesin.


boolean hasNextSession()

Indica se existen mas sesiones.


void setCurrentSession(java.lang.String session)

Setea el identificador de sesin actual.


void setProject(java.lang.String projectName)

Setea el nombre del proyecto que se utilizara.


void setSessionsPerPage(java.lang.String sessions)

Setea la cantidad de sesiones a mostrar por pgina.

Damin A. MARTINELLI

- 340 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

void setType(java.lang.String typeClustering)

Setea el tipo de clusters que se estn analizando.


void setUser(java.lang.String userName)

Setea el nombre de usuario que se utilizara.

PagesInClustersViewBean
Clase que se encarga de obtener la informacin de las pginas que accedieron los
usuarios de cada cluster, indicando el porcentaje de acceso.

Constructor Summary
PagesInClustersViewBean()

Constructor de la clase PagesInClustersViewBean.

Method Summary
java.lang.String getCluster()

Obtiene el numero de cluster.


java.lang.String getMaxPagesPerCluster()

Obtiene la cantidad mxima de pginas por cluster a mostrar.


java.lang.String getMinPercentage()

Obtiene el mnimo porcentaje de frecuencia de pgina a mostrar.


java.lang.String getNextCluster()

Obtiene el proximo cluster.


java.lang.String getNextPage()

Obtiene la prxima pgina.


java.lang.String getNextPercentage()

Obtiene el proximo porcentaje de pgina.


java.lang.String getProject()

Obtiene el nombre del proyecto utilizado.


java.lang.String getType()

Obtiene el tipo de clusters que se estn analizando.


java.lang.String getUser()

Obtiene el nombre de usuario utilizado.

Damin A. MARTINELLI

- 341 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

void goFirstCluster()

Se sita en el primer cluster.


void goFirstPage()

Se sita en la primera pgina.


boolean hasNextCluster()

Indica se existen mas clusters.


boolean hasNextPage()

Indica si existen mas pginas.


void setCluster(java.lang.String clusterNumber)

Setea el numero de cluster.


void setMaxPagesPerCluster(java.lang.String pages)

Setea la cantidad mxima de pginas por cluster a mostrar.


void setMinPercentage(java.lang.String percentage)

Setea el mnimo porcentaje de frecuencia de pgina a mostrar.


void setProject(java.lang.String projectName)

Setea el nombre del proyecto que se utilizara.


void setType(java.lang.String typeClustering)

Setea el tipo de clusters que se estn analizando.


void setUser(java.lang.String userName)

Setea el nombre de usuario que se utilizara.

FilesViewBean
Clase utilizada para obtener todos los archivos de un cierto tipo, para un usuario y
proyecto dado.

Constructor Summary
FilesViewBean()

Constructor de la clase FilesViewBean.

Method Summary
java.lang.String getNextDescription()

Obtiene la descripcin del proximo archivo.

Damin A. MARTINELLI

- 342 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

java.lang.String getNextFile()

Obtiene el nombre del proximo archivo.


java.lang.String getProject()

Obtiene el nombre del proyecto utilizado.


java.lang.String getType()

Obtiene el tipo de archivo utilizado.


java.lang.String getUser()

Obtiene el nombre de usuario utilizado.


void goFirstFile()

Inicializa para la lectura de todos los archivos de un tipo, para un


usuario y proyecto dado.
boolean hasNextFile()

Indica si hay mas archivos.


void setProject(java.lang.String projectName)

Setea el nombre del proyecto que se utilizara.


void setType(java.lang.String typeFile)

Setea el tipo de archivo.


void setUser(java.lang.String userName)

Setea el nombre de usuario que se utilizara.

LogFilesViewBean
Clase utilizada para listar todos los archivos de log cargados por un usuario.

Constructor Summary
LogFilesViewBean()

Constructor de la clase LogFilesViewBean.

Method Summary
java.lang.String getNextDescription()

Obtiene la descripcin del proximo archivo de log.


java.lang.String getNextLog()

Obtiene el nombre del proximo archivo de log.


java.lang.String getUser()

Damin A. MARTINELLI

- 343 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Obtiene el nombre de usuario utilizado.


void goFirstLog()

Inicializa para la lectura de todos los archivos de log de un usuario.


boolean hasNextLog()

Indica si hay mas archivos de log.


void setUser(java.lang.String userName)

Setea el nombre de usuario que se utilizara.

D.4.4.4. Tarea DSI 4.4: Diseo de la Jerarqua


Se identifico la siguiente jerarqua de clases [Figura D.32]:

Figura D.32. Jerarqua de Clases

Damin A. MARTINELLI

- 344 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

A continuacin se muestra el Diagrama de Clases de Diseo incluyendo las


principales clases del sistema [Figura D.33]:

Figura D.33. Diagrama de Clases de Diseo

D.4.4.5. Tarea DSI 4.5: Especificacin de Necesidades de Migracin y Carga Inicial de


Datos
No es necesaria la migracin ni la carga inicial de datos porque no existe un sistema
actual desde donde sea necesario adquirir la informacin almacenada ni tampoco es
necesario que el sistema posea datos precargados para su correcto funcionamiento.

D.4.5. Actividad DSI 5: Diseo Fsico de Datos


D.4.5.1. Tarea DSI 5.1: Diseo del Modelo Fsico de Datos
A continuacin se muestra las distintas tablas de la base de datos y la relacin
existentes entre ellas [Figura D.34]:

Damin A. MARTINELLI

- 345 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Figura D.34. Diseo del Modelo Fsico de Datos

D.4.5.2. Tarea DSI 5.2: Especificacin de los Caminos de Acceso a los Datos
Clase
Tablas

Damin A. MARTINELLI

LoginBean

Tabla user

- 346 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Clase
Tablas

Clase
Tablas

Clase
Tablas

Clase
Tablas

Clase
Tablas

Clase
Tablas

Damin A. MARTINELLI

UserBean

Tabla project

Tabla log

Tabla session

CreateUserBean

Tabla user

CreateProjectBean

Tabla project

DeleteProjectBean

Tabla project

LogCleanerBean

Tabla log

LogFileUploadBean

Tabla logFile

- 347 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Clase
Tablas

Clase
Tablas

Clase
Tablas

Clase
Tablas

Clase
Tablas

Clase
Tablas

Damin A. MARTINELLI

LogLoaderBean

Tabla log

PageCounterBean

Tabla page

Tabla log

LogViewBean

Tabla log

SessionMakerBean

Tabla log

Tabla page

SessionSaver

Tabla session

InputMakerBean

Tabla session

Tabla page

- 348 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Clase

SOMBean

Tablas

No utiliza la base de datos, utiliza archivos


como entrada y salida de datos.

Clase

BinarySessionClusterBean

Tablas

Clase

FileBean

Tablas

Clase
Tablas

Clase
Tablas

Tabla sessionCluster

Tabla file

ClusterCounterBean

Tabla sessionCluster

PagesInClustersBean

Tabla pageInCluster

Tabla page

Tabla sessionCluster

Clase

KMeansBean

Tablas

No utiliza la base de datos, utiliza archivos


como entrada y salida de datos.

Damin A. MARTINELLI

- 349 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Clase
Tablas

NumericSessionClusterBean

Tabla sessionCluster

Clase

ClusterCounterGraphBean

Tablas

No utiliza la base de datos.

Clase

SessionsClusterViewBean

Tablas

Clase
Tablas

Clase
Tablas

Clase

Tabla sessionCluster

Tabla session

PagesInClustersViewBean

Tabla pageInCluster

FilesViewBean

Tabla file

LogFilesViewBean

Tablas

Clase

LogBean

Tablas

No utiliza la base de datos.

Damin A. MARTINELLI

Tabla logFile

- 350 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

D.4.5.3. Tarea DSI 5.3: Optimizacin del Modelo Fsico de Datos


No es necesaria la optimizacin del modelo fsico de datos, ya que la estructura actual
es ptima.

D.4.5.4. Tarea DSI 5.4: Especificacin de la Distribucin de Datos


El motor de base de datos MySQL ser instalado en el mismo servidor utilizado por
el servidor Web Tomcat.

D.4.6. Actividad DSI 6: Verificacin y Aceptacin de la Arquitectura del


Sistema
D.4.6.1. Tarea DSI 6.1: Verificacin de las Especificaciones de Diseo
Se ha verificado todas las especificaciones de diseo y se han encontrado en ptimas
condiciones.

D.4.6.2. Tarea DSI 6.2: Anlisis de Consistencia de las Especificaciones de Diseo


Se analiz la consistencia de las especificaciones de diseo, comprobando la falta de
ambigedades o duplicacin de informacin.

D.4.6.3. Tarea DSI 6.3: Aceptacin de la Arquitectura del Sistema


La arquitectura del sistema ha sido aceptada por los directores de esta tesis.

D.4.7. Actividad DSI 7: Generacin de Especificaciones de Construccin


D.4.7.1. Tarea DSI 7.1: Especificacin del Entorno de Construccin
El entorno de construccin utilizado ser similar al que se empleara para el
funcionamiento del sistema una vez concluida su construccin. Adems, se debe contar con
el ambiente de desarrollo, en este caso, se utilizara la herramienta NetBeans.

D.4.7.2. Tarea DSI 7.2: Definicin de Componentes y Subsistemas de Construccin


No existen subsistemas de construccin.

Damin A. MARTINELLI

- 351 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

D.4.7.3. Tarea DSI 7.3: Elaboracin de Especificaciones de Construccin


No existen componentes adicionales a ser especificados.

D.4.7.4. Tarea DSI 7.4: Elaboracin de Especificaciones del Modelo Fsico de Datos
La base de datos a utilizar ser MySQL, con tablas en formato MyISAM.
Los script SQL para la creacin de las tablas son:
#
# Table structure for table `file`
#
CREATE TABLE `file` (
`name` varchar(50) NOT NULL default '',
`description` varchar(100) default NULL,
`user` varchar(20) NOT NULL default '',
`project` varchar(20) NOT NULL default '',
`type` varchar(20) NOT NULL default '',
PRIMARY KEY (`name`,`user`,`project`,`type`)
) TYPE=MyISAM;
# -------------------------------------------------------#
# Table structure for table `log`
#
CREATE TABLE `log` (
`ID` int(11) NOT NULL default '0',
`IP` varchar(50) NOT NULL default '',
`authuser` varchar(20) NOT NULL default '',
`page` varchar(255) NOT NULL default '',
`timestamp` timestamp(14) NOT NULL,
`project` varchar(20) NOT NULL default '',
`user` varchar(20) NOT NULL default '',
PRIMARY KEY (`ID`,`project`,`user`)
) TYPE=MyISAM;
# -------------------------------------------------------#
# Table structure for table `logfile`
#

Damin A. MARTINELLI

- 352 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

CREATE TABLE `logfile` (


`name` varchar(50) NOT NULL default '',
`description` varchar(100) default NULL,
`user` varchar(20) NOT NULL default '',
PRIMARY KEY (`name`,`user`)
) TYPE=MyISAM;
# -------------------------------------------------------#
# Table structure for table `page`
#
CREATE TABLE `page` (
`page` varchar(255) NOT NULL default '',
`project` varchar(20) NOT NULL default '',
`user` varchar(20) NOT NULL default '',
`frequency` int(11) NOT NULL default '0',
`ID` int(11) NOT NULL default '0',
PRIMARY KEY (`page`,`project`,`user`),
KEY `ID` (`ID`,`project`,`user`)
) TYPE=MyISAM;
# -------------------------------------------------------#
# Table structure for table `pageincluster`
#
CREATE TABLE `pageincluster` (
`cluster` int(11) NOT NULL default '0',
`page` varchar(255) NOT NULL default '0',
`percentage` float NOT NULL default '0',
`project` varchar(20) NOT NULL default '',
`user` varchar(20) NOT NULL default '',
`type` varchar(10) NOT NULL default '',
PRIMARY KEY (`cluster`,`page`,`project`,`user`,`type`)
) TYPE=MyISAM;
# -------------------------------------------------------#
# Table structure for table `project`
#
CREATE TABLE `project` (
`user` varchar(20) NOT NULL default '',
`project` varchar(20) NOT NULL default '',

Damin A. MARTINELLI

- 353 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

`description` varchar(100) default NULL,


PRIMARY KEY (`user`,`project`)
) TYPE=MyISAM;
# -------------------------------------------------------#
# Table structure for table `session`
#
CREATE TABLE `session` (
`ID` int(11) NOT NULL default '0',
`sequence` int(11) NOT NULL default '0',
`page` varchar(255) NOT NULL default '',
`user` varchar(20) NOT NULL default '',
`project` varchar(20) NOT NULL default '',
PRIMARY KEY (`ID`,`sequence`,`user`,`project`)
) TYPE=MyISAM;
# -------------------------------------------------------#
# Table structure for table `sessioncluster`
#
CREATE TABLE `sessioncluster` (
`session` int(11) NOT NULL default '0',
`cluster` int(11) NOT NULL default '0',
`user` varchar(20) NOT NULL default '',
`project` varchar(20) NOT NULL default '',
`type` varchar(10) NOT NULL default '',
PRIMARY KEY (`session`,`user`,`project`,`type`)
) TYPE=MyISAM;
# -------------------------------------------------------#
# Table structure for table `user`
#
CREATE TABLE `user` (
`user` varchar(20) NOT NULL default '',
`pass` varchar(20) NOT NULL default '',
PRIMARY KEY (`user`)
) TYPE=MyISAM;

Damin A. MARTINELLI

- 354 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

D.4.8. Actividad DSI 8: Especificacin Tcnica del Plan de Pruebas


D.4.8.1. Tarea DSI 8.1: Especificacin del Entorno de Pruebas
El entorno utilizado para las pruebas ser el mismo que el entorno utilizado para el
desarrollo del sistema, el cual se encuentra especificado en las tareas DSI 1.6 y DSI 7.1.

D.4.8.2. Tarea DSI 8.2: Especificacin Tcnica de Niveles de Prueba


Se realizarn pruebas unitarias sobre cada clase generada y luego se realizarn
pruebas de integracin de todo el sistema en su conjunto, las mismas se encuentran
especificadas en la tarea CSI 3.2.

D.4.8.3. Tarea DSI 8.3: Revisin de la Planificacin de Pruebas


Las pruebas unitarias a cada clase sern ejecutadas apenas sea construida la clase,
para que una vez que hayan sido realizadas todas las clases del sistema, poder realizar las
pruebas del sistema comprobando el correcto funcionamiento en su totalidad, ejecutando un
proceso completo de identificacin de hbitos de usuarios.

D.4.9. Actividad DSI 9: Establecimiento de Requisitos de Implantacin


D.4.9.1. Tarea DSI 9.1: Especificacin de Requisitos de Documentacin de Usuario
Se realizar en Manual del Usuario del sistema, donde se explicar la utilizacin del
mismo para su correcto uso.

D.4.9.2. Tarea DSI 9.2: Especificacin de Requisitos de Implantacin


Para la correcta implantacin de sistema, el servidor utilizado para alojarlo debe
cumplir los siguientes requisitos:

Procesador con velocidad mayor a 1.5 GHZ.

Memoria RAM mayor a 512 MB.

Mquina Virtual Java.

Servidor Web Tomcat.

Base de Datos MySQL.

Damin A. MARTINELLI

- 355 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Paquetes Java adicionales para la conexin con la base de datos, para la


utilizacin de los componentes de Joone, para la utilizacin del algoritmo KMeans de Weka y para la librera generadora de grficos ChartDirector.

D.4.10. Actividad DSI 10: Aprobacin del Diseo del Sistema de


Informacin
D.4.10.1. Tarea DSI 10.1: Presentacin y Aprobacin del Diseo del Sistema de
Informacin
Se present el diseo del sistema de informacin a los directores de esta tesis, los
cuales aprobaron el mismo.
Para comprobar que todos los requisitos enumerados en la Tarea ASI 2.1 hayan sido
cubiertos por los casos de uso, se procede a completar la siguiente tabla [Tabla D.7]. Todos
los requisitos han sido considerados en uno o ms casos de uso.

Damin A. MARTINELLI

- 356 -

Ver Archivo

Ver porc. acceso a cada pgina

Ver detalle sesiones

Agrupar usuarios - SOM


Agrupar usuarios - K-Means
Ver cant. sesiones por cluster

Construir sesiones

Ver log cargado

Cargar y prepocesar log

Eliminar proyecto

Seleccionar proyecto

Crear proyecto

Subir archivo de log

R1
Preprocesamiento Log
R2 Identificacin de
Usuarios
R3 Identificacin de
Sesiones de Usuarios
R4 Agrupamiento de
Usuarios con SOM
R5 Agrupamiento de
Usuarios con K-Means
R6 Anlisis de
Resultados
R7 Usuarios del
X
Sistema
R8 Proyectos de
Usuarios
R9 Formatos de
Logs
R10 Filtros de
Preprocesamiento de
Logs
R11 Criterios para la
Identificacin de
Usuarios
R12 Criterios para la
Identificacin de
Sesiones de Usuarios
R13 Caractersticas
de la Red Neuronal
SOM

Registrar usuario

Iniciar sesin usuario

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

X
X
X
X
X

XX X

X
X

X
X
X
X
X
X

Tabla D.7 Trazabilidades entre el Modelo de Casos de Uso y el Catalogo de Requisitos

Damin A. MARTINELLI

- 357 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

D.5. Construccin del Sistema de Informacin


D.5.1. Actividad CSI 1: Preparacin del Entorno de Generacin y
Construccin
D.5.1.1. Tarea CSI 1.1: Implantacin de la Base de Datos Fsica o Ficheros
Se ejecutaron los scripts SQL definidos en la Tarea DSI 8.4: Elaboracin de
Especificaciones del Modelo Fsico de Datos. Con ello se poseen todas las tablas necesarias
para la correcta ejecucin del sistema.

D.5.1.2. Tarea CSI 1.2: Preparacin del Entorno de Construccin


Se prepar el entorno de construccin especificado en las tareas DSI 1.6 y DSI 7.1,
instalando todo el software y todas las libreras necesarias para su correcta construccin.

D.5.2. Actividad CSI 2: Generacin del Cdigo de los Componentes y


Procedimientos
D.5.2.1. Tarea CSI 2.1: Generacin del Cdigo de Componentes
Se posee todo el cdigo fuente, compilado y listo para su ejecucin.

D.5.2.2. Tarea CSI 2.2: Generacin del Cdigo de los Procedimientos de Operacin y
Seguridad
Se posee tambin el cdigo fuente relativo a la autenticacin de los distintos usuarios
del sistema, compilado y listo para su ejecucin.

D.5.3. Actividad CSI 3: Ejecucin de las Pruebas Unitarias


D.5.3.1. Tarea CSI 3.1: Preparacin del Entorno de las Pruebas
Se posee el entorno preparado para la realizacin de las pruebas unitarias, las cuales
sern realizadas en una computadora personal la cual ejecuta el servidor Web Tomcat y una
base de datos MySQL.

Damin A. MARTINELLI

- 358 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

D.5.3.2. Tarea CSI 3.2: Realizacin y Evaluacin de las Pruebas Unitarias


Se realizaron clases de prueba unitaria para cada clase del sistema. Las mismas son
detalladas en el Apndice V.
Todas las pruebas resultaron satisfactorias. El detalle de ejecucin de las pruebas se
encuentra en el Apndice V Resultados de las Pruebas Unitarias.

D.5.4. Actividad CSI 4: Ejecucin de las Pruebas de Integracin y del


Sistema
D.5.4.1. Tarea CSI 4.1: Preparacin del Entorno de las Pruebas de Integracin y del
Sistema
Se posee el entorno preparado para la realizacin de las pruebas de integracin del
sistema, las cuales sern realizadas en un servidor el cual ejecuta el servidor Web Tomcat y
una base de datos MySQL.

D.5.4.2. Tarea CSI 4.2: Realizacin de las Pruebas de Integracin y del Sistema
Se realizaron pruebas de integracin correspondientes a cada paso del proceso de
identificacin de hbitos de uso de sitios Web, tomando cada paso de forma independiente
y analizando los resultados de cada uno.
A continuacin se detalla una muestra de las pruebas de integracin realizadas [Tabla
D.8, Tabla D.9, Tabla D.10, Tabla D.11]:

Prueba

Preprocesamiento del Archivo de Log

Descripcin

Se realiza el preprocesado de un archivo de log de un servidor


Web y se analiza si el preprocesado fue realizado de forma
satisfactoria, corroborando que la cantidad de registros finales
luego de este paso corresponda realmente con la cantidad de
registros que cumplen con la condicin de preprocesado
utilizada.

Objetivo

Determinar si el preprocesado del archivo de log se realiza


correctamente y el resultado es el adecuado para la posterior
identificacin de sesiones de usuarios. Se espera que se obtengan
nicamente los registros del log que cumplen con los parmetros
utilizados en el preprocesamiento, descartando los registros que

Damin A. MARTINELLI

- 359 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

no poseen dichas caractersticas.

Parmetros Utilizados

Resultado Esperado

Formato Log: CLF+REFERRER+AGENT

Extensiones: html, htm

Cdigo de Estado: 200

Mediante el preprocesado manual del archivo de log se


identificaron 87 registros que cumplen con los parmetros
utilizados.

Tabla D.8. Prueba Preprocesamiento del Archivo de Log

Prueba

Construccin de Sesiones de Usuarios

Descripcin

Se construyen sesiones de usuarios sobre la base de un archivo


de log previamente cargado y luego se corrobora que la cantidad
de sesiones construidas sea la correcta y que los accesos en las
sesiones correspondan con los parmetros utilizados.

Objetivo

Determinar la correcta construccin de las sesiones de usuarios


con la informacin obtenida luego del preprocesado del archivo
de log. Se espera que se determine la cantidad correcta de
sesiones para los parmetros utilizados, y que cada sesin posea
las pginas correspondientes.

Parmetros Utilizados

Resultado Esperado

Cantidad Mnima de Pginas en una Sesin: 3

Timeout de Sesin: 30 minutos

Frecuencia Mnima de Pgina en el Log: 1

Se determinaron manualmente 21 sesiones de usuarios utilizando


los parmetros detallados anteriormente.

Tabla D.9. Prueba Construccin de Sesiones de Usuarios

Damin A. MARTINELLI

- 360 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Prueba

Clusterizacin de Sesiones de Usuarios Utilizando la Red


Neuronal Mapa Auto-Organizativo (SOM)

Descripcin

Se procede a la clusterizacin de las sesiones de usuarios y se


corrobora que todas las sesiones pertenezcan a alguno de los
clusters generados.

Objetivo

Determinar el correcto funcionamiento de la clusterizacin de las


sesiones de usuarios.

Parmetros Utilizados

Resultado Esperado

Cantidad de ciclos de entrenamiento: 10

Cardinalidad del mapa de clusterizacin (NxN): 2

Se espera que se asigne a cada sesin de usuario un cluster al


cual pertenece y que todas las sesiones pertenezca a uno y solo
uno de los 4 clusters a descubrir.

Tabla D.10. Prueba Clusterizacin de Sesiones de Usuarios con SOM

Prueba

Clusterizacin de Sesiones de Usuarios Utilizando el


Algoritmo K-Means

Descripcin

Se procede a la clusterizacin de las sesiones de usuarios y se


corrobora que todas las sesiones pertenezcan a alguno de los
clusters generados.

Objetivo

Determinar el correcto funcionamiento de la clusterizacin de las


sesiones de usuarios.

Parmetros Utilizados
Resultado Esperado

Cantidad de clusters a descubrir (K): 4

Se espera que se asigne a cada sesin de usuario un cluster al


cual pertenece y que todas las sesiones pertenezca a uno y solo
uno de los 4 clusters a descubrir.

Tabla D.11. Prueba Clusterizacin de Sesiones de Usuarios con K-Means

Para la realizacin de las pruebas del sistema se toma como base las pruebas de
integracin, las cuales ejecutadas una a continuacin de la otra, corresponden con un

Damin A. MARTINELLI

- 361 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

proceso completo de identificacin de hbitos de uso. La salida de cada proceso es tomado


como entrada del siguiente y se corrobora que en todo el proceso los resultados sean los
esperados.

D.5.4.3. Tarea CSI 4.3: Evaluacin del Resultado de las Pruebas de Integracin y del
Sistema
Las pruebas de integracin y del sistema han sido satisfactorias y han mostrado que el
sistema funciona correctamente. El detalle de las mismas se encuentra en el Apndice V
Pruebas de Integracin y de Sistema.

D.5.5. Actividad CSI 5: Elaboracin de los Manuales de Usuario


D.5.5.1. Tarea CSI 5.1: Elaboracin de los Manuales de Usuario
Se elabor el Manual de Usuario, el cual se detalla en el Apndice II.

D.5.6. Actividad CSI 6: Aprobacin del Sistema de Informacin


D.5.6.1. Tarea CSI 6.1: Presentacin y Aprobacin del Sistema de Informacin
El sistema de informacin es presentado y aprobado por los directores de esta tesis.

Damin A. MARTINELLI

- 362 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

E. Apndice V: Pruebas
E.1. Pruebas Unitarias ........................................................................................................ 364
E.2. Resultados Pruebas Unitarias...................................................................................... 383
E.3. Pruebas de Integracin y de Sistema........................................................................... 385

Damin A. MARTINELLI

- 363 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

E.1. Pruebas Unitarias


Para la realizacin de las pruebas unitarias se utiliz el framework JUnit
(http://junit.org).
A continuacin se detallan las clases de prueba para cada una de las clases del
sistema.

BinarySessionClusterBeanTest
package ar.com.do2.iadh;
import junit.framework.*;
import java.lang.*;
import java.sql.*;
public class BinarySessionClusterBeanTest extends TestCase {
private Connection conn;
protected void setUp() throws Exception {
ConfigFileParserBean config = new ConfigFileParserBean();
String urldb = "jdbc:mysql://" + config.getDatabaseServer() +
"/" + config.getDatabaseName();
String login = config.getDatabaseUser();
String password = config.getDatabasePass();
Class.forName("com.mysql.jdbc.Driver").newInstance();
conn = DriverManager.getConnection(urldb,login,password);
String delete = "DELETE FROM sessionCluster WHERE user='testUser'";
Statement stmt = conn.createStatement();
stmt.execute(delete);
}
public void testGetCount() throws Exception {
BinarySessionClusterBean session = new
BinarySessionClusterBean();
session.setUser("testUser");
session.setProject("testProject");
session.setType("SOM");
session.setFile("testBinaryClusters.txt");
//Deben cargarse 5 sesiones
Assert.assertEquals(session.getCount(), "5");
}
}

Damin A. MARTINELLI

- 364 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

ClusterCounterBeanTest
package ar.com.do2.iadh;
import junit.framework.*;
import java.lang.*;
import java.sql.*;
public class ClusterCounterBeanTest extends TestCase {
private Connection conn;
private ClusterCounterBean counter;
protected void setUp() throws Exception {
ConfigFileParserBean config = new ConfigFileParserBean();
String urldb = "jdbc:mysql://" + config.getDatabaseServer() +
"/" + config.getDatabaseName();
String login = config.getDatabaseUser();
String password = config.getDatabasePass();
Class.forName("com.mysql.jdbc.Driver").newInstance();
conn = DriverManager.getConnection(urldb,login,password);
String delete = "DELETE FROM sessionCluster WHERE user='testUser'";
Statement stmt = conn.createStatement();
stmt.execute(delete);
stmt.execute("INSERT INTO sessionCluster (session,cluster,user,project,type)
VALUES ('1','1','testUser','testProject','SOM')");
stmt.execute("INSERT INTO sessionCluster (session,cluster,user,project,type)
VALUES ('2','1','testUser','testProject','SOM')");
stmt.execute("INSERT INTO sessionCluster
(session,cluster,user,project,type) VALUES ('3','1','testUser','testProject','SOM')");
stmt.execute("INSERT INTO sessionCluster
(session,cluster,user,project,type) VALUES ('4','2','testUser','testProject','SOM')");
stmt.execute("INSERT INTO sessionCluster
(session,cluster,user,project,type) VALUES ('5','2','testUser','testProject','SOM')");
stmt.execute("INSERT INTO sessionCluster
(session,cluster,user,project,type) VALUES ('6','2','testUser','anotherProject','SOM')");
stmt.execute("INSERT INTO sessionCluster
(session,cluster,user,project,type) VALUES ('7','2','testUser','testProject','KMEANS')");
counter = new ClusterCounterBean();
counter.setUser("testUser");
counter.setProject("testProject");
counter.setType("SOM");
}
public void testGetClustersCount() throws Exception {
//Deben existir 2 clusters
Assert.assertEquals(counter.getClustersCount(), 2);

Damin A. MARTINELLI

- 365 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

counter.goFirstCluster();
String cluster = "0";
if (counter.hasNextCluster())
cluster = counter.getNextCluster();
//El primero debe ser el cluster 1
Assert.assertEquals(cluster, "1");
//La cantidad de sesiones del cluster 1 debe ser 3
Assert.assertEquals(counter.getNextClusterSessions(),"3");
cluster = "0";
if (counter.hasNextCluster())
cluster = counter.getNextCluster();
//El segundo debe ser el cluster 2
Assert.assertEquals(cluster, "2");
//La cantidad de sesiones del cluster 2 debe ser 2
Assert.assertEquals(counter.getNextClusterSessions(),"2");
}
public void testGoFirstCluster() throws Exception {
counter.goFirstCluster();
//Luego de ir al primer cluster debe tener un siguiente
Assert.assertTrue(counter.hasNextCluster());
}
public void testGetNextCluster() throws Exception {
counter.goFirstCluster();
String cluster = "0";
if (counter.hasNextCluster())
cluster = counter.getNextCluster();
//El primero debe ser el cluster 1
Assert.assertEquals(cluster, "1");
//La cantidad de sesiones del cluster 1 debe ser 3
Assert.assertEquals(counter.getNextClusterSessions(),"3");
cluster = "0";
if (counter.hasNextCluster())
cluster = counter.getNextCluster();
//El segundo debe ser el cluster 2
Assert.assertEquals(cluster, "2");
//La cantidad de sesiones del cluster 2 debe ser 2
Assert.assertEquals(counter.getNextClusterSessions(),"2");
}
}

ConfigFileParserBeanTest
package ar.com.do2.iadh;
import junit.framework.*;

Damin A. MARTINELLI

- 366 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

import java.lang.*;
import java.sql.*;
public class ConfigFileParserBeanTest extends TestCase {
private ConfigFileParserBean config;
protected void setUp() {
config = new ConfigFileParserBean();
}
public void testGetDatabaseServer() {
Assert.assertEquals(config.getDatabaseServer(),"testDatabaseServer");
}
public void testGetDatabaseName() {
Assert.assertEquals(config.getDatabaseName(),"testDatabaseName");
}
public void testGetDatabaseUser() {
Assert.assertEquals(config.getDatabaseUser(),"testDatabaseUser");
}
public void testGetDatabasePass() {
Assert.assertEquals(config.getDatabasePass(),"testDatabasePass");
}
}

CreateProjectBeanTest
package ar.com.do2.iadh;
import junit.framework.*;
import java.lang.*;
import java.sql.*;
public class CreateProjectBeanTest extends TestCase {
private Connection conn;
protected void setUp() throws Exception {
ConfigFileParserBean config = new ConfigFileParserBean();
String urldb = "jdbc:mysql://" + config.getDatabaseServer() +
"/" + config.getDatabaseName();
String login = config.getDatabaseUser();
String password = config.getDatabasePass();
Class.forName("com.mysql.jdbc.Driver").newInstance();

Damin A. MARTINELLI

- 367 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

conn = DriverManager.getConnection(urldb,login,password);
String delete = "DELETE FROM project WHERE user='testUser'";
Statement stmt = conn.createStatement();
stmt.execute(delete);
}
public void testCreateNewProject() throws Exception {
CreateProjectBean creator = new CreateProjectBean();
creator.setUser("testUser");
creator.setProject("testProject");
creator.setDescription("testProjectDescription");
creator.createNewProject();
String query = "SELECT * FROM project WHERE user='testUser'";
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(query);
boolean more = rs.next();
//Debe haberse creado un proyecto
Assert.assertTrue(more);
if (more) {
//Debe haberse creado un proyecto de nombre
testProject
Assert.assertEquals(rs.getString("project"),
"testProject");
//Y con descripcion testProjectDescription
Assert.assertEquals(rs.getString("description"), "testProjectDescription");
}
more = rs.next();
//No debe existir otro proyecto para el usuario testUser
Assert.assertTrue(!more);
}
}

CreateUserBeanTest
package ar.com.do2.iadh;
import junit.framework.*;
import java.lang.*;
import java.sql.*;
public class CreateUserBeanTest extends TestCase {
private Connection conn;
protected void setUp() throws Exception {
ConfigFileParserBean config = new ConfigFileParserBean();
String urldb = "jdbc:mysql://" + config.getDatabaseServer() +
"/" + config.getDatabaseName();

Damin A. MARTINELLI

- 368 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

String login = config.getDatabaseUser();


String password = config.getDatabasePass();
Class.forName("com.mysql.jdbc.Driver").newInstance();
conn = DriverManager.getConnection(urldb,login,password);
String delete = "DELETE FROM user";
Statement stmt = conn.createStatement();
stmt.execute(delete);
}
public void testCreateNewUser() throws Exception {
CreateUserBean creator = new CreateUserBean();
creator.setUser("testUser");
creator.setPassword("testPassword");
creator.createNewUser();
String query = "SELECT * FROM user";
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(query);
boolean more = rs.next();
//Debe haberse creado un usuario
Assert.assertTrue(more);
if (more) {
//Debe haberse creado un usuario de nombre testUser
Assert.assertEquals(rs.getString("user"), "testUser");
//Y con contrasea testPassword
Assert.assertEquals(rs.getString("pass"), "testPassword");
}
more = rs.next();
//No debe existir otro usuario
Assert.assertTrue(!more);
}
}

DeleteProjectBeanTest
package ar.com.do2.iadh;
import junit.framework.*;
import java.lang.*;
import java.sql.*;
public class DeleteProjectBeanTest extends TestCase {
private Connection conn;
protected void setUp() throws Exception {
ConfigFileParserBean config = new ConfigFileParserBean();

Damin A. MARTINELLI

- 369 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

String urldb = "jdbc:mysql://" + config.getDatabaseServer() +


"/" + config.getDatabaseName();
String login = config.getDatabaseUser();
String password = config.getDatabasePass();
Class.forName("com.mysql.jdbc.Driver").newInstance();
conn = DriverManager.getConnection(urldb,login,password);
Statement stmt = conn.createStatement();
String delete = "DELETE FROM project WHERE user = 'testUser'";
String insert = "INSERT INTO project (user,project,description) VALUES
('testUser','testProject','testProjectDescription')";
stmt.execute(delete);
stmt.execute(insert);
}
public void testDeleteProject() throws Exception {
DeleteProjectBean deleteProject = new DeleteProjectBean();
deleteProject.setUser("testUser");
deleteProject.setProject("testProject");
Assert.assertTrue(deleteProject.deleteProject());
}
}

FileBeanTest
package ar.com.do2.iadh;
import junit.framework.*;
import java.lang.*;
import java.sql.*;
public class FileBeanTest extends TestCase {
private Connection conn;
protected void setUp() throws Exception {
ConfigFileParserBean config = new ConfigFileParserBean();
String urldb = "jdbc:mysql://" + config.getDatabaseServer() +
"/" + config.getDatabaseName();
String login = config.getDatabaseUser();
String password = config.getDatabasePass();
Class.forName("com.mysql.jdbc.Driver").newInstance();
conn = DriverManager.getConnection(urldb,login,password);
String delete = "DELETE FROM file";
Statement stmt = conn.createStatement();
stmt.execute(delete);
}

Damin A. MARTINELLI

- 370 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

public void testSetFilePath() throws Exception {


FileBean file = new FileBean();
file.setFile("testFilename");
file.setUser("testUser");
file.setDescription("testFileDescription");
file.setProject("testProject");
file.setType("INPUT-SOM");
file.setFilePath("");
String query = "SELECT * FROM file";
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(query);
boolean more = rs.next();
//Debe haberse creado un file
Assert.assertTrue(more);
if (more) {
//Debe haberse creado un file para el usuario testUser
Assert.assertEquals(rs.getString("user"), "testUser");
//Con el nombre testFilename
Assert.assertEquals(rs.getString("name"), "testFilename");
//Para el proyecto testProject
Assert.assertEquals(rs.getString("project"), "testProject");
}
more = rs.next();
//No debe existir otro file
Assert.assertTrue(!more);
}
}

FilesViewBeanTest
package ar.com.do2.iadh;
import junit.framework.*;
import java.lang.*;
import java.sql.*;
public class FilesViewBeanTest extends TestCase {
private Connection conn;
private FilesViewBean files;
protected void setUp() throws Exception {
ConfigFileParserBean config = new ConfigFileParserBean();
String urldb = "jdbc:mysql://" + config.getDatabaseServer() +
"/" + config.getDatabaseName();
String login = config.getDatabaseUser();
String password = config.getDatabasePass();

Damin A. MARTINELLI

- 371 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Class.forName("com.mysql.jdbc.Driver").newInstance();
conn = DriverManager.getConnection(urldb,login,password);
String delete = "DELETE FROM file";
Statement stmt = conn.createStatement();
stmt.execute(delete);
FileBean file = new FileBean();
file.setFile("testFilename");
file.setUser("testUser");
file.setDescription("testFileDescription");
file.setProject("testProject");
file.setType("INPUT-SOM");
file.setFilePath("");
file = new FileBean();
file.setFile("testFilename2");
file.setUser("testUser");
file.setDescription("testFileDescription2");
file.setProject("testProject");
file.setType("INPUT-SOM");
file.setFilePath("");
file = new FileBean();
file.setFile("testFilename3");
file.setUser("testUser");
file.setDescription("testFileDescription3");
file.setProject("testProject2");
file.setType("INPUT-SOM");
file.setFilePath("");
file = new FileBean();
file.setFile("testFilename4");
file.setUser("testUser2");
file.setDescription("testFileDescription4");
file.setProject("testProject");
file.setType("INPUT-SOM");
file.setFilePath("");
file = new FileBean();
file.setFile("testFilename5");
file.setUser("testUser");
file.setDescription("testFileDescription5");
file.setProject("testProject");
file.setType("OUTPUT-SOM");
file.setFilePath("");
files = new FilesViewBean();
files.setUser("testUser");
files.setProject("testProject");
files.setType("INPUT-SOM");
}
public void testGoFirstFile() throws Exception {

Damin A. MARTINELLI

- 372 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

files.goFirstFile();
//Luego de ir al primer file debe tener un siguiente
Assert.assertTrue(files.hasNextFile());
}
public void testGetNextFile() throws Exception {
files.goFirstFile();
if (files.hasNextFile()) {
//El primero debe ser el file testFilename
Assert.assertEquals(files.getNextFile(),
"testFilename");
}
else
Assert.assertTrue(false);
if (files.hasNextFile()) {
//El segundo debe ser el file testFilename2
Assert.assertEquals(files.getNextFile(),
"testFilename2");
}
else
Assert.assertTrue(false);
//Solo deben ser dos files
Assert.assertTrue(!files.hasNextFile());
}
}

LogCleanerBeanTest
package ar.com.do2.iadh;
import junit.framework.*;
import java.lang.*;
import java.sql.*;
public class LogCleanerBeanTest extends TestCase {
private LogCleanerBean logCleaner;
private Connection conn;
protected void setUp() throws Exception {
ConfigFileParserBean config = new ConfigFileParserBean();
String urldb = "jdbc:mysql://" + config.getDatabaseServer() +
"/" + config.getDatabaseName();
String login = config.getDatabaseUser();
String password = config.getDatabasePass();
Class.forName("com.mysql.jdbc.Driver").newInstance();
conn = DriverManager.getConnection(urldb,login,password);

Damin A. MARTINELLI

- 373 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

String delete = "DELETE FROM log WHERE user='testUser' AND


project='testProject'";
Statement stmt = conn.createStatement();
stmt.execute(delete);
LogLoaderBean log = new LogLoaderBean();
log.setUser("testUser");
log.setProject("testProject");
log.load("testLog.txt");
logCleaner = new LogCleanerBean();
logCleaner.setUser("testUser");
logCleaner.setProject("testProject");
}
public void testGetCleaneds() throws Exception {
//Deben eliminarse 4 registros de logs
Assert.assertEquals(logCleaner.getCleaneds(), "4");
}
}

LoginBeanTest
package ar.com.do2.iadh;
import junit.framework.*;
import java.lang.*;
import java.sql.*;
public class LoginBeanTest extends TestCase {
protected void setUp() throws Exception {
ConfigFileParserBean config = new ConfigFileParserBean();
String urldb = "jdbc:mysql://" + config.getDatabaseServer() +
"/" + config.getDatabaseName();
String login = config.getDatabaseUser();
String password = config.getDatabasePass();
Class.forName("com.mysql.jdbc.Driver").newInstance();
Connection conn =
DriverManager.getConnection(urldb,login,password);
String delete = "DELETE FROM user WHERE user='testUser'";
Statement stmt = conn.createStatement();
stmt.execute(delete);
String insert = "INSERT INTO user (user,pass) VALUES ('testUser','testUser')";
stmt.execute(insert);
}
public void testIsValidUser() throws Exception {

Damin A. MARTINELLI

- 374 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

LoginBean login = new LoginBean();


login.setUser("testUser");
login.setPass("testUser");
Assert.assertTrue(login.isValidUser());
login.setPass("wrongPass");
Assert.assertTrue(!login.isValidUser());
login.setUser("wrongUser");
Assert.assertTrue(!login.isValidUser());
login.setPass("testUser");
Assert.assertTrue(!login.isValidUser());
}
}

LogLoaderBeanTest
package ar.com.do2.iadh;
import junit.framework.*;
import java.lang.*;
import java.sql.*;
public class LogLoaderBeanTest extends TestCase {
private LogLoaderBean log;
private Connection conn;
protected void setUp() throws Exception {
ConfigFileParserBean config = new ConfigFileParserBean();
String urldb = "jdbc:mysql://" + config.getDatabaseServer() +
"/" + config.getDatabaseName();
String login = config.getDatabaseUser();
String password = config.getDatabasePass();
Class.forName("com.mysql.jdbc.Driver").newInstance();
conn = DriverManager.getConnection(urldb,login,password);
String delete = "DELETE FROM log WHERE user='testUser' AND
project='testProject'";
Statement stmt = conn.createStatement();
stmt.execute(delete);
log = new LogLoaderBean();
log.setUser("testUser");
log.setProject("testProject");
}
public void testLoad() throws Exception {
log.load("testLog.txt");
String query = "SELECT COUNT(*) as logs FROM log WHERE user='testUser'
AND project='testProject'";

Damin A. MARTINELLI

- 375 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Statement stmt = conn.createStatement();


ResultSet rs = stmt.executeQuery(query);
int logs = 0;
boolean more = rs.next();
if (more)
logs = rs.getInt("logs");
//Deben haberse cargado 4 registros de logs
Assert.assertEquals(logs, 4);
}
}

NumericSessionClusterBeanTest
package ar.com.do2.iadh;
import junit.framework.*;
import java.lang.*;
import java.sql.*;
public class NumericSessionClusterBeanTest extends TestCase {
private Connection conn;
protected void setUp() throws Exception {
ConfigFileParserBean config = new ConfigFileParserBean();
String urldb = "jdbc:mysql://" + config.getDatabaseServer() +
"/" + config.getDatabaseName();
String login = config.getDatabaseUser();
String password = config.getDatabasePass();
Class.forName("com.mysql.jdbc.Driver").newInstance();
conn = DriverManager.getConnection(urldb,login,password);
String delete = "DELETE FROM sessionCluster WHERE user='testUser'";
Statement stmt = conn.createStatement();
stmt.execute(delete);
}
public void testGetCount() throws Exception {
NumericSessionClusterBean session = new
NumericSessionClusterBean();
session.setUser("testUser");
session.setProject("testProject");
session.setType("SOM");
session.setFile("testNumericClusters.txt");
//Deben cargarse 5 sesiones
Assert.assertEquals(session.getCount(), "5");
}
}

Damin A. MARTINELLI

- 376 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

PageCounterBeanTest
package ar.com.do2.iadh;
import junit.framework.*;
import java.lang.*;
import java.sql.*;
public class PageCounterBeanTest extends TestCase {
private Connection conn;
protected void setUp() throws Exception {
ConfigFileParserBean config = new ConfigFileParserBean();
String urldb = "jdbc:mysql://" + config.getDatabaseServer() +
"/" + config.getDatabaseName();
String login = config.getDatabaseUser();
String password = config.getDatabasePass();
Class.forName("com.mysql.jdbc.Driver").newInstance();
conn = DriverManager.getConnection(urldb,login,password);
String delete = "DELETE FROM log WHERE user='testUser'";
Statement stmt = conn.createStatement();
stmt.execute(delete);
String deletePages = "DELETE FROM page WHERE user='testUser'";
stmt.execute(deletePages);
}
public void testLoad() throws Exception {
LogLoaderBean log = new LogLoaderBean();
log.setUser("testUser");
log.setProject("testProject");
log.load("testLog2.txt");
PageCounterBean counter = new PageCounterBean();
counter.setUser("testUser");
counter.setProject("testProject");
//Deben haberse cargado 4 paginas
Assert.assertEquals(counter.getPages(), "4");
}
public void testLoadWithIds() throws Exception {
LogLoaderBean log = new LogLoaderBean();
log.setUser("testUser");
log.setProject("testProject");
log.setIdsPage("do");
log.load("testLog.txt");
PageCounterBean counter = new PageCounterBean();

Damin A. MARTINELLI

- 377 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

counter.setUser("testUser");
counter.setProject("testProject");
//Deben haberse cargado 3 paginas
Assert.assertEquals(counter.getPages(), "3");
}
}

SessionMakerBeanTest
package ar.com.do2.iadh;
import junit.framework.*;
import java.lang.*;
import java.sql.*;
public class SessionMakerBeanTest extends TestCase {
private Connection conn;
protected void setUp() throws Exception {
ConfigFileParserBean config = new ConfigFileParserBean();
String urldb = "jdbc:mysql://" + config.getDatabaseServer() +
"/" + config.getDatabaseName();
String login = config.getDatabaseUser();
String password = config.getDatabasePass();
Class.forName("com.mysql.jdbc.Driver").newInstance();
conn = DriverManager.getConnection(urldb,login,password);
String delete = "DELETE FROM log WHERE user='testUser'";
Statement stmt = conn.createStatement();
stmt.execute(delete);
String deletePages = "DELETE FROM page WHERE user='testUser'";
stmt.execute(deletePages);
}
public void testSave() throws Exception {
LogLoaderBean log = new LogLoaderBean();
log.setUser("testUser");
log.setProject("testProject");
log.setIdsPage("do");
log.load("testLog.txt");
PageCounterBean counter = new PageCounterBean();
counter.setUser("testUser");
counter.setProject("testProject");
counter.getPages();
SessionMakerBean maker = new SessionMakerBean();
maker.setUser("testUser");
maker.setProject("testProject");

Damin A. MARTINELLI

- 378 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

//Deben haberse cargado 2 sesiones


Assert.assertEquals(maker.getSessions(), "1");
log = new LogLoaderBean();
log.setUser("testUser");
log.setProject("testProject2");
log.load("testLog2.txt");
counter = new PageCounterBean();
counter.setUser("testUser");
counter.setProject("testProject2");
counter.getPages();
maker = new SessionMakerBean();
maker.setUser("testUser");
maker.setProject("testProject2");
//Deben haberse cargado 2 sesiones
Assert.assertEquals(maker.getSessions(), "2");
}
}

SessionSaverTest
package ar.com.do2.iadh;
import junit.framework.*;
import java.lang.*;
import java.sql.*;
public class SessionSaverTest extends TestCase {
private SessionSaver sessionSaver;
private Connection conn;
protected void setUp() throws Exception {
ConfigFileParserBean config = new ConfigFileParserBean();
String urldb = "jdbc:mysql://" + config.getDatabaseServer() +
"/" + config.getDatabaseName();
String login = config.getDatabaseUser();
String password = config.getDatabasePass();
Class.forName("com.mysql.jdbc.Driver").newInstance();
conn = DriverManager.getConnection(urldb,login,password);
String delete = "DELETE FROM session WHERE user='testUser' AND
project='testProject'";
Statement stmt = conn.createStatement();
stmt.execute(delete);
sessionSaver = new SessionSaver();
sessionSaver.setUser("testUser");
sessionSaver.setProject("testProject");
}

Damin A. MARTINELLI

- 379 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

public void testSave() throws Exception {


//Distincion de sesiones en base al IP
sessionSaver.save("127.0.0.1","","/index.php","2004-06-15
15:05:41.0");
sessionSaver.save("127.0.0.1","","/page.php","2004-06-15
15:06:41.0");
sessionSaver.save("127.0.0.1","","/page2.php","2004-06-15
15:07:41.0");
sessionSaver.save("127.0.0.1","","/page3.php","2004-06-15
15:08:41.0");
sessionSaver.save("127.0.0.2","","/index.php","2004-06-15
15:05:41.0");
sessionSaver.save("127.0.0.2","","/page.php","2004-06-15
15:06:41.0");
sessionSaver.save("127.0.0.2","","/page2.php","2004-06-15
15:07:41.0");
sessionSaver.save("127.0.0.2","","/page3.php","2004-06-15
15:08:41.0");
String query = "SELECT MAX(ID) FROM session WHERE user='testUser' AND
project='testProject'";
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(query);
int maxID = 0;
boolean more = rs.next();
if (more)
maxID = rs.getInt("MAX(ID)");
//Deben haberse creado dos sesiones de usuarios distintas
Assert.assertEquals(maxID, 2);
//Distincion de sesiones en base al timeout de sesion
sessionSaver.save("127.0.0.1","","/index.php","2004-06-15
15:05:41.0");
sessionSaver.save("127.0.0.1","","/page.php","2004-06-15
15:06:41.0");
sessionSaver.save("127.0.0.1","","/page2.php","2004-06-15
15:07:41.0");
sessionSaver.save("127.0.0.1","","/page3.php","2004-06-15
15:08:41.0");
sessionSaver.save("127.0.0.1","","/index.php","2004-06-15
15:48:41.0");
sessionSaver.save("127.0.0.1","","/page.php","2004-06-15
15:06:41.0");
sessionSaver.save("127.0.0.1","","/page2.php","2004-06-15
15:07:41.0");
sessionSaver.save("127.0.0.1","","/page3.php","2004-06-15
15:08:41.0");
rs = stmt.executeQuery(query);
maxID = 0;
more = rs.next();

Damin A. MARTINELLI

- 380 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

if (more)
maxID = rs.getInt("MAX(ID)");
//Deben haberse creado dos sesiones mas de usuarios
Assert.assertEquals(maxID, 4);
//Distincion de sesiones en base al authuser de sesion
sessionSaver.save("127.0.0.1","user1","/index.php","2004-0615 15:05:41.0");
sessionSaver.save("127.0.0.1","user1","/page.php","2004-0615 15:06:41.0");
sessionSaver.save("127.0.0.1","user1","/page2.php","200406-15 15:07:41.0");
sessionSaver.save("127.0.0.1","user1","/page3.php","200406-15 15:08:41.0");
sessionSaver.save("127.0.0.1","user2","/index.php","2004-0615 15:05:41.0");
sessionSaver.save("127.0.0.1","user2","/page.php","2004-0615 15:06:41.0");
sessionSaver.save("127.0.0.1","user2","/page2.php","200406-15 15:07:41.0");
sessionSaver.save("127.0.0.1","user2","/page3.php","200406-15 15:08:41.0");
rs = stmt.executeQuery(query);
maxID = 0;
more = rs.next();
if (more)
maxID = rs.getInt("MAX(ID)");
//Deben haberse creado dos sesiones mas de usuarios
Assert.assertEquals(maxID, 6);
}
}
A continuacin se muestran los archivos utilizados en las pruebas.

testLog.txt
127.0.0.1 - - [27/Jan/2005:12:25:01 -0300] "GET /css/estilos.css HTTP/1.1" 200 3694
127.0.0.1 - - [27/Jan/2005:12:25:01 -0300] "GET /js/prototype.js HTTP/1.1" 200 61894
127.0.0.1 - - [27/Jan/2005:12:25:01 -0300] "GET /js/scriptaculous.js HTTP/1.1" 200 2322
127.0.0.1 - - [27/Jan/2005:12:25:01 -0300] "GET /js/builder.js HTTP/1.1" 200 4268
127.0.0.1 - - [27/Jan/2005:12:25:01 -0300] "GET /js/dragdrop.js HTTP/1.1" 200 31513
127.0.0.1 - - [27/Jan/2005:12:25:01 -0300] "GET /js/effects.js HTTP/1.1" 200 33802
127.0.0.1 - - [27/Jan/2005:12:25:02 -0300] "GET /js/controls.js HTTP/1.1" 200 28803
127.0.0.1 - - [27/Jan/2005:12:25:02 -0300] "GET /js/slider.js HTTP/1.1" 200 11283
127.0.0.1 - - [27/Jan/2005:12:25:02 -0300] "GET /xajax/xajax_js/xajax.js HTTP/1.1" 200
15903
127.0.0.1 - - [27/Jan/2005:12:25:02 -0300] "GET /js/datepicker.js HTTP/1.1" 200 20057
127.0.0.1 - - [27/Jan/2005:12:25:02 -0300] "GET /js/validate.js HTTP/1.1" 200 3611
Damin A. MARTINELLI

- 381 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

127.0.0.1 - - [27/Jan/2005:12:25:02 -0300] "GET /js/js.js HTTP/1.1" 200 10369


127.0.0.1 - - [27/Jan/2005:12:25:02 -0300] "GET /favicon.ico HTTP/1.1" 404 288
127.0.0.1 - - [27/Jan/2005:12:29:06 -0300] "GET /js/prototype.js HTTP/1.1" 200 61894
127.0.0.1 - - [27/Jan/2005:12:29:06 -0300] "GET /css/estilos.css HTTP/1.1" 200 3694
127.0.0.1 - - [27/Jan/2005:12:29:06 -0300] "GET /js/builder.js HTTP/1.1" 200 4268
127.0.0.1 - - [27/Jan/2005:12:29:06 -0300] "GET /js/scriptaculous.js HTTP/1.1" 200 2322
127.0.0.1 - - [27/Jan/2005:12:29:07 -0300] "GET /js/dragdrop.js HTTP/1.1" 200 31513
127.0.0.1 - - [27/Jan/2005:12:29:06 -0300] "GET /js/effects.js HTTP/1.1" 200 33802
127.0.0.1 - - [27/Jan/2005:12:29:07 -0300] "GET /js/slider.js HTTP/1.1" 200 11283
127.0.0.1 - - [27/Jan/2005:12:29:07 -0300] "GET /js/controls.js HTTP/1.1" 200 28803
127.0.0.1 - - [27/Jan/2005:12:29:07 -0300] "GET /js/datepicker.js HTTP/1.1" 200 20057
127.0.0.1 - - [27/Jan/2005:12:29:07 -0300] "GET /xajax/xajax_js/xajax.js HTTP/1.1" 200
15903
127.0.0.1 - - [27/Jan/2005:12:29:07 -0300] "GET /js/js.js HTTP/1.1" 200 10369
127.0.0.1 - - [27/Jan/2005:12:29:07 -0300] "GET /js/validate.js HTTP/1.1" 200 3611
127.0.0.1 - - [27/Jan/2005:12:55:12 -0300] "GET /Main.php?do=listarPagos HTTP/1.1"
302 127.0.0.1 - - [27/Jan/2005:12:55:12 -0300] "GET /Main.php?do=loginAdmin HTTP/1.1"
200 2692
127.0.0.1 - - [27/Jan/2005:12:55:19 -0300] "POST /Main.php?do=doLoginAdmin
HTTP/1.1" 302 127.0.0.1 - - [27/Jan/2005:12:55:20 -0300] "GET /Main.php?do=index HTTP/1.1" 200
2005
127.0.0.1 - - [27/Jan/2005:12:55:32 -0300] "GET /Main.php?do=listarPagos HTTP/1.1"
200 5335
127.0.0.1 - - [27/Jan/2005:12:55:32 -0300] "GET /images/button_edit.png HTTP/1.1" 200
348
127.0.0.1 - - [27/Jan/2005:12:55:32 -0300] "GET /images/button_delete.png HTTP/1.1"
200 244
127.0.0.1 - - [27/Jan/2005:12:56:41 -0300] "GET /Main.php?do=listarPagos HTTP/1.1"
200 5310
127.0.0.1 - - [27/Jan/2005:12:56:41 -0300] "GET /css/estilos.css HTTP/1.1" 304 127.0.0.1 - - [27/Jan/2005:12:56:41 -0300] "GET /js/prototype.js HTTP/1.1" 304 127.0.0.1 - - [27/Jan/2005:12:56:41 -0300] "GET /js/scriptaculous.js HTTP/1.1" 304

testLog2.txt
127.0.0.1 - - [15/Jun/2004:15:05:41 -0300] "GET /index.php HTTP/1.1" 200 3694
127.0.0.1 - - [15/Jun/2004:15:06:41 -0300] "GET /page.php HTTP/1.1" 200 3694
127.0.0.1 - - [15/Jun/2004:15:07:41 -0300] "GET /page2.php HTTP/1.1" 200 3694
127.0.0.1 - - [15/Jun/2004:15:08:41 -0300] "GET /page3.php HTTP/1.1" 200 3694
127.0.0.2 - - [15/Jun/2004:15:05:41 -0300] "GET /index.php HTTP/1.1" 200 3694
127.0.0.2 - - [15/Jun/2004:15:06:41 -0300] "GET /page.php HTTP/1.1" 200 3694
127.0.0.2 - - [15/Jun/2004:15:07:41 -0300] "GET /page2.php HTTP/1.1" 200 3694
127.0.0.2 - - [15/Jun/2004:15:08:41 -0300] "GET /page3.php HTTP/1.1" 200 3694

Damin A. MARTINELLI

- 382 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

testBinaryClusters.txt
1.0;0.0;0.0;0.0
0.0;0.0;1.0;0.0
0.0;1.0;0.0;0.0
0.0;1.0;0.0;0.0
1.0;0.0;0.0;0.0

testNumericClusters.txt
1
3
2
2
1

E.2. Resultados Pruebas Unitarias


A continuacin se detallan los resultados obtenidos en la ejecucin de las pruebas
unitarias.

java junit.textui.TestRunner ar.com.do2.iadh.SessionSaverTest


.
Time: 10,188
OK (1 test)
java junit.textui.TestRunner ar.com.do2.iadh.LogLoaderBeanTest
.
Time: 4,594
OK (1 test)
java junit.textui.TestRunner ar.com.do2.iadh.CreateUserBeanTest
.
Time: 4,078
OK (1 test)
java junit.textui.TestRunner ar.com.do2.iadh.ClusterCounterBeanTest

Damin A. MARTINELLI

- 383 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

...
Time: 4,484
OK (3 tests)
java junit.textui.TestRunner ar.com.do2.iadh.ConfigFileParserBeanTest
....
Time: 1,907
OK (4 tests)
java junit.textui.TestRunner ar.com.do2.iadh.CreateProjectBeanTest
.
Time: 2,468
OK (1 test)
java junit.textui.TestRunner ar.com.do2.iadh.DeleteProjectBeanTest
.
Time: 4,359
OK (1 test)
java junit.textui.TestRunner ar.com.do2.iadh.FileBeanTest
.
Time: 4,047
OK (1 test)
java junit.textui.TestRunner ar.com.do2.iadh.FilesViewBeanTest
..
Time: 3,969
OK (2 tests)
java junit.textui.TestRunner ar.com.do2.iadh.LogCleanerBeanTest
.
Time: 3,36
OK (1 test)

Damin A. MARTINELLI

- 384 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

java junit.textui.TestRunner ar.com.do2.iadh.LoginBeanTest


.
Time: 3,578
OK (1 test)
java junit.textui.TestRunner ar.com.do2.iadh.NumericSessionClusterBeanTest
.
Time: 4,734
OK (1 test)
java junit.textui.TestRunner ar.com.do2.iadh.BinarySessionClusterBeanTest
.
Time: 4,563
OK (1 test)
java junit.textui.TestRunner ar.com.do2.iadh.PageCounterBeanTest
..
Time: 4,453
OK (2 tests)
java junit.textui.TestRunner ar.com.do2.iadh.SessionMakerBeanTest
.
Time: 5,515
OK (1 test)

E.3. Pruebas de Integracin y de Sistema


A continuacin se detalla una muestra de las pruebas de integracin y de sistema
realizadas, junto con su resultado [Tabla E1], [Tabla E2], [Tabla E3], [Tabla E4]:

Damin A. MARTINELLI

- 385 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Prueba

Preprocesamiento del Archivo de Log

Descripcin

Se realiza el preprocesado de un archivo de log de un servidor


Web y se analiza si el preprocesado fue realizado de forma
satisfactoria, corroborando que la cantidad de registros finales
luego de este paso corresponda realmente con la cantidad de
registros que cumplen con la condicin de preprocesado
utilizada.

Objetivo

Determinar si el preprocesado del archivo de log se realiza


correctamente y el resultado es el adecuado para la posterior
identificacin de sesiones de usuarios. Se espera que se obtengan
nicamente los registros del log que cumplen con los parmetros
utilizados en el preprocesamiento, descartando los registros que
no poseen dichas caractersticas.

Parmetros Utilizados

Formato Log: CLF+REFERRER+AGENT

Extensiones: html, htm

Cdigo de Estado: 200

Resultado Esperado

Mediante el preprocesado manual del archivo de log se


identificaron 87 registros que cumplen con los parmetros
utilizados.

Ejecucin

La prueba es ejecutada utilizando la clase LogLoaderBean,


seteando los parmetros detallados anteriormente, e indicando
como archivo de entrada el log a preprocesar.

Resultado

Correcta

Descripcin Resultado

La cantidad de registros guardados (87 registros) corresponde


con la cantidad de registros del log que cumplen con los
parmetros utilizados en el preprocesamiento, corroborado
manualmente sobre el archivo de log, y estos 87 registros se
corresponden con los identificados manualmente.

Tabla E.1. Prueba Preprocesamiento del Archivo de Log

Damin A. MARTINELLI

- 386 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Prueba

Construccin de Sesiones de Usuarios

Descripcin

Se construyen sesiones de usuarios sobre la base de un archivo


de log previamente cargado y luego se corrobora que la cantidad
de sesiones construidas sea la correcta y que los accesos en las
sesiones correspondan con los parmetros utilizados.

Objetivo

Determinar la correcta construccin de las sesiones de usuarios


con la informacin obtenida luego del preprocesado del archivo
de log. Se espera que se determine la cantidad correcta de
sesiones para los parmetros utilizados, y que cada sesin posea
las pginas correspondientes.

Parmetros Utilizados

Cantidad Mnima de Pginas en una Sesin: 3

Timeout de Sesin: 30 minutos

Frecuencia Mnima de Pgina en el Log: 1

Resultado Esperado

Se determinaron manualmente 21 sesiones de usuarios utilizando


los parmetros detallados anteriormente.

Ejecucin

La prueba es ejecutada utilizando la clase SessionMakerBean,


seteando los parmetros detallados anteriormente.

Resultado

Correcta

Descripcin Resultado

La cantidad de sesiones de usuarios construidas (21 sesiones)


corresponde con la cantidad determinada manualmente
utilizando los mismos parmetros en la construccin de las
sesiones, y las sesiones estan compuestas por las mismas pginas
en ambos casos.

Tabla E.2. Prueba Construccin de Sesiones de Usuarios

Damin A. MARTINELLI

- 387 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Prueba

Clusterizacin de Sesiones de Usuarios Utilizando la Red


Neuronal Mapa Auto-Organizativo (SOM)

Descripcin

Se procede a la clusterizacin de las sesiones de usuarios y se


corrobora que todas las sesiones pertenezcan a alguno de los
clusters generados.

Objetivo

Determinar el correcto funcionamiento de la clusterizacin de las


sesiones de usuarios.

Parmetros Utilizados

Cantidad de ciclos de entrenamiento: 10

Cardinalidad del mapa de clusterizacin (NxN): 2

Resultado Esperado

Se espera que se asigne a cada sesin de usuario un cluster al


cual pertenece y que todas las sesiones pertenezca a uno y solo
uno de los 4 clusters a descubrir.

Ejecucin

La prueba es ejecutada utilizando la clase SOMBean, seteando


los parmetros detallados anteriormente.

Resultado

Correcta

Descripcin Resultado

La suma del total de sesiones en cada cluster es igual al total de


sesiones de usuarios identificadas, y cada sesin pertenece a uno
y solo un cluster.

Tabla E.3. Prueba Clusterizacin de Sesiones de Usuarios con SOM

Prueba

Clusterizacin de Sesiones de Usuarios Utilizando el


Algoritmo K-Means

Descripcin

Se procede a la clusterizacin de las sesiones de usuarios y se


corrobora que todas las sesiones pertenezcan a alguno de los
clusters generados.

Objetivo

Determinar el correcto funcionamiento de la clusterizacin de las


sesiones de usuarios.

Damin A. MARTINELLI

- 388 -

IDENTIFICACION DE HBITOS DE USO DE SITIOS WEB UTILIZANDO REDES NEURONALES

Parmetros Utilizados

Cantidad de clusters a descubrir (K): 4

Resultado Esperado

Se espera que se asigne a cada sesin de usuario un cluster al


cual pertenece y que todas las sesiones pertenezca a uno y solo
uno de los 4 clusters a descubrir.

Ejecucin

La prueba es ejecutada utilizando la clase KMeansBean,


seteando los parmetros detallados anteriormente.

Resultado

Correcta

Descripcin Resultado

La suma del total de sesiones en cada cluster es igual al total de


sesiones de usuarios identificadas, y cada sesin pertenece a uno
y solo un cluster.

Tabla E.4. Prueba Clusterizacin de Sesiones de Usuarios con K-Means

Damin A. MARTINELLI

- 389 -

You might also like