Universidad de las Ciencias Informáticas Facultad 2
Herramienta informática de Minería de Uso de la Web sobre los registros de navegación por Internet.
Trabajo de Diploma para optar por el título de Ingeniero en Ciencias Informáticas.
Autores: Yoanni Ordoñes Leyva Ernesto Avilés Vázquez
Tutor: Lic. Darian Horacio Grass Boada
Ciudad de la Habana, Junio de 2010
“Año 52 de la Revolución”
Declaración de Auditoría
Declaramos que _____________________________ y _____________________________
somos los únicos autores de este trabajo y autorizamos a la Universidad de las Ciencias Informáticas (UCI) y a la Facultad 2 para que hagan el uso que estimen pertinente con este trabajo.
Para que así conste firmamos la presente a los ___ días del mes de junio del 2010.
Firma del Autor Yoanni Ordoñes Leyva
Firma del Autor Ernesto Avilés Vázquez
Firma del Tutor Lic. Darián Horacio Grass
Boada
Dedicatoria
A todas las personas que no creen en lo imposible y luchan por realizar sus sueños.
Ambos A mi madre
Ernesto A mis padres, mi hermano, mi esposa y mi Samantha
Yoannis
Agradecimientos
A todas las personas que hicieron posible la realización de esta investigación, a Asniobis y Vladimir por sus oportunas y necesarias sugerencias en el diseño de la base de datos que tanto problemas nos causó. A Yonelbis por aclararnos algunas dudas que tuvimos con la herramienta Pentaho. A los profes del proyecto: Vladimir, Sandy y Yaily por los entrenamientos antes de los cortes y las sugerencias y consejos recibidos. En especial a nuestro tutor Darian que sin su oportuna y clara guía no hubiéramos obtenido ninguno de los resultados, gracias por convertirse en parte de nuestra familia, ser amigo, hermano y compañero. Agradecemos también a uno de los productos gastronómicos que permitieron mantenernos programando: “el hambergue”.
Ambos A mi madre y mi hermana, que todo el tiempo han estado presentes para apoyarme cuando lo he necesitado. A todos los miembros de mi familia que de una manera u otra, han hecho de mí, una persona mejor. A la nueva y vieja familia de amigos de la universidad: Ernesto, el Francés, George, Yuleidys, Susel, Ibrael, los Pupos; hasta llegar a una lista casi interminable. Al “team”:
Javier, Airam, Julio, y a mi hermano, amigo y compañero de tesis Yoannis. A todas las buenas personas que me han hecho crecer.
Ernesto
A mi familia, en especial a mis padres y mi hermano por toda la educación recibida de ellos y por su apoyo en la realización de cada uno de mis sueños. A mi esposa por el apoyo brindado, por las experiencias que compartimos y por la fuerza que me dio en momentos en que no podía más.
A mis hermanos de estos cinco años Airam, Javier y Julio, sin el “team” no hubiera sido igual el desarrollo de esta investigación. A Yanira por darme la oportunidad de tener en cada momento recuerdos de mi bebita para poder terminar la tesis. A Anglada por haberme sugerido el tema de tesis que marcó un hito en mi carrera profesional. Y muy en especial al ser que más amo sobre la faz de la tierra: mi niña Samantha. Gracias a todos mis compañeros y amigos por su presencia.
Yoannis
Resumen
Con la alta disponibilidad de datos producidos a diario en el mundo de la informática, las técnicas convencionales estadísticas para su procesamiento no suelen aprovechar al máximo la información de valor cognitivo implícita en los mismos. Se hace necesario para ello, implementar nuevas técnicas y herramientas que sirvan de ayuda para solucionar esta problemática.
Varias son las aplicaciones realizadas con el fin de llevar a cabo esta tarea. Muchas, soluciones privativas, otras libres, pero todas con el mismo objetivo: la aplicación de tareas de Minería de Datos para extraer patrones que muestren la presencia de conocimiento en los datos.
El objetivo de este trabajo, enmarcado en la Universidad de las Ciencias Informáticas, es el
desarrollo de una herramienta informática que permita llevar a cabo la obtención de conocimiento
a partir de los registros de navegación generados en los servidores proxy como resultado de los
accesos de sus usuarios a Internet, sirviendo de apoyo a la Dirección de Redes y Seguridad
Informática en la toma de decisiones respecto al uso del canal de Internet por parte de los
usuarios de la institución.
Índice General
Declaración de Auditoría...i
Dedicatoria...ii
Agradecimientos...iii
Resumen...iv
Introducción...5
1 Fundamentación Teórica...8
1.1 Introducción...8
1.2 Minería de Datos...8
1.3 La Minería de Datos y el proceso de descubrimiento de conocimiento...9
1.4 Minería Web ...11
1.4.1 Minería de Uso de la Web...11
1.5 Tareas y Método ...13
1.5.1 K Medias...13
1.6 Herramientas para la Minería del Uso de la Web...14
1.7 Metodologías...15
1.7.1 CRISP-DM...16
1.7.2 Metodología de desarrollo de software...18
1.7.2.1 Proceso Unificado de Rational...19
1.7.3 Lenguaje Unificado de Modelado (UML)...21
1.8 Notación de Modelado de Procesos de Negocio (BPMN)...22
1.9 Lenguajes de Programación...22
1.9.1 Python...22
1.9.2 Java...23
1.9.3 PL/PgSQL...24
1.10 Herramienta CASE...24
1.10.1 Visual Paradigm para UML ...25
1.11 Entorno de Desarrollo Integrado...25
1.11.1 EasyEclipse...26
1.12 Interfaz gráfica de usuario...26
1.12.1 PyQt: Qt para Python...26
1.12.2 Qt Designer...27
1.13 PosgreSQL...27
1.14 pgAdmin...28
1.15 Pentaho...29
1.16 Weka...29
1.17 Conclusiones Capítulo...30
2 Características del Sistema...31
2.1 Introducción...31
2.2 Problema y Situación Problemática...31
2.3 Objeto de automatización...32
2.4 Solución propuesta...32
2.5 Modelo de negocio...32
2.5.1 Diagramas de Procesos de Negocio utilizando BPMN...33
2.5.1.1 Diagrama General de Procesos...35
2.5.1.2 Gestionar Configuración...36
2.5.1.3 Verificar Preparación Necesaria...36
2.5.1.4 Preparar Datos...37
Preparar Expedientes...37
Consultar Expediente Usuarios...38
Procesar Estudiantes...39
Procesar Trabajadores...40
Procesar Registros/Blacklists...42
Procesar Blacklists...42
Procesar Registros...43
Distribuir Usuarios...43
Procesar Usuario...44
2.5.1.5 Seleccionar Datos...45
2.5.1.6 Aplicar Minería...45
2.5.1.7 Evaluar Comportamiento...45
2.5.1.8 Difundir Conocimiento...46
2.6 Especificación de los requisitos de software...46
2.6.1 Requerimientos funcionales...47
2.6.2 Requerimientos de comportamiento...48
2.6.2.1 Requerimientos de Software...48
2.6.2.2 Requerimientos de Hardware...48
2.6.2.3 Restricciones en el diseño y la implementación...49
2.6.2.4 Requerimientos de seguridad...50
2.6.2.5 Requerimientos legales...50
2.7 Modelo de Casos de Usos del Sistema...50
2.7.1 Actores del Sistema...50
2.7.2 Diagrama de Paquetes...51
2.7.3 Diagrama de Casos de Uso del Sistema...52
2.7.4 Casos de Uso del Sistema...53
2.8 Conclusiones Capítulo...59
3 Diseño del Sistema...60
3.1 Introducción...60
3.2 Arquitectura y Patrones...60
3.2.1 Arquitectura...60
3.2.2 Patrones de diseño...61
3.2.2.1 Proxy y Abstract Factory...62
3.2.2.2 Facade...62
3.2.2.3 Observer y Chain of Responsability...62
3.2.2.4 Decorator...63
3.2.2.5 Iterator...63
3.2.2.6 Bridge...64
3.3 Integración con biblioteca Weka...64
3.4 Seguridad en el sistema de configuración...65
3.5 Diagrama de Paquetes del Diseño...66
3.6 Diagrama de Clases del Diseño...67
3.7 Modelo Físico de Datos...68
3.8 Conclusiones Capítulo...69
4 Implementación...70
4.1 Introducción...70
4.2 Diagrama de Despliegue...70
4.2.1 Descripción de los recursos del diagrama de despliegue...71
4.2.2 Diagrama de despliegue...71
4.2.3 Diagramas de Componentes...72
4.3 Conclusiones Capítulo...72
Conclusiones...73
Recomendaciones...74
Anexos...77
Anexo 1: Diagramas de Procesos de Negocio...77
Anexo 2: Diagramas de Clases del Diseño por Casos de Uso...80
Anexo 3: Diagramas de Componentes...87
Glosario de Términos...94
Introducción
Con el inicio de la informatización de la sociedad, el desarrollo de todas sus ramas se incrementó considerablemente. Además de la información que continuamente se gestiona, quedan igualmente registrados sucesos que ocurren en los sistemas informáticos. Entre los mayores generadores de registros se encuentran los servidores de servicios, tales como: servidor HTTP, correo electrónico, DNS, FTP, etc. Llámense registros, logs o bitácoras; tienen el mismo fin:
retener información. Esta información toma un carácter invaluable pues representa parte de la historia de una organización, empresa u otra entidad.
En un inicio, dada la relevancia que poseían los datos antes mencionados, se comenzó su estudio para poder de algún modo, describir el comportamiento percibido a modo de números o gráficas por medio de su observación. Con el auge de las herramientas informáticas, el acceso a los servicios telemáticos [1] se vio inundado de clientes, incrementando considerablemente la producción de los registros de sucesos. Este amplio ascenso de los datos generados, si bien eleva la utilidad de la información disponible, sitúa en una posición limitada la condición humana para evaluar esas grandes cantidades de registros, quedando en un lugar imperceptible diferentes variables y observaciones.
En este sentido, surge la Minería de Datos como técnica en la obtención de patrones ocultos en los datos. La Minería de Datos es una tecnología novedosa la cual integra diferentes técnicas de análisis de datos y extracción de modelos. Basada en varias disciplinas, unas más tradicionales que otras, se distinguen en su funcionamiento pero con un propósito común, permitiendo que se complementen entre sí. La posibilidad de extraer patrones, describir tendencias y regularidades, predecir comportamientos y, en general, aprovechar la utilidad de la información digitalizada que nos rodea hoy en día, comúnmente heterogénea y en grandes cantidades, permite a individuos y organizaciones analizar, entender y modelar de una manera más eficiente y precisa el contexto en el que deben actuar y tomar decisiones [2].
Una de las grandes fuentes de registros, es el Servidor proxy. El mismo es el intermediario en la comunicación entre una red privada e Internet [3]. El proxy tuvo un alto nivel de aceptación en las organizaciones que lo empleaban, pues: ayuda en mayor medida a la seguridad informática debido a que la conexión con Internet es por un solo punto, minimizando los riesgos de ataques, además que proporciona un control centralizado de la información que se solicita. Otro de los aspectos es que posibilita el almacenamiento de la información accedida recientemente, la cual puede ser utilizada por otros usuarios que la necesiten, ayudando esto al tiempo de respuesta de la solicitud.
Los registros del proxy forman parte de la memoria de la entidad que utiliza el servicio de
navegación por Internet, sobre los cuales sería de interés realizar un análisis para estudiar el
comportamiento en el uso de las cuotas de los usuarios que acceden a dicha red. Es aquí donde
la Minería de Datos juega un papel importante, desenmascarando el conocimiento implícito en los datos mediante su análisis a través de algoritmos encaminados con este propósito.
Uno de los ejemplos de uso del proxy lo representa la Universidad de las Ciencias Informáticas (UCI), donde Internet constituye una de las principales fuentes de consulta de conocimientos para la docencia, la producción, la preparación profesional y la investigación por parte de los estudiantes y profesores. El alto número de usuarios que usan Internet en la UCI unido al insuficiente ancho de banda de navegación con el que se cuenta, hacen necesario pensar en un sistema para gestionar las solicitudes de acceso a Internet. La dirección de Redes y Seguridad Informática de la UCI en su misión de tener un mejor control del uso del canal, ha creado un sistema de cuotas de navegación. Este sistema, en su primera versión sólo se limitaba a descontar de la cuota asignada a los usuarios el monto en cuanto a capacidad de almacenamiento que ocupan los recursos accedidos; en su segunda versión, después de un estudio y de la experiencia de los miembros de dicha Dirección, el sistema tiene en cuenta una clasificación realizada a los dominios y sitios de Internet y el horario del día en que se realizan las peticiones. Con esta última versión, el control del acceso a Internet se hace un poco más flexible.
Aún así, el monitoreo de toda esa información se realiza utilizando métodos estadísticos sin explotar las diferentes variables contenidas en los datos, decisivas para extraer conocimiento. La situación problemática se centra en la inexistencia de una herramienta informática para realizar el análisis de los registros del servidor proxy y extraer patrones que describan el comportamiento del uso de las cuotas de navegación de los usuarios por Internet, ayudando de esta forma a la Dirección de Redes y Seguridad Informática de la Universidad de las Ciencias Informáticas en la toma de decisiones.
Como propuesta de solución al problema, se plantea el desarrollo de un Proceso de Extracción de Conocimiento en Bases de Datos (KDD
1), que consta de varias fases, una de las cuales es la Minería de Datos.
Una de las ramas de la Minería de Datos es la Minería Web, la cual es el proceso de descubrir información “útil” de los documentos de la Web [4]. Dentro de esta, se utilizará específicamente la Minería del Uso de la Web, que trata de darle sentido a los datos y comportamientos de los registros creados por las sesiones de navegación web.
Tomando en cuenta lo anteriormente expuesto se plantea como problema científico: ¿Cuáles son los patrones de comportamiento que se manifiestan en el uso de las cuotas de navegación por Internet de los usuarios de la Universidad de las Ciencias Informáticas?. El objeto de estudio se sitúa en el proceso KDD aplicando la Minería del Uso de la Web. Se toma como campo de acción la tarea descriptiva de agrupamiento en la Minería de Uso de la Web.
La investigación sigue como objetivo general desarrollar una herramienta informática para la obtención de patrones de comportamiento en el uso de las cuotas de navegación registradas en el servidor proxy, que sirva de apoyo en la toma de decisiones desde el punto de vista administrativo de la Universidad de las Ciencias Informáticas.
1 del inglés: Knowledge Discovery in Databases
Para cumplir el objetivo de la investigación se trazaron las siguientes tareas de investigación:
•
Estudio del Estado del Arte acerca de la Minería Web, propiamente en la Minería de Uso de la Web para ampliar el conocimiento sobre esta rama de la minería de datos.
•
Estudio sobre herramientas existentes que permitan la integración de datos para hacer la selección de la herramienta más adecuada.
•
Selección de una metodología como guía para el proceso de KDD para desarrollar el proceso de minería de datos correctamente.
•
Selección de una metodología de desarrollo que sirva de guía en el proceso de desarrollo de la herramienta.
•
Selección de una biblioteca de Minería de Datos para utilizar los algoritmos contenidos en la misma.
•
Aplicación de un proceso de KDD que ayude a la obtención de patrones de navegación presentes en los registros producidos por el servidor proxy.
•
Desarrollo de una herramienta para materializar la investigación.
Capítulo 1
1 Fundamentación Teórica 1.1 Introducción
En el presente capítulo se abordan, entre otros aspectos, temas relacionados con el concepto de Minería de Datos, se describe el ciclo completo de un proceso de KDD, además de la tarea y algoritmo empleado para obtener modelos o patrones a partir de los datos. Del mismo modo incluye un estudio sobre las metodologías utilizadas tanto para el desarrollo del proyecto como para guiar el proceso KDD, así como las tecnologías, herramientas, lenguajes y notaciones empleadas para tales propósitos.
1.2 Minería de Datos
El surgimiento de la Minería de Datos no fue propiamente producto del desarrollo de las tecnologías, sino de las necesidades de extraer valor a grandes cantidades de datos. El alto volumen de información registrada por las soluciones informáticas de las instituciones, empresas, organizaciones y gobiernos;
constituyen el desarrollo histórico de las mismas. Tal como se plantea en [2], con la Minería los Datos esta información deja de ser “producto”, pasando a ser “materia prima”, la cual que es necesaria explotar para extraer el verdadero “producto elaborado”.
Se define como Minería de Datos al proceso de extraer conocimiento útil y comprensible, previamente desconocido, desde grandes cantidades de datos almacenados en distintos formatos. En esencia, la tarea fundamental de la Minería de Datos es encontrar modelos inteligentes. Por sus características es imprescindible que sea realizado como un proceso automático o semiautomático (asistido) [2].
Como resumen, apoyándose en las definiciones anteriores, se puede afirmar que la tarea fundamental de la Minería de Datos es descubrir conocimiento (reglas, patrones) a partir de grandes volúmenes de datos, apoyados en técnicas o herramientas (automáticas o asistidas), de tal manera que su uso ayude a tomar decisiones más seguras que reporten algún tipo de beneficio a las organizaciones.
1.3 La Minería de Datos y el proceso de descubrimiento de conocimiento
En el desarrollo de la Minería de Datos, existe un concepto llamado Extracción de Conocimiento en Bases de Datos, definido como el proceso no trivial de identificar patrones válidos, novedosos, potencialmente útiles y en última instancia, comprensibles a partir de los datos[2].
KDD define un conjunto de fases o etapas para guiar el desarrollo del proceso. De forma general contiene cinco fases como muestra la Figura 1:
1. Integración y Recopilación.
2. Selección, Limpieza y Transformación.
3. Minería de Datos.
4. Evaluación e Interpretación.
5. Difusión y Uso.
Debe señalarse que las dos primeras fases suelen englobarse bajo el nombre de preparación de datos; y, por otro lado, en muchas ocasiones se incluye previo a las fases descritas, una etapa
Figura 1: Fases de KDD
de
entendimiento del dominio para el análisis de las necesidades de la organización, o sea, paradefinir y priorizar los objetivos del negocio [2]. Además, aproximadamente el 80 por ciento del esfuerzo total para realizar un proceso de KDD, se emplea durante las etapas de entendimiento del dominio y la preparación de los datos [5], tal como lo muestra la Figura 2.
Si bien el término KDD se emplea para describir el proceso completo, y dentro de este existe una fase denominada minería de datos, que engloba la aplicación de técnicas y herramientas, ambas palabras son utilizadas indistintamente con frecuencia para referirse a todo el proceso.
Figura 2: Esfuerzo requerido por fases de un proceso KDD [5]
1.4 Minería Web
La Minería de Datos posee una concepción muy amplia por lo que requiere una adaptación para los diferentes campos donde se utilice; su aplicación en la navegación en Internet se denomina Minería Web2. Se definió como Minería Web al descubrimiento de información “útil” de los documentos de la Web. La Minería Web, puede desarrollarse en varios entornos: en el lado del cliente, en el servidor o en las bitácoras [6].
La Minería Web se clasifica de acuerdo al contenido que analiza en Minería de Contenido, de Estructura o de Uso.
• Minería de Contenido Web: Identifica patrones en los contenidos de Web y a las búsquedas que se realizan sobre los mismos.
• Minería de Estructura Web: Intenta descubrir el modelo subyacente de las estructuras de los enlaces de la web basándose en la topología de los hiperenlaces.
• Minería de Uso de la Web: Trata de encontrar datos interesantes de los registros de las sesiones de navegación de la Web.
1.4.1 Minería de Uso de la Web
Una de las definiciones realizadas a la Minería del Uso de la Web es la que refiere al descubrimiento y análisis automático de patrones en las informaciones de la secuencia de clics y en colecciones de datos relacionados o generados como resultado de las interacciones de los usuarios con uno o más recursos o sitios web [7].
Generalmente la Minería del Uso de la Web se compone de tres fases o procesos: la Recolección y Pre-procesamiento de los datos; el Descubrimiento de patrones y el Análisis de patrones. En la fase de Recolección y Preprocesamiento de los datos, se realizan tareas de limpieza de los datos y se crean en unidades lógicas llamadas transacciones de usuario, las cuales son un conjunto de actividades presentes en los datos que representan las acciones de los usuarios en Internet. En la fase de Descubrimiento de patrones se realizan operaciones estadísticas sobre la base de datos, así como la utilización de algoritmos de aprendizaje con el objetivo de encontrar los patrones ocultos que reflejen el comportamiento de los usuarios en el uso de las cuotas de navegación. En la tercera fase se hace un Análisis de los patrones
2 del inglés: Web Mining,
obtenidos los cuales pueden ser entradas a herramientas de visualización, recomendación, análisis web y reportes. En la Figura 3 se representa el proceso de la Minería del Uso de la Web [7].
La principal fuente de datos en la Minería del Uso de la Web son los registros generados por las aplicaciones servidoras, entre ellas se encuentran los servidores proxy. Estos registros son una valiosa fuente de información concerniente a la navegación de los usuarios, cada aplicación registra los datos que considera importantes como pueden ser: hora de la petición, desde dónde se realizó, el método HTTP utilizado; así como, sistema operativo y navegador. Estos datos están en un formato poco comprensible, necesitándose mayor tiempo y recursos de cómputo para su preparación. Debido a esto la primera fase de la Minería del Uso de la Web es esencial en el éxito del proceso de extracción de conocimiento.
Figura 3: Minería de Uso de la Web
1.5 Tareas y Método
La Minería de Datos consta de tareas predictivas y descriptivas; la primera se usa cuando el problema es predecir uno o más valores para uno o más ejemplos, mientras que la segunda no se encarga de predecir sino de describir un conjunto de datos no etiquetados ni ordenados de algún modo. La problemática del presente trabajo se enmarca dentro de las tareas descriptivas por lo que se limitará a explicar la tarea y el método utilizados [2].
Dentro de las tareas descriptivas, está el agrupamiento, la cual tiene como objetivo encontrar grupos de elementos del conjunto de datos a analizar, de forma tal que los elementos que pertenezcan al mismo grupo tengan características similares, no así los elementos de diferentes grupos [8].
Para resolver cualquier tarea se necesitan técnicas, métodos o algoritmos; las tareas de Minería de Datos no están ajenas a dicha necesidad. Existen varios algoritmos para resolver la tarea de agrupamiento [8] [9] [10], en la presente investigación se seleccionó el denominado K Medias
3[11].
1.5.1 K Medias
K Medias es un algoritmo ávido
4cuyo objetivo es minimizar el error cuadrado entre la media del grupo y sus elementos, en otras palabras, encontrar grupos donde en cada uno de ellos estén elementos semejantes y que los elementos de grupos diferentes no lo sean. Este algoritmo necesita de varios parámetros de entrada como son: la cantidad de grupos a buscar, grupos iniciadores y una función de distancia [11]. Los grupos iniciadores son por los que se comenzarán las iteraciones del algoritmo, la función de distancia es la encargada de decir cuán semejante es un elemento de otro. Existen varias implementaciones de dicho algoritmo, una de ellas es la contenida en la colección de algoritmos Weka
5[12], de la cual más adelante se abordará. Esta implementación crea los grupos iniciadores mediante semillas seleccionadas aleatoriamente, la cantidad de semillas a usar se especifica como parámetros de entrada, además se utiliza como función de distancia predefinida la función Euclídea que básicamente calcula la distancia de la recta entre dos puntos en el espacio euclídeo, permitiéndose especificar una nueva función de distancia [8].
Este algoritmo tiene como problema que converge a mínimos locales por lo que su resultado depende de los parámetros de entrada, aunque existen investigaciones que prueban que puede converger a mínimos globales cuando son especificados correctamente los parámetros de entrada. Una de las soluciones dadas en las diferentes investigaciones consultadas es probar
3 Del inglés KMeans 4 Del inglés greedy
5 del inglés: Waikato Environment for Knowledge Analysis
con diferentes valores para los parámetros de entrada con el objetivo de encontrar el mejor resultado, debido a que no existe algoritmo que encuentre la cantidad óptima de grupos existentes en los datos [11].
Dicho algoritmo fue seleccionado para la presente investigación por sus características expresadas anteriormente, fundamentalmente por ser posible modificar la función de distancia, además de ser un algoritmo simple de comprender e implementar, rápido y efectivo, características que permiten realizar un proceso automatizado que brinde resultados satisfactorios en un tiempo aceptable.
1.6 Herramientas para la Minería del Uso de la Web
Tanto en el mundo del software privativo, como en el libre, se han desarrollado diferentes herramientas con el propósito de buscar patrones de comportamiento en la navegación de los usuarios por los diferentes sitios. Citando algunos nombres de las mismas:
Privativas:
• Lyris HQ (antes ClickTracks).
• Amadea Web Mining.
• 123LogAnalyzer.
• WebTrends.
Libres:
• AlterWind.
• Analog.
• Htminer.
• Visitator.
Desde su inicio, la Minería del Uso de la Web está enfocado en crear herramientas para facilitar el descubrimiento de patrones que describan el comportamiento de los usuarios en los sitios web, para ayudar a la personalización de los mismos, buscando el aumento de visitantes [13] [14] [15].
Todas estas herramientas, se nutren y centran su búsqueda de conocimiento en los registros arrojados por los servidores web, situación esta que imposibilita su uso, pues la problemática está ubicada en un escenario diferente: registros del servidor proxy. Además, evalúan el comportamiento de los usuarios a través de su acceso a los sitios y no del uso que éstos hacen de las cuotas de navegación por Internet.
Se hace necesario entonces realizar un estudio de la estructura que poseen los datos contenidos
en los registros del proxy, para crear una herramienta que permita aplicar la Minería del Uso de la Web al entorno de la Universidad de las Ciencias Informáticas. Además de realizar una integración de diferentes fuentes de datos que contienen información de los usuarios del centro (facultad, área de trabajo, edad, sexo, etc.), lo cual ayude en la distinción de patrones sobre el uso de la Internet, acorde a las necesidades de la Dirección de Redes y Seguridad Informática.
1.7 Metodologías
Metodología es una palabra compuesta por tres vocablos griegos: metà (“más allá”), odòs (“camino”) y logos (“estudio”). Se define como metodología al conjunto de métodos que se siguen en una investigación científica o en una exposición doctrinal [16].
A continuación se da una descripción de las metodologías empleadas para la guía de la
realización del proceso de extracción de conocimiento y el desarrollo de software; CRoss-Industry Standard Process for Data Mining (CRISP-DM) yRational Unified Process (RUP)
respectivamente.
1.7.1 CRISP-DM
CRISP-DM es una metodología que guía el proceso de extracción de datos útiles en la Minería de Datos.
Fue concebida en 1996 por tres veteranos del joven e inmaduro mercado de la Minería de Datos para aquel entonces: DaimlerChrysler, SPSS y NCR.
La metodología CRISP-DM es descrita en términos de un modelo de procesos jerárquicos, que consisten en un grupo de tareas descritas en cuatro niveles de abstracción (desde lo general a lo específico), fases, tarea genérica, tarea especializada e instancia de proceso [17].
En el nivel superior, el proceso de Minería de Datos es organizado en un número de fases, cada una contiene numerosas tareas genéricas del segundo nivel. Este nivel es llamado genérico pues es capaz de cubrir todas las posibles situaciones de la Minería de Datos. Las tareas genéricas deben ser tan completas y estables como sea posible.
En el tercer nivel están las tareas especializadas, encargadas de definir cómo se realizarán las tareas genéricas para una situación en particular. El cuarto nivel es un registro de acciones, decisiones y resultados de la actual Minería de Datos en desarrollo [17].
El ciclo de vida de un proyecto de Minería de Datos consiste en seis fases como muestra la Figura 4.
Según se explica en [17], las fases son detalladas brevemente a continuación:
• La Comprensión del negocio es la fase inicial que se enfoca en comprender los objetivos y requerimientos del proyecto desde la perspectiva del negocio, para así convertir este conocimiento en una definición de un problema de Minería de Datos y el diseño de un plan preliminar para mejorar los objetivos.
• La Comprensión de los datos comienza con una colección inicial y procede con las actividades para lograr la percepción de los mismos, identificando problemas de calidad, así como detectar los primeros puntos de vista o subconjuntos de carácter interesante en los datos para crear hipótesis sobre la información oculta.
• La Preparación de datos cubre las actividades para construir el conjunto de datos finales. Estas
Figura 4: Fases de CRISP-DM
tareas incluyen tablas, registros, selección de atributos, así como la transformación y limpieza de datos para las herramientas de modelado.
•
En el Modelado son seleccionadas y aplicadas varias técnicas de modelado para las cuales sus parámetros son calibrados hasta el valor óptimo. Generalmente, existen numerosas técnicas para el mismo tipo de problema de Minería de Datos. Algunas de éstas tienen requerimientos específicos en correspondencia con la forma de los datos. En caso necesario puede retroceder a la fase de Preparación de datos.• Evaluación: en esta etapa el proyecto construido parece tener una gran calidad desde la perspectiva de análisis de los datos. Antes de proceder al despliegue final del modelo, es importante evaluar más a fondo el modelo y revisar los pasos ejecutados para construir el mismo, asegurando que éste cumple apropiadamente los objetivos del negocio. Un objetivo clave es determinar temas de negocio de importancia que no hayan sido suficientemente considerados. Al final de la fase, una decisión sobre el uso de los resultados de la Minería de Datos debería haber sido lograda.
• Despliegue: La creación del modelo generalmente no representa el final del proyecto. Incluso si el propósito del modelo es incrementar el conocimiento sobre los datos, deberá ser necesario que este conocimiento ganado se organice y represente de manera que el cliente pueda usarlo.
El uso de la metodología CRISP-DM para la presente investigación tuvo un papel imprescindible debido a que guió las diferentes fases del proceso KDD, orientó cómo realizar la comprensión del dominio analizado y de los datos en estudio. Posteriormente ayudó en la preparación de los datos, donde fueron seleccionados, integrados y transformados; así como el modelado y evaluación de los resultados obtenidos para su uso.
1.7.2 Metodología de desarrollo de software
Las metodologías de desarrollo de software son un conjunto de procedimientos, técnicas y ayudas a la documentación para el desarrollo de productos informáticos. Habitualmente se utiliza el término “método”
para referirse a técnicas, notaciones y guías asociadas, que son aplicables a actividades del proceso de
desarrollo [18].
Un proceso define quién está haciendo qué, cuándo y cómo alcanzar un determinado objetivo. En la Ingeniería del Software, el objetivo es construir un producto de software o mejorar uno existente. Un proceso efectivo proporciona normas para el desarrollo eficiente de software de calidad [19].
No existe una metodología de software universal. Las características de cada proyecto exigen que el proceso sea configurable, por lo que actualmente existen un conjunto de metodologías de desarrollo de software con características específicas [18]. Entre las más representativas se encuentran: Proceso Unificado de Rational (RUP6), Extreme Programming (XP). En la presente investigación se seleccionó como metodología de desarrollo RUP.
1.7.2.1 Proceso Unificado de Rational
El Proceso Unificado de Rational es más que un simple proceso; es un marco de trabajo genérico que puede especificarse para una gran variedad de sistemas de software, para diferentes áreas de aplicación, diferentes tipos de organizaciones, diferentes niveles de aptitud y diferentes tamaños de proyecto [19].
RUP utiliza el Lenguaje Unificado de Modelado (UML7) para preparar todos los esquemas de un sistema software. De hecho, UML es una parte esencial de RUP, sus desarrollos fueron paralelos [19].
Las actividades se han reunido en grupos definiéndose 9 flujos de trabajo principales. Los 6 primeros son conocidos como flujos de ingeniería y los tres últimos de apoyo. En la Figura 5 se muestran las fases y flujos de trabajo que lo componen [19].
6 del inglés: Rational Unified Process
Tal como se plantea [19], entre las principales características del RUP se encuentran: dirigido por casos de uso (CU), iterativo e incremental y centrado en la arquitectura. Los casos de uso reflejan lo que los usuarios necesitan y desean, lo cual es obtenido cuando se modela el negocio y se representa a través de los requerimientos. Estos casos de uso guían el proceso de desarrollo pues los modelos que se obtienen, como resultado de los diferentes flujos de trabajo, representan la realización de los casos de uso.
La arquitectura muestra la visión común del sistema completo donde el equipo de proyecto y los usuarios deben estar de acuerdo, describiendo los elementos del modelo que son más importantes para su construcción, los cimientos del sistema que son necesarios como base para comprenderlo, desarrollarlo y producirlo económicamente. RUP se desarrolla mediante iteraciones, comenzando por los CU relevantes desde el punto de vista de la arquitectura.
RUP propone que cada fase se desarrolle en iteraciones. Una iteración involucra actividades de todos los
Figura 5: RUP. Fases y flujos
flujos de trabajo, aunque desarrolla fundamentalmente algunos más que otros. Las iteraciones hacen referencia a pasos en los flujos de trabajo, y los incrementos, al crecimiento del producto. Lo que lo convierte en un proceso iterativo e incremental [19].
RUP ayudó al desarrollo de la herramienta de forma eficiente y con alta productividad debido a que el mismo define qué se tiene que hacer, cómo y quién lo hace en cada momento del proceso de desarrollo.
Debido a estar dirigido por casos de uso, hizo del desarrollo de la aplicación un proceso más compresible al agrupar funcionalidades similares, dándose una descripción breve de cada uno de ellos.
Se realizaron primeramente los casos de uso arquitectónicamente significativos, además de llevar a cabo un proceso iterativo e incremental. Con la realización de varias iteraciones en el desarrollo de la herramienta la misma se construyó desde las mínimas funcionalidades hasta las actuales, además se especificó las posibles funcionalidades futuras para otros ciclos de desarrollo.
1.7.3 Lenguaje Unificado de Modelado (UML)
UML es un lenguaje de modelado visual que se usa para especificar, visualizar, construir y documentar artefactos de un sistema de software, capturando decisiones y conocimiento sobre los sistemas que se deben construir. Incluye conceptos semánticos, notación, y principios generales, así como partes estáticas, dinámicas, de entorno y organizativas. Está pensado para ser utilizado en herramientas interactivas de modelado visual que tengan generadores de informes y/o código. Según [20] la especificación de UML no define un proceso estándar pero está pensado para ser útil en un proceso de desarrollo iterativo, pretendiendo dar apoyo a la mayoría de los procesos de desarrollo orientados a objetos.
En la presente investigación UML fue clave en la documentación del proceso de desarrollo de la herramienta debido a que proporcionó las técnicas y especificaciones para la creación de diagramas que guiaron el desarrollo con una mejor comprensión de lo que se debía hacer, así como para que en futuras extensiones de la misma sea mejor comprendido por el grupo de desarrollo de dichas versiones.
1.8 Notación de Modelado de Procesos de Negocio (BPMN
8)
BPMN provee una notación que es comprendida tanto por usuarios, analistas, grupo de desarrollo que implementan las tecnologías que van a ser usadas en los procesos, así como las personas del negocio que se encargarán de administrar y controlar los procesos. Define un estándar que sirve de puente entre el diseño de los procesos del negocio y los procesos de implementación. Además brinda la capacidad de comprender los procesos internos de negocio mediante una notación gráfica, dándole a las organizaciones la posibilidad de comunicar esos procesos en un estándar [21].
En la presente investigación, los procesos del negocio se comportan como un flujo de actividades o procesos al ser especificadas claramente en la metodología CRISP-DM las fases que son necesarias para la extracción de conocimiento en base de datos, de las cuales existen dependencias entre ellas. Las salidas de unas constituyen entradas de otras.
Se analizaron varias notaciones para modelar los procesos del negocio, teniéndose en cuenta UML [22], IDEF0
9[23]y por último BPMN [21]. Los procesos de negocio del presente trabajo se comportan como un flujo de procesos, UML e IDEF0 no describían con suficiente claridad estos procesos. Se seleccionó la notación BPMN, la cual brinda de una forma clara y sencilla (mediante una notación gráfica) cómo se comportan los procesos del negocio de dicho trabajo, brindando mayor documentación y descripción de los mismos, para que sean comprendidos desde los usuarios del negocio hasta el grupo de desarrollo de la herramienta.
1.9 Lenguajes de Programación 1.9.1 Python
Es un lenguaje interpretado, orientado a objetos, de alto nivel que permite escribir código con una alta claridad y legibilidad, permitiendo así un rápido aprendizaje del mismo. La legibilidad permitirá en futuros accesos al código una clara comprensión de lo antes implementado, haciendo más fácil el mantenimiento de las aplicaciones.
Su biblioteca estándar es muy amplia, conteniendo funcionalidades de gran ayuda desde el más bajo nivel hasta el más alto, facilitándole al programador la implementación de aplicaciones sin la necesidad de recurrir continuamente a bibliotecas externas. Además dispone de una extensa colección de bibliotecas
8 Business Process Modeling Notation
9 Notación para modelar procesos o funciones del negocio, sus siglas significan en inglés: Integration Definition for Funcion Modeling
libres disponibles en la mayoría de los repositorios del los sistemas GNU\Linux.
Este lenguaje permite ser extendido, haciéndolo mucho más favorable para su uso, pues en caso de existir alguna región crítica del proyecto que al ser escrita en Python no sea lo más recomendable u óptimo, ésta puede ser implementada en C/C++ y compilada de modo que sea accesible desde el intérprete Python, aumentando considerablemente el rendimiento de esa sección a programar.
El intérprete de Python funciona en diversos sistemas operativos, tales como: GNU\Linux, Mac OS X y Windows. Debido a la portabilidad de su código; al programar las aplicaciones sin utilizar bibliotecas propias a los sistemas operativos, es posible ejecutarlas en cualquier plataforma sobre la que exista el intérprete Python.
Las potencialidades brindadas por el lenguaje Python fueron de mucha ayuda en el proceso de desarrollo, al ser multiplataforma ayudó en la satisfactoria creación de un parser distribuido para procesar los registros del servidor proxy. Su amplia colección de funcionalidades de la biblioteca estándar posibilitó que se utilizaran la menor cantidad de bibliotecas externas, así como la existencia de una amplia colección de bibliotecas libres no requirió el uso de alguna biblioteca privativa.
Esta investigación pertenece a un proyecto productivo de la UCI en el cual se está desarrollando una plataforma en dicho lenguaje, por lo que en un futuro la herramienta desarrollada en la presente investigación pudiera integrarse a la misma.
1.9.2 Java
Lenguaje compilado a bytecode que puede ser ejecutado en cualquier plataforma sobre la que pueda ser ejecutada la Máquina Virtual de Java (JVM). Es un lenguaje de propósito general aunque es ampliamente utilizado en la web; orientado a objeto y diseñado para poseer la menor cantidad de dependencias de implementación posibles para su ejecución. Posee una extensa colección de bibliotecas para desarrollar en los más amplios aspectos del desarrollo de software.
El uso del lenguaje Java fue necesario debido a que la biblioteca de algoritmos de Minería de
Datos Weka, está escrita en este lenguaje y se necesitó la implementación una aplicación que
proporcionara una interfaz a dicha biblioteca más sencilla y cómoda para la presente
investigación. Las características del lenguaje y la amplia colección de bibliotecas escritas en
este lenguaje permitieron que el tiempo de desarrollo de dicha aplicación no fuera muy extenso.
1.9.3 PL/PgSQL
Es un lenguaje creado para el gestor de bases de datos PostgreSQL. Permite facilitar la programación del lado del servidor ejecutando sentencias SQL. Posibilita la creación de funciones, estructuras de datos personalizadas y realizar cálculos complejos. Entre sus principales ventajas se encuentran, la posibilidad de crear las funciones del lado del servidor, evitando realizar transferencias innecesarias de datos hacia el cliente, y permitiéndole al gestor realizar tareas de optimización para las consultas existentes dentro de las funciones creadas.
El alto volumen de datos procesados requirió de un balanceo de carga entre la aplicación cliente y el gestor de base de datos, dándole menor procesamiento a la herramienta y mayor protagonismo al gestor. Las funciones utilizadas para el procesamiento de los datos en el gestor se codificaron utilizando el lenguaje PL/PgSQL, proporcionando un mejor rendimiento de las transacciones de la herramienta con la base de datos. Además se pudieron repartir los datos en varias tablas particionadas, así como todas las funciones para obtención y almacenamiento de los datos desde la herramienta.
1.10 Herramienta CASE
Dentro de las herramientas claves en el desarrollo de aplicaciones informáticas se encuentra las herramientas de Ingenierías de Software Asistida por Ordenador (CASE10), las cuales son las encargadas de ayudar en el ciclo de desarrollo, con el fin de aumentar la productividad y reduciendo el coste en términos de tiempo y dinero. En el ciclo de desarrollo pueden ayudar en el proceso de diseño del proyecto, en el cálculo de costes, pueden implementar una parte del código, compilación automática y documentación. En el presente trabajo se utilizó Visual Paradigm para UML.
1.10.1 Visual Paradigm para UML
Una de las herramientas CASE más usadas es la suite creada por Visual Paradigm International (VPI).
VPI es un proveedor de soluciones informáticas que incluye organizaciones para desarrollar aplicaciones de calidad, rápidas y baratas. Sus soluciones se enfocan en eliminar la complejidad, aumentando así la productividad y disminuyendo el tiempo de desarrollo de las aplicaciones informáticas [24].
La suite Visual Paradigm está compuesta por productos que facilitan a las organizaciones la visualización y diseño de diagramas, así como su integración con lenguajes de programación y gestores de bases de
10 del inglés: Computer Aided Software Engineering
datos. Es independiente de las plataformas, soportando varios entornos integrados de desarrollo, entre las que se pueden mencionar: Microsoft Visual Studio, Eclipse y Java [24].
Cientos de clientes, incluyendo compañías internacionales, instituciones financieras líderes y agencias de gobiernos de todo el mundo usan los productos de Visual Paradigm para modelar, construir y desarrollar sus aplicaciones empresariales. Los cuales lo han seleccionado por su reputación, experiencia, facilidad de los productos y servicios brindados.
La herramienta CASE Visual Paradigm fue útil en la investigación y en el proceso de desarrollo de la herramienta, pues agilizó la creación de los diferentes diagramas definidos en la metodología RUP. Su excelente usabilidad e interfaz amigable, ayudaron en el diseño e implementación de la herramienta, permitiendo además su documentación para posibles estudios y seguimiento en el desarrollo de la misma.
1.11 Entorno de Desarrollo Integrado
Una de las herramientas que juegan un papel importante en el desarrollo de soluciones informáticas son los Entornos de Desarrollo Integrado (IDE11). Estos ofrecen facilidades al equipo de desarrollo cuando se implementan las aplicaciones debido a que permite corrección de errores comunes que se comenten a diario.
1.11.1 EasyEclipse
El proyecto EasyEclipse tiene como principal propósito proveer una fácil instalación y uso de las distribuciones de Eclipse. Su arquitectura basada en plugins extiende las funcionalidades de la herramienta, por ejemplo con la adición del soporte para varios lenguajes, como pueden ser: Java, Ruby, PHP, Python o Prolog. Fue creado en el 2003 por un grupo de desarrollo de software llamado nexB dedicados al análisis de código abierto [25]. Actualmente se sitúa a la vanguardia de los entornos de desarrollo para Python existentes, por su alto nivel de integración con este lenguaje, completamiento de código, resaltado de sintaxis; así como diferentes funcionalidades que le facilitan el trabajo al programador como la refactorización del código.
EasyEclipse influyó positivamente en el desarrollo de la aplicación debido a: autocompletamiento de
código, identificación de errores sintácticos, depuración de la ejecución, así como su funcionamiento en varias plataformas. Todo esto, ligado con la integración al SubVersion, ayudó al desarrollo de la herramienta en un tiempo menor.
1.12 Interfaz gráfica de usuario 1.12.1 PyQt: Qt para Python
Las bibliotecas gráficas Qt, constituyen actualmente una de las mejores en su tipo en el mundo del software libre. Realizadas en el lenguaje de programación C++, están hechas con el fin de realizar más con menos código. Su carácter multiplataforma hace fácil su despliegue. PyQt es la combinación de Python y Qt, estableciendo una interfaz transparente para acceder desde Python a dichas bibliotecas gráficas; así con la facilidad de Python sumada a la excelencia de las Qt, se hace más agradable la programación visual. Cuenta con una amplia documentación proveniente de Qt y de Python a la vez.
Con la biblioteca PyQt se logró una interfaz visual sencilla y sin muchos contratiempos al brindar una amplia variedad de componentes visuales, así como su abundante documentación y ejemplos. Al funcionar en varias plataformas y tener una alta calidad hacen de la biblioteca una de los productos con alto uso en la actualidad.
1.12.2 Qt Designer
Qt Designer es la herramienta para la el diseño gráfico del Framework Qt por excelencia. Se creó con el mismo fin para el que fue confeccionado Qt: agilizar el desarrollo y funcionar en una amplia variedad de plataformas. Qt Designer está disponible para las mismas plataformas sobre las que está sustentado el framework para el que confecciona las interfaces. Con la ayuda de una herramienta perteneciente a la mencionada biblioteca PyQt, se puede crear el código Python correspondiente a las interfaces confeccionadas en Qt Designer.
La herramienta Qt Designer fue muy útil en el desarrollo de las interfaces visuales de la
herramienta, brindando de forma cómoda y sencilla la creación de la misma con la variedad de
componentes visuales que posee la biblioteca, así como la manipulación de las variables de
configuración de cada uno de ellos.
1.13 PosgreSQL
PostgreSQL es un sistema gestor de base de datos relacional, ampliamente considerado como una de las alternativas de sistema de bases de datos de código abierto. Soporta gran parte del SQL estándar y muchas funcionalidades como son: consultas complejas, triggers, vistas, integridad transaccional, así como el control de versiones concurrentes que es una estrategia de almacenamiento que permite trabajar con grandes volúmenes de datos; ha sido diseñado y creado para tener un mantenimiento y ajuste mucho menor que otros productos, conservando todas las características de estabilidad y rendimiento.
Implementa las características ACID (Atomicidad, Consistencia, Aislamiento y Durabilidad) para realizar transacciones seguras. Además, puede ser personalizado por el usuario en muchas formas, según sus necesidades, por ejemplo: adicionando un nuevo tipo de datos, operadores, funciones, y lenguajes procedimentales [26].
Utiliza Licencia BSD, por lo puede ser utilizado, modificado y distribuido gratuitamente, para cualquier propósito ya sea con fines privados, comerciales o académicos. Al no presentar costo asociado a la licencia del software puede ser instalado siempre que sea necesario.
Cuenta con interfaces para distintos lenguajes, como son: C/C++, Java, Delphi, Python, Perl, PHP entre otros.
Una de las necesidades principales del trabajo fue la utilización de un gestor de base de datos potente para el almacenamiento de un alto volumen de información. En la actualidad existen varios que cumplen con las características necesarias para la solución de la problemática del presente trabajo, como son:
Oracle, Microsoft SQL Server y PostgreSQL, dentro de los cuales fue seleccionado PostgreSQL por ser el único software libre de todos. Dicho gestor fue de gran ayuda en el almacenamiento y consulta de los datos procesados por medio de sencillas interfaces para Python y Java. El uso de las funciones fue imprescindible para la manipulación de la información, así como los triggers en la distribución y particionado de los datos.
1.14 pgAdmin
Cuando se trabaja con bases de datos, es necesario tener una herramienta para la gestión de la base de
datos. PgAdmin es una herramienta para la administración de bases de datos sobre el Sistema Gestor de Base de Datos (SGBD) PostgreSQL. Creada en el año 2002 por una comunidad de voluntarios de varias partes del mundo. Posee licencia BSD que proporciona permisos de uso, copia, modificación y distribución del software así como su documentación. Es compatible con las plataformas Windows, GNU\Linux, FreeBSD, Mac OS X y Solaris. Su acceso al SGBD es por medio de PostgreSQL nativo, posee una potente herramienta de consultas así como un rápido componente para la entrada y salida de datos [27].
Una de las herramientas claves en el éxito de una investigación que cuente con una base de datos son las herramientas de administración de base de datos. pgAdmin es una de ellas y fue de gran ayuda para la presente investigación al brindar la posibilidad de administrar la base de datos, así como en la realización de consultas, creación de funciones, triggers, tablas, etc. Una de las características claves fue ser multiplataforma al poder ser usada en varios sistemas operativos usados en la investigación.
1.15 Pentaho
La compañía Pentaho es una alternativa de código abierto para la Inteligencia de Negocio (BI12).
Desarrolla varias herramientas, una de ellas engloba a las demás, la cual se denomina Pentaho BI Suite Enterprise Edition que provee reportes, OLAP, integración de datos, Minería de Datos y una plataforma de BI. Entre las muchas ventajas que proporciona se encuentra su integración con Weka [28].
Pentaho representa una solución completa de herramientas para la integración de datos. Fue probada en varias circunstancias de trabajo comportándose correctamente salvo en la ejecución por líneas de comando, donde ha tenido algunas fallas. Por tanto se llevó a cabo la implementación de varias herramientas para la integración de datos, centradas en el ámbito y características de la UCI.
1.16 Weka
Weka
es
una colección de algoritmos de aprendizaje y herramientas de preprocesamiento de datos. Fue desarrollado en la Universidad de Waikato en Nueva Zelanda. Provee un amplio soporte para todo el proceso de Minería de Datos experimental, incluyendo preparación de datos, evaluación de programas de aprendizaje estadístico y visualización de entrada de datos y resultados del aprendizaje. Usa una interfaz 12 del inglés: Business Intelligencecomún con la que los usuarios pueden comparar diferentes métodos e identificar el más apropiado. El sistema está escrito con el lenguaje de programación Java y es distribuido bajo los términos de la Licencia GPL. Es compatible con la mayoría de las plataformas y ha sido probada en los sistemas operativos GNU\Linux, Windows y Mac OS X [29].
El uso de biblioteca Weka fue imprescindible en el desarrollo de la presente investigación debido a que brindó la posibilidad de no tener que implementar el algoritmo K Medias para realizar la tarea de agrupamiento, además de contener una implementación estable y con un alto uso de la misma desde hace varios años. Con la utilización de la misma y la amplia gama de funcionales presentes, no fue necesario crear componentes para la consulta y almacenamiento de datos en la base de datos utilizada.
1.17 Conclusiones Capítulo
Se plantearon conceptos fundamentales para lograr una mejor comprensión de la problemática, así como las temáticas que permiten el desarrollo de la investigación. Se describieron las metodologías que regirán tanto el desarrollo de software como el proceso de Minería de Datos; así como las tecnologías y herramientas seleccionadas para el desarrollo de software. Se detallan además para cada una de las tecnologías utilizadas su importancia en la investigación.
Se puede concluir que la selección de un lenguaje de programación como Python, con una sintaxis sencilla, ayudó en gran medida al desarrollo de la herramienta. El uso de un potente gestor de bases de datos como PostgreSQL permitió el tratamiento del alto cúmulo de datos analizados. La herramienta CASE, el IDE EasyEclipse, así como el administrador de base de datos PgAdmin contribuyeron en la agilización del desarrollo de la investigación. CRISP-DM y RUP guiaron el proceso de descubrimiento de conocimiento en base de datos y desarrollo de software respectivamente.
Capítulo 2
2 Características del Sistema 2.1 Introducción
En el presente capítulo se abordan los procesos del negocio asociados a un Proceso KDD en la problemática planteada para una mejor comprensión de su funcionamiento. Se realiza una propuesta de sistema basada en los principios de calidad. Además, son expuestos los requerimientos funcionales y no funcionales para resolver la problemática, diagramas de casos de uso del sistema y sus descripciones.
2.2 Problema y Situación Problemática
En la Universidad de las Ciencias Informáticas, Internet constituye una de las principales fuentes de consulta de conocimientos para la docencia, la producción, la preparación profesional y la investigación por parte de los estudiantes; profesores y trabajadores en forma general. El alto número de usuarios que usan Internet en la Universidad y el insuficiente ancho de banda de navegación con el que se cuenta, hacen necesario pensar en un sistema para establecer una mejor gestión sobre las solicitudes.
La Dirección de Redes y Seguridad Informática en su misión por solucionar esta problemática, ha creado sistemas informáticos para mantener un control sobre el comportamiento del uso de las cuotas de navegación de Internet de los usuarios. Éstas se apoyan fundamentalmente en herramientas estadísticas mostrando el comportamiento de ciertas variables presentes en la navegación, pero no se consigue explotar al máximo la disponibilidad de un gran cúmulo de información presente en estos datos. Esta tarea podría verse beneficiada con el uso de una herramienta capaz de extraer patrones de comportamiento (a diferencia de los sistemas actuales) en el uso de las cuotas de navegación de los usuarios por Internet, brindándole a la Dirección de Redes argumentos adicionales para la toma de decisiones.
2.3 Objeto de automatización
Con la construcción de esta herramienta se tiene como objetivo automatizar un Proceso KDD sobre los registros de navegación por Internet en la Universidad de las Ciencias Informáticas como apoyo a la toma de decisiones de la Dirección de Redes y Seguridad Informática. En las secciones siguientes se especifican las características de los procesos de negocios identificados para resolver la problemática. Se definen como procesos a automatizar:
• Preparar Datos.
• Aplicar Minería.
• Evaluar Comportamiento.
• Difundir Conocimiento.
2.4 Solución propuesta
Se decidió realizar una herramienta que permita resolver la problemática existente de forma automática.
Dicha herramienta será una aplicación de escritorio para sistemas operativos GNU\Linux, con un diseño extensible para otros sistemas en un futuro. Entre las características que tendrá la herramienta se encuentran: selección, integración y transformación de los datos; la aplicación de la tarea descriptiva de agrupamiento de la Minería de Datos; la visualización y difusión de los resultados.
2.5 Modelo de negocio
El modelado del negocio se realiza utilizando la notación BPMN, ofreciendo una visión clara de los procesos de negocio, en concordancia con las fases del proceso KDD. Esta notación permite una mejor comprensión al equipo de desarrollo y clientes. A continuación se detallan las notaciones gráficas y las descripciones de los diferentes procesos implicados en el mismo.
2.5.1 Diagramas de Procesos de Negocio utilizando BPMN
En los diagramas de procesos de negocio, serán utilizados diferentes componentes (Figura 6)
que serán explicados a continuación:
Componente Descripción Evento inicio Muestra dónde una actividad comienza.
Evento error intermedio Evento emitido cuando una actividad emite la ocurrencia de un error.
Evento finalización Evento emitido para indicar la terminación de una tarea o proceso.
Evento error de finalización Evento que indica que la terminación de una actividad ha ocurrido debido a un error.
Ruptura de proceso La ejecución de una actividad se detiene, esperando por la ocurrencia de un evento externo.
Bifurcación Paralela Indica que las actividades que se ramifican a partir de esta bifurcación, se ejecutarán de manera paralela.
Unión Se espera por la terminación de varias actividades para continuar el flujo.
Alternativa Indica que se cuenta con varias alternativas de flujos.
Flujo de mensaje Expresa la comunicación entre dos calles.
Flujo sin control Expresa la secuencia existente entre dos actividades.
Flujo condicional Expresa que el flujo a seguir forma parte de un condición proveniente de una actividad.
Asociación Expresa la relación con un Objeto de Datos.
Tarea Actividad atómica. La cual no puede ser descompuesta en otras actividades.
Tarea Cíclica Expresa que una actividad es ejecutada de manera cíclica.
Proceso Múltiples Instancias Esta actividad es ejecutada en varios hilos.
Proceso Actividad que contiene otras actividades.
Calle Representa un participante en un proceso (ej.: servidor, usuario, etc.).
Objeto de Datos Artefacto que contiene información que puede ser accedida y modificada.
Enlace Evento Intermedio Permite separar el flujo en dos gráficos
Tabla 1: Descripción de los componentes de lo Diagramas de Procesos de Negocio
2.5.1.1 Diagrama General de Procesos
La ejecución de la herramienta se ha dividido en 5 subprocesos:
• Gestionar Configuración.
• Preparar Datos.
• Seleccionar Datos.
• Aplicar Minería.
• Difundir Conocimiento.
Y dos tareas:
• Verificar Preparación Necesaria.
• Evaluar Comportamiento.
Figura 7: Diagrama General de Procesos
Los procesos Preparar Datos, Aplicar Minería, Difundir Conocimiento coinciden con fases del flujo de KDD, a su vez Preparar Datos engloba otras fases como son: Selección, Integración, Limpieza y Transformación. A continuación se detallan cada uno de los procesos, haciendo énfasis en el subproceso Preparar Datos por ser el más complejo, los restantes diagramas pueden ser consultados en Anexo 1:
Diagramas de Procesos de Negocio:
2.5.1.2 Gestionar Configuración
Aquí son tomados los parámetros de entrada con los que se ejecutará la herramienta. Se obtiene el modo de ejecución (consola o gráfico) y al tiempo, validados los campos que contendrá la configuración y que serán utilizados durante toda la ejecución de la herramienta. Ver Figura 32.
2.5.1.3 Verificar Preparación Necesaria
No siempre es necesario realizar una preparación de datos cada vez que se inicie la herramienta,
pues una vez realizada la misma, se puede aplicar en más de una ocasión el algoritmo de
Minería de Datos seleccionado. En esta tarea, se verifica si es necesaria realizar una preparación
de los datos, en caso de obtener una respuesta negativa, esta preparación es pasada por alto y
se continúa con el resto de los procesos.
2.5.1.4 Preparar Datos
La preparación de los datos, es el proceso que más costo computacional requiere debido a que grandes cantidades de datos, serán recogidas, transformadas, integradas y almacenadas, buscando minimizar el tiempo de ejecución. Tiene una gran importancia, pues de la calidad con la que sean preparados los datos depende el resultado final que todos los procesos en conjunto producirán.
Preparar Expedientes
Para poder obtener los expedientes de quienes navegaron en el mes a analizar, primero deben tenerse sus usuarios. Para esto se realiza un recorrido por el árbol de directorios donde están los registros de navegación. Cada carpeta, posee como nombre el día del mes, dentro de la misma se encuentran los registros de navegación, donde cada uno posee el nombre del usuario correspondiente que navegó ese día. Una vez obtenidos todos los usuarios, se consultan los expedientes de los usuarios como se describe en el siguiente proceso.