Algoritmos de agrupación para flujos de datos en entornos centralizados y distribuidos
Texto completo
(2)
(3) Tribunal de la Tesis Tribunal nombrado por el Mgnfco. y Excmo. Sr. Rector de la Universidad Politécnica de Madrid, el día Presidente: Secretario: Vocal: Vocal: Vocal: Realizado el acto de defensa y lectura de la Tesis en la Facultad de Informática, el día E L P RESIDENTE :. L OS VOCALES :. Fdo:. Fdo:. E L S ECRETARIO :. Fdo: Fdo:. Fdo:.
(4)
(5) [...] and yet, and yet - it’s rather curious, you know, this sort of life! I do wonder what can have happened to me! When I used to read fairytales, I fancied that kind of thing never happened, and now here I am in the middle of one!. Alice’s Adventures in Wonderland - Lewis Carroll.
(6)
(7) A mi madre, que me enseñó a contar.
(8)
(9) Agradecimientos En primer lugar, agradecer a los profesores Ricardo Jiménez Peris y Marta Patiño Martínez la confianza recibida hace ya más de cuatro años, y la oportunidad de construir puentes entre una licenciada en matemáticas y un laboratorio de sistemas. Al profesor Rachid Guerraoui de la Escuela Politécnica Federal de Lausana pos su ayuda y el tiempo dedicado durante nuestra colaboración. También agradecer a la profesora Marina Papatriantafilou y a Zhang Fu de la Universidad Tecnológica de Chalmers por las provechosas discusiones en la colaboración. A mis compañeros en el Laboratorio de Sistemas Distribuidos, que me han permitido disfrutar de su compañía y compañerismo (Paco, Laura, Iván, Valerio, Claudio, etc.). En especial, agradecer a Vincenzo Gulisano, por nuestras variadas (y numerosas) discusiones desde nuestras respectivas investigaciones, hasta la aportación de Zappatrustra a la música; y a Damián Serrano por enseñarme los entresijos del lab y por invitarme a comer el primer día, por supuesto. Este estudio ha sido posible gracias a una ayuda FPI del Ministerio de Economía y Competitividad, 2008-2012 (BES-2008-009249). Un sincero agradecimiento a mis amigos por aguantar mis ires y venires, porque no os merezco. A Ana, Aurora y Mar, porque siempre han tenido una palabra de ánimo; a mi grupo de amigos desde el instituto, kalimanes siempre me arrancáis una sonrisa y siempre tenéis un buen consejo; a mis viejos amigos erasmus, que siempre han confiado en mi trabajo animándome para finalizarlo; y a todos aquellos con los que me he encontrado en este tiempo, que sin quererlo y tal vez sin imaginarlo, han contribuido a este trabajo. Finalmente, el agradecimiento más sentido para mi familia, por su ayuda generosa e incondicional. A mi madre Pilar por su ejemplo de lucha y honestidad, gracias por enseñarme a terminar lo empezado; a mi hermano Darío por trasmitirme tranquilidad recordándome lo que de verdad importa; a Ángeles por ser un ejemplo de superación, gracias por aguantar mis rollos matemáticos; a mis abuelos, Pilar y Agustín, de vosotros aprendí que el mejor cimiento de todo trabajo es el esfuerzo, sois mis grandes maestros; un especial agradecimiento a Evita por enseñarme que el amor y el cariño no es moneda de cambio; y también por su apoyo desinteresado al resto de mi familia más cercana, a la gente que importa, más allá de la sangre. A todos ellos, muchas gracias. Mar Callau-Zori 23 de noviembre de 2012.
(10)
(11) Resumen Los avances en el hardware permiten disponer de grandes volúmenes de datos, surgiendo aplicaciones que deben suministrar información en tiempo cuasi-real, la monitorización de pacientes, ej., el seguimiento sanitario de las conducciones de agua, etc. Las necesidades de estas aplicaciones hacen emerger el modelo de flujo de datos (data streaming) frente al modelo almacenar-para-despuésprocesar (store-then-process). Mientras que en el modelo store-then-process, los datos son almacenados para ser posteriormente consultados; en los sistemas de streaming, los datos son procesados a su llegada al sistema, produciendo respuestas continuas sin llegar a almacenarse. Esta nueva visión impone desafíos para el procesamiento de datos al vuelo: 1) las respuestas deben producirse de manera continua cada vez que nuevos datos llegan al sistema; 2) los datos son accedidos solo una vez y, generalmente, no son almacenados en su totalidad; y 3) el tiempo de procesamiento por dato para producir una respuesta debe ser bajo. Aunque existen dos modelos para el cómputo de respuestas continuas, el modelo evolutivo y el de ventana deslizante; éste segundo se ajusta mejor en ciertas aplicaciones al considerar únicamente los datos recibidos más recientemente, en lugar de todo el histórico de datos. En los últimos años, la minería de datos en streaming se ha centrado en el modelo evolutivo. Mientras que, en el modelo de ventana deslizante, el trabajo presentado es más reducido ya que estos algoritmos no sólo deben de ser incrementales si no que deben borrar la información que caduca por el deslizamiento de la ventana manteniendo los anteriores tres desafíos. Una de las tareas fundamentales en minería de datos es la búsqueda de agrupaciones donde, dado un conjunto de datos, el objetivo es encontrar grupos representativos, de manera que se tenga una descripción sintética del conjunto. Estas agrupaciones son fundamentales en aplicaciones como la detección de intrusos en la red o la segmentación de clientes en el marketing y la publicidad. Debido a las cantidades masivas de datos que deben procesarse en este tipo de aplicaciones (millones de eventos por segundo), las soluciones centralizadas puede ser incapaz de hacer frente a las restricciones de tiempo de procesamiento, por lo que deben recurrir a descartar datos durante los picos de carga. Para evitar esta perdida de datos, se impone el procesamiento distribuido de streams, en concreto, los algoritmos de agrupamiento deben ser adaptados para este tipo de entornos, en los que los datos están distribuidos. En streaming, la investigación no solo se centra en el diseño para tareas generales, como la agrupación, sino también en la búsqueda de nuevos enfoques que se adapten mejor a escenarios particulares. Como ejemplo, un mecanismo de agrupación ad-hoc resulta ser más adecuado para la defensa contra la denegación de servicio distribuida (Distributed Denial of Services, DDoS) que el problema tradicional de k-medias..
(12) En esta tesis se pretende contribuir en el problema agrupamiento en streaming tanto en entornos centralizados y distribuidos. Hemos diseñado un algoritmo centralizado de clustering mostrando las capacidades para descubrir agrupaciones de alta calidad en bajo tiempo frente a otras soluciones del estado del arte, en una amplia evaluación. Además, se ha trabajado sobre una estructura que reduce notablemente el espacio de memoria necesario, controlando, en todo momento, el error de los cómputos. Nuestro trabajo también proporciona dos protocolos de distribución del cómputo de agrupaciones. Se han analizado dos características fundamentales: el impacto sobre la calidad del clustering al realizar el cómputo distribuido y las condiciones necesarias para la reducción del tiempo de procesamiento frente a la solución centralizada. Finalmente, hemos desarrollado un entorno para la detección de ataques DDoS basado en agrupaciones. En este último caso, se ha caracterizado el tipo de ataques detectados y se ha desarrollado una evaluación sobre la eficiencia y eficacia de la mitigación del impacto del ataque..
(13) Abstract Advances in hardware allow to collect huge volumes of data emerging applications that must provide information in near-real time, e.g., patient monitoring, health monitoring of water pipes, etc. The data streaming model emerges to comply with these applications overcoming the traditional store-then-process model. With the store-then-process model, data is stored before being consulted; while, in streaming, data are processed on the fly producing continuous responses. The challenges of streaming for processing data on the fly are the following: 1) responses must be produced continuously whenever new data arrives in the system; 2) data is accessed only once and is generally not maintained in its entirety, and 3) data processing time to produce a response should be low. Two models exist to compute continuous responses: the evolving model and the sliding window model; the latter fits best with applications must be computed over the most recently data rather than all the previous data. In recent years, research in the context of data stream mining has focused mainly on the evolving model. In the sliding window model, the work presented is smaller since these algorithms must be incremental and they must delete the information which expires when the window slides. Clustering is one of the fundamental techniques of data mining and is used to analyze data sets in order to find representative groups that provide a concise description of the data being processed. Clustering is critical in applications such as network intrusion detection or customer segmentation in marketing and advertising. Due to the huge amount of data that must be processed by such applications (up to millions of events per second), centralized solutions are usually unable to cope with timing restrictions and recur to shedding techniques where data is discarded during load peaks. To avoid discarding of data, processing of streams (such as clustering) must be distributed and adapted to environments where information is distributed. In streaming, research does not only focus on designing for general tasks, such as clustering, but also in finding new approaches that fit bests with particular scenarios. As an example, an ad-hoc grouping mechanism turns out to be more adequate than k-means for defense against Distributed Denial of Service (DDoS). This thesis contributes to the data stream mining clustering technique both for centralized and distributed environments. We present a centralized clustering algorithm showing capabilities to discover clusters of high quality in low time and we provide a comparison with existing state of the art solutions. We have worked on a data structure that significantly reduces memory requirements while controlling the error of the clusters statistics. We also provide two distributed clustering protocols. We focus on the analysis of two key features: the impact on the clustering quality when computation.
(14) is distributed and the requirements for reducing the processing time compared to the centralized solution. Finally, with respect to ad-hoc grouping techniques, we have developed a DDoS detection framework based on clustering. We have characterized the attacks detected and we have evaluated the efficiency and effectiveness of mitigating the attack impact..
(15) Declaración Declaro que esta Tesis Doctoral ha sido escrita por mí misma y que el trabajo descrito es original, execptuando allí donde se afirme explícitamente lo contrario.. Mar Callau Zori.
(16)
(17) Índice general. Índice general. I. Índice de figuras. VII. Capítulo 1. Introducción. 1. 1.1. Visión general . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 1. 1.2. Objetivos de la Tesis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 9. 1.2.1. Contribuciones al problema de agrupamiento en entornos centralizados . . .. 9. 1.2.2. Contribuciones al problema de agrupamiento en entornos distribuidos . . . .. 10. 1.2.3. Contribuciones para la defensa frente ataques de denegación de servicio . . .. 10. 1.3. Organización de la Tesis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 11. Capítulo 2. Antecedentes. 13. 2.1. El problema de k-medias en las bases de datos tradicionales . . . . . . . . . . . . .. 13. 2.2. El modelo de flujo de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 15. Capítulo 3. Agrupaciones sobre flujos de datos 3.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . I. 21 21.
(18) 3.2. El problema de k-medias sobre streams . . . . . . . . . . . . . . . . . . . . . . . .. 22. 3.3. Antecedentes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 23. 3.3.1. Modelo de evolución de los centros . . . . . . . . . . . . . . . . . . . . . .. 23. 3.3.2. El enfoque de microclustering sobre flujos de datos . . . . . . . . . . . . . .. 25. 3.3.3. Nociones de estadística . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 25. 3.3.4. Histogramas exponenciales . . . . . . . . . . . . . . . . . . . . . . . . . . .. 26. 3.4. ACCENt: un algoritmo de clustering sobre flujos de datos . . . . . . . . . . . . . . .. 27. 3.5. Estructura de datos en espacio reducido . . . . . . . . . . . . . . . . . . . . . . . .. 31. 3.5.1. Impacto de la aproximación de los estadísticos . . . . . . . . . . . . . . . .. 32. 3.5.2. Descripción de la estructura de datos . . . . . . . . . . . . . . . . . . . . . .. 34. 3.5.3. Conclusión . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 36. 3.6. Análisis de la complejidad espacial y temporal . . . . . . . . . . . . . . . . . . . . .. 37. 3.6.1. Complejidad espacial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 37. 3.6.2. Complejidad temporal . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 38. 3.6.3. Estudio del número de clusters . . . . . . . . . . . . . . . . . . . . . . . . .. 38. 3.6.4. Conclusión . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 40. 3.7. Evaluación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 41. 3.7.1. Adaptabilidad al número de clusters simulados . . . . . . . . . . . . . . . .. 43. 3.7.2. Exactitud y coste variando el número de clusters inyectados . . . . . . . . .. 44. 3.7.3. Exactitud y coste variando la dimensión del espacio . . . . . . . . . . . . . .. 46. 3.7.4. Compromiso entre la exactitud y coste . . . . . . . . . . . . . . . . . . . . .. 46. 3.7.5. Sensibilidad al número de clusters inyectados . . . . . . . . . . . . . . . . .. 49. 3.7.6. Sensibilidad a la dimensión del espacio . . . . . . . . . . . . . . . . . . . .. 50.
(19) 3.7.7. Evolución a lo largo del flujo de datos . . . . . . . . . . . . . . . . . . . . .. 50. 3.7.8. Sensibilidad a la distribución de probabilidad de los datos . . . . . . . . . .. 51. 3.7.9. Sensibilidad a lo cota inferior de las probabilidades . . . . . . . . . . . . . .. 53. 3.7.10. Conjunto de datos del mundo real . . . . . . . . . . . . . . . . . . . . . . .. 53. 3.7.11. Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 53. 3.8. Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 56. Capítulo 4. Agrupaciones sobre flujos de datos en entornos distribuidos. 57. 4.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 57. 4.2. Distribución del problema de agrupamiento . . . . . . . . . . . . . . . . . . . . . .. 58. 4.3. Antecedentes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 59. 4.3.1. Cálculo de cuantiles sobre flujos de datos . . . . . . . . . . . . . . . . . . .. 59. 4.3.2. Partición binaria del espacio . . . . . . . . . . . . . . . . . . . . . . . . . .. 60. 4.3.3. Cota superior asintótica. Relaciones entre complejidades. . . . . . . . . . . .. 62. 4.4. INDICIa: un protocolo inocente de distribución . . . . . . . . . . . . . . . . . . . .. 63. 4.5. ConDUCE: un protocolo basado en el espacio de distribución . . . . . . . . . . . . .. 65. 4.5.1. Equilibrado de carga: cálculo de cuantiles . . . . . . . . . . . . . . . . . . .. 69. 4.6. Elasticidad de los protocolos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 73. 4.7. Exactitud de los clusterings computados distribuidamente . . . . . . . . . . . . . . .. 74. 4.8. Reducción en el tiempo de procesamiento . . . . . . . . . . . . . . . . . . . . . . .. 79. 4.9. Extensión a ventanas basadas en el tiempo . . . . . . . . . . . . . . . . . . . . . . .. 84. 4.10. Incremento en el número de flujos de entrada . . . . . . . . . . . . . . . . . . . . .. 84. 4.11. Expansión del número de agregadores de clusterings . . . . . . . . . . . . . . . . .. 84.
(20) 4.12. Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 85. Capítulo 5. Entorno para la defensa frente a ataques distribuidos de denegación de servicio bajo streaming. 87. 5.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 87. 5.2. Antecedentes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 88. 5.2.1. Trabajo previo sobre ataques DDoS . . . . . . . . . . . . . . . . . . . . . .. 89. 5.2.2. Modelo de red de comunicaciones . . . . . . . . . . . . . . . . . . . . . . .. 89. 5.2.3. Modelo de adversario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 90. 5.2.4. Modelo de detección . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 91. 5.2.5. Modelo de mitigación . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 91. 5.2.6. El filtro de Bloom . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 92. 5.3. La defensa frente a ataques DDoS . . . . . . . . . . . . . . . . . . . . . . . . . . .. 92. 5.4. STONE: un entorno para la detección de ataques DDoS. . . . . . . . . . . . . . . .. 93. 5.4.1. Centro de Control de Detecciones (DCC) . . . . . . . . . . . . . . . . . . .. 94. 5.4.1.1.. Descripción detallada . . . . . . . . . . . . . . . . . . . . . . . .. 95. 5.4.1.2.. Interacción con la base de datos histórica (HD) . . . . . . . . . . .. 98. 5.4.2. Centro de Mitigación (MC) . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 5.5. Análisis de la detección de ataques . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 5.6. Evaluación empírica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 5.6.1. Configuración de la evaluación . . . . . . . . . . . . . . . . . . . . . . . . . 106 5.6.2. Tiempo de detección . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 5.6.3. Eficiencia de la mitigación . . . . . . . . . . . . . . . . . . . . . . . . . . . 108.
(21) 5.6.4. Precisión de la mitigación . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 5.7. Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109. Capítulo 6. Trabajo relacionado. 111. 6.1. Agrupamientos en bases de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 6.1.1. El problema de k-medias . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 6.1.2. Algoritmos en conjuntos de datos muy grandes . . . . . . . . . . . . . . . . 112 6.1.3. Técnicas de paralelización de algoritmos de agrupamiento . . . . . . . . . . 113 6.2. Agrupamientos en flujos de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 6.2.1. Agrupamientos sobre flujos evolutivos . . . . . . . . . . . . . . . . . . . . . 113 6.2.2. Agrupamientos sobre flujos con ventana deslizante . . . . . . . . . . . . . . 115 6.2.3. Agrupaciones en flujos distribuidos . . . . . . . . . . . . . . . . . . . . . . 116 6.3. Mecanismos de defensa frente ataques DDoS . . . . . . . . . . . . . . . . . . . . . 117. Capítulo 7. Conclusiones. 119. 7.1. Resumen general . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 7.1.1. El problema de agrupamiento en entornos centralizados . . . . . . . . . . . 120 7.1.2. El problema de agrupamiento en entornos distribuidos . . . . . . . . . . . . 120 7.1.3. La defensa frete a ataques distribuidos de denegación de servicio . . . . . . . 120 7.2. Trabajo futuro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121. Bibliografía. 123.
(22)
(23) Índice de figuras. 1.1. Diagrama de dispersión. Conjunto de datos de los lirios . . . . . . . . . . . . . . . .. 4. 1.2. Comportamiento de la cola) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 7. 2.1. Ejemplos de ventanas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 18. 3.1. Actualización de la estructura de datos . . . . . . . . . . . . . . . . . . . . . . . . .. 34. 3.2. Fusión de los histogramas exponenciales de dos clusters . . . . . . . . . . . . . . .. 36. 3.3. Numbero de clusters almacenados . . . . . . . . . . . . . . . . . . . . . . . . . . .. 43. 3.4. Distribución de Gauss (2 dimensiones) . . . . . . . . . . . . . . . . . . . . . . . . .. 45. 3.5. Distribución de Gauss (4 clusters) . . . . . . . . . . . . . . . . . . . . . . . . . . .. 47. 3.6. Compromiso Calidad del clusters -Coste computacional . . . . . . . . . . . . . . . .. 48. 3.7. Sensibilidad al número de clusters . . . . . . . . . . . . . . . . . . . . . . . . . . .. 49. 3.8. Sensibilidad a la dimensión del espacio . . . . . . . . . . . . . . . . . . . . . . . .. 51. 3.9. Evolución sobre el flujo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 52. 3.10. Sensibilidad a la distribución de probabilidad . . . . . . . . . . . . . . . . . . . . .. 52. 3.11. Sensibilidad a lo cota inferior de las probabilidades . . . . . . . . . . . . . . . . . .. 54. 3.12. Conjunto de datos de la KDD-CUP’99. . . . . . . . . . . . . . . . . . . . . . . . .. 55. VII.
(24) 4.1. Árbol BSP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 61. 4.2. Árbol Binario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 62. 4.3. INDICIa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 63. 4.4. Redundancia del INDICIa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 65. 4.5. Árbol DAQ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 70. 4.6. No-alineación de las ventanas . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 75. 5.1. La arquitectura de STONE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 94. 5.2. Descripción de los grupos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 95. 5.3. Consulta del DCC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 96. 5.4. Mitigation Center . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104 5.5. Tiempo de detección . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 5.6. Carga de tráfico reenviado a la entidad protegida . . . . . . . . . . . . . . . . . . . . 108 5.7. Precisión de la mitigación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109.
(25) CAPÍTULO 1. Introducción. En los últimos años, el avance de la tecnología ha permitido disponer de una gran volumen de datos evidenciando la necesidad de sistemas de procesamiento que huyan del patrón “almacenarpara-después-procesar” (store-then-process). De esta manera, el modelo de flujo de datos emerge como paradigma al recoger las restricciones de este tipo de aplicaciones. Siendo necesario el diseño de algoritmos que se adecuen a las exigencias del modelo. Esta Tesis tiene como objetivo contribuir con el diseño y análisis de algoritmos de agrupamiento bajo flujos de datos, es decir, la búsqueda de grupos representativos sobre un gran volumen de datos que varían a lo largo del tiempo.. 1.1. Visión general Diversas aplicaciones piden un procesamiento de grandes volúmenes de los datos produciendo. respuestas en tiempo cuasi-real provenientes, por ejemplo, de las redes de computadores para la detección de intrusos, del marketing y la publicidad para la segmentación de clientes, de los sistemas de información médica para la monitorización de pacientes, o de la ingeniería civil para el seguimiento y control sanitario de las conducciones de agua. En el patrón store-then-process los datos son almacenados para después ser consultados incu-. 1.
(26) Capítulo 1. Introducción. rriendo en una alta latencia para producir respuestas a las consultas. Por consecuencia no es posible satisfacer las necesidades de un rápido procesamiento de ciertas aplicaciones. Además el continuo cambio de los datos acarrea que respuestas estáticas no sean apropiadas, suponiendo que las respuestas a las consultas deben ser continuamente actualizadas para tener una representación veraz del presente, por ejemplo, en el seguimiento y control sanitario de las conducciones de agua, una catástrofe humana puede suceder si el sistema no es capaz de evolucionar tan rápido como una posible contaminación de las aguas. Por otra parte, el gran volumen de datos, ej. sobre los ficheros recolectados en la red, impone algoritmos de una sola pasada (one-pass algorithms) donde cada dato es leído una sola vez para decidir sobre si es procesado o descartado; de manera que la información descartada no es recuperable por el sistema. Para satisfacer todos los requisitos anteriores emerge el modelo de flujo de datos (data stream) [Henzinger et al., 1999, Stonebraker et al., 2005] donde los datos, llamados tuplas, se consideran como una corriente que fluye a través del sistema, de manera que llega constantemente nueva información y, también, nuevos resultados son continuamente producidos. Esta nueva visión impone ciertos desafíos: 1) las respuestas deben producirse de manera continua cada vez que nuevos datos llegan al sistema; 2) los datos deben procesarse solo una vez, en términos que una única pasada sobre los datos es permitida, por lo tanto cuando cierta información es descartada ya no es posible su recuperación; 3) la complejidad temporal de procesamiento de una tupla de entrada a fin de producir una salida tiene que ser baja, ya que estos sistemas deben producir respuestas en tiempo cuasi-real; y 4) el espacio de memoria debe ser reducido ya que en ciertas aplicaciones no es posible el almacenamiento completo de los datos. Además, estos algoritmos tienen que almacenar información que si bien no es relevante en el estado actual, ésta puede emerger como información importante en el futuro, debido a la naturaleza evolutiva de los flujos; Un ejemplo, de aplicaciones bajo streaming es para el seguimiento y control sanitario de las conducciones de agua donde una red de sensores sobre las canalizaciones de manera que continuamente se recogen datos del estado del agua en ese momento. Para obtener respuestas continuamente, se tiene que determinar la fracción de los datos sobre la que se calcula cada repuesta. Para lo cual hay dos enfoques principales: el modelo evolutivo donde todo el histórico de los datos es considerados y el modelo de ventana deslizante donde las respuestas hacen referencia a los datos recibidos más recientemente (ej. 5 últimos minutos o 1.000 últimos datos). El modelo de ventana deslizante representa el estado actual evadiendo el sesgo producido al considerar datos demasiado antiguos; ajustándose más adecuadamente a ciertas aplicaciones como la detección de intrusos, la segmentación de clientes, la monitorización de pacientes o el seguimiento de la calidad del agua.. 2.
(27) Capítulo 1. Introducción. En los últimos años, la minería de datos en streaming es un campo muy activo de investigación, debido a su importancia en multitud de aplicaciones ya que consiste en la extracción de conocimiento útil y comprensible de grandes volúmenes de datos. Pero la mayoría del trabajo actual está basado en el modelo evolutivo [Aggarwal et al., 2003, Charikar et al., 1997, 2003, Guha et al., 2000, 2003, Guha, 2009, O’Callaghan et al., 2002, Gama and Gaber, 2007], ya que las soluciones solo deben ser incrementales. Mientras que bajo ventana deslizante [Babcock et al., 2003, Zhou et al., 2008, Chen and Tu, 2007] los algoritmos no solo deben incluir la información entrante si no que deben borrar la información que caduca por el deslizamiento de la ventana. La dificultad del modelo bajo ventana deslizante frente al evolutivo se observa para cómputos tan sencillos como mantener la suma sobre un campo en el flujo. Imaginemos que en una página web de un periódico se quiere conocer el número de usuarios que visitan cierto contenido. Lo que se tiene es un flujo de datos formado por 0s y 1s donde 1s significa que el usuario ha visitado el recurso„ siendo el objetivo calcular la suma de 1s sobre le flujo. Bajo el modelo de flujos evolutivos este problema es fácilmente resulto mediante un único contador que es actualizado con cada nueva tupla. Mientras que bajo ventada deslizante la solución ingenua consiste en almacenar toda las tuplas referentes a una ventana de manera que se pueda actualizar el contador de 1s cuando ésta se deslice. De esta manera, bajo el modelo evolutivo, se tiene que la solución óptima necesita un espacio de complejidad constante y produce una nueva respuesta en tiempo constante. Por otra parte bajo ventana deslizante, el problema es resulto en un espacio de orden superior lineal en el tamaño de la ventana y procesamiento constante. Volviendo a la minería de datos, una de las tareas fundamentales es el problema de agrupamiento, también llamado búsqueda de agrupaciones o clustering, en el cual, dado un conjunto de datos, el objetivo es encontrar grupos (o clusters) de manera que datos en el mismo grupo sea más parecidos que datos en grupos diferentes. Mediante estos grupos se tiene una descripción sintética del conjunto de datos ya que datos en el mismo grupo comparten una serie de propiedades comunes. La clasificación en grupos similares es una de las más abstractas capacidades del ser humano, desde niños aprendemos a distinguir gatos de perros, tanto si estos son animales vivos, como representaciones en dibujos; ya que nuestra mente es capaz de abstraer las características en común de los grupos y las diferencias entre ambos. En la Figura 1.1 se presenta los diagramas de dispersión para el conjunto de datos de Fisher [1936] referente a tres clases de lirios: setosa, versicolor y virginica; por medio de cuatro atributos la longitud y anchura del sépalo y del pétalo, respectivamente. Cualesquiera dos variables están enfrentadas en la figura, donde, además se muestra el histograma de frecuencias para cada variable en la diagonal. El ojo humano es capaz de distinguir a lo sumo dos grupos en las anteriores gráficas mientras que se sabe que hay tres grupos diferentes en los datos. Esto sucede. 3.
(28) sepal length (cm). 8. sepal width (cm). 6. petal length (cm). 10. petal width (cm). Capítulo 1. Introducción. 4. 7 6 5 4. 5 4 3 2. 5 0. 3 2 1 0 4 6 8 sepal length (cm). 2 4 6 sepal width (cm). 0 5 10 petal length (cm). 0 2 4 petal width (cm). Figura 1.1: Diagrama de dispersión. Conjunto de datos de los lirios. porque las cuatro variables son decisivas para determinar a qué clase de lirio pertenece cada punto, mientras que en las gráficas solo se tienen en cuenta dos de ellas. Así que si bien la capacidad humana de agrupación es una herramienta potente, son necesarios métodos formales que trabajen en espacios con dimensiones superiores. En la búsqueda del método formal el primer objetivo es la formulación del problema, donde hay que establecer qué es agrupar, qué entidades son las buscadas, y en qué consiste la homogeneidad interna y la separación externa de los grupos. Si bien el problema de agrupamiento trata de encontrar grupos similares, no hay una definición universal para que es un grupo: un subconjunto de los datos de entrada, un objeto representante, una función de densidad, etc. La búsqueda de valores representativos como caracterización del grupo (o clustering basado en centroides) permite la representación simple y compacta de los grupos haciendo de estos métodos los más usados por su sencilla, pero potente, descripción de los grupos. Además, si el conjunto de datos evoluciona levemente, los centroides no tiene por qué verse altamente implicados. Convirtiendo los clusterings basados en centroides en el objetivo idóneo para el modelo de flujo de datos en ventana 4.
(29) Capítulo 1. Introducción. deslizante donde se busca la adaptación de los centroides a la ventana actual. Por otra parte, la definición de grupos como subconjuntos de datos de entrada no es adecuada en un enfoque con ventanas, ya que para dos ventanas consecutivas hay que manejar los cambios entre grupos lo que conlleva el obligatorio almacenamiento de los datos de las ventanas, ya que potencialmente todos los datos pueden cambiar de grupo. Por ejemplo, en el marketing y la publicidad, crear agrupaciones de clientes según ciertos aspectos permite definir estrategias de mercado dirigidas a ciertos de estos grupos de clientes teniendo un impacto específico sobre ellos. En este caso, en el que el resultado de la agrupación es la base para definir las estrategias de mercado, conocer un representante por grupo es más descriptivo y beneficioso para poder diseñar una campaña enfocada a dicho representante. En concreto, el problema de agrupamiento bajo flujos de datos sobre ventana deslizante emerge, si se piensa, por ejemplo, en la web de un periódico, donde el tipo de lectores dependerá de la hora del día y de otros factores no predecibles y controlables. En este caso, es de mayor utilizar conocer los perfiles de los lectores para los últimos 10 minutos que el propio conocimiento de qué lectores conforman cada grupo. Hay dos puntos relevantes en la búsqueda de agrupaciones basada en centroides, por un parte este enfoque conduce al uso de una distancia como medida la homogeneidad interna y la separación externa de los grupos. Lo que permite, además, calcular la competitividad de una agrupación mediante una función de coste suponiendo una herramienta esencial para la comparación entre diferentes agrupaciones. Por otra parte, el establecimiento del número de grupos a buscar es crucial para la mayoría de los enfoques. Pero, como se ha visto en el ejemplo de los lirios, el procedimiento puede mostrar un número de grupos diferente al número de grupos subyacentes, en el caso de los lirios el ojo humano solo era capaz de distinguir dos grupos frente a los tres existentes. En la mayoría de los casos, a diferencia de este ejemplo, el número de grupos es desconocido. Esta labor toma especial relevancia en el modelo de flujo de datos ya que la naturaleza evolutiva del modelo, implica que no solo los datos pueden evolucionar si no que el número de grupos subyacentes puede variar en el tiempo. Por ejemplo, en la segmentación de clientes pueden aparecer nuevos tipos de clientes debido a la evolución de los comportamientos socio-culturales. Por lo que es crucial diseñar procedimientos capaces de dar intuiciones sobre el número de grupos subyacentes permitiendo, además, que este número cambie a lo largo del tiempo. En determinadas aplicaciones de streaming, el flujo de datos es masivo, por ejemplo, en Twitter se producen millones de tweets por minuto. Por lo que un sistema centralizado es incapaz de producir resultados de manera continua en tiempo cuasi-real, cuando el tiempo de procesamiento por tupla es superior a la velocidad de llegada de las tuplas (o tasa de entrada). Debido a que las tuplas son almacenadas en una cola según su orden de llegada para ser procesadas en su turno. Esto provoca un. 5.
(30) Capítulo 1. Introducción. gasto extra del uso memoria, en el que tarde o temprano, los recursos de memoria no serán suficientes. Un ejemplo del funcionamiento con una tasa de entrada constante, 1/ta , se muestra en la Cuadro 1.1, donde se considera el stream S = {si }i∈N donde las tuplas llegan a intervalos constantes de ta , es decir, la tupla s1 llega a tiempo 0, la tupla s2 llega a tiempo ta , la tupla s3 llega a tiempo 2ta , etc. Y se supone que el tiempo de procesamiento de una tupla es el valor constante tp mayor que el tiempo de llegada, tp > ta . Por lo que la tupla s1 comienza a ser procesada a su llegada 0 produciendo una salida en tiempo tp − 1. Esto provoca que las tuplas que lleguen en el intervalo [0, tp − 1] tengan que encolarse. Este es el caso de la tupla s2 que llega al sistema a tiempo ta pero debe esperar a que se acabe de procesar la tupla s1 para comenzar a procesarse, por lo que comienza a tiempo tp .. Tupla. s1. s2. s3. .... si. .... 0. ta. 2ta. .... (i − 1)ta. .... 0. tp. 2tp. .... (i − 1)tp. .... tp − 1. 2tp − 1. 3tp − 1. .... itp − 1. .... Llegada al sistema, arrive(i) Comienzo del procesamiento, start(i) Fin del procesamiento, end(i) Cuadro 1.1: Modelo de cola. Tiempos de los eventos relacionados con las tuplas. En general, una tupla si llega a tiempo arrive(i) = (i − 1)ta esperando en la cola hasta que comienza a procesarse en tiempo start(i) = (i − 1)tp finalizando en tiempo end(i) = itp − 1. Por tanto para un instante de tiempo t, el sistema ha recibido un total de tuplas rec(t) pero sólo ha procesado proc(t) debiendo de mantener una cola de tamaño rec(t) − proc(t). En concreto, se tiene que el número de las tuplas recibidas es rec(t) = máx{i : arrive(i) ≤ t} = b tta c + 1; por otro lado, el número de tuplas ya procesadas es proc(t) = máx{i : start(i) ≤ t} = b ttp c + 1; por lo que el tamaño de la cola en un instante t es size(t) = rec(t) − proc(t) = b tta c − b ttp c. En la Figura 1.2 se muestra un ejemplo de la cola para diferentes tiempo de procesamiento. En concreto, se determinan los tiempos de procesamiento tp como múltiplos del tiempo de llegada ta , así la línea azul es el comportamiento para un tiempo de procesamiento tp = 2ta . En la Figura 1.2a 6.
(31) Capítulo 1. Introducción. se muestra el tamaño de la cola size(t) frente al tiempo, en este caso el tiempo en el eje de abscisas se muestra como tasa respecto del tiempo de llegada ta . De esta manera la gráfica es independiente de valor concreto de tiempo de llegada ta . De la Figura 1.2a se ve que el tamaño de la cola tiene un crecimiento lineal. Concretamente, el tamaño de la cola de tiempo de procesamiento tp = ata es y acotado superiormente por la recta y = a−1 a ta (ver Cuadro 1.2 para las pendientes). En la Figura 1.2b se muestra el factor size(t)/ta que responde al valor real de la pendiente de la recta y,. a−1 a .. Es. interesante observar que las líneas de la figura convergen a los valores de la pendiente de la recta. 100. 1. size(t). 80 60. size(t) / rec(t). 2 4 8 16. 40 20 0. 0.8 0.6 2 4 8 16. 0.4 0.2. 0. 10. 20 t / ta. 30. 0. 40. 0. 10. (a) Tamaño de la cola. 20 t / ta. 30. 40. (b) Tamaño de la cola. Figura 1.2: Comportamiento de la cola). Factor, a Pendiente de la recta,. a−1 a. 2. 4. 8. 16. 0.5. 0.75. 0.875. 0.9375. Cuadro 1.2: Modelo de cola En los entornos centralizados, la solución para producir respuestas en tiempo cuasi-real consiste en descartar ciertos datos para no saturar el sistema. Por otra parte, sin llegar a producirse la saturación del sistema, las respuestas sufren cierta latencia, es decir, el tiempo desde que la tupla entra en el sistema hasta que se produce un resultado asociado a ella atiende tanto al tiempo que la tupla tiene que esperar su turno en la cola, como al tiempo que tarda en procesarse dicha tupla. Por lo que, cuanto mayor sea el tamaño de la cola (mayor sea la tasa de entrada) mayor será la latencia del sistema. Con la notación del ejemplo anterior, las tuplas deben esperar en la cola start(i) − arrive(i). Los inconvenientes anteriores provienen del hecho de que los recursos de una máquina son limitados. Surgiendo como remedio, el procesamiento distribuido sobre streams donde se agregan los recursos de varias máquinas para llevar acabo el procesamiento. En consecuencia, se revela como imprescindible 7.
(32) Capítulo 1. Introducción. el diseño de algoritmos de agrupamiento distribuidos que soporten una mayor carga de trabajo. Finalmente, los algoritmos general del problema de agrupamiento no responden a los requisitos y las particularidades específicas de ciertas aplicaciones, como la defensa frente a ataques distribuidos de denegación de servicio, donde se impone el diseño de algoritmos ad-hoc. En concreto, la representación sintética por medio de grupos permite, por ejemplo, la monitorización de características de dichos grupos descubriendo anomalías en los datos cuando los valores de las características se alejan de unos valores de referencia. Además, los grupos y sus características son de utilidad para buscar los datos que provocan el comportamiento anómalo, pudiendo filtrarse en caso necesario. Como se ha visto es fundamental el diseño y análisis de algoritmos para problemas generales como la búsqueda de agrupaciones. Pero en la investigación en data stream mining, también resultan primordiales soluciones ad-hoc para escenarios específicos, por ejemplo, la defensa frente ataques distribuidos de denegación de servicio (Distributed Denial of Services, DDoS). Este tipo de ataques está dirigido contra servicios o recursos compartidos que el atacante quiere que se vuelvan inservibles. Concretamente, el atacante pretende que se deniegue el acceso a usuarios legítimos que aceden a estos servicios [Gligor, 1984]. Cuando el ataque proviene de gran multitud de fuentes se llama ataque distribuido de denegación de servicio, donde el uso de múltiples fuentes amplifica el impacto del ataque en el servicio [Kim et al., 2004]. Aunque esto puede suceder en gran variedad de escenarios, especial relevancia tiene en Internet, donde una gran número de empresas dependen de su disponibilidad en línea para hacer negocio, por lo que no poder dar servicio a sus usuarios se traslada a perdidas millonarias [Garber, 2000]. Además, en los últimos años, ha crecido este tipo de ataques contra medios de comunicación independientes y organizaciones sin ánimo de lucro que tienen en Internet un gran medio para su visibilidad [Nazario, 2009, Zuckerman et al., 2010]. Aunque se reconocen dos tipos de ataques según la metodología usada por el atacante, la prevención frente a ellos se enfoca de manera muy diferente [Hussain et al., 2003, Peng et al., 2007]. En el primer tipo, el atacante manda paquetes específicos para explotar las vulnerabilidades del sistema, por lo que la prevención se centra en resolver las vulnerabilidades conocidas. En el segundo tipo, el atacante inunda el sistema mediante un gran volumen de datos, por lo que la prevención no resulta tan sencilla ya que la vulnerabilidad proviene de que el sistema está conectado a la red pública. Por lo que, mecanismos de defensa frente este tipo de ataques de inundación son especialmente relevantes donde se debe buscar la minimización del daño causado por el ataque. El objetivo, por tanto, consiste en analizar el tráfico de red para ser capaz de defenderse frente a estos ataques. El tráfico de red es un flujo continuo de paquetes que fluyen desde un emisor a un. 8.
(33) Capítulo 1. Introducción. destinatario, este flujo se caracteriza por consistir en un gran volumen de datos. Además, mecanismos de defensa deben producir respuestas constantes en tiempo cuasi-real para que sean de utilidad para reducir el impacto del ataque en la degeneración del servicio. Por estas razones, el procesamiento de flujos de datos sobresale como el enfoque para modelar este tipo de aplicaciones con sus necesidades [Sullivan, 1996, Stonebraker et al., 2005, Babcock et al., 2002]. Un enfoque de agrupación puede ser utilizado para el diseño de estos mecanismos de defensa donde el tráfico de red es agrupado para monitorar características de cada grupo. Las agrupaciones y sus características tienen un doble objetivo. Por una parte, cuando ciertas características tengan un comportamiento anómalo será indicativo de que un ataque ha comenzado; y por otro lado, los valores monitorados serán de gran utilidad en el momento de mitigación del ataque ya que definirán criterios para el filtrado inteligente de paquetes de red. Bajo este enfoque, las agrupaciones son de gran utilidad, pero el objetivo central no es el propio calculo de las agrupaciones, si no el uso de éstas como medio para una solución global.. 1.2. Objetivos de la Tesis La visión general dada muestra la potencia del modelo de flujo de datos y las necesidades de un. diseño eficiente de algoritmos de agrupamiento bajo entornos centralizados y distribuidos dirigidos a aplicaciones tales como la defensa frente a ataques de denegaciçon de servicio. El trabajo de esta Tesis se centra en el diseño y análisis de algoritmos de agrupamiento sobre flujos de datos: primeramente, en el diseño de un algoritmo eficiente en un entorno centralizado; seguidamente, en el estudio de soluciones de agrupamiento en entornos distribuidos; para finalizar, un marco de trabajo para la detección frete a ataques de denegación de servicio basado en grupos.. 1.2.1. Contribuciones al problema de agrupamiento en entornos centralizados. La contribución general en entornos centralizados es el diseño de ACCENt, un algoritmo de agrupamiento sobre flujos de datos considerando solo la información más reciente y produciendo continuamente representantes de los grupos. Además este algoritmo ha sido evaluado empíricamente frete a otras soluciones. Las contribuciones específicas de ACCENt son:. Se proporciona una intuición sobre el número de grupos subyacente en los datos. 9.
(34) Capítulo 1. Introducción. Se incurre en soluciones cercanas a la bondad de los soluciones dadas por enfoques en base de datos tradicionales. Se proporciona una estructura de datos que proporciona complejidades espacial y temporal lineales en el tamaño de la ventana N . Además, se proporciona una estructura de datos adicional que reduce la complejidad espacial del algoritmo manteniendo una baja complejidad temporal y con un sacrificio de la exactitud de los cómputos controlado. Se incurre en una bajo impacto a los parámetros subyacentes de los datos, tales como la dimensión del espacio, el número subyacente de grupos, la distribución de probabilidad y los movimientos de los datos.. 1.2.2. Contribuciones al problema de agrupamiento en entornos distribuidos. En este punto, la contribución es el diseño de dos protocolos para la distribución del agrupamiento en flujos de datos considerando solo la información más reciente basado en dos algoritmos de de agrupamiento. Las contribuciones específicas de estos dos protocolos son:. Se determina la dispersión de la bondad sobre los grupos propuestos por el enfoque distribuido frente a la bondad de los dos algoritmos base y del número de instancias usadas para la distribución. Se analiza las condiciones necesarias para la mejora de la calidad del sistema, es decir, cuando el tiempo de los protocolos distribuidos reducirá el tiempo de procesamiento de cada tupla respecto del enfoque centralizado. Se describen protocolos para la elasticidad del sistema, concretamente, para el aprovisionamiento y desabastecimiento de instancias.. 1.2.3. Contribuciones para la defensa frente ataques de denegación de servicio. La contribución principal es la descripción de STONE, un marco de trabajo sobre flujos de datos para la detección y mitigación de ataques de denegación de servicio. Además, se ha implementado sobre un motor paralelo-distribuido de procesamiento de datos StreamCloud para conducir una evaluación empírica sobre la idoneidad de STONE para las tareas de detección y mitigación. Las contribuciones concretas son las siguientes: 10.
(35) Capítulo 1. Introducción. Se caracteriza formalmente el tipo de ataques detectados. Se determina su bajo tiempo de detección de un ataque gracias a la evaluación empírica. Se mitiga el tráfico frente a una posible saturación del servicio priorizando los paquetes legítimos de los paquetes sospechosos y reproduciendo ciertas características del tráfico en situaciones normales. Además, en los experimentos se valida la efectividad del mecanismo, ya que dicha mitigación produce una reducción de la carga considerable sin tener que recurrir a mecanismos de filtrado de paquetes ciegos.. 1.3. Organización de la Tesis El resto de esta Tesis está estructurada de la siguiente manera. Primeramente, el Capítulo 2 in-. troduce los conceptos básicos del problema de agrupamiento y del modelo de flujo de datos. Los tres capítulos siguientes constituyen el núcleo de la Tesis. Cada capítulo se dirige a un problema presentando una mecanismo para solucionarlo y el análisis del mismo. En el Capítulo 3 se centra el un algoritmo de agrupación en entornos centralizados. Seguidamente, en el Capítulo 4 se aborda la agrupación en entornos distribuidos. Esta parte finaliza, con la presentación de un mecanismo de defensa frente ataques de denegación de servicio en el Capítulo 5. Después, en el capítulo 6 se presenta el trabajo relacionado con el descrito en esta Tesis. Finalmente, las conclusiones son recogidas en el Capítulo 7.. 11.
(36) Capítulo 1. Introducción. 12.
(37) CAPÍTULO 2. Antecedentes. En este capítulo se presentan varias aspectos para la comprensión del trabajo de esta tesis. En primer lugar se describir el problema central de agrupamiento sobre bases de datos tradicionales, el problema de k-medias; seguidamente se formalizan las ideas del modelo de flujo de datos.. 2.1. El problema de k-medias en las bases de datos tradicionales El problema de agrupamiento (o búsqueda de agrupaciones o clusterings) sobre un conjunto de. datos consiste en buscar una clasificación en grupos (clusters) de los datos, de manera que datos en el mismo grupo sean semejantes y datos de grupos diferentes tengan más desigualdades. Dada la ambigüedad de esta tarea, diferentes tipos de problemas han sido propuestos según el objetivo a perseguir [Xu and Wunsch, 2005]: agrupamientos jerárquicos, agrupamientos basados en el error cuadrático, agrupamientos basados en la función de densidad, etc. Uno de los problema más relevantes es el problema de k-medias donde se buscan k centros que representen fielmente a los datos [Steinhaus, 1956, MacQueen, 1967, Hartigan and Wong, 1979, Lloyd, 1982]. En este problema, donde cada dato es asociado al centro más próximo, no solo se identifica grupos de datos similares, si no que además, se muestra un representante de cada grupo proporcionando una mayor comprensión de la naturaleza de los grupos. Otra de las ventajas de del problema de k-medias es que otorga una medida, la función de coste entre los centros y los datos, que. 13.
(38) Capítulo 2. Antecedentes. permite comparar las diferentes soluciones fijado el número de grupos, k. Formalmente, dado un conjunto de n datos {x1 , . . . , xn } ⊂ X y un número de clusters buscado k, el objetivo del problema de k-medias es buscar un conjunto de k centros C ⊂ X que minimice la función de coste, cost(W, C), descrita en la Ecuación 2.1 representando la suma de las distancias euclídeas de cada punto del conjunto W al centro más cercano en C.. cost(W, C) =. n X i=1. mı́n d(xi , c) c∈C. (2.1). El problema de k-medias es NP-duro hasta en sus variantes más sencilla en el plano, dim(X) = 2 [Mahajan et al., 2009]. En consecuencia, soluciones aproximadas son admisibles dada la dificultad del problema. En concreto, se dice que un conjunto de k centros C es una c-aproximación sobre W para el problema de k-medias si el coste sobre el conjunto de k centros C es a lo sumo c veces el coste óptimo, i.e., cost(W, C) ≤ c cost(W, C ∗ ) donde C ∗ es el conjunto de centros óptimo cost(W, C ∗ ) = mı́nD cost(W, D) con D ⊂ X y card(D) = k. El número de clusters buscados es crucial en la determinación del conjunto de centros por lo que otro grado de aproximación es posible haciendo variar controladamente el número de centros del conjunto. Así un conjunto C es una (a, b)-aproximación del problema de k-medias sobre el conjunto W si tiene a lo sumo ak clusters y proporciona una b-aproximación sobre el coste óptimo. A razón entre el coste obtenido y el coste óptimo, cost(W, C)/cost(W, C ∗ ), se la llama factor de aproximación o razón de competencia. A partir de este problema genérico de k-medias se puede definir el problema ponderado de kmedias donde ahora se tiene un conjunto de n datos {x1 , . . . , xn } con sus respectivos pesos {w1 , . . . , wn } buscando el conjunto de k centros C que minimice la función de coste ponderada P cost(W, C) = ni=1 mı́nc∈C wi d(xi , c). Pudiendo establecer las correspondientes aproximaciones al problema. En el Algoritmo 1 está descrito el pseudo-código del algoritmo tradicional de k-medias [MacQueen, 1967] donde se describe un proceso iterativo en el que el conjunto de centros se va refinando por lo que hay convergencia hacia el óptimo local. 14.
(39) Capítulo 2. Antecedentes. Algorithm 1: Algoritmo tradicional de k-medias Data: Un conjunto de datos {x1 , . . . , xn } ⊂ X. El número de clusters buscados k. Result: Un conjunto de k centros C = {c1 , . . . , ck }. 1. I NICIALIZACIÓN. 8. 2. C ← seleccionar k puntos de X. 9. 3. repetir. 10. 4. PASO DE ASIGNACIÓN. 11. 5. Asignar cada punto xi a su centro: Sj ← {xi : d(xi , cj ) = mı́nc∈C d(xi , c)}, ∀j. 12. 6. PASO DE ACTUALIZACIÓN Calcular el centro P del paso siguiente: 1 cj = card(Sj ) x∈Sj x, ∀j hasta la convergencia de cost(W, C). 7. 2.2. El modelo de flujo de datos Los flujos de datos (o stream) modelan los entornos en los que se producen constantemente datos. sobre los cuales se quiere extraer información de manera constante. Por ejemplo, en la red social Twitter, pensemos en un algoritmo donde se buscan grupos de tweets similares en todo momento. Este algoritmo tiene un flujo de entrada con los tweets de los usuarios, y por otro lado, en la salida, cada agrupación hace referencia a un conjunto de tweets recientes. Ya se observa para que definir una salida es necesario concretar cual los son los tweets recientes en cada momento. En un primer lugar, se puede querer agrupaciones sobre los tweets de los últimos 15 minutos, considerando que el flujo de tweets de entrada están ordenados sobre el tiempo en el que se generaron. Esta suposición de orden es necesaria, ya que en caso contrario el algoritmo no podría producir nunca una salida, pensemos que se calcula la agrupación para los tweets de 10h a 10h15 si no se fija cuando dejan de llegar tweets referentes a este periodo siempre se estará pendiente de la llegada de un nuevo tweet. Como la generación de tweets se realiza en un entorno distribuido se tiene que unir los datos provenientes de diferentes las fuentes de manera que el orden sobre el tiempo se garantice. En ciertos casos se desea un sistema más rápido por lo que se fusionan los datos sin importar que los flujos de tweets estén perfectamente ordenados en el tiempo. Además, en ciertos sistemas los relojes que etiquetan cada dato no están sincronizados por lo que ordenarlos según estos tiempos no tiene una analogía correcta con que estén ordenados en el tiempo de su generación. De esta manera surge el segundo enfoque donde se quiere calcular una agrupación sobre los últimos 100.000 tweets recibidos. Además, si se quiere comparar la agrupación obtenida sobre los tweets a las 20h de un sábado con aquella de a las 8h de un domingo, el computar agrupaciones sobre número de datos variable introduce 15.
(40) Capítulo 2. Antecedentes. cierto sesgo a tener en cuenta en la comparación. En este caso, también existe una relación de orden que define los conjuntos de tweets sobre los que se calculan las agrupaciones, esta relación de orden está basada en la posición de los datos en el flujo. Un flujo de datos S (o stream) es una secuencia infinita de tuplas, donde cada tupla t ∈ S está compuesta por valores asociados a los campos a1 , . . . , aF , en concreto, el valor de la tupla t asociado al campo i-ésimo es denotado por t.ai . En nuestro modelo, el flujo de datos puede indexarse por los números naturales, i.e., S = {tn }n∈N definiendo una relación de orden en las tuplas, (S, ), basada en la relación de orden natural de sus índices, esto es, tn1 tn2 si y sólo si n1 ≤ n2 donde se representa que la tupla tn1 llego al sistema con anterioridad a la tupla tn2 . También puede existir un campo especial, llamado timestamp, sobre el que se garantiza que el flujo se encuentra ordenado, es decir, tn1 tn2 si y sólo si tn1 .timestamp ≤ tn2 .timestamp donde el campo timestamp representa el tiempo concreto en el que la tupla se generó. En el ejemplo de Twitter cada tupla t representaría un tweet estando ordenados por su posición en el flujo o por el tiempo en el que el usuario escribió el mensaje, siendo los campos de las tuplas las palabras más representativas de cada tweet. En los sistemas de procesamiento de flujos de datos, se responden consultas continuas sobre un flujo de entrada, siendo el flujo de salida una secuencia de operaciones sobre el flujo de entrada. Concretamente, el sistema puede verse como un grafo donde los nodos corresponden a los diferentes operadores de la consulta y las aristas representan los flujos entre dichos operadores. Es decir, un operador produce un flujo de salida donde cada tupla está asociada a una fracción de tuplas consecutivas del flujo de entrada. Como ya se ha comentado, en los streams, existe una relación de orden o bien por la posición en el stream o bien por el campo especial timestamp; en estos operadores sobre streams se considera que dicho orden se mantiene. En el álgebra relacional sobre streams, SQuAl [Abadi et al., 2003], se establecen cinco operadores esenciales basados en el álgebra sobre las bases de datos tradicionales. Se distinguen dos tipos dependiendo del número de tuplas de entrada necesarias para computar una tupla de salida:. Operadores sin-estado (stateless), son aquellos en los cuales la tupla de salida depende únicamente de una tupla de llegada. Siendo los operadores: filter donde solo las tuplas que cumplen ciertas restricciones están en el flujo de salida; map donde la tupla de salida es el resultado de aplicar una, o varias, funciones a una única tupla de entrada; y union donde dos o más streams se juntan en un solo stream poniendo una tupla detrás de otra. Operadores con-estado (statefull), en los cuales una tupla de salida depende de un conjunto 16.
(41) Capítulo 2. Antecedentes. de tuplas consecutivas de entradas. Éstos son de dos tipos: los operadores aggregate donde una tupla de salida es la aplicación de una función (ej. suma, media, etc.) sobre un conjunto de tuplas de entrada consecutivas; y los operadores join que tienen como entrada dos flujos produciendo una tupla de salida para cada par de tuplas de entrada que satisfagan un predicado donde solo se miran un conjunto de tuplas de entrada consecutivas en cada stream.. Obsérvese que un algoritmo de agrupamiento no es un operador básico pero responde a un operador stateful, ya que el objetivo es encontrar grupos representativos sobre un conjunto de tuplas al carecer de utilidad el hecho de agrupar tuplas individualmente. Mientras que los operadores stateless no necesitan ninguna herramienta adicional para estar correctamente definidos, en los operadores stateful es necesario delimitar cual es el conjunto de tuplas consecutivas sobre el que se realiza el cómputo. Esta particularidad del procesamiento sobre flujos masivos de datos se debe a que por una lado las respuestas deben ser continuas, y además, el flujo es potencialmente infinito, es decir, no se puede esperar a tener todos los datos para producir una salida como ocurre en las bases de datos tradicionales. Hay dos enfoques principales los flujos de datos evolutivos y los flujos de datos bajo ventana deslizante. Los flujos de datos evolutivos, tienen una visión incremental donde para la tupla de llegada tn , una salida es producida sn haciendo referencia a todas las tuplas recibidas por el operador, {t1 , . . . , tn }. Pero en ciertas aplicaciones, incluir todo el histórico de datos sesga el resultado actual; por lo que una visión más apropiada es considerar solo la fracción más reciente. Esto es el flujo de datos bajo en ventana deslizante, donde una ventana es un conjunto finito de tuplas consecutivas de entrada sobre las que se realiza el computo, esta ventana se desliza a través del flujo para cubrir solo las tuplas más recientes. Las ventanas responden a situaciones como “calcular la suma sobre las últimas 1.000 tuplas” o “realizar la media de los últimos 5 minutos”. Formalmente, un flujo S = {tn }n∈N se divide en una familia de ventanas {Wm }m∈N definidas dos parámetros: el tamaño de la ventana, size, que determina el número de tuplas de cada ventana y el deslizamiento de la ventana, advance, que determina las tuplas descartadas cuando la ventana se desliza. Así se tienen dos tipos de ventanas:. Las ventanas basadas en las tuplas donde una ventana es un conjunto de tuplas consecutivas consistente en exactamente size tuplas que se desliza descartando exactamente advance tuplas, es decir, Wm = {tn ∈ S : (m − 1) × advance < n ≤ (m − 1) × advance + size}. Las ventanas basadas en el tiempo donde una ventana es un conjunto de tuplas consecutivas cuyos atributos timestamp distan a los sumo size y al deslizarse descartan las tuplas asociadas a 17.
(42) Capítulo 2. Antecedentes. las primeros advance unidades del timestamp, es decir, Wm = {tn ∈ S : (m−1)×advance < tn .timestamp ≤ (m − 1) × advance + size}. En la Figura 2.1 se muestra un ejemplo para el mismo stream según el tipo de ventana donde ambas tienen como parámetros size = 5 y advance = 3. En las ventanas basadas en las tuplas (Fig. 2.2a), la 32-ésima ventana corresponde a las tuplas W32 = {tn : 93 < n ≤ 98} y para la siguiente ventana solo se descartan las tres primeras tuplas W33 = {tn : 96 < n ≤ 101}. Por otra parte, en las ventanas basadas en el tiempo (Fig. 2.2b), se comprueba el campo timestamp para determinar que tuplas pertenecen a cada ventana. De esta manera, en la 16-ésima ventana están las tuplas con timestamp entre 46 y 50 inclusive, i.e., W16 = {tn : 45 < tn .timestamp ≤ 50}, que en el ejemplo corresponde a cuatro tuplas {t96 , t97 , t98 , s99 }. Para deslizar la ventana, se descartan las tuplas para los primeros 3 valores de timestamp lo que corresponde a 46, 47 y 48; y son cuatro tuplas. De esta manera, la 17-ésima ventana serán todos las tuplas con timestamps entre 49 y 53 inclusive. Flujo de datos:. s101. s100. s99. s98. s97. s96. s95. s94 W32. W33 (a) Ventanas basadas en las tuplas con size = 5 y advance = 3. Flujo de datos: timestamp:. s103. s102. s101. s100. s99. s98. s97. s96. 55. 52. 52. 52. 49. 47. 47. 46 W16. W17 (b) Ventanas basadas en el tiempo con size = 5 y advance = 3. Figura 2.1: Ejemplos de ventanas En el modelo de ventana adoptado se produce una tupla de salida tm por cada ventana Wn del flujo de entrada . Obsérvese que la llegada de una tupla no garantiza la salida de un resultado bajo este modelo. En el caso, de que el advance sea uno en las ventanas basadas en las tuplas, se produce una salida cada vez que llegue una tupla si han llegado tuplas suficientes para completar la primera ventana, esto es, una tupla de llegada tn produce una salida tn−size+1 si n ≥ size. En este caso, se adopta una notación más simple de las ventanas de manera que Wn es la ventana que tiene como tupla más reciente tn , es decir, Wn = {ti ∈ S : máx{1, n − N + 1} ≤ i ≤ n}. Esta Tesis se centra en el modelo de flujo de datos bajo ventana deslizante en donde la información más reciente es considerada para tener una representación más fidedigna del estado actual evadiendo 18.
(43) Capítulo 2. Antecedentes. el sesgo de considerar el todo el histórico de datos. En concreto, los algoritmos sobre streams bajo ventana deslizante deben mantener la información asociada a cada ventana en cada momento, es decir, por cada tupla de entrada sn el estado del algoritmo debe adecuarse a la ventana actual produciendo la inserción de la nueva información referente a la tupla y el borrado de información si es que la ventana se ha deslizado. Estos algoritmos tienen impuesto una sola pasada sobre las tuplas, por lo que una vez que la información ha sido descartada, ésta ya no volverá a estar accesible. En ambos enfoques de ventana se asume una cota superior N para el número de tuplas en las ventanas. En el caso de las ventanas basadas en las tuplas, esta cota es igual al tamaño de la ventana; mientras que en las ventanas basadas en el tiempo, esta cota no tiene una relación inicial con los parámetros de la ventana. La cota superior sobre el número de tuplas en las ventanas, es determinante para la complejidad de los algoritmos asociados a operadores stateful. En concreto, la necesidad de un procesamiento en tiempo cuasi-real pone como última meta el diseño de algoritmos con una complejidad temporal poli-logarítmica en el tamaño de la ventana, O(poly-log(N )). Por otra parte, si el algoritmo almacena al menos todas las tuplas de la ventana incurre en una complejidad espacial Ω(N ). En ciertas aplicaciones, una complejidad espacial Ω(N ) es prohibitiva siendo necesario su reducción a O(poly-log(N )). Esta reducción espacial, normalmente, se hace mediante la agregación de información de tuplas consecutivas, lo que produce que al descartar información por el deslizamiento de la ventana no se pueda determinar exactamente la información referente a la misma. Por lo que estos niveles de exigencia a complejidades O(poly-log(N )), tanto en espacio, como en tiempo, llevan la contrapartida de sacrificar la exactitud en ciertos cómputos, si bien estas aproximaciones deben estar controladas. En concreto, se definen diversos tipos de aproximaciones dependiendo de la naturaleza de los cómputos. Así para valores numéricos, una ε-aproximación de un valor x ∈ R es un valor x b ∈ R satisfaciendo que (1 − ε)x ≤ |x − x b| ≤ (1 + ε)x. Por su parte, en cómputos vectoriales, una ε-aproximación de un vector x ∈ RD es otro vector x b ∈ RD satisfaciendo que (1 − ε) ||x|| ≤ ||x − x b|| ≤ (1 + ε) ||x||.. 19.
(44) Capítulo 2. Antecedentes. 20.
(45) CAPÍTULO 3. Agrupaciones sobre flujos de datos. El problema de agrupamiento es una de las tareas principales de la minería de datos ya que permite describir de manera más sintética un conjunto de datos complejo identificando las interrelaciones entre ellos. Encontrar algoritmos eficientes que trabajen sobre flujos de datos es, todavía hoy, un desafío debido a las particularidades impuestas por este modelo. Este capítulo presenta un algoritmo de búsqueda de agrupaciones sobre flujos de datos, un análisis sobre su complejidad y una evaluación empírica de su comportamiento.. 3.1. Introducción Una de las aplicaciones más importantes del problema de k-medias es la segmentación de clientes. donde se busca una clasificación de los clientes de acuerdo a un conjunto de características de los mismos: hábitos de consumo, propiedades socio-culturales, etc. Normalmente esta clasificación permite una mejor comprensión del área a de negocio antes de la toma de decisiones de mercado. Por ejemplo, en el caso de la publicidad dirigida, donde se lanzan campañas de publicidad para atraer a un grupo concreto de clientes, la agrupación ayuda a determinar el grupo objetivo de la campaña. Además, el conocimiento de un cliente representativo del grupo es un instrumento de gran interés, contribuyendo a la interpretación del segmento de clientes al que se dirige la publicidad. Siendo el problema de k-medias un buen objetivo para la búsqueda de agrupamientos. Si enmarcamos la segmentación de. 21.
(46) Capítulo 3. Agrupaciones sobre flujos de datos. clientes en entornos como las compañías telefónicas o redes sociales, el volumen de datos a procesar es enorme. Por otra parte, se tiene una gran componente evolutiva porque el comportamiento de los clientes puede variar de manera abrupta por los últimos acontecimientos. Emergiendo el paradigma de flujo de datos bajo ventana deslizante como modelo de datos más acorde con las necesidades de estas aplicaciones que las bases de datos tradicionales. Desgraciadamente, los algoritmos al problema de k-medias en las bases de datos tradicionales [Xu and Wunsch, 2005] no son extensibles per se en entornos de flujos de datos, ya que dichos algoritmos iteran varias veces sobre los datos incurriendo en una complejidad espacial de orden lineal y una complejidad temporal de orden potencial. Mientras que el problema de k-medias tiene las dos anteriores ventajas: 1) provee de un representante por grupo y 2) proporciona una medida de bondad de los agrupamientos; dicho problema recae en una desventaja primordial, el conocimiento a priori del número de grupos k, ya que las soluciones óptimas pueden estar enormemente condicionadas por el número de grupos buscados. En entornos de flujos de datos, donde los datos evolucionan y, por ende, evoluciona el número de grupos, un enfoque estático y con conocimiento de antemano de este valor, no es viable. Se impone, por tanto, la necesidad de soluciones que no solo calculen elementos representativos de los grupos, si no que aporten cierta intuición sobre el número de grupos deseable.. 3.2. El problema de k-medias sobre streams Si bien sobre las bases de datos tradicionales el problema de k-medias consiste en la determina-. ción de k centros C que minimicen su función de coste (Ecuación 2.1). En los flujos de datos dada su naturaleza evolutiva se tiene que considerar la evolución de los datos por medio de las ventanas y también en el número de grupos buscados en cada momento. Generalizando el problema de k-medias en flujo de datos bajo ventana deslizante a la búsqueda del conjunto de km centros que minimice la función de coste en cada ventana Wm . En esta parte de la Tesis, el trabajo se centra en el modelo de ventana basada en tuplas, es decir, para la llegada de cada nueva tupla tn se considera la ventana Wn correspondiente a las N últimas tuplas recibidas en el sistema, i.e., Wn = {ti ∈ S : máx{1, n − N + 1} ≤ i ≤ n}. De manera que para cada tupla de entrada tn se quiere obtener un conjunto de kn centros Cn de manera que se minimice la función de coste cost(Wn , Cn ). Uniendo los requerimientos de los entornos de flujos de datos y el problema de k-medias, el objetivo se convierte en la búsqueda de algoritmos de agrupamiento que proporcione un conjunto de centros Cn para cada ventana Wn cumpliendo las siguientes requerimientos: 22.
Documento similar
[r]
Cedulario se inicia a mediados del siglo XVIL, por sus propias cédulas puede advertirse que no estaba totalmente conquistada la Nueva Gali- cia, ya que a fines del siglo xvn y en
Abstract: This paper reviews the dialogue and controversies between the paratexts of a corpus of collections of short novels –and romances– publi- shed from 1624 to 1637:
En junio de 1980, el Departamento de Literatura Española de la Universi- dad de Sevilla, tras consultar con diversos estudiosos del poeta, decidió propo- ner al Claustro de la
La primera opción como algoritmo de compresión para secuencias biológicas que sugirió la directora del proyecto fue la adaptación de los algoritmos de Lempel-Ziv al alfabeto formado
En esta sección se tratan las características que debe tener un compresor de secuencias biológicas para poder ser usado como herramienta en la construcción de los árboles de
Missing estimates for total domestic participant spend were estimated using a similar approach of that used to calculate missing international estimates, with average shares applied
The part I assessment is coordinated involving all MSCs and led by the RMS who prepares a draft assessment report, sends the request for information (RFI) with considerations,