Hola, soy Juliá Minguillón y en este video, vamos a ver un ejemplo de visualización de grafos. Primero, veremos los conceptos básicos alrededor de la idea de grafo, luego, veremos diferentes ejemplos de redes sociales que generan grafos que podemos analizar y visualizar. Concretamente, nos centraremos en Wikipedia, la versión en castellano, que es un grafo suficientemente grande como para poder extraer información de él, y veremos un ejemplo donde analizaremos el grafo de Wikipedia para extraer información del mismo. Finalmente, veremos algunos pros y contras de la herramienta Gephi para la visualización de grafos. Vamos a ver, ahora, unos conceptos básicos relacionados con los grafos. La idea básica es que el análisis de redes sociales suele generar datos en formatos no tradicionales, en lugar de los típicos datos en formato tabular, aparecen otros formatos donde nos interesa más la relación entre elementos que los propios elementos en sí mismos. Así, que además de los datos de cada elemento, nos interesa representar las relaciones entre ellos. Un grafo, que es esta estructura que permite representar estas relaciones, está compuesto por nodos, que son los elementos, y por aristas o enlaces entre nodos, que son las relaciones. Si las aristas no son dirigidas, que van indistintamente de un nodo a otro, se llaman así, y cuando las aristas están dirigidas y van de un nodo a otro se llaman enlaces. La idea es que el análisis de comunidades nos puede revelar estructuras que aportan información adicional sobre los datos, en este caso, las páginas de Wikipedia o los usuarios de una red social, etcétera, etcétera. Redes sociales hay muchas y, de hecho, han triunfado como ejemplo de aplicación de la web dos cero. Muchas de ellas tienen centenares de millones de usuarios. Así, por ejemplo, Facebook tiene ya más de 1.280 millones de usuarios, Twitter está por encima de los 650 millones de usuarios, Instagram está por encima de los 300 millones y una red profesional como LinkedIn está por encima de los 200 millones. De estas redes sociales, la estructura de grafo emerge de las relaciones entre los usuarios que forman parte de la red social, de forma que las relaciones, por ejemplo, "amigo" en el caso de Facebook, "conoce" o "sigue" en el caso de Twitter, etcétera, etcétera. También hay otras redes que emergen de la estructura de los contenidos, como es el caso de Wikipedia. La Wikipedia en español, en su versión española, fue creada en el año 2001 y se trata de un entorno colaborativo para la creación de contenidos en abierto. Es, de hecho, una enciclopedia en línea, con la idea de que todo el contenido que tiene es enciclopédico. A fecha de octubre 2017, la Wikipedia en español contenía casi 4.300.000 páginas y 75 millones de enlaces, lo que nos da una idea del tamaño del grafo que intentamos representar. De todo este volumen de páginas y enlaces, más de 1.300.000 son de contenido, es decir, páginas de Wikipedia propiamente dichas y, entre ellas, hay 54 millones de enlaces. Estas páginas acumulan más de 90 millones de ediciones desde el 2001, realizadas por más de 9 millones de editores, de los cuales 960.000 son registrados, es decir, que podemos saber quiénes son y hacer un seguimiento de su actividad en la Wikipedia. Para analizar el grafo de Wikipedia, utilizaremos Gephi. Gephi es un entorno para el análisis y visualización de grafos. Como el propio Gephi nos indica, tiene una limitación hasta 100.000 nodos y 1 millón de enlaces, lo cual, como podemos ver, está muy por debajo del grafo de Wikipedia que hemos comentado con anterioridad. Gephi nos permite hacer operaciones sobre los datos, es decir, sobre el grafo. Podemos realizar un filtro o selección de los nodos y aristas o enlaces que aparecen en el grafo, podemos hacer zooms, podemos dibujar el grafo utilizando diferentes layouts y podemos calcular diferentes indicadores relacionados con la teoría de grafos: la centralidad, la modularidad, etcétera, etcétera. Si intentamos analizar Wikipedia con Gephi, como hemos observado, no es posible cargar el grafo entero de páginas y enlaces entre las páginas de la Wikipedia con Gephi debido a su tamaño. Es necesario filtrar los nodos y/o los enlaces de acuerdo a algún criterio, por ejemplo: el número de enlaces entrantes en una página, el número de enlaces salientes de esa página hacia las otras, o el número de ediciones que se han hecho sobre la página, o el número de editores registrados que han participado en la edición de la página. Todas estas cantidades son distribuciones de larga cola, donde una minoría de elementos concentra la mayoría del criterio que estamos analizando. Por ejemplo, en muchos casos, la mayoría de ediciones de una página está realizada por una minoría de usuarios y al revés. Veamos entonces cómo podemos analizar la estructura de comunidades en Wikipedia. Tal como está construida Wikipedia, las páginas se enlazan entre sí de acuerdo a su relación temática, de forma que cuando en una página aparece un concepto, éste se puede enlazar a su página respectiva mediante el uso de un enlace, de forma que el usuario, con un solo clic, puede saltar entre dos temas. Es de suponer, que los contenidos de cada página y los enlaces que hay en cada página tienen una cierta relación temática entre ellos. La idea es que una mayor cantidad de enlaces, entre diferentes grupos de páginas puede indicar una cierta estructura de comunidad temática. Así, es posible realizar un análisis basado en clústers, de forma que se pueden generar grupos o clústers con páginas agrupadas temáticamente y así, poder descubrir características del clúster, es decir, qué páginas o grupos de páginas forman cada clúster, así como las relaciones entre clústers para observar si hay alguna relación estructural entre ellos. El hecho es que en Wikipedia, muchas páginas reciben o tienen pocos enlaces. Siguiendo con esta idea de las distribuciones de larga cola, la mayoría de enlaces están concentrados en pocas páginas y hay muchas páginas que sólo tienen un enlace de entrada y un enlace de salida. Por lo tanto, utilizando un filtro con una de estas condiciones, es posible reducir el grafo inicial a uno que pueda ser tratado por Gephi teniendo en cuenta sus limitaciones. Así, lo que hacemos es que, para cada página, se calcula el número de páginas que enlazan a ella y a las que la página enlaza. Utilizando la Wikipedia en castellano con la versión del octubre de 2017, cada página se enlaza 34 veces en promedio, pero podemos observar que el 15 por ciento % sólo se enlaza una vez y el 66 por ciento %, sólo 10 o menos. Es decir, muy pocas páginas, o una poca cantidad de páginas se enlazan un número grande de veces. Igualmente, cada página apunta a 43 otras páginas en promedio, pero el 27 por ciento % sólo enlaza a 10 o menos. Por lo tanto, jugaremos con estos dos valores para intentar crear una versión reducida del grafo de Wikipedia, utilizando aquellas páginas que tengan tanto de entrada como de salida 500 o más enlaces. Este ejemplo es completamente ficticio, en el sentido de que está pensado para crear la visualización que veremos a continuación. Para un análisis más fino de las estructuras de comunidades de Wikipedia, deberíamos utilizar un número menor a este 500. Cuando cargamos Gephi para analizar el grafo, que hemos generado sobre las páginas y los enlaces entre ellas, vemos que, primero, lo que nos permite Gephi es observar para cada elemento, cada enlace, el origen, que es el nodo, el destino, que es otro nodo, y nos dice que es un enlace dirigido y le asigna un identificador. También le asigna un peso, que quiere decir que entre esta página número uno y esta página 128, sean las que sean, hay 11 enlaces. Esto es posible porque en Wikipedia no hay limitación para enlazar dos páginas entre sí. Una vez hemos cargado los datos, que vienen de un fichero CSV o de otros formatos estándar, Gephi nos permite realizar cálculos, como en este caso, la modularidad. La modularidad es un algoritmo que calcula estructuras que simulan clústers de páginas, que tienen una fuerte relación entre sí. En este caso, después de calcular la modularidad, Gephi ha generado este conjunto con 16 clases, de las cuales vemos que las últimas, que aparecen todas en gris, son clases muy pequeñas que contienen un número muy pequeño de páginas, así que sólo nos interesará analizar los grupos de páginas con mayores número de páginas en ellas. Finalmente, el grafo que ha generado Gephi es la visualización que vemos aquí, nos pinta una estructura de nodos y enlaces. Hay que recordar que, aquí, hay unos cuantos miles de nodos y unas cuantas decenas o centenares de miles de enlaces, de ahí, este tipo de estructura, de forma que ahora, nosotros si lo coloreamos por comunidades que hemos calculado con el propio Gephi, podemos observar que hay diferentes zonas de color que indica que hay diferentes zonas o comunidades más o menos concentradas. Si analizamos el contenido, es decir, el contenido de las páginas de Wikipedia de cada una de estas comunidades, podemos observar, por ejemplo, que en la zona superior hay una comunidad pequeña de páginas relacionadas con la lucha libre. En cambio, si nos vamos a esta zona de aquí y vemos que hay una zona de color, más bien, rojo, vemos, cuando analizamos su contenido, que son páginas relacionadas con México. Y finalmente, esta comunidad más grande de color naranja son todo páginas relacionadas con España y su historia y geografía. Este es un ejemplo pequeño y ficticio de cómo podríamos utilizar Gephi para analizar grafos como, en este caso, el de Wikipedia. Veamos, finalmente, los pros y contras de Gephi como herramienta para analizar y visualizar grafos. Los pros es que es un entorno completo de análisis y visualización, es posible cargar un grafo, manipularlo, calcular cosas sobre él y visualizarlo de acuerdo a estos cálculos realizados. Es una herramienta de código abierto y, por lo tanto, es extensible mediante "plugins", de forma que es posible ir añadiendo funcionalidades. Además, Gephi acepta múltiples formatos de entrada y salida, tanto para grafos como para los gráficos generados, lo cual es muy conveniente. En cambio, Gephi presenta unos cuantos contras que son importantes. Hay un problema de versiones de Gephi y las máquinas de Java utilizada para su ejecución que, a veces, puede resultar en una complicación en algunos sistemas operativos o en algunas versiones de máquinas de Java. Gephi carga todo el grafo en memoria y necesita mucha memoria para poder visualizar grafos grandes. De hecho, ha sido imposible en este ejemplo preparar un grafo con los límites que propone Gephi, de 100.000 nodos y de 1 millón de enlaces, ha tenido que usarse un grafo mucho más pequeño para mostrar el ejemplo. De la misma forma, algunos de los algoritmos que utiliza Gephi para posicionar el grafo y pintarlo son muy lentos, lo que puede requerir mucho tiempo para generar un grafo y analizarlo y visualizarlo. Afortunadamente, existen otras alternativas a Gephi como sería el uso del entorno R y el paquete iGraph, o Pajek, o NodeXL. Esto ha sido todo en este video de ejemplos sobre visualización de grafos. Esperemos que haya sido de vuestro interés.