Análisis de algoritmos de aprendizaje automático para la caracterización de usuarios de la Web
Texto completo
(2) Resumen En los últimos años, la realización de compras y todo tipo de trámites a través de Internet o aspectos como la presencia online de las personas han ido aumentando paulatinamente y no parece que esta tendencia vaya a invertirse a corto plazo. Esto ha provocado que los requisitos de rendimiento y personalización exigidos a estos servicios se hayan visto incrementados notablemente. Cada vez más empresas y organizaciones de todo tipo señalan la importancia que tiene una gestión adecuada de las trazas de sus usuarios para tener éxito en el mercado digital. A partir de ellas se puede obtener información que redunda en incrementos de las capacidades de adaptación y del valor de las aplicaciones. En este sentido, los avances en el campo de la ciencia de los datos y en concreto, en el aprendizaje automático, han supuesto una pieza clave en el desarrollo de técnicas que permiten analizar y extraer el máximo conocimiento posible a partir de los grandes volúmenes de datos generados por la actividad de la Web. El objetivo de este trabajo es realizar un estudio de las fases, técnicas y metodologías que actualmente se aplican en el transcurso de los proyectos de ciencia de datos y en la disciplina del aprendizaje automático. Una vez se hayan identificado aquellas más utilizadas, se aplicarán a un ejemplo realista perteneciente al ámbito de la minería web. En concreto, se desarrollarán modelos predictivos por medio de diferentes algoritmos de aprendizaje automático (regresión logística o reglas de asociación, entre otros) que permitan modelar el comportamiento de los usuarios y predecir la página web que van a visitar a continuación. Para ello se hará uso del paquete estadístico R y de la plataforma de desarrollo RStudio. Posteriormente, se procederá a determinar los principales obstáculos que se derivan de la aplicación de las técnicas del aprendizaje automático así como a determinar el rendimiento que pueden llegar a alcanzar en la práctica. Así mismo se propondrán posibles aplicaciones de los resultados obtenidos con la finalidad de proporcionar valor de negocio dentro de un entorno real. Finalmente, se desarrollarán una serie de componentes de visualización web que permitan presentar de forma gráfica los resultados extraídos del análisis así como interactuar con los distintos modelos en tiempo real. A partir de todo lo anterior se establecerá una comparativa entre los distintos modelos producidos y se destacarán las ventajas e inconvenientes de cada uno de ellos. Con todo ello se presentarán unas recomendaciones finales que recojan los factores a tener en cuenta a la hora de aplicar estos algoritmos al caso concreto de los datos de uso web.. Palabras clave: ciencia de datos, aprendizaje automático, minería web, R.. ii.
(3) Abstract In the recent years, online shopping and all kinds of electronic procedures over the Internet or aspects like people’s digital presence have been increasing gradually and it does not seem that this trend is going to change in the short term. This has caused the levels of performance and customization required to these services to increase notably. More and more, companies and organizations of all kinds indicate the importance of a suitable management of the users’ traces to be successful on the digital market. Based on this, it is possible to obtain information that leads to increments in the value and the adjustment capacities of applications. In this respect, the advances in the field of data science and in particular, machine learning, have supposed a key element in the development of technologies that allow to extract and analyze the maximum possible knowledge from the big volumes of information generated by web activity. The goal of this essay is to study the phases, techniques and methodologies currently applied in the course of data science projects and specifically, in machine learning. Once the most usual ones have been identified, they will be applied to a realistic example within the scope of web mining. Predictive models will be developed using different machine learning algorithms (logistic regression or association rules, among others) in order to model the behaviour of users and predict the site they will visit next. For this, R, a software environment for statistics, and its associated development platform RStudio will be used. Subsequently, some of the main obstacles resulting from the application of machine learning techniques and its perfomance will be determined. Also possible applications of the obtained results will be proposed in order to achieve business value in a real environment. Finally, several web display components will be developed to visualize the results obtained from analysis and interact with the different models in real time. From all this, a comparison between the produced models will be established and the advantages and disadvantages of each one will be highlighted. To sum up, final recommendations when applying these algorithms to web usage data analysis will be presented.. Key words: data science, machine learning, web mining, R.. iii.
(4) Agradecimientos El presente trabajo ha sido la culminación a cuatro años de trabajo y esfuerzo, y no habría sido posible sin el ánimo ni el apoyo de mi entorno. Me gustaría que estas líneas sirviesen para expresar mi más sincero agradecimiento a Juan Carlos Dueñas, tutor de este proyecto, que no sólo durante la realización de este trabajo sino también en los últimos tres años, no ha dejado de brindarme consejos y oportunidades con las que desarrollarme académica y personalmente. También querría agradecerle a José Manuel Navarro, por ayudarme a introducirme en el interesante mundo de la ciencia de los datos. Por último quiero dar las gracias a mi familia y en especial a mis padres, Sebastián y Carmen, por su cariño y apoyo incondicional. Soy lo que soy gracias a vosotros.. iv.
(5) Índice de contenidos Resumen. II. Abstract. III. Agradecimientos. IV. Índice de contenidos. V. Introducción y objetivos. 1. Estado del arte. 2. Introducción a la ciencia de los datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 2. Aprendizaje automático . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 4. Aspectos generales del aprendizaje automático . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 11. Aplicaciones en minería web . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 13. Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 15. Capítulo 1: Lectura, exploración y adaptación de datos. 17. 1.1 Obtención de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 17. 1.2 Carga de datos en R . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 17. 1.3 Exploración inicial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 18. 1.4 Adaptación de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 20. 1.4.1 Limpieza de valores erróneos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 20. 1.4.2 Ingeniería de variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 21. 1.5 Estadística descriptiva . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 24. Capítulo 2: Modelado y evaluación. 28. 2.1 Muestreo, división de los datos y métricas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 28. 2.2 Regresión logística . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 29. 2.2.1 Regresión logística multinomial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 29. 2.2.2 Regresión logística “one-vs-all” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 33. 2.3 Random Forests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 34. 2.4 Reglas de asociación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 36. 2.5 Ajuste y reevaluación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 38. 2.6 Resumen de resultados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 39. Capítulo 3: Presentación de resultados. 41. 3.1 Introducción a Shiny . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 41. 3.2 Desarrollo de componentes de visualización web interactivos . . . . . . . . . . . . . . . . . . . .. 42. v.
(6) Conclusiones finales. 46. Conclusiones personales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 47. Trabajo futuro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 47. Bibliografía. 49. vi.
(7) Introducción y objetivos La ciencia de los datos es una disciplina eminentemente práctica que en los últimos tiempos está gozando de una enorme popularidad, en gran parte debido al gran número de aplicaciones que tiene en todo tipo de ámbitos. Su principal valor reside en automatizar el proceso de extracción de información a partir de grandes cantidades de datos para que posteriormente ésta pueda ser utilizada con diversos fines. Uno de los campos donde ha experimentado un mayor desarrollo es en el comercio digital. La extracción de conocimiento a partir de los datos resultantes de la actividad de los usuarios en los portales web de las empresas con presencia online se ha convertido en una de sus principales fuentes de valor negocio. En muchos casos, esta información se utiliza como base principal para la toma de decisiones de empresa o para la introducción de cambios en los modelos de negocio empleados. Por tanto, este trabajo pretende recopilar el conjunto de técnicas que se utilizan en la actualidad y aplicarlas al desarrollo de un proyecto real de ciencia de datos dentro del dominio de los datos de origen web. De manera resumida, los objetivos generales perseguidos son: 1. Estudiar las distintas fases y metodologías que se utilizan a lo largo del desarrollo de los proyectos de ciencia de datos. 2. Revisar las bases y fundamentos matématicos del aprendizaje automático, una de las principales herramientas que permite obtener distintos tipos de modelos predictivos. 3. Aplicar todos estos conceptos a un ejemplo real englobado dentro del campo de la minería web: predicción de las visitas futuras de usuarios web. 4. Extraer conclusiones y recomendaciones acerca de la aplicación de las técnicas del aprendizaje automático a un dominio concreto como el de los datos de uso web. Para revisar todos estos puntos de manera clara y ordenada, el documento que nos ocupa estará estructurado de la siguiente forma: Estado del arte: visión general y actualizada de la disciplina de la ciencia de los datos. Capítulo 1. Lectura, exploración y adaptación de datos: descripción de las etapas iniciales de un proyecto de ciencia de datos, necesarias para dar un formato óptimo a los datos con los que se trabajará en fases posteriores. Capítulo 2. Modelado y evaluación: explicación del proceso de obtención de los distintos modelos predictivos y del rendimiento ofrecido por los mismos en base a diferentes métricas. Capítulo 3. Presentación de resultados: introducción a la herramienta Shiny y construcción de componentes de visualización web interactivos que permitan explorar los resultados obtenidos en las etapas anteriores. Conclusiones finales: resumen de los principales resultados y conclusiones obtenidas y descripción de posibles objetivos de trabajo futuro.. 1.
(8) Estado del arte Introducción a la ciencia de los datos En los últimos años, diversos hitos dentro del sector de las tecnologías de la información tales como la proliferación de sensores a consecuencia del surgimiento del Internet de las cosas, la gran cantidad de trazas generadas a cada instante por la actividad online de millones de personas o la masificación de las redes sociales, entre otros, han llevado a que el tamaño y el ritmo de producción de datos haya crecido enormemente. Al mismo tiempo, y siguiendo una evolución análoga a la establecido por la Ley de Moore, las capacidades de almacenamiento y procesamiento del equipamiento actual han crecido exponencialmente, eliminando así las barreras tecnológicas que tiempo atrás impedían trabajar con tales flujos de información. A la luz de esta transformación, conceptos como el Big Data se han convertido en una realidad de nuestros días. A grandes rasgos podría definirse como el conjunto de técnicas y tecnologías necesarias para almacenar, gestionar y aprovechar conjuntos de datos que tanto por su tamaño, su estructura y su velocidad de generación son difícilmente manejables. Dentro de la amalgama de actividades que conforman este todo, destaca la ciencia de los datos. En pocas palabras, el principal objetivo de esta disciplina es obtener conocimiento a partir de los datos. Normalmente suele ser confundida con la estadística, pero lo que la diferencia de ella es el enfoque holístico que introduce: engloba todas las fases que requiere el tratamiento efectivo de los datos, desde la recolección y transformación de los mismos hasta la presentación de la información extraída a partir de ellos [1]. La relevancia de esta actividad no ha parado de crecer, a medida que tanto en el ámbito académico como en el empresarial se adquiere noción del potencial que tiene. Para campos de investigación como la genómica o la física de partículas, se ha convertido en una herramienta esencial a la hora de conseguir extraer patrones útiles a partir de cantidades ingentes de información. En el mundo de las empresas con base tecnológica, ejemplos como el de Google o Amazon han mostrado al resto que la extracción de conocimiento (y por tanto, de valor para la empresa) a partir de los datos disponibles puede convertirse en un negocio altamente lucrativo por sí mismo. Ante esto, se está produciendo el surgimiento de un nuevo perfil profesional cada vez más demandado, el científico de datos (Figura 1). La definición más extendida establece que se trata de la intersección de las siguientes cualidades: Base estadística: para que los análisis realizados así como las conclusiones y recomendaciones extraídas de ellos sean válidas, es necesario tener un profundo conocimiento del fundamento matemático en que se basan las técnicas que se van a emplear. Habilidades de programación: conocimientos de algún paquete de computación estadística son básicos para poder desarrollar código que sea capaz de analizar grandes cantidades de información eficientemente. Uno de los más extendidos es R, en parte gracias a su completo repositorio de librerías CRAN. Conocimiento del dominio de negocio: a la hora de evaluar qué datos o métricas son las más importantes, un entendimiento previo del entorno específico de trabajo puede resultar determinante. Big data: en consonancia con lo ya comentado, cada vez más todo tipo de empresas se enfrentan con el problema de analizar grandes flujos de datos. Por tanto, a la hora de implementar los modelos desarrollados en un entorno real, es importante entender algunos conceptos básicos sobre algoritmos como MapReduce o conocer entornos de desarrollo como Hadoop o Spark. Como se ha visto, el trabajo de un científico de datos engloba numerosas tareas que abarcan disciplinas muy diversas. Por tanto, encontrar a un individuo que reúna todas las características necesarias para llevar a cabo un proyecto de ciencia de datos al completo puede resultar difícil. En este sentido, y para establecer una separación clara entre las distintas actividades involucradas, el ciclo de vida de los proyectos (Figura 2) se divide en una serie de etapas bien diferenciadas [2]:. 2.
(9) Figura 1: Perfil de un científico de datos. [3] Definición del objetivo: para que un proyecto pueda ser aprobado por los responsables de una organización, es necesario definir claramente el problema a resolver (normalmente implica que el científico de datos ha de formalizar los objetivos del cliente en algo cuantificable), por qué es conveniente emplear técnicas de ciencia de datos y no otras y por último, fijar una meta en el tiempo cuyo resultado sea medible. Con ello conseguimos establecer unos límites definidos a los objetivos del proyecto, que permitirán al equipo trabajar en una dirección concreta y a la vez, que los responsables del proyecto sepan qué pueden esperar de él. Búsqueda y gestión de la información: una vez que se ha fijado el objetivo, es necesario obtener los datos que se van a emplear para el desarrollo de la solución. Aspectos importantes a la hora de elegir unos datos u otros son la disponibilidad de los mismos, su tamaño o su calidad. Esta etapa se subdivide a su vez en una serie de tareas que resultan tremendamente importantes: exploración, visualización y limpieza de los datos. En ellas se busca obtener una noción general de qué información contienen los datos, cómo se estructuran éstos y qué cambios hay que aplicarles para que puedan ser utilizados. Un aspecto importante del ciclo de vida de los proyectos es que es iterativo. Por tanto, los resultados de una etapa pueden afectar a los de otras. Con bastante frecuencia ocurre que una vez que se realiza una exploración inicial de los datos disponibles, se reformulan los objetivos del proyecto para que éstos se ajusten a lo que realmente se puede llegar a hacer. Construcción del modelo: conociendo la forma en la que se organizan los datos y el problema que se quiere resolver, es momento de elegir el modelo predictivo concreto que se ajuste mejor a esos dos aspectos. La herramienta básica para la obtención de estos modelos es la disciplina conocida con el nombre de aprendizaje automático, la cual proporciona toda la algorítmica necesaria para poder calcularlos. Para esta fase de modelado o prototipado se suelen utilizar lenguajes de scripting (o interpretados) como Python, Octave o R. Evaluación del modelo: uno de los pasos más importantes es cuantificar correctamente los resultados del modelo obtenido. De esta forma puede ser comparado con otros distintos así como determinar si cumple con los estándares marcados. Presentación de resultados: conviene recordar que los proyectos de ciencia de datos, al igual que los de cualquier otro tipo, dependen de la financiación de los responsables de la organización. Por tanto, resulta vital extraer las conclusiones y métricas más importantes obtenidas en las fases anteriores y presentarlas de tal forma que los resultados de todo el trabajo sean fácilmente entendibles. 3.
(10) Despliegue del modelo: una vez que el científico de datos está satisfecho con el modelo obtenido, se procede a desplegar la solución en el entorno de producción real. Suele ser normal que las condiciones de éste último difieran bastante de las del entorno de modelado por lo que puede que sea necesario implementar el modelo con otras tecnologías (quizá herramientas de Big Data si el flujo de datos que hay que procesar es grande).. Figura 2: Ciclo de vida de un proyecto de ciencia de datos. [2]. Aprendizaje automático Como se ha comentado previamente, el aprendizaje automático proporciona las bases matemáticas y algorítmicas para la obtención de los modelos predictivos que constituyen la solución de los problemas propuestos. Suele ser considerada como una rama de la inteligencia artificial, que busca construir algoritmos que permitan a los ordenadores “aprender” a partir de conjuntos de datos y como resultado, producir un modelo que permita realizar predicciones basándose en dichos datos y no en instrucciones estáticas. Gran parte de sus fundamentos matemáticos solapan con la estadística y también está muy relacionado con el campo de la complejidad computacional, ya que la implementación de muchos de los algoritmos requieren un alto grado de optimización [4]. Existen numerosos criterios para clasificar la gran cantidad de algoritmos que se emplean en la actualidad. A continuación se detallan algunos de los más utilizados: En función de si los datos con los que se va a entrenar el modelo han sido previamente anotados con información que indique el resultado a predecir: • Aprendizaje supervisado: todas las instancias de los datos de entrenamiento incluyen, además de las variables de entrada, el resultado esperado (puede ser tanto una categoría o etiqueta como un valor numérico). Por tanto, es necesaria la figura de un “supervisor” que previamente procese los datos de entrenamiento incluyendo los resultados. • Aprendizaje no supervisado: el algoritmo se centra en establecer asociaciones y relaciones de familiaridad entre los datos presentes a su entrada.. 4.
(11) En función del problema concreto que resuelvan: • Regresión: obtención de un valor numérico continuo a partir de la ponderación de los datos de entrada por una serie de parámetros. • Clasificación: a partir de un conjunto de datos de entrada, asignación de una categoría del conjunto de valores posible. Existen clasificadores binarios (verdadero o falso) o múltiples (3 o más opciones). • Agrupamiento o clustering: agrupación de los datos en diferentes grupos en base a su “similaridad”. La métrica empleada para ello debe ser definida previamente. • Reglas de asociación: búsqueda de conjuntos de objetos que suelan aparecer juntos en los datos. A partir de ellos, se determina la probabilidad de que un objeto esté presente en función de la presencia o no de otros. Una vez que se han visto los criterios de clasificación que se emplean más comúnmente, se van a detallar algunos de los algoritmos más utilizados (el orden seguido es de menor a mayor complejidad): Regresión lineal Según las clasificaciones anteriores, se trata de un método supervisado que permite resolver problemas de regresión. Es con diferencia uno de los más sencillos a la par que potentes y por ello, es al primero al que se suele recurrir. Simplificando, se calcula el resultado como una combinación lineal de las variables de entrada, las cuales están ponderadas por un vector de parámetros. Dicho vector de parámetros será el modelo que obtengamos una vez hayamos pasado por la fase de entrenamiento. La ecuación que rige la regresión lineal es la siguiente: . y = f (x) = θ0 x0 + θ1 x1 + θ2 x2 + ... + θn xn = θT x con. x0 θ0 x1 θ1 x = , x0 = 1 y θ = ... ... xn θn. (1). Para entender mejor cómo funciona este algoritmo, conviene visualizar cuál sería el resultado de aplicar el modelo para el caso más sencillo, la regresión lineal unidimensional. Se puede ver (Figura 3) cómo a partir de una serie de datos de entrenamiento de los que se conoce el resultado esperado (supervisado), el algoritmo intenta encontrar el parámetro θ que minimice el error cuadrático medio de las predicciones respecto a los valores reales. Al tratarse del caso unidimensional, visualmente observamos que el modelo calculado equivale a una recta que toma un valor de entrada x, lo multiplica por el valor de la pendiente θ y obtiene un resultado f (x). La obtención de los parámetros θ es un problema clásico de optimización, el cual suele ser resuelto aplicando el algoritmo del gradiente descendente, una de las técnicas más antiguas para minimizar una función de coste convexa definida en un espacio n-dimensional. Para poder aplicarlo, es necesario definir primero dicha función de coste o error: m. m. 1 X 1 X T (i) J(θ0 , θ1 , ..., θn ) = (f (x(i) ) − y (i) )2 = ((θ x ) − y (i) )2 2m i=1 2m i=1. (2). siendo m el número de instancias que posee el conjunto de datos de entrenamiento, n el número de variables disponibles e y el resultado esperado para cada instancia. La función de coste que acabamos de definir es dependiente de los parámetros θ y calcula la suma de los errores cuadráticos medios del valor real todas las instancias de datos de entrenamiento respecto al valor predicho por el modelo para cada una. Si a esta función coste le aplicamos el gradiente descendente, el algoritmo acabará convergiendo a aquellos valores de θ que minimicen el valor total del error.. 5.
(12) Figura 3: Regresión lineal unidimensional. [2] Regresión logística A pesar de tener un nombre que suele inducir a errores, se trata de un método supervisado que permite resolver problemas de clasificación. En este caso, para mantener la simplicidad de la explicación, sólo se estudiará la regresión logística binomial aunque el caso multinomial es fácilmente extrapolable a partir del anterior. Comúnmente se suele pensar en la regresión logística como una adaptación de la regresión lineal para que ésta pueda resolver problemas de clasificación [5]. La herramienta matemática que permite llevar esto a cabo es la función sigmoide. Veamos cómo está definida la ecuación que rige la regresión logística: P (y = 1|x) = g(θT x) con. g(z) =. 1 1 + e−z. (3). Se puede ver que el resultado de esta función proviene de aplicar g(z), la función sigmoide, al resultado que obtendríamos de la regresión lineal. Para entender mejor qué consecuencias tiene este cambio, observemos el aspecto de la función sigmoide. Dicha función (Figura 4) presenta una asíntota horizontal en z = 1 cuando x → ∞ y en z = 0 cuando x → −∞. Por tanto, si al resultado de la regresión lineal, que por definición es un valor numérico continuo en el rango (−∞, ∞), le aplicamos la función sigmoide, el rango en el que ahora se encuentra el resultado pasa a ser (0,1). De esta manera, con fijar un umbral, digamos z = 0,5 , podríamos resolver nuestro problema de clasificación binaria: . si g(θT x) ≥ 0,5 si g(θT x) < 0,5. V erdadero F also. (4). Árboles de decisión Se trata de un método supervisado que puede ser empleado tanto para resolver problemas tanto de regresión como de clasificación (por mantener la brevedad, nos centraremos en el último caso). A partir del conjunto de datos de entrenamiento, se genera una estructura en forma de árbol que se compone de los siguientes elementos: Nodo raíz: es la raíz del árbol y a partir de él se realizan las decisiones que finalmente permitirán clasificar los datos. 6.
(13) Figura 4: Función sigmoide. [6] Reglas de decisión: son comprobaciones sobre las variables de la instancia que queremos clasificar y que permiten ir avanzando a través de los subsiguientes nodos del árbol. Nodos hoja: se encuentran en el último nivel del árbol y una vez se llega a ellos, se decide a qué categoría pertenece la instancia.. Figura 5: Ejemplo de árbol de decisión. [7] Una de la principales ventajas de los árboles de decisión es que ofrecen resultados muy intuitivos y visualizables. Sin entrar en los detalles matemáticos, los árboles de decisión buscan que las divisiones que se realizan a partir de las reglas de decisión sean lo más “puras” posibles, es decir, que todos los miembros del subconjunto de los datos resultante de una de estas divisiones realmente pertenezcan a la categoría que se les ha asignado. En el diagrama anterior (Figura 5), se observa un árbol que permite decidir si un pasajero del Titanic sobrevivió o no en función de su sexo. Los porcentajes en cada nodo indican la fracción del total de la población que engloba cada uno. Por otro lado, las parejas de números indican la probabilidad de que una instancia localizada en ese nodo tenga ese estado o no. Por ejemplo, el nodo hoja más a la izquierda engloba al 65 % del total de la población (aquellos con sexo masculino), y tienen una probabilidad de morir (estado 0) del 81 %. Random forests Al igual que los árboles de decisión, se trata de un método supervisado que puede ser empleado para resolver problemas tanto de regresión como de clasificación, lo cual tiene sentido ya que como veremos a continuación se tratan de una evolución de este algoritmo [8]. En aprendizaje automático es común que los modelos que mejores resultados proporcionan, sean combinaciones de otros, ya que en media los errores de cada modelo individual se ven compensados por el resto. Este es el. 7.
(14) caso de los random forests, que se componen de múltiples árboles de decisión. La decisión final es aquella categoría que haya sido elegida por el mayor número de árboles. Para la construcción de los distintos árboles que componen el modelo, es necesario introducir una componente de aleatorización que permita que los árboles sean diferentes unos de otros. Esto se puede conseguir principalmente a través de dos mecanismos: Extracción con reemplazamiento: para entrenar cada uno de los árboles, se selecciona una muestra aleatoria del total de los datos disponibles, con lo que se consigue que la construcción de cada uno de ellos sea ligeramente diferente. Sin embargo si existe una variable predominante en los datos, lo más probable es que siga apareciendo en los niveles superiores del árbol. Selección de variables: en un árbol las reglas de decisión se basan en el valor que toman las distintas variables para cada instancia de datos. Por tanto, si para cada árbol sólo seleccionamos un subconjunto del total de variables disponibles, conseguimos evitar que aquellas que son dominantes copen siempre los niveles más altos. Reglas de asociación Se trata de un método no supervisado que como su propio nombre indica, permite la obtención de reglas de asociación. El caso paradigmático de aplicación de este algoritmo es la recomendación de productos en base al contenido del carrito de la compra de un cliente. Definidas inicialmente por Rakesh Agrawal [9], las reglas de asociación tratan de encontrar grupos de objetos o variables que tiendan a aparecer juntas en el conjunto de datos de entrenamiento. Dicho conjunto de datos se compone de transacciones (cada una identificada con un ID), que son instancias concretas de grupos de objetos (denominados items) contenidos en nuestros datos de entrenamiento. Para el ejemplo del carrito, una posible transacción sería [leche, pan, aceite], compuesta por los ítems leche, pan y aceite. Estudiando los ítems que componen cada una de las transacciones, es posible determinar reglas de asociación a partir de ellas. Formalmente, una regla establece una relación del tipo X → Y , donde un antecedente X implica un consecuente Y (ambos miembros son conjuntos de ítems). Cada una de las reglas obtenidas, tiene asociadas las siguientes métricas: Soporte: porcentaje respecto del total de transacciones de los datos de entrenamiento en los que aparece el conjunto de ítems X de la regla. Determina el número de casos en los que ésta regla se podría aplicar.. sop(X) =. |X| siendo D el conjunto total de transacciones |D|. (5). Confianza: porcentaje respecto del total de transacciones que contienen el conjunto de ítems X, en los que aparecen conjuntamente X e Y . Determina la probabilidad de acierto de una determinada regla.. conf (X → Y ) =. |X ∪ Y | |X|. (6). Lift: soporte relativo de una regla respecto del soporte que tendría bajo el supuesto de independencia de su antecedente y su consecuente. Un valor de 1 indicaría que el soporte de una regla coincide con el esperado bajo condiciones de independencia.. lif t(X → Y ) =. sop(X ∪ Y ) sop(X) ∗ sop(Y ) 8. (7).
(15) Uno de los algoritmos más utilizados para el cálculo de reglas de asociación es Apriori, el cual se basa en buscar los ítems más repetidos dentro de un conjunto de transacciones y a partir de ellos, encontrar conjuntos cada vez mayores. En función de los umbrales de soporte y confianza que fijemos, obtendremos más o menos reglas. Agrupamiento “K-means” Nuevamente nos encontramos ante un método no supervisado que en este caso, es capaz de extraer grupos a partir de los datos proporcionados [10]. Se trata de un algoritmo iterativo que consta de los siguientes pasos: 1. En primer lugar se ha de decidir el número de grupos K en los que queremos que se dividan los datos. Normalmente esto suele venir marcado por la aplicación concreta en la que se esté trabajando. 2. A continuación, se inicializan aleatoriamente K centroides, que no son más que puntos situados en el mismo espacio que los datos. El motivo de que se inicien aleatoriamente se debe a que en ocasiones el algoritmo puede converger a un valor óptimo local. Por ello una práctica recomendada es ejecutar el algoritmo varias veces y quedarse con el mejor resultado. 3. Se recorren todas las instancias de los datos y se les asigna el centroide más cercano (para ello se calcula la distancia euclídea entre ambos puntos). Una vez hecho esto, se desplaza cada centroide a la posición correspondiente al valor medio de todas las instancias que le han sido asignadas. Este paso se repite hasta que el algoritmo converge.. Figura 6: Algoritmo K-means en el plano. [5] Para este algoritmo también es posible definir una función de coste. En este caso se busca minimizar la media aritmética de todas las distancias al cuadrado entre cada instancia de los datos y su centroide asignado: m. J(c(1) , c(2) , ..., c(m) , µ1 , µ2 , ..., µK ) =. 1 X (i) ||x − µc(i) ||2 m i=1. (8). siendo c(i) el índice del centroide asignado a x(i) y µi el i-ésimo centroide. Redes neuronales artificiales Existen numerosas configuraciones diferentes que permiten a las RNA funcionar tanto de forma supervisada como no supervisada. Nos centraremos en la redes perceptrón multicapa, que se corresponden con un método supervisado que permite resolver problemas de clasificación. A grandes rasgos, las redes neuronales son un modelo matemático que pretende emular la comunicación existente entre las neuronas del cerebro humano. La unidad que simula una neurona se denomina perceptrón (Figura 7). Se caracterizan por tomar la suma ponderada de una serie de valores a su entrada y aplicarles una función de activación (existen varias de ellas, siendo la sigmoide una de las posibilidades) para generar la salida. Un sólo perceptrón cuya función de 9.
(16) activación fuese la sigmoide, produciría un resultado equivalente al de la regresión logística. Sin embargo, el verdadero poder de las RNA reside en poner a trabajar varios perceptrones formando una red multicapa, permitiendo que el modelo acabe aprendiendo funciones no lineales mucho más complejas.. Figura 7: Diagrama del perceptrón. Perceptrón multicapa. [11] El perceptrón multicapa se compone de una capa de entrada (a través de ella se introducen las instancias de datos en la red) con tantos nodos como variables tenga el conjunto de datos, una o más capas ocultas (aquellas capas que no son ni la de entrada ni la de salida) con un número variable de nodos a elegir por el diseñador de la red y una capa de salida con tantos nodos como categorías tenga el clasificador. Por tanto, una vez que hayamos entrenado el modelo el resultado será una matriz con todos los pesos correspondientes a las interconexiones de los distintos perceptrones de nuestra red. Para dicho entrenamiento se utiliza el algoritmo de “propagación hacia atrás” [12], el cual se basa en hacer pasar por la red cada una de las instancias, calcular el error del valor de la capa de salida respecto al resultado esperado (supervisado) y propagar ese error hacia las capas anteriores de forma que los pesos de la red se adapten con el objetivo de minimizar dichos errores. Máquinas de vector soporte Se trata de un algoritmo supervisado que inicialmente se diseñó para la resolución de problemas de clasificación binomial [13] (a lo largo de los años han surgido distintas evoluciones que permiten aplicarlo a otros casos). De manera simplificada, podemos decir que una máquina de vector soporte representa cada instancia de los datos en un espacio n-dimensional (siendo n el número de variables para cada instancia) y encuentra aquel hiperplano que sea capaz de separar linealmente ambas categorías y que guarde la mayor distancia posible con la instancia más cercana a dicho hiperplano. Es por esto último que también se les conoce con el nombre de clasificadores de margen máximo.. Figura 8: Máquina de vector soporte para el caso bidimensional. [14]. 10.
(17) Aspectos generales del aprendizaje automático El entrenamiento de los distintos modelos dista mucho de ser una ciencia exacta y en la mayoría de ocasiones, hay que recurrir al ensayo error. Éste y otros problemas son inherentes a los proyectos de ciencia de datos y son uno de los aspectos mas importantes en la fase de modelado. A continuación vamos a revisar algunos de los más importantes: Sobreajuste Para entender este concepto, es necesario revisar primero cuál es el proceso seguido para entrenar un modelo: 1. Inicialmente, se dispone de un conjunto de datos con los que trabajar. Es necesario dividirlos en dos subconjuntos: un conjunto de entrenamiento y otro de prueba. Normalmente, se suele aplicar el principio de Pareto (80 % entrenamiento y 20 % prueba). 2. Se emplean los datos de entrenamiento para ajustar los parámetros del modelo. El objetivo de esta fase es que éste sea capaz de generalizar la información presente en dicho conjunto y poder realizar predicciones acertadas cuando lleguen nuevos datos. 3. Por último, para evaluar el rendimiento real del modelo, se utiliza el conjunto de prueba, el cual no ha intervenido en la fase de entrenamiento. El sobreajuste tiene lugar cuando se cuenta con un gran número de variables en el conjunto de entrenamiento, y el modelo se ajusta en exceso a dichos datos (J(θ) ≈ 0). De esta manera, si bien el desempeño sobre el conjunto de entrenamiento será excelente, fallará al aplicarlo sobre nuevos datos.. Figura 9: Modelo sobreajustado VS modelo "normal". [6] Éste es un problema clásico del aprendizaje automático y para evitarlo se emplean principalmente las siguientes dos técnicas: Selección de variables: una solución sencilla consiste en quedarse con un subconjunto del total de variables disponibles, con lo que el modelo resultante será necesariamente más simple. Regularización: este procedimiento se basa en modificar la función de coste de un algoritmo para que se penalice el sobreajuste. Para entender mejor este concepto, veamos cómo se aplica a la regresión lineal:. J(θ) =. m 1 X T (i) [ ((θ x ) − y (i) )2 + λR(θ)] 2m i=1. (9). siendo m el número de instancias que posee el conjunto de datos de entrenamiento, n el número de variables presentes en cada instancia e y el resultado esperado para cada instancia. 11.
(18) Observamos que se ha introducido un nuevo elemento en la ecuación, R(θ), que representa el término de regularización. Principlamente se utilizan los siguientes 3 tipos, cada uno con unas propiedades matemáticas diferenciadas: L1 o lasso: R(θ) =. Pn. L2 o ridge: R(θ) =. Pn. j=1. |θj |. 2 j=1 θj. Elastic net: combinación lineal de los dos anteriores, R(θ) = α párametro que pondera la presencia de uno u otro tipo.. Pn. j=1. |θj | + (1 − α). Pn. 2 j=1 θj. siendo α el. Resulta intuitivo ver que cuanto mayor sea el valor de λ, más contribuirán los parámetros θ a aumentar el valor de la función de coste. Por tanto, si se aplicase el gradiente descendente con un valor de λ elevado, el algoritmo tenderá a buscar valores de θ pequeños, lo que acabaría generando un modelo más sencillo y evitando el sobreajuste. Elección de parámetros (Validación cruzada) A la hora de entrenar muchos de los algoritmos de aprendizaje automático, es necesario configurar una serie de parámetros. Sin ir más lejos, en el caso anterior de regularización para la regresión lineal, es necesario elegir el parámetro de regularización λ. Sin embargo, no existe una regla o fórmula que nos permita saber a priori qué valor conseguirá el mejor resultado. La validación cruzada ofrece diferentes mecanismos para afrontar esta tarea: K-folds: los datos originales se subdividen en k subconjuntos y se selecciona uno de ellos como el conjunto de validación cruzada y el resto se deja como datos de entrenamiento. Se llevan a cabo por tanto k iteraciones. Leave one out: se reserva una instancia para la validación cruzada y el resto se usa como datos de entrenamiento. Son necesarias tantas iteraciones como instancias tenga el conjunto de datos original. Si bien los métodos anteriores reducen la variabilidad de los resultados al permitir realizar la media aritmética de las distintas pruebas, resultan computacionalmente intensivos. Una opción para evitarlo es emplear una alternativa simplificada donde se toma el conjunto de datos de entrenamiento y se subdivide en dos nuevos subconjuntos: el nuevo conjunto de entrenamiento y el conjunto de validación cruzada (de nuevo, se suele emplear el principio de Pareto). El proceso a seguir es el siguiente [6]: 1. Se seleccionan varios valores de prueba del parámetro que se quiere ajustar y se utiliza el conjunto de entrenamiento para obtener un modelo para cada valor posible del parámetro. 2. Se prueban cada uno de los modelos sobre el conjunto de validación cruzada y se selecciona el mejor (se acaba de encontrar el valor buscado para el parámetro). 3. Finalmente, para determinar el rendimiento final del modelo, se evalúa sobre el conjunto de datos de prueba (al probar con un conjunto diferente al empleado para elegir el parámetro, evitamos sesgar positivamente los resultados finales obtenidos). Evaluación de un modelo Hasta ahora se ha dado por supuesto que somos capaces de discernir si un modelo es “mejor” que otro. Sin embargo, no resulta una tarea trivial y requiere definir las métricas con las que se va a trabajar. A continuación vamos a estudiar qué se emplea para la casos de regresión y clasificación: Regresión: es el caso más sencillo. El mecanismo empleado es el mismo que se utiliza para definir la función de coste, el error cuadrático medio: 12.
(19) m. ECM =. 1 X (f (x(i) ) − y (i) )2 m i=1. (10). Se calcula la suma de las diferencias al cuadrado de los valores predichos respecto a los valores reales para cada una de las instancias del conjunto de prueba. Consecuentemente, tanto mejor será el modelo cuanto menor sea el error cuadrático medio. Clasificación: las métricas que se han convertido en el estándar de facto se extraen de los datos recogidos en la matriz de contingencia, que contiene todos los posibles resultados de la clasificación. Veamos cómo sería la matriz para el caso de la clasificación binaria:. Predicción / Real. Verdadero. Falso. Verdadero Falso. Verdaderos positivos (VP) Falsos negativos (FN). Falsos positivos (FP) Verdaderos negativos (VN). A partir de los datos contenidos en la tabla anterior, se calculan las siguientes métricas [2]: Accuracy:. V P +V N T otal ,. porcentaje total de aciertos que ha tenido el modelo probado.. P Precision: V PV+F P , porcentaje de las instancias que se han predicho en la categoría “Verdadero” que realmente lo son. P Recall: V PV+F N , porcentaje del total de instancias que pertenecen a la categoría “Verdadero” que han sido detectadas. N Specifity: V NV+F P , porcentaje de las instancias que se han predicho en la categoría “Falso” que realmente lo son. Esta métrica resulta especialmente crítica en ámbitos como el militar o el médico.. A partir de las métricas Precision y Recall, se extrae una nueva denominada “puntuación F”, una de las más utilizadas. Su principal valor reside en concentrar la información de ambas métricas en un único valor númerico por medio de su media armónica: F =. 2 ∗ P recision ∗ Recall con 0 ≤ F ≤ 1 P recision + Recall. (11). Aplicaciones en minería web Una vez que se han revisado algunos de los fundamentos en los que se basa el aprendizaje automático, resulta interesante estudiar su aplicación a un dominio concreto como es la minería web. Esta disciplina se encuadra bajo el campo de la minería de datos, que podría considerarse como la aplicación práctica de algunas de las técnicas de aprendizaje automático a la extracción de conocimiento a partir de grandes conjuntos de datos. En la siguiente tabla [15], podemos ver una posible clasificación de las distintas áreas en función del propósito y los datos empleados: Purpose / Data source Retrieve known data efficiently and effectively Finding new patterns or knowledge previously unknown. Any data. Text data. Web data. Data Retrieval. Text Retrieval. Web Retrieval. Data Mining. Text Mining. Web Mining. 13.
(20) El término “minería web” fue acuñado por primera vez por Oren Etzioni [16], que lo define como la disciplina que se encarga de la extracción de información y de patrones a partir de los recursos que se generan en la Web. Puesto que se trata de un campo que engloba ámbitos y actividades muy diversas, se subdivide a su vez en tres categorías: Minería del contenido de la web: se centra en la recuperación y el análisis del contenido de las páginas webs. Debido a que dicho contenido es altamente cambiante, es necesario el uso de arañas web inteligentes que recuperen la información cuando ésta se ve actualizada. Además, la gran mayoría de este contenido es de tipo textual por lo que es frecuente el uso de técnicas de procesado del lenguaje natural (PNL). Algunas investigaciones actuales relacionadas con este campo son el análisis del sentimiento o la web semántica. Minería de la estructura de la web: se basa en la utilización de la teoría de grafos para analizar la estructura de una página web (por medio del análisis de las etiquetas HTML que la componen) así como sus conexiones con otras webs (procesando los distintos hiperenlaces). Uno de los algoritmos más importantes que se engloban en esta categoría es “PageRank”, desarrollado por los fundadores de Google, que asigna una medida numérica de “importancia” a una página web en función de la cantidad de enlaces en otras webs que referencien a ella. Minería del uso de la Web: se detallará en más profundidad esta última categoría puesto que es en la que se encuadra este trabajo. El principal objetivo es analizar las trazas generadas por los usuarios de la web. Dichas trazas suelen provenir de tres fuentes principales [17]: • Registros de logs de servidores web: archivos de registro con información (IP origen, agente de usuario o recurso solicitado, entre otros) de todas las peticiones realizadas a las webs alojadas en ese servidor. • Recolección en el lado cliente: usualmente por medio de la introducción de código Javascript o applets de Java, es posible recoger información (siempre que la configuración de seguridad de su navegador lo permita) de la sesión de navegación de un usuario en concreto. • Recolección a nivel de aplicación: una aplicación web concreta puede identificar aquellas transacciones que resulten críticas para su negocio y extraer información a partir de ellas. Un ejemplo de ello en el sector de las compras por internet es almacenar qué artículos ha comprado un usuario o solicitar que proporcione una valoración de aquellos productos que más le han interesado. Actualmente el esfuerzo en I+D en esta disciplina eminentemente práctica no ha dejado de aumentar, debido principalmente a las numerosas aplicaciones que tiene en la industria. Por ejemplo en el sector del comercio electrónico, los sistemas recomendadores se han convertido en una de las principales fuentes de valor [18]. Tradicionalmente se basaban en técnicas de agrupamiento no supervisado. Sin embargo, al agregar grandes cantidades de usuarios en un número de categorías limitado (con la consiguiente dilución de las características distintivas de cada uno) las recomendaciones resultantes eran muy genéricas. En los últimos años se ha desarrollado enormemente la familia de técnicas conocidas con el nombre de filtrado colaborativo. Si bien estos algoritmos ya se conocen desde principios de los años 90, es en las estrategias de implementación donde se están haciendo los principales avances. Veamos cuál es el proceso básico que definen: 1. A partir de los datos recogidos para un usuario, se genera un vector N-dimensional (siendo N el numero total de productos en el catálogo) que refleje los artículos que haya adquirido o valorado positivamente. 2. A continuación se calcula una medida de la similitud entre el usuario al que queremos hacer la recomendación y el resto. Para ello se suele emplear la métrica basada en el coseno:. similitud(U~1, U~2) = cos(U~1, U~2) =. U~1 · U~2 siendo U~1 y U~2 vectores de dos usuarios. ||U~1||||U~2|| 14. (12).
(21) 3. A partir de los usuarios más similares, se extraen aquellos artículos (normalmente por votación) que aún no hayan sido vistos por el usuario a recomendar. Si bien esta aproximación al problema lleva utilizándose con éxito durante varios años, presenta serios problemas de escalabilidad con el crecimiento del catálogo y del número de usuarios. Por tanto, existe una tendencia entre las grandes empresas del sector a desarrollar nuevas implementaciones para intentar evitar dichos inconvenientes. Es el caso de Amazon y la técnica de filtrado colaborativo basado en ítems [19]. En ella, el enfoque no es comparar usuarios sino productos, lo que permite realizar previamente todo el cálculo de medidas de similitud entre artículos (aquellos que suelen ser adquiridos conjuntamente por los usuarios) de manera offline ya que las relaciones entre productos suelen ser mucho más estáticas que las que hay entre usuarios. Otra de las principales aplicaciones de la minería de datos de uso web es en los ámbitos del marketing digital o en la inteligencia empresarial de negocios con presencia online. A partir del análisis de dichos datos, es posible ajustar el formato o el orden en que se presentan los contenidos, lo que redunda en aumentos de los ratios de conversión o la efectividad de los anuncios online. Uno de los campos de investigación más activos en este sentido es el análisis de la secuencia de clics de un usuario [20]. Las principales herramientas para modelar estas secuencias son las cadenas de Markov aunque también se emplean las reglas de asociación para poder predecir qué páginas es más probable que visite un usuario en función de su historial anterior. Ante esta creciente demanda por parte de las empresas de aplicar la minería web a sus negocios para así intentar mejorar sus resultados, está surgiendo un nuevo concepto dentro del mundo de las TIC: Analytics as a Service (Figura 10). Al igual que la provisión bajo demanda de capacidad de procesamiento y almacenamiento se está convirtiendo en algo habitual gracias al desarrollo de la computación en la nube, este nuevo modelo de negocio pretende externalizar el procesamiento de datos de una organización y proporcionar interfaces sencillas a sus trabajadores para que puedan explorar rápidamente las conclusiones extraídas a partir de ellos. Por tanto, el valor añadido que aporta esta solución es doble: ahorro de las infraestructuras necesarias para el cómputo de los análisis y reducción del retardo introducido (tan importante en el comercio electrónico) por el desarrollo y aplicación de una solución propietaria.. Figura 10: Diagrama explicativo del modelo AaaS. [21] Aunque este nuevo modelo aún está en su fase inicial de desarrollo, es de esperar que sea una de las tendencias que cobren importancia en los próximos años. Por el momento, servicios como los ofrecidos por Google Analytics resultan pioneros en este campo.. Conclusiones En los últimos años la ciencia de los datos ha experimentado un enorme desarrollo, impulsado principalmente por el apoyo de la industria. Si bien los fundamentos en los que se basa ya se conocían desde hace tiempo, ha 15.
(22) sido el enfoque práctico que han introducido disciplinas como el aprendizaje automático lo que ha servido como detonante de la aplicación masiva de estos algoritmos a la resolución de problemas reales. Otro de los principales motivos de este crecimiento ha sido la consolidación del Big Data. Cada vez más, empresas de todo tipo se enfrentan con la tarea de no sólo gestionar ingentes cantidades de datos sino además, ser capaces de extraer valor de los mismos. Las distintas técnicas que proporciona el aprendizaje automático resultan fundamentales a la hora de abordar este problema de una manera rápida y eficiente. En resumen, se trata de un campo en plena expansión y al que progresivamente se están sumando todo tipo de organizaciones. Por tanto, es necesario que se formen profesionales con conocimientos suficientes en la materia que sean capaces de implementar este tipo de sistemas correctamente y optimizar las soluciones propuestas a medida que los volumenes de datos sigan creciendo en el futuro.. 16.
(23) Capítulo 1: Lectura, exploración y adaptación de datos A continuación se va a describir brevemente el proceso seguido durante las primeras etapas del proyecto, cuyo principal objetivo es obtener los datos que se utilizarán como base para el análisis posterior, realizar una exploración inicial de los mismos y aplicar las transformaciones que sean necesarias para que éstos tengan un formato adecuado que permita trabajar correctamente con ellos.. 1.1 Obtención de datos Los datos que se utilizarán a lo largo de este trabajo se encuentran en la siguiente web, http://1usagov. measuredvoice.com/. Este portal mantiene un registro público con información de los clics que se han producido en enlaces a páginas web del gobierno de los Estados Unidos que previamente han sido reducidos con la herramienta de acortamiento de enlaces Bitly. La elección de estos datos se debe a que su temática y contenido se ajusta perfectamente al dominio de la minería web, además de ser uno de los pocos de este tipo que se distribuyen gratuitamente. La información de los clics que han tenido lugar cada día se encuentra dividida en varios ficheros de texto plano comprimidos (éste no suele ser el formato habitual, siendo CSV uno de los más utilizados), por lo que para obtener la información correspondiente a un año completo es necesario descargar varios miles de archivos. Obviamente, realizar este proceso de forma manual requiere una gran cantidad de tiempo y esfuerzo, por lo que es recomendable optar por otras alternativas como es el uso de “arañas web”. En este caso se ha optado por Scrapy, un framework desarrollado en Python orientado al desarrollo de web crawlers. Entre otras características, permite seleccionar qué partes de una web queremos tratar por medio de selectores CSS y XPath. Para este ejemplo concreto, se ha empleado el selector css('a[href$=".gz"]') para guardar todos los enlaces necesarios en un fichero de texto. A continuación, se puede pasar este archivo como argumento de comandos como por ejemplo, wget, y así descargar toda la información de manera automatizada.. 1.2 Carga de datos en R El siguiente paso es cargar los datos en R, y para ello es necesario estudiar antes qué formato tienen. En nuestro caso, cada una de las líneas de los ficheros previamente descargados contiene un objeto JSON con información correspondiente a un clic. En R existen numerosos paquetes para trabajar con el formato JSON. Se ha optado por jsonlite por ser uno de los más mantenidos y optimizados. En concreto, se ha hecho uso de la función stream_in(), que lee línea a línea de un fichero y almacena el resultado en una de las posibles estructuras de datos de R. Conviene destacar dos aspectos importantes de este proceso: Por un lado, es importante tener en cuenta que R carga en memoria aquellos datos que estemos utilizando en un determinado momento. Por tanto, para poder trabajar con ellos necesitamos disponer de una cantidad de RAM suficiente así como de un sistema operativo de 64 bits que permita sacar el máximo rendimiento de la misma. Por otro, lo más probable es que los datos de los que dispongamos contengan fallos que impidan su correcta carga. En nuestro caso algunos de los objetos JSON están mal formados, lo que origina errores y que se interrumpa la lectura del fichero. Para solucionarlo se ha optado por modificar el código fuente de la función stream_in() introduciendo una estructura del tipo tryCatch en torno al comando que se encarga de añadir las líneas leídas al buffer de datos. De esta manera, conseguimos leer el fichero completo descartando aquellas líneas que sean incorrectas y almacenando el resto. Un vez que ya tenemos los datos cargados en la plataforma, lo más recomendable es guardarlos en el formato nativo de R, .RData. Permite guardar cualquier objeto que tengamos cargado en memoria en un archivo binario, siendo éste un formato compacto y que es leído rápidamente (a cambio perdemos compatibilidad con otras plataformas). De esta manera, ya tendremos la información preparada para poder trabajar con ella de manera sencilla en R. 17.
(24) 1.3 Exploración inicial Una vez que se han cargado los datos dentro de la plataforma de trabajo, el primer paso necesario es realizar una exploración preliminar de los mismos. De esta manera, se consigue una visión inicial de qué y cuánta información se dispone, cómo está estructurada o qué tipos de transformaciones se deberán aplicar sobre ella. Por tanto, en esta sección se a va a proceder a describir el estudio de las distintas variables que definen a nuestro conjunto de datos, el cual contiene un total de 13212933 instancias que se corresponden con el periodo de tiempo del 1 de enero al 17 de mayo de 2013. Cada una de estas instancias de datos contiene información asociada al clic de un usuario cualquiera. Agente de usuario Este campo contiene una string (tipo character en R) con información del agente de usuario empleado para acceder a la página web. Dicha información va incluida en la cabecera “user-agent” de las peticiones HTTP y contiene, entre otros, detalles de la aplicación o el equipo desde el que se ha accedido al recurso web. En total hay 269796 strings de agente de usuario distintas. Veamos cómo están distribuidas (una herramienta básica en R es la función summary(), que automáticamente calcula una serie de estadísticos de la variable que se le indique): # Obtenemos las frecuencias de repetición de los distintos agentes de usuario frecuencias <- sort(table(data[["User-Agent"]]), decreasing = TRUE) summary(frecuencias) Min. 1st Qu. Median 1 1 1. Mean 47.6. 3rd Qu. 3. Max. 520805. # 3 agentes de usuario más utilizados frecuencias[1:3] > Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0), 520805 > Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0), 515508 > Mozilla/5.0 (iPhone; CPU iPhone OS 6_1_3, AppleWebKit/536.26), 350668 El formato actual en el que se encuentran los datos no permite realizar un análisis adecuado de la información que proporciona esta variable. Por un lado no nos permite agregar agentes de usuario que compartan algunas carácteristicas puesto que cualquier diferencia entre las cadenas de texto hará que se consideren diferentes (de ahí que la mayoría aparezcan muy pocas veces). Por otro, no se puede realizar un estudio pormenorizado de los distintos datos que contiene el agente de usuario (SO, dispositivo y navegador) ya que están condensados en una string. Código de país Como su nombre indica, esta variable character contiene un código de 2 letras que identifica el país desde el que se ha realizado el clic. Algunas estadísticas interesantes: Se ha accedido a los enlaces desde un total de 212 países diferentes. Los 5 países con más clics, por orden, son: Estados Unidos, Gran Bretaña, Canadá, Japón y Australia. Un 81.34 % del total de los usuarios procede de los 5 países anteriores. Geo Región Código de 2 caracteres alfanuméricos que representa en qué subdivisión política (provincias, cantones, . . . ) de un país fue realizado el clic. Por ejemplo, para el caso de Estados Unidos éste código es una abreviatura del estado. 18.
(25) Ciudad Campo con el nombre de la ciudad en la que se encuentra el usuario que ha realizado el clic. Si estudiamos cómo se distribuyen los valores de esta variable:. 200000. Nº de clics. 0.75 0.50. 150000 100000 50000. 0.25. 20000. 40000. 60000. Ciudades. London. Milwaukee. 0. Chicago. 0.00. New York. 0 Washington. Densidad acumulada. 1.00. 5 ciudades con más clics. Observamos que como es lógico, gran parte de las ciudades con un mayor número de visitas pertenecen a Estados Unidos (destaca Washington puesto que la mayor parte de las webs analizadas son de caracter institucional). Por otro lado, estudiando la gráfica de densidad acumulada, se aprecia que una gran cantidad del total de clics se concentra en torno a las 100 ciudades más repetidas (de un total de ~57K ciudades). Latitud y longitud Esta variable contiene información de las coordenadas en las que se encuentra el usuario que realizó el clic. De todas las variables relacionadas con la geolocalización, ésta es la que proporciona la información más precisa. Huso horario (UTC) Contiene una cadena de texto que indica la zona horaria en la que se realizó el clic. En comparación con el resto de variables con información de geolocalización, es de las que menos granularidad ofrece. Usuario conocido Variable binaria que indica si un usuario específico ha visitado previamente la web sobre la que se ha producido el clic.. 0.00/1.00. legend 0.75. 0.25. Conocido Desconocido. 0.50. 19.
(26) Se aprecia que cerca de dos tercios de los usuarios son nuevos. Esto se explica debido a la naturaleza institucional de las páginas web visitadas: los usuarios acceden a los distintos portales en busca de información concreta y una vez obtenida, es común que no vuelvan a entrar hasta pasado un cierto tiempo. “Global Bitly Hash”, “Encoding User Bitly Hash” y “Encoding User Login” Los dos primeros campos contienen información relacionada con los hashes que se asocian al enlace acortado por Bitly. El tercero, contiene el nombre del usuario de Bitly que acortó el enlace. Toda esta información es especifica de la aplicación de acortamiento de enlaces, por lo que resulta de poco interés. Idioma aceptado Valor del campo “Accept-language” de la cabecera del protocolo HTTP. “Long URL” y “Referring URL” El primer campo contiene la URL asociada al enlace acortado por Bitly sobre el que ha hecho clic un usuario. El segundo, es la URL en la que se encontraba el usuario antes de clicar en el enlace acortado. El formato de ambos campos es de tipo character, conteniendo la URL completa en una cadena de texto. De manera similar a lo que ocurría con la variable del agente de usuario, para poder agregar y categorizar mejor la gran cantidad de URLs será necesario dotarlas de un formato diferente. “Bitly URL” Cuando una URL es acortada en Bitly, el enlace resultante se compone de dos partes: el dominio y un hash que identifica el enlace unívocamente. En el caso más general el dominio suele ser bit.ly. Sin embargo, en ocasiones este dominio ofrece información de la procedencia del enlace que ha sido acortado. Algunos ejemplos son 1.usa.gov o go.nasa.gov. Si bien esta información puede resultar interesante, supone una pérdida de granularidad notable con respecto al campo “Long URL” descrito anteriormente. Marca de tiempo del hash y marca de tiempo del clic La primera variable contiene la marca de tiempo del instante en el que se generó el enlace acortado por Bitly. La segunda, el instante en el que ese enlace acortado fue hecho clic por un usuario. El formato en el que se encuentran ambos campos se corresponde con el de Tiempo Unix (segundos transcurridos desde el 1 de enero de 1970). Por ejemplo, podemos calcular el tiempo medio aproximado que transcurre entre la creación de un enlace y un clic sobre él: 3 meses.. 1.4 Adaptación de datos Una vez finalizada la exploración inicial, tenemos un conocimiento suficiente de los datos de los que disponemos, qué estructura tienen y cómo están distribuidos. Por tanto, llega el momento de acometer la que resulta una de las etapas decisivas de todo proyecto, la adaptación de los datos. El principal objetivo de esta fase es conseguir dotar a los datos de un formato que permita extraer la máxima información de los mismos, lo que posteriormente tendrá un impacto determinante en el rendimiento que obtengamos de los modelos desarrollados. 1.4.1 Limpieza de valores erróneos El primer factor a tener en cuenta es que para muchas de las instancias que componen nuestro conjunto de datos, puede que el valor de alguna de las variables no esté disponible. En R, este tipo de valores reciben el nombre de NA. La gran mayoría de las funciones de R lanzan errores cuando se introducen datos que contienen este tipo de valores por lo que es necesario suprimirlos de alguna manera. A continuación vamos a ver qué porcentaje de NA hay presente en cada una de las columnas de nuestros datos:. 20.
(27) Variable Geolocalización URL origen URL destino Agente de usuario Usuario conocido Marca de tiempo. Porcentaje NAs 17.56 % 5.58 % 2.74 % 2.72 % 2.72 % 2.72 %. Una vez que conocemos el número de NA presentes en cada variable, hay que tener en cuenta los siguientes 2 aspectos: 1. Primero hay que determinar qué representan estos valores, ya que si bien puede significar que no se dispone del valor para esa variable, también podrían estar indicando la existencia de una nueva categoría (por ejemplo, para una variable categórica que indicase la situación laboral de un individuo, la ausencia de valor podría indicar que se encuentra desempleado). En nuestro caso, suponemos que la falta de algunos de los datos se debe a la configuración de seguridad (cookies bloqueadas o geolocalización deshabilitada) particular de cada usuario. 2. Lo siguiente es decidir qué acción se va a tomar para resolver este problema. Principalmente, existen 2 opciones: sustituir los NA con un nuevo valor (por ejemplo, para variables numéricas podríamos optar por susituir por la media del resto de valores) o eliminar aquellas instancias que contengan alguno. En este trabajo se optará por la segunda opción ya que se cuenta con una sobrada cantidad de información. Para eliminar estos valores basta con aplicar la función na.omit(), quedándonos con un total de 10119872 instancias. 1.4.2 Ingeniería de variables Este concepto es, en palabras de muchos expertos [22], “un sinónimo de aprendizaje automático aplicado”. Como ya mencionamos anteriormente, los resultados del modelo que produzcamos dependerán en gran medida de la calidad de las variables que le facilitemos. La ingeniería de variables tiene por tanto el objetivo de transformar los datos de entrada en variables útiles y que consigan extraer la máxima información posible de ellos. En general todos los algoritmos de aprendizaje automático son capaces, en mayor o menor medida, de extraer la estructura subyacente de los datos presentes a su entrada. Por consiguiente, al aumentar la complejidad de las variables introducidas se consigue una mayor flexibilidad a la hora de elegir el tipo de modelo predicitivo concreto. A continuación se detallan las transformaciones que han sido aplicadas a las variables de nuestro conjunto de datos: Agente de usuario Como ya pudimos ver en la exploración inicial, el contenido de este campo no posee una estructura definida y además, no permite el análisis por separado de los distintas partes de las que se compone. Para conseguir dotar a estos datos de un formato más útil, se han procesado haciendo uso de la librería de Python ua-parser, que permite extraer de manera pormenorizada la información de los agentes de usuario contenida dentro del texto. De esta manera, cada cadena se ha subdividido en tres nuevas variables de tipo factor (este tipo es similar a los enum de Java): agente de usuario, sistema operativo y dispositivo. A continuación se muestran las 5 categorías más repetidas para cada una:. 21.
(28) 8e+06. 3e+06. 4e+06 6e+06. 3e+06. 4e+06. 2e+06 1e+06. 2e+06. 1e+06. Sistemas operativos. Android device. iPod. Mac OS X. Android. Windows XP. iOS. Windows 7. Android. Firefox. Chrome. Mobile Safari. IE. Agentes de usuario. iPad. 0e+00. 0e+00. iPhone. 0e+00. PC. 2e+06. Dispositivos. Si bien hemos conseguido desagregar y homogeneizar la información presente en los agentes de usuario, el nivel de granularidad obtenido resulta excesivo ya que para cada variable contamos con miles de opciones posibles, con una gran mayoría de ellas teniendo un papel marginal en los datos. Por tanto, se ha optado por formar tripletas con las variables anteriores y definir una nueva variable denominada “ua_profiles” que agregue los perfiles de agente de usuario más utilizados y pueda ser usada en nuestros modelos:. Firefox, Windows XP, PC Chrome, Windows XP, PC Chrome, Mac OS X, PC Safari, Mac OS X, PC Mobile Safari, iOS, iPad Firefox, Windows 7, PC IE, Windows XP, PC Chrome, Windows 7, PC Mobile Safari, iOS, iPhone IE, Windows 7, PC 0e+00. 2e+05. 4e+05. 6e+05. 8e+05. 10 perfiles más utilizados URLs de origen y destino Sabemos de antemano que nuestros datos incluyen las URLs completas en forma de cadenas de texto, lo que impide hacer un análisis agregado de las mismas (p.ej: www.nasa.gov/main y www.nasa.gov/about serían consideradas como webs diferentes). Para poder categorizar mejor la gran cantidad de URLs y por tanto, extraer información más útil, se han procesado utilizando algunas de las funciones disponibles en R para trabajar con expresiones regulares (regexpr() entre otras). Por un lado, se han filtrado las URLs de ambos campos para dejar sólo la información correspondiente al dominio y se ha convertido el tipo de character a factor, lo que permite agregar las webs del mismo dominio. Por otro, se ha generado una variable binaria adicional que indica si la conexión a la web de destino se ha realizado de forma segura (HTTPS) o no (HTTP).. 22.
Documento similar
La campaña ha consistido en la revisión del etiquetado e instrucciones de uso de todos los ter- mómetros digitales comunicados, así como de la documentación técnica adicional de
You may wish to take a note of your Organisation ID, which, in addition to the organisation name, can be used to search for an organisation you will need to affiliate with when you
Where possible, the EU IG and more specifically the data fields and associated business rules present in Chapter 2 –Data elements for the electronic submission of information
The 'On-boarding of users to Substance, Product, Organisation and Referentials (SPOR) data services' document must be considered the reference guidance, as this document includes the
In medicinal products containing more than one manufactured item (e.g., contraceptive having different strengths and fixed dose combination as part of the same medicinal
Products Management Services (PMS) - Implementation of International Organization for Standardization (ISO) standards for the identification of medicinal products (IDMP) in
Products Management Services (PMS) - Implementation of International Organization for Standardization (ISO) standards for the identification of medicinal products (IDMP) in
This section provides guidance with examples on encoding medicinal product packaging information, together with the relationship between Pack Size, Package Item (container)