SlideShare uma empresa Scribd logo
1 de 126
Baixar para ler offline
TESIS DE GRADO 
Recomendación de usuarios en Twitter basada en topología 
Universidad Nacional del Centro de la Provincia de Buenos Aires 
Autor: 
Joan Sol Roo 
Director: 
Dr. Marcelo Armentano 
Fecha: 
11/06/2014
1 
Resumen 
Encontrar fuentes de información de buena calidad dentro de la comunidad de micro-blogging usando Twitter se vuelve esencial para los usuarios que utilizan esta plataforma en búsqueda de información. En este contexto, el enfoque tradicional de recomendación de usuarios basado en el análisis de contenido se dificulta debido al número de usuarios candidatos a evaluar en la red, en conjunto con limitaciones impuestas por Twitter para acceder a sus datos. 
En este trabajo se evalúa una alternativa de recomendación de usuarios basada únicamente en el estudio de la topología de red, donde usuarios con intereses y temáticas en común se interrelacionan, generando comunidades implícitas. 
Keywords: 
Sistemas de Recomendación de Información, Redes Sociales, Filtrado colaborativo, Twitter.
2 
Contenido 
1 Introducción ........................................................................................................................... 8 
1.1 Twitter.................................................................................................................................. 8 
1.2 Objetivo ............................................................................................................................... 8 
1.3 Organización del documento ............................................................................................... 8 
2 Marco Teórico ...................................................................................................................... 11 
2.1 Sistemas de recomendación .............................................................................................. 11 
2.2 Métricas ............................................................................................................................. 11 
2.2.1 Recall ............................................................................................................................... 11 
2.2.2 Precisión .......................................................................................................................... 12 
2.2.3 nDCG (Normalized discounted cumulative gain) ............................................................ 12 
2.3 Link Prediction ................................................................................................................... 13 
2.4 Link Analysis ....................................................................................................................... 14 
2.4.1 InDegree .......................................................................................................................... 15 
2.4.2 PageRank ......................................................................................................................... 16 
2.4.3 HITS ................................................................................................................................. 17 
2.4.4 SALSA ............................................................................................................................... 18 
2.4.5 Who to follow .................................................................................................................. 20 
2.4.6 Generalización ................................................................................................................. 20 
2.4.7 Caminos híbridos ............................................................................................................. 24 
2.4.8 Big Data ........................................................................................................................... 25 
3 Algoritmo de recomendación topológica ............................................................................. 27 
3.1 Clasificación de usuarios .................................................................................................... 27 
3.1.1 Clasificación basada en relaciones .................................................................................. 28 
3.2 Recolección de usuarios .................................................................................................... 29 
3.2.1 Restricciones de Fanout .................................................................................................. 31 
3.2.2 Matrices de transición configurables .............................................................................. 32 
3.2.3 Algoritmo presentado ..................................................................................................... 33 
3.3 Ranking .............................................................................................................................. 34 
3.3.1 Peso ................................................................................................................................. 34
3 
3.3.2 Índice de fuente de información (IS) ............................................................................... 35 
3.3.3 Ranking basado en comparación de seguidores ............................................................. 35 
3.3.4 Función de scoring compuesta ........................................................................................ 38 
3.4 Combinación de resultados ............................................................................................... 38 
3.5 Conclusión .......................................................................................................................... 40 
4 Diseño e Implementación .................................................................................................... 42 
4.1 Usuario ............................................................................................................................... 42 
4.2 Usuario Factory .................................................................................................................. 43 
4.3 Criterio Usuario .................................................................................................................. 45 
4.4 Comparador Usuarios ........................................................................................................ 45 
4.5 Scoring Usuario .................................................................................................................. 46 
4.6 Recolector y Nivel Recolección .......................................................................................... 47 
4.7 Factory de Recolección de Usuarios .................................................................................. 47 
4.8 Ranking y combinación de resultados ............................................................................... 48 
4.9 Conclusión .......................................................................................................................... 50 
5 Experimentación................................................................................................................... 52 
5.1 Tratamiento de datos ........................................................................................................ 52 
5.1.1 Valor característico ......................................................................................................... 52 
5.2 Validación cruzada ............................................................................................................. 53 
5.2.1 K-fold cross-validation ..................................................................................................... 53 
5.2.2 Dataset ............................................................................................................................ 53 
5.2.3 Caracterización de algoritmos ......................................................................................... 54 
5.2.4 Recomendación de fuentes de información ................................................................... 76 
5.2.5 Recomendación de amigos ............................................................................................. 83 
5.3 Evaluación Subjetiva .......................................................................................................... 88 
5.3.1 Experimento .................................................................................................................... 88 
5.3.2 Precisión en k posiciones ................................................................................................ 90 
5.3.3 nDCG en posiciones ......................................................................................................... 91 
5.4 Conclusión .......................................................................................................................... 92 
6 Interfaz web.......................................................................................................................... 94 
6.1 Inviabilidad practica ........................................................................................................... 94 
6.2 Arquitectura general .......................................................................................................... 95
4 
6.3 Capa de presentación ........................................................................................................ 96 
6.4 Capa de negocios ............................................................................................................... 96 
6.5 Capa de integración ........................................................................................................... 96 
7 Conclusiones ......................................................................................................................... 98 
7.1 Trabajo realizado ............................................................................................................... 98 
7.2 Limitaciones encontradas .................................................................................................. 99 
7.3 Trabajo futuro .................................................................................................................... 99 
8 Bibliografía .......................................................................................................................... 102 
Ape ndice A: Cadenas de Markov 
1 Introducción ....................................................................................................................... 105 
2 Recorrido aleatorio sobre grafos ........................................................................................ 105 
3 Cadena de Markov ............................................................................................................. 106 
3.1 Secuencias de transiciones .............................................................................................. 106 
3.2 Matriz de transición ......................................................................................................... 107 
3.3 Distribución estacionaria ................................................................................................. 107 
4 Cadenas de Markov aplicadas a recorridos aleatorios ....................................................... 108 
Ape ndice B: Persistencia 
1 Introducción ....................................................................................................................... 112 
2 Alternativas ........................................................................................................................ 112 
2.1 SQL ................................................................................................................................... 112 
2.2 iBATIS ............................................................................................................................... 113 
2.3 ORM ................................................................................................................................. 114 
2.4 Comparación .................................................................................................................... 116 
2.5 Hibernate ......................................................................................................................... 116 
2.5.1 Transparent lazy fetching .............................................................................................. 118 
2.5.2 Automatic dirty checking .............................................................................................. 118 
2.5.3 Transitive persistence ................................................................................................... 118 
3 Implementación ................................................................................................................. 118 
3.1 Mapeo .............................................................................................................................. 119
5 
3.2 Encabezado ...................................................................................................................... 119 
3.3 Atributos primitivos ......................................................................................................... 119 
3.4 Atributo no primitivo (relación 1:1) ................................................................................. 120 
3.5 Colección (relación 1:N y N:N) ......................................................................................... 120 
4 Solución en acción .............................................................................................................. 120 
4.1 Proxy ................................................................................................................................ 121 
4.2 Caché ............................................................................................................................... 122 
5 Resultados experimentales ................................................................................................ 122 
5.1 Proceso de recuperación de la red (Crawling) ................................................................. 122 
5.2 Proceso de reevaluación de la red ................................................................................... 123 
5.3 Evaluación de red en caché ............................................................................................. 124
6 
Í ndice de tablas 
Tabla 1: Comparación entre las técnicas de recorrido estático e incremental ................................. 24 
Tabla 2: Algoritmos estudiados ......................................................................................................... 55 
Tabla 3: Funciones de scoring utilizadas por los rankings iniciales ................................................... 55 
Tabla 4: Recall total obtenido para cada algoritmo y combinación de parámetros ......................... 56 
Tabla 5: Subcategorías de pruebas ................................................................................................... 56 
Tabla 6: Recall total para los algoritmos principales, para cada combinación de parámetros y subcategoría ...................................................................................................................................... 57 
Tabla 7: Posición mediana del último encontrado para cada algoritmo y conjunto de parámetros 58 
Tabla 8: Recall en k para cada algoritmo y combinación de parámetros ......................................... 60 
Tabla 9: Recall en 100 para cada algoritmo seleccionado y combinación de parámetros ............... 61 
Tabla 10: Recall en 1.000 para cada algoritmo seleccionado y combinación de parámetros .......... 61 
Tabla 11: Recall en 10.000 para cada algoritmo seleccionado y combinación de parámetros ........ 61 
Tabla 12: Encontrados totales para cada algoritmo seleccionado y combinación de parámetros .. 63 
Tabla 13: Encontrados en 100 para cada algoritmo seleccionado y combinación de parámetros .. 65 
Tabla 14: Encontrados en 1.000 para cada algoritmo seleccionado y combinación de parámetros 65 
Tabla 15: Encontrados en 10.000 para cada algoritmo seleccionado y combinación de parámetros ........................................................................................................................................................... 65 
Tabla 16: Frecuencia de encontrados para los algoritmos preseleccionados y cada combinación de parámetros ........................................................................................................................................ 67 
Tabla 17: Frecuencia acumulada de encontrados para los algoritmos preseleccionados y cada combinación de parámetros ............................................................................................................. 68 
Tabla 18: Mediana de los tiempos de ejecución para todos los algoritmos y conjuntos de parámetros ........................................................................................................................................ 70 
Tabla 19: Aporte de cada acierto en nDGC 10 .................................................................................. 71 
Tabla 20: Resultados obtenidos para nDGC 10 ................................................................................. 72 
Tabla 21: Resultados obtenidos para nDGC 10 según número de seguidos ..................................... 73 
Tabla 22: Resultados obtenidos para la precisión en 1, en 5, y en 10 .............................................. 74 
Tabla 23: Cuadro comparativo entre los algoritmos seleccionados ................................................. 74 
Tabla 24: Relación entre métricas y parámetros de fanout .............................................................. 75 
Tabla 25: Recall en k en la recomendación de fuentes de información ........................................... 77 
Tabla 26: Encontrados en k en la recomendación de fuentes de información ................................. 78 
Tabla 27: Frecuencia de encontrados en la recomendación de fuentes de información ................. 80 
Tabla 28: nDCG en 10 en la recomendación de fuentes de información ......................................... 81 
Tabla 29: Precisión en k en la recomendación de fuentes de información ...................................... 82 
Tabla 30: Recall en k en la recomendación de amigos ..................................................................... 84 
Tabla 31: Frecuencia de encontrados en la recomendación de amigos ........................................... 85 
Tabla 32: nDCG en 10 en la recomendación de amigos según seguidos .......................................... 86 
Tabla 33: Precisión en k en la recomendación de amigos ................................................................ 87 
Tabla 34: Voluntarios para la evaluación subjetiva........................................................................... 89
7 
Capí tulo 1: 
Íntroduccio n
8 
1 Introducción 
1.1 Twitter 
Twitter es una red social con servicio de microblogging que permite a sus usuarios enviar y leer mensajes cortos de una longitud de 140 caracteres, llamados tweets. Dichos mensajes pueden tener cualquier contenido, sin embargo existen algunos usuarios particulares que publican tweets sobre un tema determinado. Cada vez que se publica un nuevo tweet, este aparece en la página de inicio del usuario que lo creó. La red también permite seguir usuarios, una forma de permitir actualizaciones constantes sobre las novedades publicadas. Así, cada usuario sigue otros que son de su interés. 
Los tweets son mensajes publicados por los usuarios, donde se pueden hacer menciones a otros usuarios, el uso de etiquetas (“hashtags” en la terminología de Twitter) para delimitar palabras clave (se antepone el símbolo # a dichos términos), volver a publicar algún tweet subido por otro usuario (denominados “retweets”). Twitter presenta al usuario los tweets ordenados por fecha de creación descendente, por lo tanto puede pensarse como una línea de tiempo, en donde las publicaciones se encuentran agrupadas en diferentes timelines. Otras opciones permiten mandar mensajes directos a un usuario (direct message), y ver los temas del momento (trending topics). 
Las relaciones seguidor-seguido pueden ser simétricas, lo que puede considerarse una relación de amistad. Según estudios, estas relaciones son poco comunes en Twitter[1][2][3], la comparación de snapshots de la red no parece indicar un cambio: las relaciones simétricas rondaban 22.1% en 2009 y 19.5% en 2012[19], aun cuando la red ha aumentado más de 10 veces su tamaño en este intervalo. En contraste, muchos usuarios que utilizan Twitter son buscadores de información sobre sus temas de interés, siguiendo las fuentes de información que hablan de éstos: en 2012 más del 30% de los usuarios activos no poseía siquiera una relación simétrica[18]. Es por esto que los usuarios de Twitter se beneficiarían con una aplicación que los asistiera en encontrar dichas fuentes de información. 
1.2 Objetivo 
En este trabajo se propone diseñar un algoritmo de recomendación que explote las características de la topología de las redes sociales para recomendar fuentes de información, permitiendo alcanzar aquellos usuarios de mayor interés y disminuyendo así la interacción con la API de Twitter, al evitar la evaluación del total de la red. 
1.3 Organización del documento 
El documento se encuentra dividido en 7 capítulos como se detalla a continuación: 
Capítulo 2: Se inicia con el estudio sobre los elementos componentes del problema, comenzando con una breve introducción a los sistemas de recomendación y métricas de utilidad; luego, se revisa la literatura existente sobre las redes sociales en general y Twitter en particular, un campo estudio relativamente nuevo; un punto clave de esta etapa es la detección de los roles de los usuarios en la red social y la semántica de las interacciones; por último, se estudia análisis de las
9 
relaciones entre entidades y su influencia compone un campo de estudio por sí mismo, el cual sienta las bases de este trabajo, así como de otras alternativas de recomendación a las redes sociales. 
Capítulo 3: Una vez detallados los elementos componentes del problema y el contexto de la solución, se procede a generar una alternativa que combine el estudio de las relaciones con características específicas de las interacciones entre usuarios en Twitter, que dan lugar a las comunidades implícitas. Luego, el trabajo se centra en el estudio de las posibles variables que permiten ajustar el algoritmo general, abriendo la búsqueda de la mejor combinación de parámetros. 
Capítulo 4: Una vez establecido el algoritmo general, se plantea el diseño e implementación de un framework para su ejecución y configuración, centrándose en la idea que el mismo puede requerir su extensión en un futuro, en particular, para superar las limitaciones impuestas por el alcance del trabajo actual y la infraestructura disponible. 
Capítulo 5: Disponiendo del algoritmo y su implementación, se procede a estudiar experimentalmente los efectos de las variables presentadas previamente, en busca de la mejor combinación de parámetros que conlleven a mejorar los usuarios de interés alcanzados y el orden de las recomendaciones generadas. Dadas las limitaciones presentadas por Twitter, los estudios son realizados primero sobre un dataset, con el fin de encontrar el mejor algoritmo para la recomendación directa de fuentes de información (es decir, que ofrezca la mayor precisión), para luego probarlo en un conjunto más reducido de usuarios reales, comparando el recomendador presentado con el provisto por el propio Twitter. En el proceso, se describen los beneficios del algoritmo y los parámetros recomendables para maximizar la recolección, para un posterior post- proceso. 
Capítulo 6: Habiendo seleccionado el algoritmo con mejor precisión en la recomendación de fuentes de información, solo resta su publicación para el beneficio de usuarios reales. Para esto, se plantea el diseño general de una aplicación web que permita la utilización, y si se desea configuración, del algoritmo de recomendación presentado. 
Capítulo 7: Finalmente, se resume el trabajo realizado y se presentan los beneficios provistos, en conjunto con las limitaciones enfrentadas, abriendo la puerta para continuar el estudio de la recomendación de fuentes de información en Twitter.
10 
Capí tulo 2: 
Marco Teo rico
11 
2 Marco Teórico 
En este capítulo se introducirán los conceptos fundamentales del dominio de los sistemas de recomendación en general y aplicados a las redes de documentos interconectados. 
2.1 Sistemas de recomendación 
Los sistemas de recomendación son sistemas específicos de filtrado de información que buscan recomendar ítems de interés al usuario. Para ello, extraen del perfil del usuario algunas características de referencia, en busca de predecir el interés que puede tener en un ítem que aún no ha evaluado. 
En nuestro caso, se utilizará los usuarios actualmente seguidos por un interesado como punto de partida, para obtener las fuentes seguidas por usuarios similares (éstos son aquellos que poseen el mayor número de fuentes en común con el interesado). Se considera parte del perfil de un usuario de Twitter a los siguientes componentes: sus características básicas que permiten la identificación (nombre e ID de usuario); sus relaciones (seguidos y seguidores) y las estadísticas derivadas (cantidad de tweets, de seguidos y de seguidores). 
Las anteriores representan al usuario dentro de todo Twitter (espacio de búsqueda); existe otro factor, atado a la búsqueda local realizada (subred): su peso, dado por la cantidad de ocurrencias de un usuario al recorrer una subred. 
2.2 Métricas 
Para evaluar las recomendaciones provistas, se utilizarán tres métricas que comparan el conjunto de usuarios esperados (o de interés) con la recomendación obtenida. Dado que se evaluarán algoritmos de recomendación, se estudiarán los resultados seleccionando los N primeros recomendados. 
Ilustración 1: Diagrama de Venn ilustrando los conjuntos sobre los que operan las métricas planteadas 
2.2.1 Recall 
Evalúa el porcentaje de usuarios encontrados sobre el total de esperados, midiendo la capacidad de recuperación del algoritmo. Es inversamente proporcional al grado falsos negativos (usuarios que deberían ser incluidos, pero en su lugar no son alcanzados o bien son excluidos).
12 
| | | | | | | | 
Recall en N: Recall en primeros N usuarios recomendados. Cuando se refiera al Recall sin especificar un valor de N, será al máximo obtenido al estudiar el total de los usuarios alcanzados. 
2.2.2 Precisión 
Evalúa el porcentaje de aciertos sobre el conjunto de recomendados. Es inversamente proporcional al grado falsos negativos (usuarios que deberían ser excluidos, pero en su lugar son incluidos). | | | | | | | | 
Precisión en N: Precisión en primeros N usuarios recomendados. A diferencia del recall, no se hablará de la precisión sin asignar un valor a N. 
2.2.3 nDCG (Normalized discounted cumulative gain) 
Evalúa el orden en que son presentados los aciertos, permitiendo cuantificar la calidad de la recomendación, basándose en la premisa que una buena recomendación los mejores resultados entre las primeras posiciones. La manera más sencilla de explicar su construcción es de manera incremental. 
La ganancia acumulativa (cumulative gain) computa la utilidad de un conjunto sumando el total de los pesos de los elementos contenidos. Para una posición dada , se evalúa hasta como: Σ 
La ganancia acumulativa descontada (discounted cumulative gain) aplica una penalización a los buenos documentos que se encuentran alejados de las primeras posiciones, disminuyendo la relevancia logarítmicamente proporcional a la posición en la que fueron encontrados. Para una posición dada , se evalúa hasta como: Σ
13 
Para el caso estudiado, se desconocen la relevancia de los documentos de interés, por lo que se utilizará una relevancia binaria, siendo 1 si el documento es de interés, cero en caso contrario. En este contexto, puede simplificarse hasta como: Σ 
Sea el valor obtenido para la recomendación ideal, donde los elementos son recomendados según el orden descendente de peso en las primeras posiciones, es posible computar la ganancia acumulativa descontada normalizada como: 
Para el caso estudiado, no se ha provisto un peso de manera explícita, por lo que se procederá a utilizar un peso binario, siendo 1 en caso que el usuario sea de interés, y 0 en caso contrario. 
2.3 Link Prediction 
Este campo de investigación enfrenta resolver el siguiente problema: 
Dado el estado de una red, ¿es posible inferir cuáles nuevas relaciones son probables que ocurran? 
Distintos autores han enfrentado este problema, buscando cuantificar la proximidad entre dos nodos, y sus aportes pueden dividirse en grandes rasgos en: 1) aquellos que observan el contenido, 2) aquellos que estudian las relaciones entre nodos, o bien 3) aquellos que toman un enfoque hibrido. 
Chen et al. [5] compararon algoritmos basados en relaciones y en contenido para recomendaciones de usuarios, encontrando que el primero es mejor detectando contactos conocidos mientras que el segundo en encontrar nuevas relaciones. Sun et al. [6] utilizaron un algoritmo basado en difusión para obtener un grupo de usuarios que toman el rol de reporteros en emergencias. Más relacionado a nuestro trabajo, están los algoritmos de recomendación de usuarios en Twitter a partir de un subconjunto de usuarios presentado por Hannon et al. [7]. Estos autores consideraron múltiples estrategias de generación de perfiles de acuerdo a cómo los usuarios son representados en un enfoque basado en contenidos (sus tweets y los de los usuarios con los que se relacionan), un enfoque basado en sus relaciones (basados en los IDs de sus seguidores y/o de sus seguidos), así como enfoques híbridos. 
Buscando explicar por qué el contenido y la topología ofrecen pistas de quién recomendar, son de utilidad los aportes de Hong et al.[4], que estudian las temáticas y categorías de temáticas dentro de Twitter, mientras que Java et al.[1] estudian las comunidades implícitas que existen en Twitter
14 
y que tratan temáticas relacionadas. Dentro de estas comunidades los usuarios pueden categorizarse en: fuentes, buscadores de información, o bien amigos. Cha et al. [10] infieren la influencia de los usuarios basándose en la dinámica de la red, con dos conclusiones relevantes para este trabajo: 1) un gran número de seguidores implica una gran audiencia, pero no necesariamente publicaciones informativas: las fuentes de información se caracterizan por sus seguidores “retweeteando” sus estados, mientras que las figuras mediáticas se caracterizan por un gran número de menciones; 2) existen usuarios cuya influencia se dispara en un periodo corto de tiempo, atada a eventos puntuales. Lamentablemente, Cha et al. sólo estudian las influencias relativas a temáticas sobre el total, pero dejan de lado la influencia relativa dentro de comunidades. 
2.4 Link Analysis 
Es de interés para este trabajo el campo de investigación conocido como link analysis, donde se estudian las relaciones entre documentos. Asociado a los sistemas de recuperación de información, el ejemplo más conocido son los buscadores web, que en la búsqueda de recomendar fuentes de información confiables (denominadas autoridades), asignan relevancia aun conjunto de páginas web basándose en sus hipervínculos. 
En el contexto de las redes sociales, los algoritmos de link analysis pueden ser utilizados para link prediction, si se considera que la relevancia de un usuario dado está relacionada con la proximidad a otros usuarios. El modelo de la red social de Twitter permite este estudio: grafos dirigidos de grandes dimensiones, donde los nodos pueden clasificarse en autoridades (fuentes de información) o hubs (buscadores de información). 
A modo de introducción, se describirán a continuación los algoritmos más conocidos. En el Apéndice A se detallan conceptos relacionados acerca de Cadenas de Markov, que fundamentan estos algoritmos. 
Primero se establecerán los elementos involucrados: 
 Vector de pesos de Autoridad A: vector n-dimensional de pesos asociados a las autoridades, donde Ai es el puntaje de autoridad del nodo i. 
[ ] 
 Vector de pesos de hub H: vector n-dimensional de pesos asociados a los hubs, donde Hi es el puntaje de hub del nodo i.
15 
[ ] 
 Matriz de arcos salientes F (forward): matriz bidimensional cuadrada que indica en la posición (i,j) la probabilidad de avanzar desde i hasta j, correspondiente a la matriz de transiciones asociada a la cadena de Markov estacionaria: 
| 
Donde indica la ausencia de un arco. 
 Matriz de arcos entrantes B (backward): matriz bidimensional que indica en la posición (i,j) la probabilidad de salto desde un nodo i a un nodo j si se invierte la dirección de los arcos (Ilustración 2). Corresponde a la matriz transpuesta de la matriz de arcos salientes normalizada para ser una matriz de transiciones válida: 
Σ 
Donde indica la ausencia de un arco. 
Ilustración 2: Relación entre arco entrante B y saliente F. 
 Numero de arcos en vector | |: cantidad de arcos posibles (cuya probabilidad es mayor a cero) para un nodo i dado, es decir, basado en la i-ésima fila de la matriz X. 
 Numero de arcos en matriz | |: cantidad de arcos posibles (cuya probabilidad es mayor a cero) de la matriz X. 
2.4.1 InDegree 
Una simple heurística que puede considerarse la predecesora de todos los algoritmos de ranking de Link analysis, consiste en ordenar las páginas por su popularidad (o visibilidad). La popularidad de una página es medida por el número de referencias a ella. | |
16 
Puede aplicarse de manera sencilla para redes sociales como Twitter, ordenando los usuarios por su número de seguidores. 
2.4.2 PageRank 
La intuición utilizada en InDegree es que una buena autoridad es una página apuntada por muchos nodos en el grafo. PageRank[12] extiende esta idea observando que no todos los arcos poseen el mismo peso. Vínculos desde páginas de alta calidad deberían conferir mayor autoridad. Es entonces no solo importante saber cuántas páginas apuntan, sino también si esas páginas son importantes. Para esto, realizan un recorrido aleatorio en el grafo que simula el comportamiento de un “random surfer”, que comienza desde un nodo D elegido al azar (generalmente asumiendo una distribución uniforme), eligiendo a cada paso con probabilidad d (factor de dispersión) optar por uno de los links, y con probabilidad 1-d saltar al azar entre todos los N sitios disponibles. El puntaje de autoridad Ai para un nodo i (pagerank del nodo i) es la fracción de tiempo que se ha detenido en dicho nodo, proporcional al número de visitas durante el recorrido, y corresponde con la distribución estacionaria de la cadena de Markov asociada al recorrido aleatorio sobre la red. 
Algebraicamente, el puntaje de autoridad para un nodo es: Σ | | 
Y el cálculo global de puntajes de autoridad: [ ] 
Como puede apreciarse, el PageRank de una página se define recursivamente con las páginas que la referencian, siendo necesario para su cálculo un acercamiento iterativo. Si bien la formula presentada muestra el algoritmo como una operación de matrices y vectores, en la práctica F es una matriz dispersa, permitiendo ahorrar memoria y tiempo de procesamiento al utilizar un enfoque procedural. A continuación en el Algoritmo 1 se presenta el pseudocódigo asociado. 
Algoritmo 1 – PageRank 
Sea Ai(t) el peso de autoridad asociado al nodo i en la iteración t 
1. inicializar 
Para cada nodo i A 
2. iterar hasta convergencia 
Repetir hasta que los pesos converjan 
Para cada nodo i A 
Σ | |
17 
2.4.3 HITS 
Propuesto en el mismo año de PageRank y de manera independiente, HITS (Hyperlink Induced Topic Distillation) sostiene que no necesariamente las buenas autoridades señalan a otras buenas autoridades; en su lugar, hay nodos especiales, llamados Hubs, los cuales poseen colecciones de links a buenas autoridades. 
Ilustración 3: Transformación de un grafo dirigido (izquierda) en un grafo bipartido hub-autorities no dirigido (derecha) 
HITS plantea un esquema de propagación de dos niveles, donde la validación de las autoridades es realizada desde Hubs, en lugar de hacerse directamente entre autoridades. Para esto, cada página posee ambos roles (pudiendo modelarse como un grafo bipartido, Ilustración 3) donde el peso de los Hubs es la suma de los pesos de las autoridades a las que apunta, estos a su vez son la suma de los pesos de los Hubs que las referencian, reforzándose mutuamente. Σ ( ) Σ 
Dado que se enfrenta una situación de dependencia circular, los valores se computan iterativamente, inicializando todos los pesos en 1. Para evitar la divergencia, los valores deben ser normalizados tras cada iteración, de tal manera que la norma L2 sea igual a 1. A continuación en el Algoritmo 2 se presenta el pseudocódigo asociado.
18 
Algoritmo 2 – HITS (Hyperlink Induced Topic Distillation) 
Sea Ai(t) el peso de autoridad asociado al nodo i en la iteración t 
Sea Hi(t) el peso de hub asociado al nodo i en la iteración t 
1. inicializar 
Para cada nodo i A 
Para cada nodo i H 
2. iterar hasta convergencia 
Repetir hasta que los pesos converjan 
2.1 propagar hubs 
Para cada hub i H Σ 
Normalizar H 
Para cada autoridad i A 
Σ 
Normalizar A 
A diferencia de PageRank, HITS no es presentado como un recorrido aleatorio. Sin embargo, es posible realizar una observación interesante sobre los pesos asignados por el algoritmo HITS tras n iteraciones. Recordando que B y F indican los arcos entrantes y salientes, estos pueden combinarse para obtener caminos más largos. Por ejemplo, (BF)n es un camino que alterna entre arcos entrantes y salientes n veces. Luego, sea (BF)n(ij) el conjunto de caminos que parten del nodo i, es posible concluir[14] que el puntaje de autoridad asignado a un nodo i tras n iteraciones es proporcional al número de caminos BF de longitud n que parten desde el nodo; resultados similares pueden obtenerse para el puntaje de hub. | | | | | | | | De esta manera, es posible considerar el peso obtenido a partir de una serie de pasos determinados, siendo esta una solución restrictiva sobre el problema de recorrido aleatorio sobre grafos, que puede resolverse mediante de cadenas de Markov. Este algoritmo ha sido la inspiración de la solución presentada en el capítulo 0. 
2.4.4 SALSA 
Combinando ideas de HITS y PageRank, SALSA[15] (Stochastic Approach for Link-Structure Analysis) se basa en un recorrido aleatorio de un grafo bipartido, conformado por autoridades y hubs. En HITS, los hubs propagan su peso a todas las autoridades referenciadas, y estas suman todos los pesos propagados. El algoritmo SALSA normaliza los pesos a propagar, dividiéndolos por el número de arcos involucrados. Así, los hubs propagan su peso, dividido el número de autoridades referenciadas, mientras que estas propagan su peso dividido el número de Hubs que
19 
los referencian. Siendo i, j dos nodos autoridad, es posible definir un arco no dirigido entre ellos, si comparten un hub k. La probabilidad P de navegar entre i y j en un recorrido aleatorio se define como: Σ | | | | 
Es posible definir de manera similar la relación entre hubs. Σ | | | | 
De aquí es posible obtener los pesos asociados a cada nodo. Σ | | Σ | | Y globalmente: 
Nuevamente se enfrenta una situación de dependencia circular, recurriendo nuevamente a un acercamiento iterativo. A continuación en el Algoritmo 3 se presenta el pseudocódigo asociado. 
Algoritmo 3 – SALSA (Stochastic Approach for Link-Structure Analysis) 
Sea Ai(t) el peso de autoridad asociado al nodo i en la iteración t 
Sea Hi(t) el peso de hub asociado al nodo i en la iteración t 
1. inicializar 
Para cada nodo i A 
Para cada nodo i H 
2. iterar hasta convergencia 
Repetir hasta que los pesos converjan 
Para cada autoridad i A 
Σ | ( )| 
Para cada hub i H Σ | ( )| (t)
20 
2.4.5 Who to follow 
En 2013, el equipo de Twitter publicó un estudio [11] donde describen el algoritmo WTF (who to follow), utilizado para la recomendación desde 2010; el enfoque utilizado, como puede observarse en la Ilustración 4, se basa en dos etapas: 
1. Obtención del “Círculo de confianza”, constituido por los usuarios con mayor impacto sobre un conjunto inicial. Para lograrlo, utiliza un recorrido egocéntrico centrado en el usuario, similar a un PageRank personalizado[16]. 
2. Propagación de pesos, usando un modelo de autoridades y hubs basado en SALSA. 
Ilustración 4: conjuntos de trabajo del algoritmo WTF 
Al finalizar, el algoritmo recomienda las autoridades como intereses y los hubs como usuarios similares, ordenados por puntaje. Lamentablemente, WTF no provee ningún pseudocódigo, solo una descripción de alto nivel del algoritmo. 
A continuación se estudia la generalización de los algoritmos presentados, en busca de una mejor comprensión de la manera en que se relacionan. 
2.4.6 Generalización 
Recordando la notación introducida al inicio de la sección 2.4, A es un vector n-dimensional de pesos asociados a las autoridades, donde Ai el puntaje autoridad para un nodo i. B y F indican los arcos entrantes y salientes respectivamente; Como se observó en HITS, estos pueden combinarse para obtener un camino P de largo n. Sea P(i) el conjunto de caminos que parten del nodo i (o bien conjunto de nodos), y P(i,j) el conjunto de caminos que parten de i y llegan a j, ambos subconjuntos de los presentados previamente. Es posible definir entonces el peso de autoridad de j sobre P tras n iteraciones como el número de caminos que llegan a j sobre el total de caminos posibles: | | | |
21 
Lo cual coincide con el peso asociado en un recorrido aleatorio, y es posible evaluar utilizando cadenas de Markov, al igual que los restantes algoritmos presentados. Recordando el cálculo para la matriz de transición tras n pasos para cadenas de Markov: Π 
Siendo la i-esima fila la probabilidad de transición desde el nodo i a cada uno de los nodos. 
Sea el vector A la distribución inicial de autoridad, que asigna un peso total de 1 entre los nodos de partida1, es posible definir la autoridad sobre Pn como: (Π ) 2 
Es posible observar entonces que existe un algoritmo subyacente común entre PageRank (sin dispersión), SALSA y WTF al momento de asignar el peso de autoridad, variando solo el camino utilizado, mediante las matrices de transición utilizadas. Así, solo es necesario definir la secuencia de movimientos para cada uno, con la serie de matrices de transición asociada: 
 PageRank: Navegar los arcos entrantes n veces, utilizando la probabilidad del nodo de salida: 
 SALSA: Alternar entre retroceder hacia los hubs y volver a avanzar hacia las fuentes n veces: 
 HITS: Si bien no es presentado como un recorrido aleatorio, se ha observado que es posible llegar a la misma definición de peso de autoridad que el obtenido con SALSA: 
1 En particular, el vector A0 con ceros en todas las posiciones excepto en la i-ésima posición, provee el peso considerando solo los caminos que inician en el nodo i. 
2 A fin de preservar el camino, el orden de multiplicación de matrices es inverso al camino seguido, dada la falta de conmutatividad.
22 
 WTF: Iniciar con un recorrido aleatorio de k pasos para alcanzar el círculo de confianza, desde ahí avanzar una vez más hasta las fuentes, y desde ahí realizar el recorrido de SALSA iterando n veces: 
Dependiendo de las características del grafo, la evaluación de los algoritmos listados es de un elevado coste computacional, y los requisitos de memoria pueden ser inaceptables, pero existen opciones de optimización. Para un camino dado, se pueden considerar dos alternativas básicas: 
1. Recorrido estático: computar la matriz de transición para el camino completo Pn, permitiendo subsecuentes evaluaciones de la misma secuencia de transiciones para distintas distribuciones iniciales de autoridad. 
2. Recorrido incremental: computar a cada paso únicamente las transiciones con probabilidad mayor a cero, disminuyendo en gran medida la cantidad de operaciones requeridas, en particular para matrices de transición y distribuciones iniciales ralas. 
A continuación, se evalúan las características de cada una de estas alternativas, y la posibilidad de combinarlas. 
Recorrido estático 2.4.6.1 
Recordando la segunda definición del peso de autoridad sobre un camino dado: (Π ) 
En la formula se indica que es posible evaluar la serie de pasos y luego aplicar la distribución inicial. Este acercamiento evita la necesidad de iterar sobre el grafo para obtener una recomendación personalizada, una vez obtenida la matriz de transición del camino. Así, los algoritmos presentados pueden evaluarse como: ( ) [ ] [ ] [ ] [ ] 
Siendo el único elemento desconocido al momento de la recomendación el conjunto de pesos iniciales . La matriz de transición del camino (entre corchetes) se calcula como el seguimiento de los arcos para el camino, en orden inverso. 
De esta manera, para un camino dado, se requiere actualizar la matriz de transición solo cuando el grafo es actualizado. Como desventaja, es requerido evaluar el total de los N2 arcos posibles tantas
23 
veces como pasos tenga el camino, lo que puede ser inviable dados los requerimientos de memoria. Adicionalmente, para redes dinámicas, se dificulta la generación de recomendaciones online, siendo una mejor estrategia para el cálculo de la matriz de transiciones un proceso batch. 
Recorrido incremental 2.4.6.2 
Recordando la primera definición del peso de autoridad sobre un camino dado: A A 
En esta fórmula, los pesos A asignados para un camino de n pasos se definen recursivamente como el peso para n-1 pasos sobre el camino, aplicando , la matriz de transiciones del nivel n. 
Es posible observar que, para o A ralas, esta operación realiza una gran cantidad de multiplicaciones donde uno de los términos es cero (o bien el nodo de partida posee un peso de autoridad nulo, o no existe un arco hacia el correspondiente nodo destino). Una solución intuitiva es realizar solo las operaciones donde ambos términos son no nulos, reduciendo en gran medida tanto las operaciones requeridas como la utilización de memoria, y permitiendo recomendaciones online. 
A continuación en el Algoritmo 4 se muestra el pseudocódigo para caminos incrementales optimizado para matrices de transición ralas, de carácter iterativo. 
Algoritmo 4 – Caminos incrementales 
Entrada: 
 P el camino a recorrer 
 N(0) el conjunto de usuarios de partida 
Usado: 
 N(t) los nodos alcanzados en el nivel t 
 Ai(0) el peso inicial del nodo i 
 Ai(t) el peso asociado al nodo i en el nivel t 
1. Para cada nodo i N(0) 
| | 
2. Para cada nivel p en P, o hasta convergencia 
2.1. Para cada par 
2.2. A 
Como puede observarse, el algoritmo toma como entrada un camino a recorrer P y un conjunto de nodos iniciales N(0). Los pasos seguidos son: 
1. Inicializar de manera uniforme el peso inicial A(0) entre los nodos iniciales N(0). 
2. Iterar cada nivel p del camino P, o bien hasta convergencia:
24 
2.1. Actualizar los pesos de autoridad A(t+1) del siguiente nivel N(t+1) utilizando la matriz de transiciones p asociada al nivel, pero sólo para aquellos nodos donde existe una transición desde el nivel actual (la probabilidad de salto es mayor a cero). 
2.2. Seleccionar solo aquellos nodos N(t+1) que fueron alcanzados durante el recorrido 
Sobre este algoritmo es posible realizar mejoras, a saber: 
 Muestreo: al actualizar (2.1) se considera cada par de arcos que alcanza el nodo a fin de propagar el peso. En su lugar, es posible realizar un muestreo aleatorio, tomando una muestra de tamaño configurable. 
 Poda: al seleccionar los nodos alcanzados (2.2), se consideran todos aquellos cuya probabilidad es mayor a cero. Es posible extender esto utilizando un umbral, descartando aquellos nodos cuya probabilidad de ser alcanzados no es suficiente. 
 Criterios avanzados: tanto al actualizar (2.1) y seleccionar (2.2), es posible considerar condiciones adicionales, en particular características de los nodos como la relación entre arcos entrantes y salientes, o una clasificación obtenida por otros medios. 
Este algoritmo muestra una gran flexibilidad, al costo de necesitar recorrer el grafo para cada recomendación. En el capítulo 0 se estudia la personalización de este algoritmo para generar recomendaciones en Twitter. 
2.4.7 Caminos híbridos 
Se puede observar en la Tabla 1 que ambos algoritmos son complementarios, pero no es posible utilizarlos simultáneamente debido a su relación con la serie de transiciones a utilizar. Como alternativa, es posible dividir el algoritmo de recorrido en dos o más partes, utilizando para cada una de ellas una de las técnicas de recorrido. 
Tabla 1: Comparación entre las técnicas de recorrido estático e incremental Ventajas Desventajas Recorrido estático 
Permite calcular pesos de autoridad sin recorrer el grafo. 
Depende del camino. 
Posee una operación muy costosa en memoria y tiempo de procesamiento. Recorrido incrementales 
Permite recorrer el grafo de manera eficiente. 
Independiente del camino. 
Requiere recorrer el grafo cada vez. 
A modo de ejemplo, considerando el caso de dos sub-caminos: 
Donde para se utiliza un camino incremental y para un camino estático. De aquí es posible calcular la autoridad a lo largo del camino como:
25 
{ (Π ) 
Recordemos el camino planteado de manera genérica para definir WTF: Iniciar con un recorrido aleatorio para alcanzar el círculo de confianza, avanzar una vez más hasta las autoridades, y desde ahí realizar el recorrido de SALSA: 
Es posible observar las razones por las que se ha tomado esta decisión, dado que el camino puede dividirse en un camino no definido y un camino estático . De esta manera, es posible calcular la matriz de transición para el camino estático, y realizar recomendaciones dinámicamente sólo con alcanzar un círculo de confianza. 
La utilización de recorridos híbridos permite obtener recomendaciones sobre caminos dinámicos con cierto grado de optimización, pero para esto es necesaria la capacidad de procesar el total de la red, que, según sea el dominio del problema, puede inferir grandes requerimientos de hardware. 
2.4.8 Big Data 
Big data refiere a una colección de datos tan grande y compleja que las técnicas tradicionales de procesamiento resultan ineficientes. En el contexto de link analysis, la resolución suele involucrar clústeres (Hadoop[16]) o servidores monolíticos (Cassovary[11]), para permitir almacenar en memoria principal el total de la red, ya sea en un mismo equipo o de manera distribuida. 
Este trabajo plantea un algoritmo que, a un mayor costo temporal, puede ejecutarse en un equipo doméstico, a partir de recorridos incrementales y poda del número de arcos considerados, distribuyendo el costo de inicialización de la estructura en el tiempo. El mismo algoritmo puede implementarse mediante MapReduce, en caso de disponer el hardware necesario.
26 
Capí tulo 3: 
Algoritmo de recomendacio n topolo gica
27 
3 Algoritmo de recomendación topológica 
Este trabajo tiene como objetivo obtener resultados aceptables para la recomendación de fuentes de información en el menor tiempo posible, explotando la semántica que conllevan las relaciones entre usuarios. El punto de partida para la recomendación se basa en la existencia de usuarios similares, con los cuales el usuario interesado comparte comunidades e intereses; cuanto mayor sea la similitud con ellos, mayor será la capacidad de predicción desde ellos, permitiendo sugerir tanto fuentes de información como otros usuarios similares. 
En líneas generales, el algoritmo utiliza la noción de caminos incrementales presentada en la sección 2.4.6.2: un recorrido aleatorio como una serie de movimientos hacia adelante o hacia atrás, donde el peso asociado depende del número de arcos que alcanzan al nodo, sobre el total de caminos posibles en dicha secuencia de movimientos. A diferencia de los algoritmos presentados en link analysis (2.4), en lugar de iterar hasta alcanzar la convergencia, se siguen los arcos a lo largo de un camino dado, con una semántica asociada. 
Dado que el algoritmo presentado depende de los roles de los usuarios en la red, es necesario hacer una breve introducción a la clasificación de usuarios dentro de este contexto. 
3.1 Clasificación de usuarios 
Como se ha visto en el capítulo 2.3, los usuarios en el contexto de Twitter pueden clasificarse como usuarios mediáticos (fuentes de información y celebridades) [1][11] o usuarios similares (buscadores de información y amigos)[1], basándose en su función e interacción, según las comunidades implícitas de las que forman parte. 
Las comunidades son conjuntos de usuarios que comparten una temática o locación específica. Las comunidades no son excluyentes, pudiendo un usuario formar parte de más de una, e incluso teniendo distintos roles en cada una de ellas. 
Ilustración 5: Ejemplo de comunidades
28 
Al aplicar HITS sobre Twitter[1], es posible encontrar usuarios con mayor peso de autoridad (mediáticos) o de hub (buscadores de información); estos resultados pueden obtenerse tanto global como localmente a una comunidad, con la salvedad que los roles para un mismo usuario pueden variar de comunidad en comunidad: en un caso extremo un usuario puede ser fuente de información en una comunidad y un buscador de información en otra. Para un usuario dado, se llaman amigos a aquellos buscadores de información con los cuales se poseen relaciones simétricas; dentro de una comunidad, es posible clasificar un usuario como “amigo”, es decir que utiliza la red con el fin de interactuar con pares, al tener valores elevados de autoridad y hub, o bien por un alto porcentaje de relaciones simétricas. 
Cada usuario puede publicar distintas clases de contenidos en distintas comunidades. Los usuarios mediáticos pueden clasificarse según la calidad del contenido publicado[11]: las fuentes de información publican material de interés, lo que lleva a que su contenido sea retweeteado (citado) un mayor número de veces; las celebridades en cambio se caracterizan por un mayor número de menciones. Los amigos pueden detectarse por hilos de conversación basados mensajes personales. 
3.1.1 Clasificación basada en relaciones 
Puede observarse entonces que desde las conexiones de usuarios no es posible diferenciar entre fuentes de información y celebridades, siendo necesario estudiar el contenido; por esto, esta división será excluida del estudio, considerando todos los usuarios mediáticos como posibles fuentes de información. La clasificación resultante coincide con la utilizada en los algoritmos que dividen los usuarios en Autoridades y Hubs. 
Durante el desarrollo, se ha encontrado que las fuentes de información se destacan por tener mayor cantidad de seguidores que seguidos; si un usuario es una potencial fuente de información, se espera que la relación entre seguidores y seguidos sea menor a un valor límite , es decir: 
En nuestro caso, y para evitar falsos positivos en casos donde el usuario pertenece a una red densamente interconectada, se establecerá . Es decir, se considerarán fuentes de información candidatas a aquellos usuarios con más del doble de seguidores que seguidos. 
Métricas como el índice de fuente de información (IS)[17] estudian la relación entre seguidos y seguidores, permitiendo asignar un puntaje como fuente de información global. ( ) 
A partir de esta métrica es posible determinar no solo aquellos usuarios que cumplen con el criterio mínimo para ser fuentes de información, sino que pueden compararse entre sí, proveyendo una función heurística para el ranking, como se verá en la sección 3.3.
29 
3.2 Recolección de usuarios 
Para un usuario dado, es posible dividir el conjunto de usuarios actualmente seguidos utilizando la clasificación fuente/similar. Esta clasificación puede realizarse globalmente o para comunidades, con dos implicaciones distintas: globalmente se obtendrían como fuentes a aquellos usuarios más influyentes de Twitter (top influencials, según Cha et al. [11]), localmente a comunidades se obtendrían como fuentes de información aquellos que cumplen ese rol dentro de la comunidad. Volviendo al usuario inicial, aquellos usuarios que sigue actualmente lo ubican entonces dentro de una o más comunidades. 
Considerando nuevamente en la Ilustración 6 una red de ejemplo como la presentada en la sección 3.1, y centrándose en el nodo que identifica al usuario “4”, es posible definir a partir de los usuarios actualmente seguidos a que comunidades pertenece el usuario, y en qué grado. Inicialmente, es posible decir que 1/3 de los usuarios seguidos pertenecen a la comunidad 1, y 2/3 pertenecen a la comunidad 2. Un recorrido aleatorio sobre esta red no solo permitiría obtener las probabilidades de alcanzar otros usuarios de las comunidades actuales, sino también alcanzar otras comunidades estrechamente relacionadas (en el ejemplo, a partir del nodo 11 y 13, alcanzar el nodo 16), sin que sea estudiado el contenido. Este es el principio en el que se basa el proyecto presentado. 
Ilustración 6: Ejemplo de comunidades, resaltando los arcos salientes del usuario número 4. 
A continuación en la Ilustración 7 se exponen los tipos de usuarios y presuntas relaciones que los unen, según las características topológicas observadas en la sección 3.1.
30 
Ilustración 7: Usuarios actualmente seguidos y usuarios alcanzables desde el usuario inicial 
Es posible observar las relaciones entre usuarios que existen diversos caminos posibles desde un usuario inicial hacia fuentes de información no seguidas actualmente, entre los que se destacan: 
1. Según Fuentes seguidas: Alternar entre arcos salientes y entrantes, al igual que SALSA 
2. Según Usuarios similares seguidos: Avanzar sobre los arcos salientes, al igual que PageRank 
3. Según amigos: considerar de entre los arcos salientes, solo aquellos que son simétricos, y desde allí considerar los seguidos. Una versión más restrictiva del recorrido 2. 
Como puede observase, existe una relación entre estos recorridos y los algoritmos de link analysis estudiados en la sección 2.4. Otra característica en común es la imposibilidad de clasificar de manera fehaciente como fuente de información (autoridad) o usuario similar (hub) solo con observar el nodo; entonces, se consideran todos los usuarios seguidos como pertenecientes a ambas categorías, cumpliendo uno u otro rol según sea su posición en el recorrido. 
A partir de esto, es posible utilizar el algoritmo generalizado de link analysis presentado en el capítulo 2.4.6 sobre los dos caminos, como se muestra en la Ilustración 8.
31 
Ilustración 8: Recorrido de algoritmos 
Como puede observarse en la Ilustración 7 y la Ilustración 8, se espera que los conjuntos alcanzados por ambos recorridos no sean disjuntos; en la sección 3.4 se estudia cómo aprovechar esta característica. 
En este contexto, el algoritmo caminos incrementales presentado en 2.4.6.2 ofrece un buen punto de partida. A continuación se estudian las modificaciones específicas consideradas para utilizarlo sobre la red de Twitter. 
3.2.1 Restricciones de Fanout 
Se ha establecido que las dimensiones de la red hacen que la evaluación total sea inviable 3. Por esto, se plantea imponer un límite configurable a los nodos y arcos utilizados durante el recorrido. 
 Límite de nodos alcanzados: los nodos seleccionados al finalizar un nivel no serán solo aquellos que posean una probabilidad de ser alcanzados mayor a cero, sino que seleccionarán los con mayor peso. 
 Límite de arcos por nodo: existen usuarios que poseen una cantidad de relaciones fuera de la media; estos usuarios aumentan en gran medida el número nodos alcanzados a cada nivel, pero la probabilidad propagada será necesariamente menor (siendo la probabilidad de salto uniformemente distribuida, a mayor cantidad de arcos, menor propagación a cada 
3 Cassovary, el motor de link analysis utilizado por Who To Follow de Twitter requiere mantener el total de la red representada en memoria, en un mismo servidor con 160GiB de RAM. Aun con los requerimientos de hardware, el API de Twitter limita en gran medida la extracción de estas conexiones, lo que hace prácticamente imposible la recuperación total de la red.
32 
nodo alcanzado). Por eso, para un usuario dado se considera hasta un máximo de arcos; en caso de que el número de arcos sea mayor al máximo se seleccionan arcos de manera aleatoria4. 
 Límite de nodos considerados: al evaluar una subred con demasiados nodos, es posible saturar los límites memoria. Por esto, se establece no se almacenarán más de pesos de autoridad. Cuando | | supere , se descartarán aquellos con menor peso, hasta reducir | | a , con el factor de compresión, entre 0 y 1. Una vez realizado este proceso, que será denominado “compresión”, el algoritmo puede continuar con la ejecución. 
De esta manera, es posible encontrar el conjunto de parámetros que permitan la ejecución del algoritmo en un equipo con limitaciones de hardware. 
3.2.2 Matrices de transición configurables 
Hasta el momento se han estudiado matrices de transición normalizadas, que reflejan la probabilidad de salto desde un nodo a otro, siendo este el enfoque utilizado en cadenas de Markov. La alternativa planteada permite elegir entre: 
 Matriz de transición binaria: La alternativa más sencilla, donde cada matriz de transición posee un uno en caso de que exista el arco, cero en caso contrario. 
{ 
 Matriz de transición probabilística: partiendo de las matrices de transición binarias, representan la probabilidad de salto sobre cada arco, considerando una distribución uniforme. Sea M el total de nodos en la red, la probabilidad de salto de i a j se define como: 
Σ 
 Matriz de transición normalizada: partiendo de las matrices de transición binarias, permite obtener un resultado en la propagación normalizada, pero sin penalizar aquellos nodos que poseen un gran número de arcos. 
 Matriz de transición personalizada: en lugar de distribuir uniformemente, es posible definir otras matrices de transiciones según se desee. 
4 Se realiza de manera aleatoria dado que cualquier otro método de selección o descarte requeriría evaluaciones adicionales, teniendo que recuperar cada uno de los nodos independientemente. Dado que se está tratando de disminuir las consultas a bases de datos y servicios, sólo se trabaja con listas de IDs.
33 
3.2.3 Algoritmo presentado 
A continuación se estudia la integración de las modificaciones realizadas sobre el algoritmo de recorridos incrementales presentado en 2.4.6.2, resultando en un algoritmo de uso general con flexibilidad en la definición de toma de decisiones, presentado en el Algoritmo 5. 
El algoritmo parte de un grupo inicial de nodos N(0), entre los que distribuye el peso inicial A(0) de modo uniforme (paso 1). Luego, itera para cada nivel p del camino dado P o bien hasta convergencia (paso 2): en cada paso de la iteración t, se avanza sobre los arcos, según la dirección indicada por el nivel p en que se encuentra, siempre y cuando el arco sea válido según un criterio de salto dado (paso 2.1), siempre evitando excederse del límite máximo de nodos (paso 2.2). Una vez evaluados todos los nodos del nivel N(t), se procede a seleccionar un subconjunto de los alcanzados N(t+1), según un criterio de selección dado (paso 2.3). En paralelo a la propagación de peso, se propaga el número de menciones. 
Cabe aclarar que el peso inicial se distribuye de modo uniforme (inciso 1) puesto que este es el enfoque utilizado en recorridos aleatorios, y simplifica la entrada del algoritmo. En caso de desearse, es posible utilizar otro método para la distribución inicial, utilizando por ejemplo inicialización manual o alguna técnica de ranking. 
Algoritmo 5 – Caminos incrementales modificado 
Entrada: 
 P el camino a recorrer, de largo n 
 N(0) el conjunto de usuarios de partida 
Usado: 
N(t) los nodos alcanzados en el nivel t 
 Ai(0) el peso inicial del nodo i 
 Ai(t) el peso asociado al nodo i en el nivel t 
 Mi (t) el número de menciones del i en el nivel t 
1. Para cada nodo i N(0) 
| | 
2. Para cada nivel p en P, o hasta convergencia 
2.1. Para cada par 
2.2. Compactar (A( 
2.3. A 
2.4. A
34 
Como puede observarse, el algoritmo es flexible, permitiendo configurar: 
 Criterio de salto: para determinar qué arcos serán considerados y que nodos serán candidatos de ser alcanzados, utilizando por ejemplo: 
o Clasificación: saltar desde o hasta nodos que pertenezcan a una categoría dada. 
o Muestreo: seleccionar a lo sumo arcos. 
 Factor de propagación: corresponde a la entrada de la matriz de transición que indica el factor de propagación desde i hasta j. Puede construirse utilizando, por ejemplo: 
o Valor binario: caso más sencillo, donde el valor es uno si hay un arco y cero en caso contrario, pero genera una propagación no normalizada. 
o Valor probabilidad uniforme: la entrada corresponde a la probabilidad de salto, con una distribución uniforme. Corresponde al recorrido aleatorio sobre cadenas de Markov. 
o Valor binario normalizado: Definido de igual manera que el valor binario, pero el peso asociado a la existencia de un arco se reemplaza por ⁄, con M el total de nodos de la red. De esta manera, se obtiene un peso normalizado. 
o Valor personalizado: Un valor distinto a las alternativas presentadas previamente. 
 Criterio de selección: determinar qué nodos serán realmente alcanzados, por ejemplo: 
o Peso: seleccionar solo aquellos nodos cuyo peso sea superior a un umbral dado. 
o Máximo: seleccionar a los sumo nodos 
o Clasificación: Seleccionar solo aquellos nodos que pertenezcan a una categoría dada. 
Cada una de las opciones de configuración dadas influye en la calidad y la cantidad de recomendaciones generadas: tanto los criterios de salto como selección reducen el número final de nodos alcanzados, y por lo tanto pueden llegar a afectar negativamente el recall. Adicionalmente, la poda reduce el número de caminos seguidos, por lo tanto afecta los pesos propagados y en consecuencia la precisión; otras técnicas de ranking, estudiadas en la siguiente sección, se verán también afectadas negativamente si se reduce el número de buenos candidatos en el conjunto final a rankear. Es de gran interés entonces determinar la interacción entre los parámetros, lo que se hará en el capítulo 0. 
3.3 Ranking 
Una vez obtenido un conjunto de usuarios candidatos, es necesario presentarlos al usuario interesado como una lista ordenada. En esta sección se estudian distintas alternativas para asignar el puntaje con el que se realiza el ordenamiento. 
3.3.1 Peso 
Al finalizar el recorrido, los nodos alcanzados tienen un peso asociado basado en la cantidad de caminos que llegaron a ellos. La alternativa más sencilla es simplemente considerar el peso como puntaje asociado.
35 
Sobre el conjunto de usuarios alcanzados por el algoritmo de recolección, es posible seleccionar utilizando un criterio de clasificación heurística aquellos candidatos que son fuentes de información. Al eliminar del conjunto aquellos que no pueden ser fuentes, se reducen los falsos positivos, e idealmente mejora la precisión entre los recomendados. 
3.3.2 Índice de fuente de información (IS) 
Siendo el objetivo de este trabajo recomendar fuentes de información, el Índice de fuente de información presentado en la sección 3.1.1 permite asignar un puntaje heurístico estimando la calidad del usuario candidato como fuente de información. ( ) 
3.3.3 Ranking basado en comparación de seguidores 
En el capítulo 2.3 se ha mencionado el trabajo de Hannon et al. [7], donde se generan perfiles de usuario basados en las sus interrelaciones, generando una solución que sostienen se asemeja al filtrado colaborativo. En su trabajo, al comparar las recomendaciones utilizando perfiles basados en contenido con las obtenidas al utilizar perfiles basados en interrelaciones, las segundas ofrecen igual o mejor precisión. Los perfiles considerados para un usuario objetivo fueron: 
 S1: El usuario es representado por las palabras de sus tweets 
 S2: El usuario es representado por las palabras de los tweets de sus seguidos 
 S3: El usuario es representado por las palabras de los tweets de sus seguidores 
 S4: El usuario es representado por una combinación de S1, S2 y S3 
 S5: El usuario es representado por los ids de sus usuarios seguidos 
 S6: El usuario es representado por los ids de sus usuarios seguidores 
 S7: El usuario es representado por una combinación de S5 y S6 
 S8: La función de puntaje combina resultados de S1 y S6 
 S9: La función de puntaje se basa en la posición de los usuarios en cada una de las recomendaciones, favoreciendo usuarios frecuentemente recomendados 
Ilustración 9: Resultados de precisión para los algoritmos Hannon et al.
36 
En la Ilustración 9 se muestran los resultados reportados por Hannon et al. [7]. Puede observarse que al generar perfiles de usuario considerando solo los seguidores (S6) obtienen resultados que igualan o superan las demás alternativas. 
Para cada una de las estrategias de generación de perfiles, se utilizó como puntaje una función de similitud entre un perfil objetivo (usuario interesado) y los usuarios candidatos, definida de igual manera, independientemente del contenido de los perfiles. 
La similitud entre un perfil objetivo y un perfil candidato se obtiene realizando el producto escalar entre los vectores de pesos asociados y respectivamente, y normalizando respecto al total de términos contenidos en el perfil objetivo. | | 
En orden de calcular el peso asociado para cada término del perfil, existen múltiples alternativas, entre las cuales el trabajo presentado considera dos. 
Recuento de ocurrencias 3.3.3.1 
Al asignar peso a un término del perfil, la estrategia más sencilla es simplemente contar el número de ocurrencias del término. A modo de ejemplo, en el caso de los perfiles basados en tweets, el peso de cada palabra es la cantidad de ocurrencias de esta entre el total de tweets contenidos en el perfil. 
Particularmente, si el perfil es un conjunto de elementos únicos (como en S5 o S6), el elemento poseerá un peso de 1 en caso que el elemento se encuentre en el perfil, 0 en caso contrario. En consecuencia, y serán vectores binarios, y puede simplificarse el cálculo de la función de similitud a: | | | | 
Siendo B(i) el conjunto de arcos entrantes al nodo i, el puntaje de similitud para el algoritmo S6, puede computarse como: | | | | 
Esta alternativa resulta sencilla de implementar, pero no toma en cuenta la rareza de los elementos, ni las dimensiones de los conjuntos, tendiendo entonces a favorecer perfiles con mayor cantidad de términos, en especial aquellos que son frecuentes en el dominio. 
TF-IDF 3.3.3.2 
TFIDF (term frequency–inverse document frequency) es una métrica tomada del área de recuperación de información y que se aplica originalmente a texto. Esta alternativa da mayor
37 
importancia a aquellos términos (para nuestro caso, IDs de usuario) más frecuentes para el documento (en nuestro caso, perfil) objetivo, pero menos frecuentes entre todos los documentos. 
TFIDF se define como el producto de dos estadísticas, la frecuencia del termino (TF - Term frecuency) y la frecuencia inversa en documentos (IDF - inverse document frecuency). 
La frecuencia del término en el documento , se basa en la cantidad de ocurrencias del término i en el documento T sobre el total de ocurrencias de todos los términos en el documento. Σ 
La frecuencia inversa en documentos del término el subconjunto de documentos U se define como el logaritmo de la relación entre el número de documentos evaluados con el número de documentos que contienen al término : | | | | 
La similitud entre dos documentos puede computarse entonces como: ( ) Σ ( ) | | 
Si bien en su trabajo plantean una misma estrategia para el peso de cada termino, al trabajar con listas de seguidores o seguidos (S5 y S6 respectivamente) no existen repeticiones. En estos casos es posible simplificar la frecuencia del término a: { | |⁄ 
Y en consecuencia: ( ) | | Σ( | | | | | | | | ) ( ) | | Σ( | | | | | | ) 
De entre las alternativas presentadas por Hannon et al. Solo será considerada para este trabajo S6, dado que se basa en topología y provee los mejores resultados. Sea B(i) y F(i) el conjunto de
38 
usuarios seguidores y seguidos respectivamente, y N el total de usuarios de la red, el puntaje de similitud basado en los usuarios seguidores (S6) se define como: ( ) | || | Σ( | | | | ) 
Puede observarse que esta función utiliza los mismos elementos tratos durante la recolección, permitiendo incorporarla sin dificultad a la solución presentada. 
3.3.4 Función de scoring compuesta 
Cada una de las funciones presentadas previamente representa distintos aspectos sobre el interés del usuario. 
 El peso propagado durante la recolección indica la cercanía a nivel comunidades 
 El índice de fuente de información da una estimación inicial del potencial como proveedor de información del usuario, independientemente de la cercanía 
 El puntaje de Hannon S6 indica la similitud directa entre el usuario candidato y el inicial, dando una información alternativa a la obtenida mediante propagación de pesos. 
3.4 Combinación de resultados 
Distintos recorridos o distintas funciones de ranking generan distintas recomendaciones. A continuación se estudia la posibilidad de mejorar los resultados individuales al combinarlos. 
Partiendo de dos algoritmos que proveen una recomendación ordenada, aquellos usuarios recomendados por el algoritmo “1” pueden combinarse con los provistos por el algoritmo “2”, utilizando operaciones de conjuntos sobre los nodos, y luego combinando los pesos asociados. 
Ilustración 10: Diagrama de Venn ilustrando la relación entre las recomendaciones provistas por los algoritmos Fuentes y Amigos.
39 
Desde la perspectiva del algoritmo “1”, los usuarios recomendados por el algoritmo “2” pueden ser: 
 Elementos redundantes: 
 Elementos nuevos: 
Las operaciones básicas entre estos dos conjuntos son: 
 Unión: Incorporando los elementos nuevos, en busca de aumentar el recall 
 Intersección: Conservando solo los elementos redundantes, en búsqueda de mejorar la precisión 
Respecto a la combinación de los puntajes asociados, existen diversas alternativas. A continuación se estudian las alternativas consideradas, que pueden extenderse de manera sencilla para n recomendaciones. 
Combinación lineal 3.4.1.1 
Utilizando un factor de combinación , se puede definir el peso de autoridad compuesto como: 
El factor de combinación puede obtenerse de distintas maneras: 
 Equiprobable: solución trivial, donde se promedian los pesos obtenidos por distintos recorridos. 
 Asignado por parámetro: si se conoce la precisión media de los recorridos, es posible establecer el valor de modo explícito. 
 Criterio: es posible utilizar un criterio para determinar el porcentaje de cada una de las categorías, y utilizarlo como factor de escala. 
Combinación no lineal 3.4.1.2 
Si se desconoce la escala de cada ranking, y se considera que ambos proveen información vital, es posible obtener un ranking combinado multiplicando los rankings individuales. 
Combinación con prioridades 3.4.1.3 
Si ambos algoritmos ofrecen puntajes a grupos disjuntos de usuarios, o bien el primero ofrece consistentemente mejores puntajes para un subconjunto de interés, puede definirse el puntaje con prioridades como: { 
Con y normalizados.
40 
Multiplicando el valor de por el mínimo obtenido para el conjunto de interés para , se conserva el orden de interno de cada ranking, pero el conjunto de interés se encontrará primero en el ranking. 
3.5 Conclusión 
En este capítulo se ha presentado un algoritmo de recomendación basado en topología, y se ha establecido un framework genérico para la ejecución del algoritmo, permitiendo la configuración y extensión de estrategias asociadas. Sobre este framework, se han presentado dos recorridos basados en la existencia de comunidades, en busca de generar recolecciones rápidas, para luego mejorar mediante técnicas de ranking. 
A continuación en el capítulo 0 se presenta el diseño asociado a la implementación del algoritmo, y en el capítulo 0 se presenta la experimentación para la evaluación de los distintos aspectos configurables.
41 
Capí tulo 4: 
Disen o e Ímplementacio n
42 
4 Diseño e Implementación 
Como lenguaje de programación se ha seleccionado Java, bajo el paradigma de programación orientada a objetos. La idea principal sobre este diseño es que las clases diseñadas puedan ser reutilizadas posteriormente a modo de biblioteca; internamente, los paquetes deben tener alta cohesión y bajo acoplamiento, facilitando así las tareas de expansión y mantenimiento de los mismos. 
El diseño del algoritmo de recomendación se ha dividido en paquetes, reflejando los diferentes aspectos del proyecto. Cada uno de estos paquetes exporta una interfaz fundamental que provee el comportamiento requerido. 
Ilustración 11: Diagrama de clases indicando solo las interfaces exportadas por cada paquete. Se han excluido las dependencias de la interfaz usuario por simplicidad. 
4.1 Usuario 
El paquete fundamental contiene la información sobre el usuario, sus interrelaciones, tweets y metadatos. Al diseñar el usuario se debe tener en cuenta el número de usuarios totales que se mantendrán en memoria, y la redundancia de las consultas. 
Tres decisiones fundamentales son: 
 Patrón flyweight (conocido también como objeto ligero): solo se mantiene en memoria una única instancia del usuario completo; cada una de las copias será un proxy referenciando a instancia completa. 
 Inicialización lazy: como se ha visto previamente, un usuario consta de distintas partes separables (en particular al tratar con Twitter API), aprovechando esta característica, la instancia del usuario se va completando al ser requerido.
43 
 Relaciones como arreglo de IDs: dado el número de arcos posibles para un usuario, crear una instancia de cada uno de los referenciados requiere la creación de un gran número de objetos que adicionalmente difícilmente sean utilizados. Por esto, cada usuario solo conserva el ID de cada uno de aquellos con los que se relaciona, pudiendo obtenerlos al momento de ser requerido. 
A continuación, en la Ilustración 12, pueden observarse las clases fundamentales. Un usuario proxy almacena la información correspondiente a la instancia y su puntaje, e interactúa con un Factory de usuarios asociado, solicitando cuando lo requiera la actualización de la información correspondiente al usuario, y proveyendo métodos de alto nivel para obtener los seguidos y seguidores como listas de usuarios. Las implementaciones de Usuario corresponden a TwitterAPI y dataset utilizado. 
Ilustración 12: Diagrama de clases del paquete Usuario. Se han omitido métodos getters y setters triviales, propios de estructuras de datos. 
4.2 Usuario Factory 
Para solucionar las diferencias entre las fuentes de información (a saber, el API de Twitter y el dataset), se utiliza una interfaz genérica. Las principales características son:
44 
 Patrón Factory: la creación y en consecuencia la selección del mejor método para obtener los usuarios es delegada a una clase específica, asociada a la fuente de información y consideraciones correspondientes. 
 Persistencia: dadas las grandes limitaciones que impone Twitter, se utiliza una base de datos local donde se almacenan las consultas realizadas. Estos datos poseen una fecha de modificación, lo que permite imponer una antigüedad máxima después de la cual debe volver a consultarse al API. 
 Caché: el patrón flyweight requiere una indexación de las instancias actuales; se extiende esta decisión a mantener en memoria las últimas consultas realizadas. Dado que en este proyecto no se realizan modificaciones de los datos, no es necesario evaluar posibles inconsistencias entre valores referenciados entre distintos objetos livianos, aun cuando el objeto indexado deba ser desalojado de la caché. 
 Facade: a fin de abstraer las capas superiores de la decisión de solicitar información al API o a la base de datos, se crea una capa intermedia que atiende las consultas y se encarga del mantenimiento de los usuarios en memoria y base de datos. Para el caso del dataset, la información contenida es mucho menor, limitando el facade a un simple wrapper de los llamados a los servicios de la base de datos. 
A continuación en la Ilustración 13 pueden observarse los factories implementados, donde se muestra una íntima relación con la implementación asociada, indicadas en el inciso anterior. 
Ilustración 13: Diagrama de clases del paquete Factory usuario.
45 
4.3 Criterio Usuario 
Al momento de generar criterios de decisión, existen una gran cantidad de posibilidades. Se ha decidido utilizar el patrón strategy, junto con el patrón composite para criterios múltiples, maximizando la flexibilidad. A continuación en la Ilustración 14 se indican los criterios planteados, quedando abierta la posibilidad de crear nuevos, en caso de necesitarse. 
Ilustración 14: Diagrama de clases del paquete Criterio Usuario. 
4.4 Comparador Usuarios 
Similar al caso de los criterios, existe una gran cantidad de maneras de comparar usuarios. Al momento de implementar, se optó por utilizar nuevamente el patrón strategy, extendiendo a su vez la interfaz estándar de Java Comparator, aprovechando de esta manera los algoritmos de ordenamiento provistos por las librerías del lenguaje. Para el caso de comparadores complejos, se ha utilizado el patrón composite. En la Ilustración 15 se indican los comparadores implementados.
46 
Ilustración 15: Diagrama de clases del paquete Comparador Usuarios. 
4.5 Scoring Usuario 
La evaluación del scoring final para la recomendación requiere en algunos casos considerar el total de los usuarios candidatos, por razones de normalización o términos globales (como es el caso de la frecuencia inversa del documento en TF-IDF); por esto, la clase responsable de la función de scoring evalúa el total de los usuarios candidatos. A continuación pueden observarse las clases implementadas, nuevamente basándose en el patrón strategy. 
Ilustración 16: Diagrama de clases del paquete Scoring Usuario.
47 
4.6 Recolector y Nivel Recolección 
El recolector se encarga de coordinar la ejecución sucesiva de los niveles planteados, y el retorno de los resultados obtenidos. Un nivel de recolección cuenta con el modo de recorrido, y está íntimamente ligado a que lista de usuarios y que estrategias de normalización utilizar. Siendo de interés para este proyecto solo utilizar seguidos y seguidores, la implementación realizada es sencilla, pero flexible en caso de necesitarse en el futuro. 
Ilustración 17: Diagrama de clases del paquete Nivel de Recolección. 
4.7 Factory de Recolección de Usuarios 
Dado que en cada nivel deben tomarse decisiones sobre las listas de usuarios a construir, se utiliza nuevamente un Factory intermediario entre las consultas desde el nivel y el Factory de Usuarios. Este se encarga del muestreo, en caso que la cantidad de usuarios siguientes sea demasiado
48 
grande, así como de la normalización de pesos, previo al salto; dado que se encuentra íntimamente relacionado con el comportamiento del nivel, se delega la construcción de estos al Factory, permitiendo ocultar de manera transparente la lógica de comunicación con las capas inferiores. 
Ilustración 18: Diagrama de clases del paquete Nivel de Recolección. 
4.8 Ranking y combinación de resultados 
El ranking requiere asignar un valor numérico a cada usuario a recomendar. Al final de la recolección, cada usuario posee dos valores asociados: el peso y el número de menciones; otros puntajes pueden computarse externamente, basados en sus características como el IS o nodos vecinos como los rankings colaborativos presentados por Hannon. A su vez, es posible combinar distintas estrategias de ranking de diversas maneras. La implementación provista provee cada una
49 
de las alternativas presentadas, y da lugar a la extensión en caso que sea necesario, en particular, si se desea incluir procesamiento de contenido. 
Ilustración 19: Diagrama de clases del paquete Ranking usuarios. 
Dos rankings pueden combinarse mediante operaciones de conjuntos; se han implementado las funciones de unión e intersección, permitiendo modificar que estrategia se utiliza para combinar los puntajes individuales.
50 
Ilustración 20: Diagrama de clases del paquete Combinación de puntajes. 
4.9 Conclusión 
Puede observarse que la implementación del algoritmo propuesto presenta flexibilidad en cada uno de los puntos requeridos para su extensión. En caso que se desee incluir procesamiento de contenido, solo se deben implementar las interfaces o bien extender las clases correspondientes.
51 
Capí tulo 5: 
Experimentacio n
52 
5 Experimentación 
En este capítulo se presentan las pruebas realizadas sobre los algoritmos planteados para evaluar la capacidad de 1) alcanzar usuarios de interés, y 2) generar recomendaciones. Para esto, se estudian primero de manera general distintas combinaciones de recorridos y parámetros, para generar una preselección, y luego se evalúa la mejor combinación en comparación con otras alternativas de ranking basadas en topología. 
5.1 Tratamiento de datos 
Una vez realizados los experimentos sobre una muestra del total de usuarios, se obtiene un valor para cada métrica de interés por cada experimento realizado; es necesario entonces resumir los resultados obtenidos a fin de realizar conclusiones. En esta sección se estudian las medidas básicas utilizadas. 
5.1.1 Valor característico 
A fin de obtener un valor representativo que resuma los resultados obtenidos se utilizarán medidas de tendencia central. A continuación se estudian las alternativas más comunes con sus ventajas y desventajas. 
Media aritmética 5.1.1.1 
La media aritmética (también llamada promedio o media) de un conjunto finito de números es el valor característico de una serie de datos cuantitativos objeto de estudio que parte del principio de la esperanza matemática o valor esperado, se obtiene a partir de la suma de todos sus valores dividida entre el número de sumandos. ̅ Σ 
Una de las limitaciones de la media aritmética es que se trata de una medida muy sensible a los valores atípicos: valores muy grandes tienden a aumentarla mientras que valores muy pequeños tienden a reducirla, lo que implica que puede dejar de ser representativa de la población. 
Esta medida es la más utilizada en la literatura, y será utilizada para dar un primer acercamiento a los resultados obtenidos. 
Mediana 5.1.1.2 
En el ámbito de la estadística, la mediana representa el valor de la variable de posición central en un conjunto de datos ordenados, separándolo en una mitad mayor y una menor. Para el caso de las métricas estudiadas, indica un valor umbral para el 50% de los resultados obtenidos. 
A diferencia de la media, no es sensible a valores atípicos, por lo que suele utilizase cuando los datos se encuentran dispersos, pero al depender de solo uno (o a lo sumo dos) de los valores de la muestra se vuelve menos representativa.
53 
5.2 Validación cruzada 
En este experimento se utilizó 3-fold cross-validation, dividiendo el conjunto de usuarios actualmente seguidos en tres subconjuntos, y ocultando un subconjunto a la vez, para luego evaluar la capacidad de los algoritmos de recuperar los usuarios ocultos. 
Al evaluar las métricas explicadas previamente, el conjunto de usuarios de interés es conocido, estando conformado por los usuarios ocultos. 5.2.1 K-fold cross-validation 
En k-fold cross-validation, la muestra original es particionada de manera aleatoria en k sub- muestras de igual tamaño. De las k sub-muestras, una es conservada para probar el modelo, mientras que las k - 1 restantes se utilizan para entrenamiento. La validación cruzada es repetida k veces (folds) con cada una de las k sub-muestras utilizándolas exactamente una vez como conjunto de prueba. Los k resultados se combinan (utilizando la media, por ejemplo) para producir una única estimación. La ventaja de este método sobre muestreo aleatorio es que cada uno de los subconjuntos es utilizado tanto como entrenamiento y validación, y cada observación es utilizada exactamente una vez. 
5.2.2 Dataset 
Para la evaluación automática se ha utilizado el dataset5 provisto por Kwak et al. [3], que consta de 41.7 millones de usuarios con un total de 1.47 mil millones relaciones seguidor-seguido. Para determinar la distribución de seguidos y seguidores, Kwak et al. estudian la función de distribución complementaria CCDF (por su nombre en inglés Complementary cumulative distribution function), definida como el complemento de la distribución acumulada. CCDF indica la probabilidad de encontrar un usuario con más seguidos o seguidores que un valor umbral t. 
Los resultados para CCDF sobre el dataset se encuentran en Ilustración 21. 
5 http://an.kaist.ac.kr/traces/WWW2010.html
54 
Ilustración 21: distribución complementaria del dataset provisto por Kwak et al. 
Kwak et al. describen en detalle el comportamiento del número de seguidos y seguidores, indicando que responden a la Ley exponencial, tal como otras redes sociales. A continuación se presentan las observaciones más importantes. 
Centrándose en los usuarios seguidos, puede observarse que existe una anomalía sobre luego de los primeros 20, lo cual coincide con la recomendación inicial de Twitter a nuevos usuarios. Pocos usuarios poseen más de 10.000 seguidos, solo páginas de políticos y celebridades, que ofrecen alguna forma de atención al cliente. 
Solo unos pocos poseen más de un millón de seguidores, y estos son o bien celebridades (como Ashton Kutcher y Britney Spears) o medios masivos (como CNN y TIMES). De estos usuarios, algunos poseen relaciones simétricas con sus seguidores, pero no en la mayoría de los casos. 
En general, existe un bajo grado de reciprocidad: del total de las relaciones entre usuarios, 77.9% son unidireccionales, dejando sólo un 22.1% reciprocas; esto es bajo en comparación con estudios sobre otras redes sociales (68% en Flickr [4] y 84% en Yahoo!). Incluso, del total de los usuarios contenidos en el dataset, el 67.6% no son seguidos por ninguno de los usuarios a los que siguen, indicando el uso de la red como una herramienta para buscar información más que para interacción social. 
5.2.3 Caracterización de algoritmos 
A fin de determinar el comportamiento individual de los algoritmos presentados, se realizaron recomendaciones para 200 usuarios, variando los parámetros de fanout. En esta primera etapa no se busca recomendar fuentes, sino determinar qué algoritmos poseen mayor potencial para este
55 
fin. Los algoritmos presentados en la Tabla 2 se definen a partir de 4 recorridos y 6 combinaciones de recorridos: 
Tabla 2: Algoritmos estudiados Nombre Recorrido Transición Scoring interno A1 
fuentes 
binaria 
peso A2 
fuentes 
probabilística 
peso A3 
A1 Unión A2 
N/A 
6 A4 
A1 Intersección A2 
N/A 
A5 
Amigos 
binaria 
Peso A6 
Amigos 
probabilística 
Peso A7 
A5 Unión A6 
N/A 
4 A8 
A5 Intersección A6 
N/A 
A9 
A2 Unión A6 
N/A 
4 A10 
A2 Intersección A6 
N/A 
Para el peso, se consideraron 3 funciones de scoring, presentados en la Tabla 3: 
Tabla 3: Funciones de scoring utilizadas por los rankings iniciales Nombre Scoring externo R1 
Peso durante recolección A2 
Menciones durante recolección7 R3 
Cada uno de estos algoritmos será estudiado con las siguientes configuraciones de fanout: 
 Límite de arcos por nodo: {5 mil; 20mil} 
Cantidad máxima de arcos (seguidor o seguido) que se evaluaran desde un usuario. Disminuye la influencia de nodos sumideros y fuentes. 
 Límite de nodos por nivel: {200; 800} 
Para los algoritmos de más de dos niveles, se consideró la posibilidad de no utilizar usuarios alcanzados por los niveles anteriores. 
 Límite máximo de usuarios: 2 millones 
Cantidad de usuarios máxima considerada durante la evaluación de un nivel. Al superar el máximo se descartarán todos los usuarios con una sola ocurrencia (compactación), y se proseguirá con la recomendación. 
Dado el número de variables a estudiar, se presentarán primero las tablas de resultados obtenidos para cada conjunto de parámetros y luego se descompondrán para estudiar sus efectos. 
6 En caso de no existir uno de los elementos, se utilizara 0.1 como score por defecto 
7 Equivalente al peso propagado por la transición binaria
56 
Recall 5.2.3.1 
El primer objetivo de la evaluación es determinar qué porcentaje de nodos puede recuperarse, dando el conjunto de trabajo a partir del cual seleccionar una recomendación. En la Tabla 4 se presentan los resultados obtenidos para los algoritmos presentados. 
Tabla 4: Recall total obtenido para cada algoritmo y combinación de parámetros Algoritmo Recall total 200 nodos 800 nodos 5000 arcos 20000 arcos 5000 arcos 20000 arcos 
A1 
0,629 
0,690 
0,745 
0,784 
A2 
0,651 
0,706 
0,769 
0,807 
A3 
0,706 
0,758 
0,801 
0,835 
A4 
0,574 
0,638 
0,713 
0,755 
A5 
0,508 
0,545 
0,534 
0,570 
A6 
0,508 
0,545 
0,534 
0,570 
A7 
0,508 
0,545 
0,534 
0,570 
A8 
0,508 
0,545 
0,534 
0,570 
A9 
0,719 
0,761 
0,810 0,842 
A10 
0,440 
0,490 
0,494 
0,535 
Los mejores valores se obtienen con el algoritmo A2 (recorrido según fuentes con transiciones probabilísticas), ya sea directamente o al combinar sus resultados en A3 (recorrido binario según fuentes) y A9 (recorrido probabilístico según amigos); particularmente, el mejor valor se obtiene con A9, lo que resulta una consecuencia lógica dado que se intervienen dos recorridos distintos y por lo tanto se aumenta el número efectivo de usuarios alcanzados. Al estudiar los parámetros de fanout puede observarse que el recall es directamente proporcional tanto al número de nodos como el número de arcos considerados. 
5.2.3.1.1 Recall según número de seguidos 
Otro factor de importancia es el número de usuarios seguidos, siendo éstos los que proveen información topográfica. En la evaluación por redescubrimiento, los usuarios restantes (holdin) representan el conjunto de usuarios seguidos; según este, es posible clasificar los usuarios de prueba en cuatro subconjuntos de similar tamaño, los rangos para la división en cuatro subconjuntos se encuentran indicados en la Tabla 5. 
Tabla 5: Subcategorías de pruebas Categoría seguidos Casos de prueba 
19-99 
148 
100-167 
150 
168-258 
149 
259-396 
153 
Total 
600
57 
Cada uno de estos subconjuntos cuenta entonces con aproximadamente 150 usuarios, una muestra suficiente para dar resultados significativos. A continuación en la Tabla 6 se exponen los valores de recall asociados a cada uno de los subgrupos generados. Se ha resaltado en naranja el mejor resultado para cada subconjunto. 
Tabla 6: Recall total para los algoritmos principales, para cada combinación de parámetros y subcategoría Categoría Seguidos Recall según seguidos Algoritmo 3 (A3) Algoritmo 6 (A6) Algoritmo 9 (A9) N200 N800 N200 N800 N200 N800 L5000 L20000 L5000 L20000 L5000 L20000 L5000 L20000 L5000 L20000 L5000 L20000 19-99 
0,624 
0,654 
0,707 
0,740 
0,427 
0,459 
0,427 
0,459 
0,690 
0,718 
0,764 0,795 100-167 
0,618 
0,681 
0,751 
0,793 
0,498 
0,533 
0,498 
0,533 
0,693 
0,743 
0,792 0,828 168-258 
0,682 
0,737 
0,796 
0,832 
0,563 
0,600 
0,574 
0,612 
0,749 
0,789 
0,830 0,858 259-396 
0,679 
0,750 0,821 
0,857 
0,542 
0,587 
0,635 
0,675 
0,743 
0,794 
0,852 0,881 
Los parámetros de fanout se encuentran indicados con los prefijos N# para el numero de nodos y L# para el numero de arcos (links). 
Puede observarse claramente que A9 ofrece los mejores resultados para cada conjunto de parámetros, en particular, para el mayor fanout estudiado. Así también, el recall aumenta según el número de usuarios seguidos. 
Ilustración 22: Comparación del recall obtenido para cada recomendación realizada, ordenada según número de usuarios restantes. Cada evaluación corresponde a un conjunto de parámetros, donde N precede al número de nodos y L al número de arcos. 
- 
0,10 
0,20 
0,30 
0,40 
0,50 
0,60 
0,70 
0,80 
0,90 
1,00 
- 
50,00 
100,00 
150,00 
200,00 
250,00 
300,00 
350,00 
400,00 
Recall 
restantes 
Recall de A9 según número seguidos 
N200-L5000 
N800-L20000
58 
En la Ilustración 22 se presenta el recall obtenido para A9 para dos juegos de parámetros, ordenados según número de usuarios seguidos restantes, es decir, aquellos usuarios seguidos que no han sido ocultos (que se denominará también holdin, de manera análoga a holdout). 
Pueden realizarse una observación de interés: al aumentar el número de seguidos o el fanout, el recall tiende a converger. 
5.2.3.1.2 Último encontrado 
Para todos los algoritmos, el recall aumenta tanto al incrementar los nodos o arcos considerados, esto tiene un impacto en la cantidad final de nodos alcanzados. A continuación en la Tabla 7 se expone la posición mediana del último usuario recuperado para cada conjunto de parámetros, resaltando en negrita el 25% de los casos con el menor valor para la última posición alcanzada para cada conjunto de parámetros, y en naranja el menor valor global. 
Tabla 7: Posición mediana del último encontrado para cada algoritmo y conjunto de parámetros Nombre Algoritmo Ranking Posición último encontrado 200 nodos 800 nodos 5000 arcos 20000 arcos 5000 arcos 20000 arcos A1R1 A1 R1 
80.685 
243.269 
214.305 
539.855 A2R1 A2 R1 
43.016 
162.793 
113.455 
366.966 A3R1 A3 R1 
90.253 
261.106 
228.763 
562.820 A4R1 A4 R1 
49.952 
148.087 
90.266 
277.713 A5R1 A5 R1 
17.501 
22.928 
28.383 
37.077 A6R1 A6 R1 
16.084 
21.396 
24.960 
32.677 A7R1 A7 R1 
16.231 
21.590 
25.089 
32.880 A8R1 A8 R1 
16.230 
21.590 
25.088 
32.880 A9R1 A9 R1 
64.487 
210.954 
170.141 
508.736 A10R1 A10 R1 
26.843 
67.938 
32.452 
79.148 A1R2 A1 R2 
80.685 
243.269 
214.305 
539.855 A2R2 A2 R2 
58.419 
234.734 
182.924 
627.397 A3R2 A3 R2 
104.867 
321.494 
288.544 
768.828 A4R2 A4 R2 
53.393 
178.597 
120.849 
416.881 A5R2 A5 R2 
17.501 
22.928 
28.383 
37.077 A6R2 A6 R2 
16.116 
21.461 
25.318 
33.269 A7R2 A7 R2 
17.554 
22.989 
28.426 
37.118 A8R2 A8 R2 
17.554 
22.989 
28.426 
37.118 A9R2 A9 R2 
70.192 
258.452 
207.939 
695.532 A10R2 A10 R2 
26.964 
68.100 
33.420 
80.262 A1R3 A1 R3 
80.685 
243.269 
214.305 
539.855 A2R3 A2 R3 
43.915 
167.061 
113.494 
372.121 A3R3 A3 R3 
93.114 
259.112 
228.902 
529.844 A4R3 A4 R3 
50.405 
152.616 
93.153 
297.371 A5R3 A5 R3 
17.501 
22.928 
28.383 
37.077 A6R3 A6 R3 16.046 
21.362 
24.923 
32.728 A7R3 A7 R3 
16.220 
21.601 
25.200 
33.096 A8R3 A8 R3 
16.220 
21.601 
25.200 
33.096 A9R3 A9 R3 
60.044 
192.388 
153.102 
435.098 A10R3 A10 R3 
26.850 
67.936 
32.569 
79.305
Recomendación de usuarios en Twitter basada en topología
Recomendación de usuarios en Twitter basada en topología
Recomendación de usuarios en Twitter basada en topología
Recomendación de usuarios en Twitter basada en topología
Recomendación de usuarios en Twitter basada en topología
Recomendación de usuarios en Twitter basada en topología
Recomendación de usuarios en Twitter basada en topología
Recomendación de usuarios en Twitter basada en topología
Recomendación de usuarios en Twitter basada en topología
Recomendación de usuarios en Twitter basada en topología
Recomendación de usuarios en Twitter basada en topología
Recomendación de usuarios en Twitter basada en topología
Recomendación de usuarios en Twitter basada en topología
Recomendación de usuarios en Twitter basada en topología
Recomendación de usuarios en Twitter basada en topología
Recomendación de usuarios en Twitter basada en topología
Recomendación de usuarios en Twitter basada en topología
Recomendación de usuarios en Twitter basada en topología
Recomendación de usuarios en Twitter basada en topología
Recomendación de usuarios en Twitter basada en topología
Recomendación de usuarios en Twitter basada en topología
Recomendación de usuarios en Twitter basada en topología
Recomendación de usuarios en Twitter basada en topología
Recomendación de usuarios en Twitter basada en topología
Recomendación de usuarios en Twitter basada en topología
Recomendación de usuarios en Twitter basada en topología
Recomendación de usuarios en Twitter basada en topología
Recomendación de usuarios en Twitter basada en topología
Recomendación de usuarios en Twitter basada en topología
Recomendación de usuarios en Twitter basada en topología
Recomendación de usuarios en Twitter basada en topología
Recomendación de usuarios en Twitter basada en topología
Recomendación de usuarios en Twitter basada en topología
Recomendación de usuarios en Twitter basada en topología
Recomendación de usuarios en Twitter basada en topología
Recomendación de usuarios en Twitter basada en topología
Recomendación de usuarios en Twitter basada en topología
Recomendación de usuarios en Twitter basada en topología
Recomendación de usuarios en Twitter basada en topología
Recomendación de usuarios en Twitter basada en topología
Recomendación de usuarios en Twitter basada en topología
Recomendación de usuarios en Twitter basada en topología
Recomendación de usuarios en Twitter basada en topología
Recomendación de usuarios en Twitter basada en topología
Recomendación de usuarios en Twitter basada en topología
Recomendación de usuarios en Twitter basada en topología
Recomendación de usuarios en Twitter basada en topología
Recomendación de usuarios en Twitter basada en topología
Recomendación de usuarios en Twitter basada en topología
Recomendación de usuarios en Twitter basada en topología
Recomendación de usuarios en Twitter basada en topología
Recomendación de usuarios en Twitter basada en topología
Recomendación de usuarios en Twitter basada en topología
Recomendación de usuarios en Twitter basada en topología
Recomendación de usuarios en Twitter basada en topología
Recomendación de usuarios en Twitter basada en topología
Recomendación de usuarios en Twitter basada en topología
Recomendación de usuarios en Twitter basada en topología
Recomendación de usuarios en Twitter basada en topología
Recomendación de usuarios en Twitter basada en topología
Recomendación de usuarios en Twitter basada en topología
Recomendación de usuarios en Twitter basada en topología
Recomendación de usuarios en Twitter basada en topología
Recomendación de usuarios en Twitter basada en topología
Recomendación de usuarios en Twitter basada en topología
Recomendación de usuarios en Twitter basada en topología
Recomendación de usuarios en Twitter basada en topología

Mais conteúdo relacionado

Destaque

Ponente mario antonio veloza calderon copia
Ponente mario antonio veloza calderon   copiaPonente mario antonio veloza calderon   copia
Ponente mario antonio veloza calderon copia
maveloza
 
Practica de laboratorio nº 6
Practica de laboratorio nº 6Practica de laboratorio nº 6
Practica de laboratorio nº 6
andree04
 

Destaque (20)

Ponente mario antonio veloza calderon copia
Ponente mario antonio veloza calderon   copiaPonente mario antonio veloza calderon   copia
Ponente mario antonio veloza calderon copia
 
Aplicaciones Informáticas
Aplicaciones InformáticasAplicaciones Informáticas
Aplicaciones Informáticas
 
Ppt 18 octobre 2016
Ppt  18 octobre 2016 Ppt  18 octobre 2016
Ppt 18 octobre 2016
 
Tarea2.2. monica
Tarea2.2. monicaTarea2.2. monica
Tarea2.2. monica
 
Practica de laboratorio nº 6
Practica de laboratorio nº 6Practica de laboratorio nº 6
Practica de laboratorio nº 6
 
Glosario periodismo político rosehelim
Glosario periodismo político rosehelimGlosario periodismo político rosehelim
Glosario periodismo político rosehelim
 
CV_AThibault_2017_fr
CV_AThibault_2017_frCV_AThibault_2017_fr
CV_AThibault_2017_fr
 
Presentació Projecte. Connexió TIC
Presentació Projecte. Connexió TICPresentació Projecte. Connexió TIC
Presentació Projecte. Connexió TIC
 
Fracciones homogeneas trabajo liz
Fracciones homogeneas trabajo lizFracciones homogeneas trabajo liz
Fracciones homogeneas trabajo liz
 
Légère embellie de la cote de confiance de l’exécutif
Légère embellie de la cote de confiance de l’exécutifLégère embellie de la cote de confiance de l’exécutif
Légère embellie de la cote de confiance de l’exécutif
 
Act1 jior
Act1  jiorAct1  jior
Act1 jior
 
Artículo 5 Guianeya Pérez[1]
Artículo 5 Guianeya Pérez[1]Artículo 5 Guianeya Pérez[1]
Artículo 5 Guianeya Pérez[1]
 
Act1_AJMC
Act1_AJMCAct1_AJMC
Act1_AJMC
 
Comenzar
ComenzarComenzar
Comenzar
 
PRESENTACION
PRESENTACIONPRESENTACION
PRESENTACION
 
Gráficos
GráficosGráficos
Gráficos
 
Magali y lidia
Magali y lidia Magali y lidia
Magali y lidia
 
Video
VideoVideo
Video
 
Fichas de contenido
Fichas de contenidoFichas de contenido
Fichas de contenido
 
Plan de acción tutorial
Plan de acción tutorialPlan de acción tutorial
Plan de acción tutorial
 

Semelhante a Recomendación de usuarios en Twitter basada en topología

Búsquedas contextuales de Servicios Basados en Localización en un entorno de ...
Búsquedas contextuales de Servicios Basados en Localización en un entorno de ...Búsquedas contextuales de Servicios Basados en Localización en un entorno de ...
Búsquedas contextuales de Servicios Basados en Localización en un entorno de ...
Gabriel Gonzalez Serna
 
4. ti cs para el buen gobierno
4. ti cs para el buen gobierno4. ti cs para el buen gobierno
4. ti cs para el buen gobierno
Sago11
 
Estudio sobre conciertos
Estudio sobre conciertosEstudio sobre conciertos
Estudio sobre conciertos
soypublica
 
302 2004 esca-st_maestria_chavez
302 2004 esca-st_maestria_chavez302 2004 esca-st_maestria_chavez
302 2004 esca-st_maestria_chavez
Viianey Amador
 

Semelhante a Recomendación de usuarios en Twitter basada en topología (20)

Búsquedas contextuales de Servicios Basados en Localización en un entorno de ...
Búsquedas contextuales de Servicios Basados en Localización en un entorno de ...Búsquedas contextuales de Servicios Basados en Localización en un entorno de ...
Búsquedas contextuales de Servicios Basados en Localización en un entorno de ...
 
Relacion entre didactica en nivel superior y tics
Relacion entre didactica en nivel superior y ticsRelacion entre didactica en nivel superior y tics
Relacion entre didactica en nivel superior y tics
 
Estudio percepcion privacidad_v3
Estudio percepcion privacidad_v3Estudio percepcion privacidad_v3
Estudio percepcion privacidad_v3
 
Enseñanza
EnseñanzaEnseñanza
Enseñanza
 
Snna área6 microcurriculos_19mar2014
Snna área6 microcurriculos_19mar2014Snna área6 microcurriculos_19mar2014
Snna área6 microcurriculos_19mar2014
 
4. ti cs para el buen gobierno
4. ti cs para el buen gobierno4. ti cs para el buen gobierno
4. ti cs para el buen gobierno
 
Unidad iii de info iv 2013 ejerecicio
Unidad iii de info iv 2013 ejerecicioUnidad iii de info iv 2013 ejerecicio
Unidad iii de info iv 2013 ejerecicio
 
Ca a cprograma
Ca a cprogramaCa a cprograma
Ca a cprograma
 
Programa CA/AC
Programa CA/ACPrograma CA/AC
Programa CA/AC
 
Hacia una red latinoamericana de recursos educativos abiertos (REA)
Hacia una red latinoamericana de recursos educativos abiertos (REA)Hacia una red latinoamericana de recursos educativos abiertos (REA)
Hacia una red latinoamericana de recursos educativos abiertos (REA)
 
Formación en tic's
Formación en tic'sFormación en tic's
Formación en tic's
 
Guia Evaluacion Impacto Metodologias Participativas
Guia Evaluacion Impacto Metodologias ParticipativasGuia Evaluacion Impacto Metodologias Participativas
Guia Evaluacion Impacto Metodologias Participativas
 
Tic y educación
Tic y educaciónTic y educación
Tic y educación
 
Tic en educación
Tic en educaciónTic en educación
Tic en educación
 
Microcurriculo de economia
Microcurriculo de economiaMicrocurriculo de economia
Microcurriculo de economia
 
Wikilibro. Fundamentos.
Wikilibro. Fundamentos. Wikilibro. Fundamentos.
Wikilibro. Fundamentos.
 
Estudio sobre conciertos
Estudio sobre conciertosEstudio sobre conciertos
Estudio sobre conciertos
 
302 2004 esca-st_maestria_chavez
302 2004 esca-st_maestria_chavez302 2004 esca-st_maestria_chavez
302 2004 esca-st_maestria_chavez
 
El rol de las tic en la competitividad de las PyME - María Verónica Alderete
El rol de las tic en la competitividad de las PyME - María Verónica AldereteEl rol de las tic en la competitividad de las PyME - María Verónica Alderete
El rol de las tic en la competitividad de las PyME - María Verónica Alderete
 
El rol de las TIC en la competitividad de las PyME - Verónica Alderete
El rol de las TIC en la competitividad de las PyME - Verónica AldereteEl rol de las TIC en la competitividad de las PyME - Verónica Alderete
El rol de las TIC en la competitividad de las PyME - Verónica Alderete
 

Recomendación de usuarios en Twitter basada en topología

  • 1. TESIS DE GRADO Recomendación de usuarios en Twitter basada en topología Universidad Nacional del Centro de la Provincia de Buenos Aires Autor: Joan Sol Roo Director: Dr. Marcelo Armentano Fecha: 11/06/2014
  • 2. 1 Resumen Encontrar fuentes de información de buena calidad dentro de la comunidad de micro-blogging usando Twitter se vuelve esencial para los usuarios que utilizan esta plataforma en búsqueda de información. En este contexto, el enfoque tradicional de recomendación de usuarios basado en el análisis de contenido se dificulta debido al número de usuarios candidatos a evaluar en la red, en conjunto con limitaciones impuestas por Twitter para acceder a sus datos. En este trabajo se evalúa una alternativa de recomendación de usuarios basada únicamente en el estudio de la topología de red, donde usuarios con intereses y temáticas en común se interrelacionan, generando comunidades implícitas. Keywords: Sistemas de Recomendación de Información, Redes Sociales, Filtrado colaborativo, Twitter.
  • 3. 2 Contenido 1 Introducción ........................................................................................................................... 8 1.1 Twitter.................................................................................................................................. 8 1.2 Objetivo ............................................................................................................................... 8 1.3 Organización del documento ............................................................................................... 8 2 Marco Teórico ...................................................................................................................... 11 2.1 Sistemas de recomendación .............................................................................................. 11 2.2 Métricas ............................................................................................................................. 11 2.2.1 Recall ............................................................................................................................... 11 2.2.2 Precisión .......................................................................................................................... 12 2.2.3 nDCG (Normalized discounted cumulative gain) ............................................................ 12 2.3 Link Prediction ................................................................................................................... 13 2.4 Link Analysis ....................................................................................................................... 14 2.4.1 InDegree .......................................................................................................................... 15 2.4.2 PageRank ......................................................................................................................... 16 2.4.3 HITS ................................................................................................................................. 17 2.4.4 SALSA ............................................................................................................................... 18 2.4.5 Who to follow .................................................................................................................. 20 2.4.6 Generalización ................................................................................................................. 20 2.4.7 Caminos híbridos ............................................................................................................. 24 2.4.8 Big Data ........................................................................................................................... 25 3 Algoritmo de recomendación topológica ............................................................................. 27 3.1 Clasificación de usuarios .................................................................................................... 27 3.1.1 Clasificación basada en relaciones .................................................................................. 28 3.2 Recolección de usuarios .................................................................................................... 29 3.2.1 Restricciones de Fanout .................................................................................................. 31 3.2.2 Matrices de transición configurables .............................................................................. 32 3.2.3 Algoritmo presentado ..................................................................................................... 33 3.3 Ranking .............................................................................................................................. 34 3.3.1 Peso ................................................................................................................................. 34
  • 4. 3 3.3.2 Índice de fuente de información (IS) ............................................................................... 35 3.3.3 Ranking basado en comparación de seguidores ............................................................. 35 3.3.4 Función de scoring compuesta ........................................................................................ 38 3.4 Combinación de resultados ............................................................................................... 38 3.5 Conclusión .......................................................................................................................... 40 4 Diseño e Implementación .................................................................................................... 42 4.1 Usuario ............................................................................................................................... 42 4.2 Usuario Factory .................................................................................................................. 43 4.3 Criterio Usuario .................................................................................................................. 45 4.4 Comparador Usuarios ........................................................................................................ 45 4.5 Scoring Usuario .................................................................................................................. 46 4.6 Recolector y Nivel Recolección .......................................................................................... 47 4.7 Factory de Recolección de Usuarios .................................................................................. 47 4.8 Ranking y combinación de resultados ............................................................................... 48 4.9 Conclusión .......................................................................................................................... 50 5 Experimentación................................................................................................................... 52 5.1 Tratamiento de datos ........................................................................................................ 52 5.1.1 Valor característico ......................................................................................................... 52 5.2 Validación cruzada ............................................................................................................. 53 5.2.1 K-fold cross-validation ..................................................................................................... 53 5.2.2 Dataset ............................................................................................................................ 53 5.2.3 Caracterización de algoritmos ......................................................................................... 54 5.2.4 Recomendación de fuentes de información ................................................................... 76 5.2.5 Recomendación de amigos ............................................................................................. 83 5.3 Evaluación Subjetiva .......................................................................................................... 88 5.3.1 Experimento .................................................................................................................... 88 5.3.2 Precisión en k posiciones ................................................................................................ 90 5.3.3 nDCG en posiciones ......................................................................................................... 91 5.4 Conclusión .......................................................................................................................... 92 6 Interfaz web.......................................................................................................................... 94 6.1 Inviabilidad practica ........................................................................................................... 94 6.2 Arquitectura general .......................................................................................................... 95
  • 5. 4 6.3 Capa de presentación ........................................................................................................ 96 6.4 Capa de negocios ............................................................................................................... 96 6.5 Capa de integración ........................................................................................................... 96 7 Conclusiones ......................................................................................................................... 98 7.1 Trabajo realizado ............................................................................................................... 98 7.2 Limitaciones encontradas .................................................................................................. 99 7.3 Trabajo futuro .................................................................................................................... 99 8 Bibliografía .......................................................................................................................... 102 Ape ndice A: Cadenas de Markov 1 Introducción ....................................................................................................................... 105 2 Recorrido aleatorio sobre grafos ........................................................................................ 105 3 Cadena de Markov ............................................................................................................. 106 3.1 Secuencias de transiciones .............................................................................................. 106 3.2 Matriz de transición ......................................................................................................... 107 3.3 Distribución estacionaria ................................................................................................. 107 4 Cadenas de Markov aplicadas a recorridos aleatorios ....................................................... 108 Ape ndice B: Persistencia 1 Introducción ....................................................................................................................... 112 2 Alternativas ........................................................................................................................ 112 2.1 SQL ................................................................................................................................... 112 2.2 iBATIS ............................................................................................................................... 113 2.3 ORM ................................................................................................................................. 114 2.4 Comparación .................................................................................................................... 116 2.5 Hibernate ......................................................................................................................... 116 2.5.1 Transparent lazy fetching .............................................................................................. 118 2.5.2 Automatic dirty checking .............................................................................................. 118 2.5.3 Transitive persistence ................................................................................................... 118 3 Implementación ................................................................................................................. 118 3.1 Mapeo .............................................................................................................................. 119
  • 6. 5 3.2 Encabezado ...................................................................................................................... 119 3.3 Atributos primitivos ......................................................................................................... 119 3.4 Atributo no primitivo (relación 1:1) ................................................................................. 120 3.5 Colección (relación 1:N y N:N) ......................................................................................... 120 4 Solución en acción .............................................................................................................. 120 4.1 Proxy ................................................................................................................................ 121 4.2 Caché ............................................................................................................................... 122 5 Resultados experimentales ................................................................................................ 122 5.1 Proceso de recuperación de la red (Crawling) ................................................................. 122 5.2 Proceso de reevaluación de la red ................................................................................... 123 5.3 Evaluación de red en caché ............................................................................................. 124
  • 7. 6 Í ndice de tablas Tabla 1: Comparación entre las técnicas de recorrido estático e incremental ................................. 24 Tabla 2: Algoritmos estudiados ......................................................................................................... 55 Tabla 3: Funciones de scoring utilizadas por los rankings iniciales ................................................... 55 Tabla 4: Recall total obtenido para cada algoritmo y combinación de parámetros ......................... 56 Tabla 5: Subcategorías de pruebas ................................................................................................... 56 Tabla 6: Recall total para los algoritmos principales, para cada combinación de parámetros y subcategoría ...................................................................................................................................... 57 Tabla 7: Posición mediana del último encontrado para cada algoritmo y conjunto de parámetros 58 Tabla 8: Recall en k para cada algoritmo y combinación de parámetros ......................................... 60 Tabla 9: Recall en 100 para cada algoritmo seleccionado y combinación de parámetros ............... 61 Tabla 10: Recall en 1.000 para cada algoritmo seleccionado y combinación de parámetros .......... 61 Tabla 11: Recall en 10.000 para cada algoritmo seleccionado y combinación de parámetros ........ 61 Tabla 12: Encontrados totales para cada algoritmo seleccionado y combinación de parámetros .. 63 Tabla 13: Encontrados en 100 para cada algoritmo seleccionado y combinación de parámetros .. 65 Tabla 14: Encontrados en 1.000 para cada algoritmo seleccionado y combinación de parámetros 65 Tabla 15: Encontrados en 10.000 para cada algoritmo seleccionado y combinación de parámetros ........................................................................................................................................................... 65 Tabla 16: Frecuencia de encontrados para los algoritmos preseleccionados y cada combinación de parámetros ........................................................................................................................................ 67 Tabla 17: Frecuencia acumulada de encontrados para los algoritmos preseleccionados y cada combinación de parámetros ............................................................................................................. 68 Tabla 18: Mediana de los tiempos de ejecución para todos los algoritmos y conjuntos de parámetros ........................................................................................................................................ 70 Tabla 19: Aporte de cada acierto en nDGC 10 .................................................................................. 71 Tabla 20: Resultados obtenidos para nDGC 10 ................................................................................. 72 Tabla 21: Resultados obtenidos para nDGC 10 según número de seguidos ..................................... 73 Tabla 22: Resultados obtenidos para la precisión en 1, en 5, y en 10 .............................................. 74 Tabla 23: Cuadro comparativo entre los algoritmos seleccionados ................................................. 74 Tabla 24: Relación entre métricas y parámetros de fanout .............................................................. 75 Tabla 25: Recall en k en la recomendación de fuentes de información ........................................... 77 Tabla 26: Encontrados en k en la recomendación de fuentes de información ................................. 78 Tabla 27: Frecuencia de encontrados en la recomendación de fuentes de información ................. 80 Tabla 28: nDCG en 10 en la recomendación de fuentes de información ......................................... 81 Tabla 29: Precisión en k en la recomendación de fuentes de información ...................................... 82 Tabla 30: Recall en k en la recomendación de amigos ..................................................................... 84 Tabla 31: Frecuencia de encontrados en la recomendación de amigos ........................................... 85 Tabla 32: nDCG en 10 en la recomendación de amigos según seguidos .......................................... 86 Tabla 33: Precisión en k en la recomendación de amigos ................................................................ 87 Tabla 34: Voluntarios para la evaluación subjetiva........................................................................... 89
  • 8. 7 Capí tulo 1: Íntroduccio n
  • 9. 8 1 Introducción 1.1 Twitter Twitter es una red social con servicio de microblogging que permite a sus usuarios enviar y leer mensajes cortos de una longitud de 140 caracteres, llamados tweets. Dichos mensajes pueden tener cualquier contenido, sin embargo existen algunos usuarios particulares que publican tweets sobre un tema determinado. Cada vez que se publica un nuevo tweet, este aparece en la página de inicio del usuario que lo creó. La red también permite seguir usuarios, una forma de permitir actualizaciones constantes sobre las novedades publicadas. Así, cada usuario sigue otros que son de su interés. Los tweets son mensajes publicados por los usuarios, donde se pueden hacer menciones a otros usuarios, el uso de etiquetas (“hashtags” en la terminología de Twitter) para delimitar palabras clave (se antepone el símbolo # a dichos términos), volver a publicar algún tweet subido por otro usuario (denominados “retweets”). Twitter presenta al usuario los tweets ordenados por fecha de creación descendente, por lo tanto puede pensarse como una línea de tiempo, en donde las publicaciones se encuentran agrupadas en diferentes timelines. Otras opciones permiten mandar mensajes directos a un usuario (direct message), y ver los temas del momento (trending topics). Las relaciones seguidor-seguido pueden ser simétricas, lo que puede considerarse una relación de amistad. Según estudios, estas relaciones son poco comunes en Twitter[1][2][3], la comparación de snapshots de la red no parece indicar un cambio: las relaciones simétricas rondaban 22.1% en 2009 y 19.5% en 2012[19], aun cuando la red ha aumentado más de 10 veces su tamaño en este intervalo. En contraste, muchos usuarios que utilizan Twitter son buscadores de información sobre sus temas de interés, siguiendo las fuentes de información que hablan de éstos: en 2012 más del 30% de los usuarios activos no poseía siquiera una relación simétrica[18]. Es por esto que los usuarios de Twitter se beneficiarían con una aplicación que los asistiera en encontrar dichas fuentes de información. 1.2 Objetivo En este trabajo se propone diseñar un algoritmo de recomendación que explote las características de la topología de las redes sociales para recomendar fuentes de información, permitiendo alcanzar aquellos usuarios de mayor interés y disminuyendo así la interacción con la API de Twitter, al evitar la evaluación del total de la red. 1.3 Organización del documento El documento se encuentra dividido en 7 capítulos como se detalla a continuación: Capítulo 2: Se inicia con el estudio sobre los elementos componentes del problema, comenzando con una breve introducción a los sistemas de recomendación y métricas de utilidad; luego, se revisa la literatura existente sobre las redes sociales en general y Twitter en particular, un campo estudio relativamente nuevo; un punto clave de esta etapa es la detección de los roles de los usuarios en la red social y la semántica de las interacciones; por último, se estudia análisis de las
  • 10. 9 relaciones entre entidades y su influencia compone un campo de estudio por sí mismo, el cual sienta las bases de este trabajo, así como de otras alternativas de recomendación a las redes sociales. Capítulo 3: Una vez detallados los elementos componentes del problema y el contexto de la solución, se procede a generar una alternativa que combine el estudio de las relaciones con características específicas de las interacciones entre usuarios en Twitter, que dan lugar a las comunidades implícitas. Luego, el trabajo se centra en el estudio de las posibles variables que permiten ajustar el algoritmo general, abriendo la búsqueda de la mejor combinación de parámetros. Capítulo 4: Una vez establecido el algoritmo general, se plantea el diseño e implementación de un framework para su ejecución y configuración, centrándose en la idea que el mismo puede requerir su extensión en un futuro, en particular, para superar las limitaciones impuestas por el alcance del trabajo actual y la infraestructura disponible. Capítulo 5: Disponiendo del algoritmo y su implementación, se procede a estudiar experimentalmente los efectos de las variables presentadas previamente, en busca de la mejor combinación de parámetros que conlleven a mejorar los usuarios de interés alcanzados y el orden de las recomendaciones generadas. Dadas las limitaciones presentadas por Twitter, los estudios son realizados primero sobre un dataset, con el fin de encontrar el mejor algoritmo para la recomendación directa de fuentes de información (es decir, que ofrezca la mayor precisión), para luego probarlo en un conjunto más reducido de usuarios reales, comparando el recomendador presentado con el provisto por el propio Twitter. En el proceso, se describen los beneficios del algoritmo y los parámetros recomendables para maximizar la recolección, para un posterior post- proceso. Capítulo 6: Habiendo seleccionado el algoritmo con mejor precisión en la recomendación de fuentes de información, solo resta su publicación para el beneficio de usuarios reales. Para esto, se plantea el diseño general de una aplicación web que permita la utilización, y si se desea configuración, del algoritmo de recomendación presentado. Capítulo 7: Finalmente, se resume el trabajo realizado y se presentan los beneficios provistos, en conjunto con las limitaciones enfrentadas, abriendo la puerta para continuar el estudio de la recomendación de fuentes de información en Twitter.
  • 11. 10 Capí tulo 2: Marco Teo rico
  • 12. 11 2 Marco Teórico En este capítulo se introducirán los conceptos fundamentales del dominio de los sistemas de recomendación en general y aplicados a las redes de documentos interconectados. 2.1 Sistemas de recomendación Los sistemas de recomendación son sistemas específicos de filtrado de información que buscan recomendar ítems de interés al usuario. Para ello, extraen del perfil del usuario algunas características de referencia, en busca de predecir el interés que puede tener en un ítem que aún no ha evaluado. En nuestro caso, se utilizará los usuarios actualmente seguidos por un interesado como punto de partida, para obtener las fuentes seguidas por usuarios similares (éstos son aquellos que poseen el mayor número de fuentes en común con el interesado). Se considera parte del perfil de un usuario de Twitter a los siguientes componentes: sus características básicas que permiten la identificación (nombre e ID de usuario); sus relaciones (seguidos y seguidores) y las estadísticas derivadas (cantidad de tweets, de seguidos y de seguidores). Las anteriores representan al usuario dentro de todo Twitter (espacio de búsqueda); existe otro factor, atado a la búsqueda local realizada (subred): su peso, dado por la cantidad de ocurrencias de un usuario al recorrer una subred. 2.2 Métricas Para evaluar las recomendaciones provistas, se utilizarán tres métricas que comparan el conjunto de usuarios esperados (o de interés) con la recomendación obtenida. Dado que se evaluarán algoritmos de recomendación, se estudiarán los resultados seleccionando los N primeros recomendados. Ilustración 1: Diagrama de Venn ilustrando los conjuntos sobre los que operan las métricas planteadas 2.2.1 Recall Evalúa el porcentaje de usuarios encontrados sobre el total de esperados, midiendo la capacidad de recuperación del algoritmo. Es inversamente proporcional al grado falsos negativos (usuarios que deberían ser incluidos, pero en su lugar no son alcanzados o bien son excluidos).
  • 13. 12 | | | | | | | | Recall en N: Recall en primeros N usuarios recomendados. Cuando se refiera al Recall sin especificar un valor de N, será al máximo obtenido al estudiar el total de los usuarios alcanzados. 2.2.2 Precisión Evalúa el porcentaje de aciertos sobre el conjunto de recomendados. Es inversamente proporcional al grado falsos negativos (usuarios que deberían ser excluidos, pero en su lugar son incluidos). | | | | | | | | Precisión en N: Precisión en primeros N usuarios recomendados. A diferencia del recall, no se hablará de la precisión sin asignar un valor a N. 2.2.3 nDCG (Normalized discounted cumulative gain) Evalúa el orden en que son presentados los aciertos, permitiendo cuantificar la calidad de la recomendación, basándose en la premisa que una buena recomendación los mejores resultados entre las primeras posiciones. La manera más sencilla de explicar su construcción es de manera incremental. La ganancia acumulativa (cumulative gain) computa la utilidad de un conjunto sumando el total de los pesos de los elementos contenidos. Para una posición dada , se evalúa hasta como: Σ La ganancia acumulativa descontada (discounted cumulative gain) aplica una penalización a los buenos documentos que se encuentran alejados de las primeras posiciones, disminuyendo la relevancia logarítmicamente proporcional a la posición en la que fueron encontrados. Para una posición dada , se evalúa hasta como: Σ
  • 14. 13 Para el caso estudiado, se desconocen la relevancia de los documentos de interés, por lo que se utilizará una relevancia binaria, siendo 1 si el documento es de interés, cero en caso contrario. En este contexto, puede simplificarse hasta como: Σ Sea el valor obtenido para la recomendación ideal, donde los elementos son recomendados según el orden descendente de peso en las primeras posiciones, es posible computar la ganancia acumulativa descontada normalizada como: Para el caso estudiado, no se ha provisto un peso de manera explícita, por lo que se procederá a utilizar un peso binario, siendo 1 en caso que el usuario sea de interés, y 0 en caso contrario. 2.3 Link Prediction Este campo de investigación enfrenta resolver el siguiente problema: Dado el estado de una red, ¿es posible inferir cuáles nuevas relaciones son probables que ocurran? Distintos autores han enfrentado este problema, buscando cuantificar la proximidad entre dos nodos, y sus aportes pueden dividirse en grandes rasgos en: 1) aquellos que observan el contenido, 2) aquellos que estudian las relaciones entre nodos, o bien 3) aquellos que toman un enfoque hibrido. Chen et al. [5] compararon algoritmos basados en relaciones y en contenido para recomendaciones de usuarios, encontrando que el primero es mejor detectando contactos conocidos mientras que el segundo en encontrar nuevas relaciones. Sun et al. [6] utilizaron un algoritmo basado en difusión para obtener un grupo de usuarios que toman el rol de reporteros en emergencias. Más relacionado a nuestro trabajo, están los algoritmos de recomendación de usuarios en Twitter a partir de un subconjunto de usuarios presentado por Hannon et al. [7]. Estos autores consideraron múltiples estrategias de generación de perfiles de acuerdo a cómo los usuarios son representados en un enfoque basado en contenidos (sus tweets y los de los usuarios con los que se relacionan), un enfoque basado en sus relaciones (basados en los IDs de sus seguidores y/o de sus seguidos), así como enfoques híbridos. Buscando explicar por qué el contenido y la topología ofrecen pistas de quién recomendar, son de utilidad los aportes de Hong et al.[4], que estudian las temáticas y categorías de temáticas dentro de Twitter, mientras que Java et al.[1] estudian las comunidades implícitas que existen en Twitter
  • 15. 14 y que tratan temáticas relacionadas. Dentro de estas comunidades los usuarios pueden categorizarse en: fuentes, buscadores de información, o bien amigos. Cha et al. [10] infieren la influencia de los usuarios basándose en la dinámica de la red, con dos conclusiones relevantes para este trabajo: 1) un gran número de seguidores implica una gran audiencia, pero no necesariamente publicaciones informativas: las fuentes de información se caracterizan por sus seguidores “retweeteando” sus estados, mientras que las figuras mediáticas se caracterizan por un gran número de menciones; 2) existen usuarios cuya influencia se dispara en un periodo corto de tiempo, atada a eventos puntuales. Lamentablemente, Cha et al. sólo estudian las influencias relativas a temáticas sobre el total, pero dejan de lado la influencia relativa dentro de comunidades. 2.4 Link Analysis Es de interés para este trabajo el campo de investigación conocido como link analysis, donde se estudian las relaciones entre documentos. Asociado a los sistemas de recuperación de información, el ejemplo más conocido son los buscadores web, que en la búsqueda de recomendar fuentes de información confiables (denominadas autoridades), asignan relevancia aun conjunto de páginas web basándose en sus hipervínculos. En el contexto de las redes sociales, los algoritmos de link analysis pueden ser utilizados para link prediction, si se considera que la relevancia de un usuario dado está relacionada con la proximidad a otros usuarios. El modelo de la red social de Twitter permite este estudio: grafos dirigidos de grandes dimensiones, donde los nodos pueden clasificarse en autoridades (fuentes de información) o hubs (buscadores de información). A modo de introducción, se describirán a continuación los algoritmos más conocidos. En el Apéndice A se detallan conceptos relacionados acerca de Cadenas de Markov, que fundamentan estos algoritmos. Primero se establecerán los elementos involucrados:  Vector de pesos de Autoridad A: vector n-dimensional de pesos asociados a las autoridades, donde Ai es el puntaje de autoridad del nodo i. [ ]  Vector de pesos de hub H: vector n-dimensional de pesos asociados a los hubs, donde Hi es el puntaje de hub del nodo i.
  • 16. 15 [ ]  Matriz de arcos salientes F (forward): matriz bidimensional cuadrada que indica en la posición (i,j) la probabilidad de avanzar desde i hasta j, correspondiente a la matriz de transiciones asociada a la cadena de Markov estacionaria: | Donde indica la ausencia de un arco.  Matriz de arcos entrantes B (backward): matriz bidimensional que indica en la posición (i,j) la probabilidad de salto desde un nodo i a un nodo j si se invierte la dirección de los arcos (Ilustración 2). Corresponde a la matriz transpuesta de la matriz de arcos salientes normalizada para ser una matriz de transiciones válida: Σ Donde indica la ausencia de un arco. Ilustración 2: Relación entre arco entrante B y saliente F.  Numero de arcos en vector | |: cantidad de arcos posibles (cuya probabilidad es mayor a cero) para un nodo i dado, es decir, basado en la i-ésima fila de la matriz X.  Numero de arcos en matriz | |: cantidad de arcos posibles (cuya probabilidad es mayor a cero) de la matriz X. 2.4.1 InDegree Una simple heurística que puede considerarse la predecesora de todos los algoritmos de ranking de Link analysis, consiste en ordenar las páginas por su popularidad (o visibilidad). La popularidad de una página es medida por el número de referencias a ella. | |
  • 17. 16 Puede aplicarse de manera sencilla para redes sociales como Twitter, ordenando los usuarios por su número de seguidores. 2.4.2 PageRank La intuición utilizada en InDegree es que una buena autoridad es una página apuntada por muchos nodos en el grafo. PageRank[12] extiende esta idea observando que no todos los arcos poseen el mismo peso. Vínculos desde páginas de alta calidad deberían conferir mayor autoridad. Es entonces no solo importante saber cuántas páginas apuntan, sino también si esas páginas son importantes. Para esto, realizan un recorrido aleatorio en el grafo que simula el comportamiento de un “random surfer”, que comienza desde un nodo D elegido al azar (generalmente asumiendo una distribución uniforme), eligiendo a cada paso con probabilidad d (factor de dispersión) optar por uno de los links, y con probabilidad 1-d saltar al azar entre todos los N sitios disponibles. El puntaje de autoridad Ai para un nodo i (pagerank del nodo i) es la fracción de tiempo que se ha detenido en dicho nodo, proporcional al número de visitas durante el recorrido, y corresponde con la distribución estacionaria de la cadena de Markov asociada al recorrido aleatorio sobre la red. Algebraicamente, el puntaje de autoridad para un nodo es: Σ | | Y el cálculo global de puntajes de autoridad: [ ] Como puede apreciarse, el PageRank de una página se define recursivamente con las páginas que la referencian, siendo necesario para su cálculo un acercamiento iterativo. Si bien la formula presentada muestra el algoritmo como una operación de matrices y vectores, en la práctica F es una matriz dispersa, permitiendo ahorrar memoria y tiempo de procesamiento al utilizar un enfoque procedural. A continuación en el Algoritmo 1 se presenta el pseudocódigo asociado. Algoritmo 1 – PageRank Sea Ai(t) el peso de autoridad asociado al nodo i en la iteración t 1. inicializar Para cada nodo i A 2. iterar hasta convergencia Repetir hasta que los pesos converjan Para cada nodo i A Σ | |
  • 18. 17 2.4.3 HITS Propuesto en el mismo año de PageRank y de manera independiente, HITS (Hyperlink Induced Topic Distillation) sostiene que no necesariamente las buenas autoridades señalan a otras buenas autoridades; en su lugar, hay nodos especiales, llamados Hubs, los cuales poseen colecciones de links a buenas autoridades. Ilustración 3: Transformación de un grafo dirigido (izquierda) en un grafo bipartido hub-autorities no dirigido (derecha) HITS plantea un esquema de propagación de dos niveles, donde la validación de las autoridades es realizada desde Hubs, en lugar de hacerse directamente entre autoridades. Para esto, cada página posee ambos roles (pudiendo modelarse como un grafo bipartido, Ilustración 3) donde el peso de los Hubs es la suma de los pesos de las autoridades a las que apunta, estos a su vez son la suma de los pesos de los Hubs que las referencian, reforzándose mutuamente. Σ ( ) Σ Dado que se enfrenta una situación de dependencia circular, los valores se computan iterativamente, inicializando todos los pesos en 1. Para evitar la divergencia, los valores deben ser normalizados tras cada iteración, de tal manera que la norma L2 sea igual a 1. A continuación en el Algoritmo 2 se presenta el pseudocódigo asociado.
  • 19. 18 Algoritmo 2 – HITS (Hyperlink Induced Topic Distillation) Sea Ai(t) el peso de autoridad asociado al nodo i en la iteración t Sea Hi(t) el peso de hub asociado al nodo i en la iteración t 1. inicializar Para cada nodo i A Para cada nodo i H 2. iterar hasta convergencia Repetir hasta que los pesos converjan 2.1 propagar hubs Para cada hub i H Σ Normalizar H Para cada autoridad i A Σ Normalizar A A diferencia de PageRank, HITS no es presentado como un recorrido aleatorio. Sin embargo, es posible realizar una observación interesante sobre los pesos asignados por el algoritmo HITS tras n iteraciones. Recordando que B y F indican los arcos entrantes y salientes, estos pueden combinarse para obtener caminos más largos. Por ejemplo, (BF)n es un camino que alterna entre arcos entrantes y salientes n veces. Luego, sea (BF)n(ij) el conjunto de caminos que parten del nodo i, es posible concluir[14] que el puntaje de autoridad asignado a un nodo i tras n iteraciones es proporcional al número de caminos BF de longitud n que parten desde el nodo; resultados similares pueden obtenerse para el puntaje de hub. | | | | | | | | De esta manera, es posible considerar el peso obtenido a partir de una serie de pasos determinados, siendo esta una solución restrictiva sobre el problema de recorrido aleatorio sobre grafos, que puede resolverse mediante de cadenas de Markov. Este algoritmo ha sido la inspiración de la solución presentada en el capítulo 0. 2.4.4 SALSA Combinando ideas de HITS y PageRank, SALSA[15] (Stochastic Approach for Link-Structure Analysis) se basa en un recorrido aleatorio de un grafo bipartido, conformado por autoridades y hubs. En HITS, los hubs propagan su peso a todas las autoridades referenciadas, y estas suman todos los pesos propagados. El algoritmo SALSA normaliza los pesos a propagar, dividiéndolos por el número de arcos involucrados. Así, los hubs propagan su peso, dividido el número de autoridades referenciadas, mientras que estas propagan su peso dividido el número de Hubs que
  • 20. 19 los referencian. Siendo i, j dos nodos autoridad, es posible definir un arco no dirigido entre ellos, si comparten un hub k. La probabilidad P de navegar entre i y j en un recorrido aleatorio se define como: Σ | | | | Es posible definir de manera similar la relación entre hubs. Σ | | | | De aquí es posible obtener los pesos asociados a cada nodo. Σ | | Σ | | Y globalmente: Nuevamente se enfrenta una situación de dependencia circular, recurriendo nuevamente a un acercamiento iterativo. A continuación en el Algoritmo 3 se presenta el pseudocódigo asociado. Algoritmo 3 – SALSA (Stochastic Approach for Link-Structure Analysis) Sea Ai(t) el peso de autoridad asociado al nodo i en la iteración t Sea Hi(t) el peso de hub asociado al nodo i en la iteración t 1. inicializar Para cada nodo i A Para cada nodo i H 2. iterar hasta convergencia Repetir hasta que los pesos converjan Para cada autoridad i A Σ | ( )| Para cada hub i H Σ | ( )| (t)
  • 21. 20 2.4.5 Who to follow En 2013, el equipo de Twitter publicó un estudio [11] donde describen el algoritmo WTF (who to follow), utilizado para la recomendación desde 2010; el enfoque utilizado, como puede observarse en la Ilustración 4, se basa en dos etapas: 1. Obtención del “Círculo de confianza”, constituido por los usuarios con mayor impacto sobre un conjunto inicial. Para lograrlo, utiliza un recorrido egocéntrico centrado en el usuario, similar a un PageRank personalizado[16]. 2. Propagación de pesos, usando un modelo de autoridades y hubs basado en SALSA. Ilustración 4: conjuntos de trabajo del algoritmo WTF Al finalizar, el algoritmo recomienda las autoridades como intereses y los hubs como usuarios similares, ordenados por puntaje. Lamentablemente, WTF no provee ningún pseudocódigo, solo una descripción de alto nivel del algoritmo. A continuación se estudia la generalización de los algoritmos presentados, en busca de una mejor comprensión de la manera en que se relacionan. 2.4.6 Generalización Recordando la notación introducida al inicio de la sección 2.4, A es un vector n-dimensional de pesos asociados a las autoridades, donde Ai el puntaje autoridad para un nodo i. B y F indican los arcos entrantes y salientes respectivamente; Como se observó en HITS, estos pueden combinarse para obtener un camino P de largo n. Sea P(i) el conjunto de caminos que parten del nodo i (o bien conjunto de nodos), y P(i,j) el conjunto de caminos que parten de i y llegan a j, ambos subconjuntos de los presentados previamente. Es posible definir entonces el peso de autoridad de j sobre P tras n iteraciones como el número de caminos que llegan a j sobre el total de caminos posibles: | | | |
  • 22. 21 Lo cual coincide con el peso asociado en un recorrido aleatorio, y es posible evaluar utilizando cadenas de Markov, al igual que los restantes algoritmos presentados. Recordando el cálculo para la matriz de transición tras n pasos para cadenas de Markov: Π Siendo la i-esima fila la probabilidad de transición desde el nodo i a cada uno de los nodos. Sea el vector A la distribución inicial de autoridad, que asigna un peso total de 1 entre los nodos de partida1, es posible definir la autoridad sobre Pn como: (Π ) 2 Es posible observar entonces que existe un algoritmo subyacente común entre PageRank (sin dispersión), SALSA y WTF al momento de asignar el peso de autoridad, variando solo el camino utilizado, mediante las matrices de transición utilizadas. Así, solo es necesario definir la secuencia de movimientos para cada uno, con la serie de matrices de transición asociada:  PageRank: Navegar los arcos entrantes n veces, utilizando la probabilidad del nodo de salida:  SALSA: Alternar entre retroceder hacia los hubs y volver a avanzar hacia las fuentes n veces:  HITS: Si bien no es presentado como un recorrido aleatorio, se ha observado que es posible llegar a la misma definición de peso de autoridad que el obtenido con SALSA: 1 En particular, el vector A0 con ceros en todas las posiciones excepto en la i-ésima posición, provee el peso considerando solo los caminos que inician en el nodo i. 2 A fin de preservar el camino, el orden de multiplicación de matrices es inverso al camino seguido, dada la falta de conmutatividad.
  • 23. 22  WTF: Iniciar con un recorrido aleatorio de k pasos para alcanzar el círculo de confianza, desde ahí avanzar una vez más hasta las fuentes, y desde ahí realizar el recorrido de SALSA iterando n veces: Dependiendo de las características del grafo, la evaluación de los algoritmos listados es de un elevado coste computacional, y los requisitos de memoria pueden ser inaceptables, pero existen opciones de optimización. Para un camino dado, se pueden considerar dos alternativas básicas: 1. Recorrido estático: computar la matriz de transición para el camino completo Pn, permitiendo subsecuentes evaluaciones de la misma secuencia de transiciones para distintas distribuciones iniciales de autoridad. 2. Recorrido incremental: computar a cada paso únicamente las transiciones con probabilidad mayor a cero, disminuyendo en gran medida la cantidad de operaciones requeridas, en particular para matrices de transición y distribuciones iniciales ralas. A continuación, se evalúan las características de cada una de estas alternativas, y la posibilidad de combinarlas. Recorrido estático 2.4.6.1 Recordando la segunda definición del peso de autoridad sobre un camino dado: (Π ) En la formula se indica que es posible evaluar la serie de pasos y luego aplicar la distribución inicial. Este acercamiento evita la necesidad de iterar sobre el grafo para obtener una recomendación personalizada, una vez obtenida la matriz de transición del camino. Así, los algoritmos presentados pueden evaluarse como: ( ) [ ] [ ] [ ] [ ] Siendo el único elemento desconocido al momento de la recomendación el conjunto de pesos iniciales . La matriz de transición del camino (entre corchetes) se calcula como el seguimiento de los arcos para el camino, en orden inverso. De esta manera, para un camino dado, se requiere actualizar la matriz de transición solo cuando el grafo es actualizado. Como desventaja, es requerido evaluar el total de los N2 arcos posibles tantas
  • 24. 23 veces como pasos tenga el camino, lo que puede ser inviable dados los requerimientos de memoria. Adicionalmente, para redes dinámicas, se dificulta la generación de recomendaciones online, siendo una mejor estrategia para el cálculo de la matriz de transiciones un proceso batch. Recorrido incremental 2.4.6.2 Recordando la primera definición del peso de autoridad sobre un camino dado: A A En esta fórmula, los pesos A asignados para un camino de n pasos se definen recursivamente como el peso para n-1 pasos sobre el camino, aplicando , la matriz de transiciones del nivel n. Es posible observar que, para o A ralas, esta operación realiza una gran cantidad de multiplicaciones donde uno de los términos es cero (o bien el nodo de partida posee un peso de autoridad nulo, o no existe un arco hacia el correspondiente nodo destino). Una solución intuitiva es realizar solo las operaciones donde ambos términos son no nulos, reduciendo en gran medida tanto las operaciones requeridas como la utilización de memoria, y permitiendo recomendaciones online. A continuación en el Algoritmo 4 se muestra el pseudocódigo para caminos incrementales optimizado para matrices de transición ralas, de carácter iterativo. Algoritmo 4 – Caminos incrementales Entrada:  P el camino a recorrer  N(0) el conjunto de usuarios de partida Usado:  N(t) los nodos alcanzados en el nivel t  Ai(0) el peso inicial del nodo i  Ai(t) el peso asociado al nodo i en el nivel t 1. Para cada nodo i N(0) | | 2. Para cada nivel p en P, o hasta convergencia 2.1. Para cada par 2.2. A Como puede observarse, el algoritmo toma como entrada un camino a recorrer P y un conjunto de nodos iniciales N(0). Los pasos seguidos son: 1. Inicializar de manera uniforme el peso inicial A(0) entre los nodos iniciales N(0). 2. Iterar cada nivel p del camino P, o bien hasta convergencia:
  • 25. 24 2.1. Actualizar los pesos de autoridad A(t+1) del siguiente nivel N(t+1) utilizando la matriz de transiciones p asociada al nivel, pero sólo para aquellos nodos donde existe una transición desde el nivel actual (la probabilidad de salto es mayor a cero). 2.2. Seleccionar solo aquellos nodos N(t+1) que fueron alcanzados durante el recorrido Sobre este algoritmo es posible realizar mejoras, a saber:  Muestreo: al actualizar (2.1) se considera cada par de arcos que alcanza el nodo a fin de propagar el peso. En su lugar, es posible realizar un muestreo aleatorio, tomando una muestra de tamaño configurable.  Poda: al seleccionar los nodos alcanzados (2.2), se consideran todos aquellos cuya probabilidad es mayor a cero. Es posible extender esto utilizando un umbral, descartando aquellos nodos cuya probabilidad de ser alcanzados no es suficiente.  Criterios avanzados: tanto al actualizar (2.1) y seleccionar (2.2), es posible considerar condiciones adicionales, en particular características de los nodos como la relación entre arcos entrantes y salientes, o una clasificación obtenida por otros medios. Este algoritmo muestra una gran flexibilidad, al costo de necesitar recorrer el grafo para cada recomendación. En el capítulo 0 se estudia la personalización de este algoritmo para generar recomendaciones en Twitter. 2.4.7 Caminos híbridos Se puede observar en la Tabla 1 que ambos algoritmos son complementarios, pero no es posible utilizarlos simultáneamente debido a su relación con la serie de transiciones a utilizar. Como alternativa, es posible dividir el algoritmo de recorrido en dos o más partes, utilizando para cada una de ellas una de las técnicas de recorrido. Tabla 1: Comparación entre las técnicas de recorrido estático e incremental Ventajas Desventajas Recorrido estático Permite calcular pesos de autoridad sin recorrer el grafo. Depende del camino. Posee una operación muy costosa en memoria y tiempo de procesamiento. Recorrido incrementales Permite recorrer el grafo de manera eficiente. Independiente del camino. Requiere recorrer el grafo cada vez. A modo de ejemplo, considerando el caso de dos sub-caminos: Donde para se utiliza un camino incremental y para un camino estático. De aquí es posible calcular la autoridad a lo largo del camino como:
  • 26. 25 { (Π ) Recordemos el camino planteado de manera genérica para definir WTF: Iniciar con un recorrido aleatorio para alcanzar el círculo de confianza, avanzar una vez más hasta las autoridades, y desde ahí realizar el recorrido de SALSA: Es posible observar las razones por las que se ha tomado esta decisión, dado que el camino puede dividirse en un camino no definido y un camino estático . De esta manera, es posible calcular la matriz de transición para el camino estático, y realizar recomendaciones dinámicamente sólo con alcanzar un círculo de confianza. La utilización de recorridos híbridos permite obtener recomendaciones sobre caminos dinámicos con cierto grado de optimización, pero para esto es necesaria la capacidad de procesar el total de la red, que, según sea el dominio del problema, puede inferir grandes requerimientos de hardware. 2.4.8 Big Data Big data refiere a una colección de datos tan grande y compleja que las técnicas tradicionales de procesamiento resultan ineficientes. En el contexto de link analysis, la resolución suele involucrar clústeres (Hadoop[16]) o servidores monolíticos (Cassovary[11]), para permitir almacenar en memoria principal el total de la red, ya sea en un mismo equipo o de manera distribuida. Este trabajo plantea un algoritmo que, a un mayor costo temporal, puede ejecutarse en un equipo doméstico, a partir de recorridos incrementales y poda del número de arcos considerados, distribuyendo el costo de inicialización de la estructura en el tiempo. El mismo algoritmo puede implementarse mediante MapReduce, en caso de disponer el hardware necesario.
  • 27. 26 Capí tulo 3: Algoritmo de recomendacio n topolo gica
  • 28. 27 3 Algoritmo de recomendación topológica Este trabajo tiene como objetivo obtener resultados aceptables para la recomendación de fuentes de información en el menor tiempo posible, explotando la semántica que conllevan las relaciones entre usuarios. El punto de partida para la recomendación se basa en la existencia de usuarios similares, con los cuales el usuario interesado comparte comunidades e intereses; cuanto mayor sea la similitud con ellos, mayor será la capacidad de predicción desde ellos, permitiendo sugerir tanto fuentes de información como otros usuarios similares. En líneas generales, el algoritmo utiliza la noción de caminos incrementales presentada en la sección 2.4.6.2: un recorrido aleatorio como una serie de movimientos hacia adelante o hacia atrás, donde el peso asociado depende del número de arcos que alcanzan al nodo, sobre el total de caminos posibles en dicha secuencia de movimientos. A diferencia de los algoritmos presentados en link analysis (2.4), en lugar de iterar hasta alcanzar la convergencia, se siguen los arcos a lo largo de un camino dado, con una semántica asociada. Dado que el algoritmo presentado depende de los roles de los usuarios en la red, es necesario hacer una breve introducción a la clasificación de usuarios dentro de este contexto. 3.1 Clasificación de usuarios Como se ha visto en el capítulo 2.3, los usuarios en el contexto de Twitter pueden clasificarse como usuarios mediáticos (fuentes de información y celebridades) [1][11] o usuarios similares (buscadores de información y amigos)[1], basándose en su función e interacción, según las comunidades implícitas de las que forman parte. Las comunidades son conjuntos de usuarios que comparten una temática o locación específica. Las comunidades no son excluyentes, pudiendo un usuario formar parte de más de una, e incluso teniendo distintos roles en cada una de ellas. Ilustración 5: Ejemplo de comunidades
  • 29. 28 Al aplicar HITS sobre Twitter[1], es posible encontrar usuarios con mayor peso de autoridad (mediáticos) o de hub (buscadores de información); estos resultados pueden obtenerse tanto global como localmente a una comunidad, con la salvedad que los roles para un mismo usuario pueden variar de comunidad en comunidad: en un caso extremo un usuario puede ser fuente de información en una comunidad y un buscador de información en otra. Para un usuario dado, se llaman amigos a aquellos buscadores de información con los cuales se poseen relaciones simétricas; dentro de una comunidad, es posible clasificar un usuario como “amigo”, es decir que utiliza la red con el fin de interactuar con pares, al tener valores elevados de autoridad y hub, o bien por un alto porcentaje de relaciones simétricas. Cada usuario puede publicar distintas clases de contenidos en distintas comunidades. Los usuarios mediáticos pueden clasificarse según la calidad del contenido publicado[11]: las fuentes de información publican material de interés, lo que lleva a que su contenido sea retweeteado (citado) un mayor número de veces; las celebridades en cambio se caracterizan por un mayor número de menciones. Los amigos pueden detectarse por hilos de conversación basados mensajes personales. 3.1.1 Clasificación basada en relaciones Puede observarse entonces que desde las conexiones de usuarios no es posible diferenciar entre fuentes de información y celebridades, siendo necesario estudiar el contenido; por esto, esta división será excluida del estudio, considerando todos los usuarios mediáticos como posibles fuentes de información. La clasificación resultante coincide con la utilizada en los algoritmos que dividen los usuarios en Autoridades y Hubs. Durante el desarrollo, se ha encontrado que las fuentes de información se destacan por tener mayor cantidad de seguidores que seguidos; si un usuario es una potencial fuente de información, se espera que la relación entre seguidores y seguidos sea menor a un valor límite , es decir: En nuestro caso, y para evitar falsos positivos en casos donde el usuario pertenece a una red densamente interconectada, se establecerá . Es decir, se considerarán fuentes de información candidatas a aquellos usuarios con más del doble de seguidores que seguidos. Métricas como el índice de fuente de información (IS)[17] estudian la relación entre seguidos y seguidores, permitiendo asignar un puntaje como fuente de información global. ( ) A partir de esta métrica es posible determinar no solo aquellos usuarios que cumplen con el criterio mínimo para ser fuentes de información, sino que pueden compararse entre sí, proveyendo una función heurística para el ranking, como se verá en la sección 3.3.
  • 30. 29 3.2 Recolección de usuarios Para un usuario dado, es posible dividir el conjunto de usuarios actualmente seguidos utilizando la clasificación fuente/similar. Esta clasificación puede realizarse globalmente o para comunidades, con dos implicaciones distintas: globalmente se obtendrían como fuentes a aquellos usuarios más influyentes de Twitter (top influencials, según Cha et al. [11]), localmente a comunidades se obtendrían como fuentes de información aquellos que cumplen ese rol dentro de la comunidad. Volviendo al usuario inicial, aquellos usuarios que sigue actualmente lo ubican entonces dentro de una o más comunidades. Considerando nuevamente en la Ilustración 6 una red de ejemplo como la presentada en la sección 3.1, y centrándose en el nodo que identifica al usuario “4”, es posible definir a partir de los usuarios actualmente seguidos a que comunidades pertenece el usuario, y en qué grado. Inicialmente, es posible decir que 1/3 de los usuarios seguidos pertenecen a la comunidad 1, y 2/3 pertenecen a la comunidad 2. Un recorrido aleatorio sobre esta red no solo permitiría obtener las probabilidades de alcanzar otros usuarios de las comunidades actuales, sino también alcanzar otras comunidades estrechamente relacionadas (en el ejemplo, a partir del nodo 11 y 13, alcanzar el nodo 16), sin que sea estudiado el contenido. Este es el principio en el que se basa el proyecto presentado. Ilustración 6: Ejemplo de comunidades, resaltando los arcos salientes del usuario número 4. A continuación en la Ilustración 7 se exponen los tipos de usuarios y presuntas relaciones que los unen, según las características topológicas observadas en la sección 3.1.
  • 31. 30 Ilustración 7: Usuarios actualmente seguidos y usuarios alcanzables desde el usuario inicial Es posible observar las relaciones entre usuarios que existen diversos caminos posibles desde un usuario inicial hacia fuentes de información no seguidas actualmente, entre los que se destacan: 1. Según Fuentes seguidas: Alternar entre arcos salientes y entrantes, al igual que SALSA 2. Según Usuarios similares seguidos: Avanzar sobre los arcos salientes, al igual que PageRank 3. Según amigos: considerar de entre los arcos salientes, solo aquellos que son simétricos, y desde allí considerar los seguidos. Una versión más restrictiva del recorrido 2. Como puede observase, existe una relación entre estos recorridos y los algoritmos de link analysis estudiados en la sección 2.4. Otra característica en común es la imposibilidad de clasificar de manera fehaciente como fuente de información (autoridad) o usuario similar (hub) solo con observar el nodo; entonces, se consideran todos los usuarios seguidos como pertenecientes a ambas categorías, cumpliendo uno u otro rol según sea su posición en el recorrido. A partir de esto, es posible utilizar el algoritmo generalizado de link analysis presentado en el capítulo 2.4.6 sobre los dos caminos, como se muestra en la Ilustración 8.
  • 32. 31 Ilustración 8: Recorrido de algoritmos Como puede observarse en la Ilustración 7 y la Ilustración 8, se espera que los conjuntos alcanzados por ambos recorridos no sean disjuntos; en la sección 3.4 se estudia cómo aprovechar esta característica. En este contexto, el algoritmo caminos incrementales presentado en 2.4.6.2 ofrece un buen punto de partida. A continuación se estudian las modificaciones específicas consideradas para utilizarlo sobre la red de Twitter. 3.2.1 Restricciones de Fanout Se ha establecido que las dimensiones de la red hacen que la evaluación total sea inviable 3. Por esto, se plantea imponer un límite configurable a los nodos y arcos utilizados durante el recorrido.  Límite de nodos alcanzados: los nodos seleccionados al finalizar un nivel no serán solo aquellos que posean una probabilidad de ser alcanzados mayor a cero, sino que seleccionarán los con mayor peso.  Límite de arcos por nodo: existen usuarios que poseen una cantidad de relaciones fuera de la media; estos usuarios aumentan en gran medida el número nodos alcanzados a cada nivel, pero la probabilidad propagada será necesariamente menor (siendo la probabilidad de salto uniformemente distribuida, a mayor cantidad de arcos, menor propagación a cada 3 Cassovary, el motor de link analysis utilizado por Who To Follow de Twitter requiere mantener el total de la red representada en memoria, en un mismo servidor con 160GiB de RAM. Aun con los requerimientos de hardware, el API de Twitter limita en gran medida la extracción de estas conexiones, lo que hace prácticamente imposible la recuperación total de la red.
  • 33. 32 nodo alcanzado). Por eso, para un usuario dado se considera hasta un máximo de arcos; en caso de que el número de arcos sea mayor al máximo se seleccionan arcos de manera aleatoria4.  Límite de nodos considerados: al evaluar una subred con demasiados nodos, es posible saturar los límites memoria. Por esto, se establece no se almacenarán más de pesos de autoridad. Cuando | | supere , se descartarán aquellos con menor peso, hasta reducir | | a , con el factor de compresión, entre 0 y 1. Una vez realizado este proceso, que será denominado “compresión”, el algoritmo puede continuar con la ejecución. De esta manera, es posible encontrar el conjunto de parámetros que permitan la ejecución del algoritmo en un equipo con limitaciones de hardware. 3.2.2 Matrices de transición configurables Hasta el momento se han estudiado matrices de transición normalizadas, que reflejan la probabilidad de salto desde un nodo a otro, siendo este el enfoque utilizado en cadenas de Markov. La alternativa planteada permite elegir entre:  Matriz de transición binaria: La alternativa más sencilla, donde cada matriz de transición posee un uno en caso de que exista el arco, cero en caso contrario. {  Matriz de transición probabilística: partiendo de las matrices de transición binarias, representan la probabilidad de salto sobre cada arco, considerando una distribución uniforme. Sea M el total de nodos en la red, la probabilidad de salto de i a j se define como: Σ  Matriz de transición normalizada: partiendo de las matrices de transición binarias, permite obtener un resultado en la propagación normalizada, pero sin penalizar aquellos nodos que poseen un gran número de arcos.  Matriz de transición personalizada: en lugar de distribuir uniformemente, es posible definir otras matrices de transiciones según se desee. 4 Se realiza de manera aleatoria dado que cualquier otro método de selección o descarte requeriría evaluaciones adicionales, teniendo que recuperar cada uno de los nodos independientemente. Dado que se está tratando de disminuir las consultas a bases de datos y servicios, sólo se trabaja con listas de IDs.
  • 34. 33 3.2.3 Algoritmo presentado A continuación se estudia la integración de las modificaciones realizadas sobre el algoritmo de recorridos incrementales presentado en 2.4.6.2, resultando en un algoritmo de uso general con flexibilidad en la definición de toma de decisiones, presentado en el Algoritmo 5. El algoritmo parte de un grupo inicial de nodos N(0), entre los que distribuye el peso inicial A(0) de modo uniforme (paso 1). Luego, itera para cada nivel p del camino dado P o bien hasta convergencia (paso 2): en cada paso de la iteración t, se avanza sobre los arcos, según la dirección indicada por el nivel p en que se encuentra, siempre y cuando el arco sea válido según un criterio de salto dado (paso 2.1), siempre evitando excederse del límite máximo de nodos (paso 2.2). Una vez evaluados todos los nodos del nivel N(t), se procede a seleccionar un subconjunto de los alcanzados N(t+1), según un criterio de selección dado (paso 2.3). En paralelo a la propagación de peso, se propaga el número de menciones. Cabe aclarar que el peso inicial se distribuye de modo uniforme (inciso 1) puesto que este es el enfoque utilizado en recorridos aleatorios, y simplifica la entrada del algoritmo. En caso de desearse, es posible utilizar otro método para la distribución inicial, utilizando por ejemplo inicialización manual o alguna técnica de ranking. Algoritmo 5 – Caminos incrementales modificado Entrada:  P el camino a recorrer, de largo n  N(0) el conjunto de usuarios de partida Usado: N(t) los nodos alcanzados en el nivel t  Ai(0) el peso inicial del nodo i  Ai(t) el peso asociado al nodo i en el nivel t  Mi (t) el número de menciones del i en el nivel t 1. Para cada nodo i N(0) | | 2. Para cada nivel p en P, o hasta convergencia 2.1. Para cada par 2.2. Compactar (A( 2.3. A 2.4. A
  • 35. 34 Como puede observarse, el algoritmo es flexible, permitiendo configurar:  Criterio de salto: para determinar qué arcos serán considerados y que nodos serán candidatos de ser alcanzados, utilizando por ejemplo: o Clasificación: saltar desde o hasta nodos que pertenezcan a una categoría dada. o Muestreo: seleccionar a lo sumo arcos.  Factor de propagación: corresponde a la entrada de la matriz de transición que indica el factor de propagación desde i hasta j. Puede construirse utilizando, por ejemplo: o Valor binario: caso más sencillo, donde el valor es uno si hay un arco y cero en caso contrario, pero genera una propagación no normalizada. o Valor probabilidad uniforme: la entrada corresponde a la probabilidad de salto, con una distribución uniforme. Corresponde al recorrido aleatorio sobre cadenas de Markov. o Valor binario normalizado: Definido de igual manera que el valor binario, pero el peso asociado a la existencia de un arco se reemplaza por ⁄, con M el total de nodos de la red. De esta manera, se obtiene un peso normalizado. o Valor personalizado: Un valor distinto a las alternativas presentadas previamente.  Criterio de selección: determinar qué nodos serán realmente alcanzados, por ejemplo: o Peso: seleccionar solo aquellos nodos cuyo peso sea superior a un umbral dado. o Máximo: seleccionar a los sumo nodos o Clasificación: Seleccionar solo aquellos nodos que pertenezcan a una categoría dada. Cada una de las opciones de configuración dadas influye en la calidad y la cantidad de recomendaciones generadas: tanto los criterios de salto como selección reducen el número final de nodos alcanzados, y por lo tanto pueden llegar a afectar negativamente el recall. Adicionalmente, la poda reduce el número de caminos seguidos, por lo tanto afecta los pesos propagados y en consecuencia la precisión; otras técnicas de ranking, estudiadas en la siguiente sección, se verán también afectadas negativamente si se reduce el número de buenos candidatos en el conjunto final a rankear. Es de gran interés entonces determinar la interacción entre los parámetros, lo que se hará en el capítulo 0. 3.3 Ranking Una vez obtenido un conjunto de usuarios candidatos, es necesario presentarlos al usuario interesado como una lista ordenada. En esta sección se estudian distintas alternativas para asignar el puntaje con el que se realiza el ordenamiento. 3.3.1 Peso Al finalizar el recorrido, los nodos alcanzados tienen un peso asociado basado en la cantidad de caminos que llegaron a ellos. La alternativa más sencilla es simplemente considerar el peso como puntaje asociado.
  • 36. 35 Sobre el conjunto de usuarios alcanzados por el algoritmo de recolección, es posible seleccionar utilizando un criterio de clasificación heurística aquellos candidatos que son fuentes de información. Al eliminar del conjunto aquellos que no pueden ser fuentes, se reducen los falsos positivos, e idealmente mejora la precisión entre los recomendados. 3.3.2 Índice de fuente de información (IS) Siendo el objetivo de este trabajo recomendar fuentes de información, el Índice de fuente de información presentado en la sección 3.1.1 permite asignar un puntaje heurístico estimando la calidad del usuario candidato como fuente de información. ( ) 3.3.3 Ranking basado en comparación de seguidores En el capítulo 2.3 se ha mencionado el trabajo de Hannon et al. [7], donde se generan perfiles de usuario basados en las sus interrelaciones, generando una solución que sostienen se asemeja al filtrado colaborativo. En su trabajo, al comparar las recomendaciones utilizando perfiles basados en contenido con las obtenidas al utilizar perfiles basados en interrelaciones, las segundas ofrecen igual o mejor precisión. Los perfiles considerados para un usuario objetivo fueron:  S1: El usuario es representado por las palabras de sus tweets  S2: El usuario es representado por las palabras de los tweets de sus seguidos  S3: El usuario es representado por las palabras de los tweets de sus seguidores  S4: El usuario es representado por una combinación de S1, S2 y S3  S5: El usuario es representado por los ids de sus usuarios seguidos  S6: El usuario es representado por los ids de sus usuarios seguidores  S7: El usuario es representado por una combinación de S5 y S6  S8: La función de puntaje combina resultados de S1 y S6  S9: La función de puntaje se basa en la posición de los usuarios en cada una de las recomendaciones, favoreciendo usuarios frecuentemente recomendados Ilustración 9: Resultados de precisión para los algoritmos Hannon et al.
  • 37. 36 En la Ilustración 9 se muestran los resultados reportados por Hannon et al. [7]. Puede observarse que al generar perfiles de usuario considerando solo los seguidores (S6) obtienen resultados que igualan o superan las demás alternativas. Para cada una de las estrategias de generación de perfiles, se utilizó como puntaje una función de similitud entre un perfil objetivo (usuario interesado) y los usuarios candidatos, definida de igual manera, independientemente del contenido de los perfiles. La similitud entre un perfil objetivo y un perfil candidato se obtiene realizando el producto escalar entre los vectores de pesos asociados y respectivamente, y normalizando respecto al total de términos contenidos en el perfil objetivo. | | En orden de calcular el peso asociado para cada término del perfil, existen múltiples alternativas, entre las cuales el trabajo presentado considera dos. Recuento de ocurrencias 3.3.3.1 Al asignar peso a un término del perfil, la estrategia más sencilla es simplemente contar el número de ocurrencias del término. A modo de ejemplo, en el caso de los perfiles basados en tweets, el peso de cada palabra es la cantidad de ocurrencias de esta entre el total de tweets contenidos en el perfil. Particularmente, si el perfil es un conjunto de elementos únicos (como en S5 o S6), el elemento poseerá un peso de 1 en caso que el elemento se encuentre en el perfil, 0 en caso contrario. En consecuencia, y serán vectores binarios, y puede simplificarse el cálculo de la función de similitud a: | | | | Siendo B(i) el conjunto de arcos entrantes al nodo i, el puntaje de similitud para el algoritmo S6, puede computarse como: | | | | Esta alternativa resulta sencilla de implementar, pero no toma en cuenta la rareza de los elementos, ni las dimensiones de los conjuntos, tendiendo entonces a favorecer perfiles con mayor cantidad de términos, en especial aquellos que son frecuentes en el dominio. TF-IDF 3.3.3.2 TFIDF (term frequency–inverse document frequency) es una métrica tomada del área de recuperación de información y que se aplica originalmente a texto. Esta alternativa da mayor
  • 38. 37 importancia a aquellos términos (para nuestro caso, IDs de usuario) más frecuentes para el documento (en nuestro caso, perfil) objetivo, pero menos frecuentes entre todos los documentos. TFIDF se define como el producto de dos estadísticas, la frecuencia del termino (TF - Term frecuency) y la frecuencia inversa en documentos (IDF - inverse document frecuency). La frecuencia del término en el documento , se basa en la cantidad de ocurrencias del término i en el documento T sobre el total de ocurrencias de todos los términos en el documento. Σ La frecuencia inversa en documentos del término el subconjunto de documentos U se define como el logaritmo de la relación entre el número de documentos evaluados con el número de documentos que contienen al término : | | | | La similitud entre dos documentos puede computarse entonces como: ( ) Σ ( ) | | Si bien en su trabajo plantean una misma estrategia para el peso de cada termino, al trabajar con listas de seguidores o seguidos (S5 y S6 respectivamente) no existen repeticiones. En estos casos es posible simplificar la frecuencia del término a: { | |⁄ Y en consecuencia: ( ) | | Σ( | | | | | | | | ) ( ) | | Σ( | | | | | | ) De entre las alternativas presentadas por Hannon et al. Solo será considerada para este trabajo S6, dado que se basa en topología y provee los mejores resultados. Sea B(i) y F(i) el conjunto de
  • 39. 38 usuarios seguidores y seguidos respectivamente, y N el total de usuarios de la red, el puntaje de similitud basado en los usuarios seguidores (S6) se define como: ( ) | || | Σ( | | | | ) Puede observarse que esta función utiliza los mismos elementos tratos durante la recolección, permitiendo incorporarla sin dificultad a la solución presentada. 3.3.4 Función de scoring compuesta Cada una de las funciones presentadas previamente representa distintos aspectos sobre el interés del usuario.  El peso propagado durante la recolección indica la cercanía a nivel comunidades  El índice de fuente de información da una estimación inicial del potencial como proveedor de información del usuario, independientemente de la cercanía  El puntaje de Hannon S6 indica la similitud directa entre el usuario candidato y el inicial, dando una información alternativa a la obtenida mediante propagación de pesos. 3.4 Combinación de resultados Distintos recorridos o distintas funciones de ranking generan distintas recomendaciones. A continuación se estudia la posibilidad de mejorar los resultados individuales al combinarlos. Partiendo de dos algoritmos que proveen una recomendación ordenada, aquellos usuarios recomendados por el algoritmo “1” pueden combinarse con los provistos por el algoritmo “2”, utilizando operaciones de conjuntos sobre los nodos, y luego combinando los pesos asociados. Ilustración 10: Diagrama de Venn ilustrando la relación entre las recomendaciones provistas por los algoritmos Fuentes y Amigos.
  • 40. 39 Desde la perspectiva del algoritmo “1”, los usuarios recomendados por el algoritmo “2” pueden ser:  Elementos redundantes:  Elementos nuevos: Las operaciones básicas entre estos dos conjuntos son:  Unión: Incorporando los elementos nuevos, en busca de aumentar el recall  Intersección: Conservando solo los elementos redundantes, en búsqueda de mejorar la precisión Respecto a la combinación de los puntajes asociados, existen diversas alternativas. A continuación se estudian las alternativas consideradas, que pueden extenderse de manera sencilla para n recomendaciones. Combinación lineal 3.4.1.1 Utilizando un factor de combinación , se puede definir el peso de autoridad compuesto como: El factor de combinación puede obtenerse de distintas maneras:  Equiprobable: solución trivial, donde se promedian los pesos obtenidos por distintos recorridos.  Asignado por parámetro: si se conoce la precisión media de los recorridos, es posible establecer el valor de modo explícito.  Criterio: es posible utilizar un criterio para determinar el porcentaje de cada una de las categorías, y utilizarlo como factor de escala. Combinación no lineal 3.4.1.2 Si se desconoce la escala de cada ranking, y se considera que ambos proveen información vital, es posible obtener un ranking combinado multiplicando los rankings individuales. Combinación con prioridades 3.4.1.3 Si ambos algoritmos ofrecen puntajes a grupos disjuntos de usuarios, o bien el primero ofrece consistentemente mejores puntajes para un subconjunto de interés, puede definirse el puntaje con prioridades como: { Con y normalizados.
  • 41. 40 Multiplicando el valor de por el mínimo obtenido para el conjunto de interés para , se conserva el orden de interno de cada ranking, pero el conjunto de interés se encontrará primero en el ranking. 3.5 Conclusión En este capítulo se ha presentado un algoritmo de recomendación basado en topología, y se ha establecido un framework genérico para la ejecución del algoritmo, permitiendo la configuración y extensión de estrategias asociadas. Sobre este framework, se han presentado dos recorridos basados en la existencia de comunidades, en busca de generar recolecciones rápidas, para luego mejorar mediante técnicas de ranking. A continuación en el capítulo 0 se presenta el diseño asociado a la implementación del algoritmo, y en el capítulo 0 se presenta la experimentación para la evaluación de los distintos aspectos configurables.
  • 42. 41 Capí tulo 4: Disen o e Ímplementacio n
  • 43. 42 4 Diseño e Implementación Como lenguaje de programación se ha seleccionado Java, bajo el paradigma de programación orientada a objetos. La idea principal sobre este diseño es que las clases diseñadas puedan ser reutilizadas posteriormente a modo de biblioteca; internamente, los paquetes deben tener alta cohesión y bajo acoplamiento, facilitando así las tareas de expansión y mantenimiento de los mismos. El diseño del algoritmo de recomendación se ha dividido en paquetes, reflejando los diferentes aspectos del proyecto. Cada uno de estos paquetes exporta una interfaz fundamental que provee el comportamiento requerido. Ilustración 11: Diagrama de clases indicando solo las interfaces exportadas por cada paquete. Se han excluido las dependencias de la interfaz usuario por simplicidad. 4.1 Usuario El paquete fundamental contiene la información sobre el usuario, sus interrelaciones, tweets y metadatos. Al diseñar el usuario se debe tener en cuenta el número de usuarios totales que se mantendrán en memoria, y la redundancia de las consultas. Tres decisiones fundamentales son:  Patrón flyweight (conocido también como objeto ligero): solo se mantiene en memoria una única instancia del usuario completo; cada una de las copias será un proxy referenciando a instancia completa.  Inicialización lazy: como se ha visto previamente, un usuario consta de distintas partes separables (en particular al tratar con Twitter API), aprovechando esta característica, la instancia del usuario se va completando al ser requerido.
  • 44. 43  Relaciones como arreglo de IDs: dado el número de arcos posibles para un usuario, crear una instancia de cada uno de los referenciados requiere la creación de un gran número de objetos que adicionalmente difícilmente sean utilizados. Por esto, cada usuario solo conserva el ID de cada uno de aquellos con los que se relaciona, pudiendo obtenerlos al momento de ser requerido. A continuación, en la Ilustración 12, pueden observarse las clases fundamentales. Un usuario proxy almacena la información correspondiente a la instancia y su puntaje, e interactúa con un Factory de usuarios asociado, solicitando cuando lo requiera la actualización de la información correspondiente al usuario, y proveyendo métodos de alto nivel para obtener los seguidos y seguidores como listas de usuarios. Las implementaciones de Usuario corresponden a TwitterAPI y dataset utilizado. Ilustración 12: Diagrama de clases del paquete Usuario. Se han omitido métodos getters y setters triviales, propios de estructuras de datos. 4.2 Usuario Factory Para solucionar las diferencias entre las fuentes de información (a saber, el API de Twitter y el dataset), se utiliza una interfaz genérica. Las principales características son:
  • 45. 44  Patrón Factory: la creación y en consecuencia la selección del mejor método para obtener los usuarios es delegada a una clase específica, asociada a la fuente de información y consideraciones correspondientes.  Persistencia: dadas las grandes limitaciones que impone Twitter, se utiliza una base de datos local donde se almacenan las consultas realizadas. Estos datos poseen una fecha de modificación, lo que permite imponer una antigüedad máxima después de la cual debe volver a consultarse al API.  Caché: el patrón flyweight requiere una indexación de las instancias actuales; se extiende esta decisión a mantener en memoria las últimas consultas realizadas. Dado que en este proyecto no se realizan modificaciones de los datos, no es necesario evaluar posibles inconsistencias entre valores referenciados entre distintos objetos livianos, aun cuando el objeto indexado deba ser desalojado de la caché.  Facade: a fin de abstraer las capas superiores de la decisión de solicitar información al API o a la base de datos, se crea una capa intermedia que atiende las consultas y se encarga del mantenimiento de los usuarios en memoria y base de datos. Para el caso del dataset, la información contenida es mucho menor, limitando el facade a un simple wrapper de los llamados a los servicios de la base de datos. A continuación en la Ilustración 13 pueden observarse los factories implementados, donde se muestra una íntima relación con la implementación asociada, indicadas en el inciso anterior. Ilustración 13: Diagrama de clases del paquete Factory usuario.
  • 46. 45 4.3 Criterio Usuario Al momento de generar criterios de decisión, existen una gran cantidad de posibilidades. Se ha decidido utilizar el patrón strategy, junto con el patrón composite para criterios múltiples, maximizando la flexibilidad. A continuación en la Ilustración 14 se indican los criterios planteados, quedando abierta la posibilidad de crear nuevos, en caso de necesitarse. Ilustración 14: Diagrama de clases del paquete Criterio Usuario. 4.4 Comparador Usuarios Similar al caso de los criterios, existe una gran cantidad de maneras de comparar usuarios. Al momento de implementar, se optó por utilizar nuevamente el patrón strategy, extendiendo a su vez la interfaz estándar de Java Comparator, aprovechando de esta manera los algoritmos de ordenamiento provistos por las librerías del lenguaje. Para el caso de comparadores complejos, se ha utilizado el patrón composite. En la Ilustración 15 se indican los comparadores implementados.
  • 47. 46 Ilustración 15: Diagrama de clases del paquete Comparador Usuarios. 4.5 Scoring Usuario La evaluación del scoring final para la recomendación requiere en algunos casos considerar el total de los usuarios candidatos, por razones de normalización o términos globales (como es el caso de la frecuencia inversa del documento en TF-IDF); por esto, la clase responsable de la función de scoring evalúa el total de los usuarios candidatos. A continuación pueden observarse las clases implementadas, nuevamente basándose en el patrón strategy. Ilustración 16: Diagrama de clases del paquete Scoring Usuario.
  • 48. 47 4.6 Recolector y Nivel Recolección El recolector se encarga de coordinar la ejecución sucesiva de los niveles planteados, y el retorno de los resultados obtenidos. Un nivel de recolección cuenta con el modo de recorrido, y está íntimamente ligado a que lista de usuarios y que estrategias de normalización utilizar. Siendo de interés para este proyecto solo utilizar seguidos y seguidores, la implementación realizada es sencilla, pero flexible en caso de necesitarse en el futuro. Ilustración 17: Diagrama de clases del paquete Nivel de Recolección. 4.7 Factory de Recolección de Usuarios Dado que en cada nivel deben tomarse decisiones sobre las listas de usuarios a construir, se utiliza nuevamente un Factory intermediario entre las consultas desde el nivel y el Factory de Usuarios. Este se encarga del muestreo, en caso que la cantidad de usuarios siguientes sea demasiado
  • 49. 48 grande, así como de la normalización de pesos, previo al salto; dado que se encuentra íntimamente relacionado con el comportamiento del nivel, se delega la construcción de estos al Factory, permitiendo ocultar de manera transparente la lógica de comunicación con las capas inferiores. Ilustración 18: Diagrama de clases del paquete Nivel de Recolección. 4.8 Ranking y combinación de resultados El ranking requiere asignar un valor numérico a cada usuario a recomendar. Al final de la recolección, cada usuario posee dos valores asociados: el peso y el número de menciones; otros puntajes pueden computarse externamente, basados en sus características como el IS o nodos vecinos como los rankings colaborativos presentados por Hannon. A su vez, es posible combinar distintas estrategias de ranking de diversas maneras. La implementación provista provee cada una
  • 50. 49 de las alternativas presentadas, y da lugar a la extensión en caso que sea necesario, en particular, si se desea incluir procesamiento de contenido. Ilustración 19: Diagrama de clases del paquete Ranking usuarios. Dos rankings pueden combinarse mediante operaciones de conjuntos; se han implementado las funciones de unión e intersección, permitiendo modificar que estrategia se utiliza para combinar los puntajes individuales.
  • 51. 50 Ilustración 20: Diagrama de clases del paquete Combinación de puntajes. 4.9 Conclusión Puede observarse que la implementación del algoritmo propuesto presenta flexibilidad en cada uno de los puntos requeridos para su extensión. En caso que se desee incluir procesamiento de contenido, solo se deben implementar las interfaces o bien extender las clases correspondientes.
  • 52. 51 Capí tulo 5: Experimentacio n
  • 53. 52 5 Experimentación En este capítulo se presentan las pruebas realizadas sobre los algoritmos planteados para evaluar la capacidad de 1) alcanzar usuarios de interés, y 2) generar recomendaciones. Para esto, se estudian primero de manera general distintas combinaciones de recorridos y parámetros, para generar una preselección, y luego se evalúa la mejor combinación en comparación con otras alternativas de ranking basadas en topología. 5.1 Tratamiento de datos Una vez realizados los experimentos sobre una muestra del total de usuarios, se obtiene un valor para cada métrica de interés por cada experimento realizado; es necesario entonces resumir los resultados obtenidos a fin de realizar conclusiones. En esta sección se estudian las medidas básicas utilizadas. 5.1.1 Valor característico A fin de obtener un valor representativo que resuma los resultados obtenidos se utilizarán medidas de tendencia central. A continuación se estudian las alternativas más comunes con sus ventajas y desventajas. Media aritmética 5.1.1.1 La media aritmética (también llamada promedio o media) de un conjunto finito de números es el valor característico de una serie de datos cuantitativos objeto de estudio que parte del principio de la esperanza matemática o valor esperado, se obtiene a partir de la suma de todos sus valores dividida entre el número de sumandos. ̅ Σ Una de las limitaciones de la media aritmética es que se trata de una medida muy sensible a los valores atípicos: valores muy grandes tienden a aumentarla mientras que valores muy pequeños tienden a reducirla, lo que implica que puede dejar de ser representativa de la población. Esta medida es la más utilizada en la literatura, y será utilizada para dar un primer acercamiento a los resultados obtenidos. Mediana 5.1.1.2 En el ámbito de la estadística, la mediana representa el valor de la variable de posición central en un conjunto de datos ordenados, separándolo en una mitad mayor y una menor. Para el caso de las métricas estudiadas, indica un valor umbral para el 50% de los resultados obtenidos. A diferencia de la media, no es sensible a valores atípicos, por lo que suele utilizase cuando los datos se encuentran dispersos, pero al depender de solo uno (o a lo sumo dos) de los valores de la muestra se vuelve menos representativa.
  • 54. 53 5.2 Validación cruzada En este experimento se utilizó 3-fold cross-validation, dividiendo el conjunto de usuarios actualmente seguidos en tres subconjuntos, y ocultando un subconjunto a la vez, para luego evaluar la capacidad de los algoritmos de recuperar los usuarios ocultos. Al evaluar las métricas explicadas previamente, el conjunto de usuarios de interés es conocido, estando conformado por los usuarios ocultos. 5.2.1 K-fold cross-validation En k-fold cross-validation, la muestra original es particionada de manera aleatoria en k sub- muestras de igual tamaño. De las k sub-muestras, una es conservada para probar el modelo, mientras que las k - 1 restantes se utilizan para entrenamiento. La validación cruzada es repetida k veces (folds) con cada una de las k sub-muestras utilizándolas exactamente una vez como conjunto de prueba. Los k resultados se combinan (utilizando la media, por ejemplo) para producir una única estimación. La ventaja de este método sobre muestreo aleatorio es que cada uno de los subconjuntos es utilizado tanto como entrenamiento y validación, y cada observación es utilizada exactamente una vez. 5.2.2 Dataset Para la evaluación automática se ha utilizado el dataset5 provisto por Kwak et al. [3], que consta de 41.7 millones de usuarios con un total de 1.47 mil millones relaciones seguidor-seguido. Para determinar la distribución de seguidos y seguidores, Kwak et al. estudian la función de distribución complementaria CCDF (por su nombre en inglés Complementary cumulative distribution function), definida como el complemento de la distribución acumulada. CCDF indica la probabilidad de encontrar un usuario con más seguidos o seguidores que un valor umbral t. Los resultados para CCDF sobre el dataset se encuentran en Ilustración 21. 5 http://an.kaist.ac.kr/traces/WWW2010.html
  • 55. 54 Ilustración 21: distribución complementaria del dataset provisto por Kwak et al. Kwak et al. describen en detalle el comportamiento del número de seguidos y seguidores, indicando que responden a la Ley exponencial, tal como otras redes sociales. A continuación se presentan las observaciones más importantes. Centrándose en los usuarios seguidos, puede observarse que existe una anomalía sobre luego de los primeros 20, lo cual coincide con la recomendación inicial de Twitter a nuevos usuarios. Pocos usuarios poseen más de 10.000 seguidos, solo páginas de políticos y celebridades, que ofrecen alguna forma de atención al cliente. Solo unos pocos poseen más de un millón de seguidores, y estos son o bien celebridades (como Ashton Kutcher y Britney Spears) o medios masivos (como CNN y TIMES). De estos usuarios, algunos poseen relaciones simétricas con sus seguidores, pero no en la mayoría de los casos. En general, existe un bajo grado de reciprocidad: del total de las relaciones entre usuarios, 77.9% son unidireccionales, dejando sólo un 22.1% reciprocas; esto es bajo en comparación con estudios sobre otras redes sociales (68% en Flickr [4] y 84% en Yahoo!). Incluso, del total de los usuarios contenidos en el dataset, el 67.6% no son seguidos por ninguno de los usuarios a los que siguen, indicando el uso de la red como una herramienta para buscar información más que para interacción social. 5.2.3 Caracterización de algoritmos A fin de determinar el comportamiento individual de los algoritmos presentados, se realizaron recomendaciones para 200 usuarios, variando los parámetros de fanout. En esta primera etapa no se busca recomendar fuentes, sino determinar qué algoritmos poseen mayor potencial para este
  • 56. 55 fin. Los algoritmos presentados en la Tabla 2 se definen a partir de 4 recorridos y 6 combinaciones de recorridos: Tabla 2: Algoritmos estudiados Nombre Recorrido Transición Scoring interno A1 fuentes binaria peso A2 fuentes probabilística peso A3 A1 Unión A2 N/A 6 A4 A1 Intersección A2 N/A A5 Amigos binaria Peso A6 Amigos probabilística Peso A7 A5 Unión A6 N/A 4 A8 A5 Intersección A6 N/A A9 A2 Unión A6 N/A 4 A10 A2 Intersección A6 N/A Para el peso, se consideraron 3 funciones de scoring, presentados en la Tabla 3: Tabla 3: Funciones de scoring utilizadas por los rankings iniciales Nombre Scoring externo R1 Peso durante recolección A2 Menciones durante recolección7 R3 Cada uno de estos algoritmos será estudiado con las siguientes configuraciones de fanout:  Límite de arcos por nodo: {5 mil; 20mil} Cantidad máxima de arcos (seguidor o seguido) que se evaluaran desde un usuario. Disminuye la influencia de nodos sumideros y fuentes.  Límite de nodos por nivel: {200; 800} Para los algoritmos de más de dos niveles, se consideró la posibilidad de no utilizar usuarios alcanzados por los niveles anteriores.  Límite máximo de usuarios: 2 millones Cantidad de usuarios máxima considerada durante la evaluación de un nivel. Al superar el máximo se descartarán todos los usuarios con una sola ocurrencia (compactación), y se proseguirá con la recomendación. Dado el número de variables a estudiar, se presentarán primero las tablas de resultados obtenidos para cada conjunto de parámetros y luego se descompondrán para estudiar sus efectos. 6 En caso de no existir uno de los elementos, se utilizara 0.1 como score por defecto 7 Equivalente al peso propagado por la transición binaria
  • 57. 56 Recall 5.2.3.1 El primer objetivo de la evaluación es determinar qué porcentaje de nodos puede recuperarse, dando el conjunto de trabajo a partir del cual seleccionar una recomendación. En la Tabla 4 se presentan los resultados obtenidos para los algoritmos presentados. Tabla 4: Recall total obtenido para cada algoritmo y combinación de parámetros Algoritmo Recall total 200 nodos 800 nodos 5000 arcos 20000 arcos 5000 arcos 20000 arcos A1 0,629 0,690 0,745 0,784 A2 0,651 0,706 0,769 0,807 A3 0,706 0,758 0,801 0,835 A4 0,574 0,638 0,713 0,755 A5 0,508 0,545 0,534 0,570 A6 0,508 0,545 0,534 0,570 A7 0,508 0,545 0,534 0,570 A8 0,508 0,545 0,534 0,570 A9 0,719 0,761 0,810 0,842 A10 0,440 0,490 0,494 0,535 Los mejores valores se obtienen con el algoritmo A2 (recorrido según fuentes con transiciones probabilísticas), ya sea directamente o al combinar sus resultados en A3 (recorrido binario según fuentes) y A9 (recorrido probabilístico según amigos); particularmente, el mejor valor se obtiene con A9, lo que resulta una consecuencia lógica dado que se intervienen dos recorridos distintos y por lo tanto se aumenta el número efectivo de usuarios alcanzados. Al estudiar los parámetros de fanout puede observarse que el recall es directamente proporcional tanto al número de nodos como el número de arcos considerados. 5.2.3.1.1 Recall según número de seguidos Otro factor de importancia es el número de usuarios seguidos, siendo éstos los que proveen información topográfica. En la evaluación por redescubrimiento, los usuarios restantes (holdin) representan el conjunto de usuarios seguidos; según este, es posible clasificar los usuarios de prueba en cuatro subconjuntos de similar tamaño, los rangos para la división en cuatro subconjuntos se encuentran indicados en la Tabla 5. Tabla 5: Subcategorías de pruebas Categoría seguidos Casos de prueba 19-99 148 100-167 150 168-258 149 259-396 153 Total 600
  • 58. 57 Cada uno de estos subconjuntos cuenta entonces con aproximadamente 150 usuarios, una muestra suficiente para dar resultados significativos. A continuación en la Tabla 6 se exponen los valores de recall asociados a cada uno de los subgrupos generados. Se ha resaltado en naranja el mejor resultado para cada subconjunto. Tabla 6: Recall total para los algoritmos principales, para cada combinación de parámetros y subcategoría Categoría Seguidos Recall según seguidos Algoritmo 3 (A3) Algoritmo 6 (A6) Algoritmo 9 (A9) N200 N800 N200 N800 N200 N800 L5000 L20000 L5000 L20000 L5000 L20000 L5000 L20000 L5000 L20000 L5000 L20000 19-99 0,624 0,654 0,707 0,740 0,427 0,459 0,427 0,459 0,690 0,718 0,764 0,795 100-167 0,618 0,681 0,751 0,793 0,498 0,533 0,498 0,533 0,693 0,743 0,792 0,828 168-258 0,682 0,737 0,796 0,832 0,563 0,600 0,574 0,612 0,749 0,789 0,830 0,858 259-396 0,679 0,750 0,821 0,857 0,542 0,587 0,635 0,675 0,743 0,794 0,852 0,881 Los parámetros de fanout se encuentran indicados con los prefijos N# para el numero de nodos y L# para el numero de arcos (links). Puede observarse claramente que A9 ofrece los mejores resultados para cada conjunto de parámetros, en particular, para el mayor fanout estudiado. Así también, el recall aumenta según el número de usuarios seguidos. Ilustración 22: Comparación del recall obtenido para cada recomendación realizada, ordenada según número de usuarios restantes. Cada evaluación corresponde a un conjunto de parámetros, donde N precede al número de nodos y L al número de arcos. - 0,10 0,20 0,30 0,40 0,50 0,60 0,70 0,80 0,90 1,00 - 50,00 100,00 150,00 200,00 250,00 300,00 350,00 400,00 Recall restantes Recall de A9 según número seguidos N200-L5000 N800-L20000
  • 59. 58 En la Ilustración 22 se presenta el recall obtenido para A9 para dos juegos de parámetros, ordenados según número de usuarios seguidos restantes, es decir, aquellos usuarios seguidos que no han sido ocultos (que se denominará también holdin, de manera análoga a holdout). Pueden realizarse una observación de interés: al aumentar el número de seguidos o el fanout, el recall tiende a converger. 5.2.3.1.2 Último encontrado Para todos los algoritmos, el recall aumenta tanto al incrementar los nodos o arcos considerados, esto tiene un impacto en la cantidad final de nodos alcanzados. A continuación en la Tabla 7 se expone la posición mediana del último usuario recuperado para cada conjunto de parámetros, resaltando en negrita el 25% de los casos con el menor valor para la última posición alcanzada para cada conjunto de parámetros, y en naranja el menor valor global. Tabla 7: Posición mediana del último encontrado para cada algoritmo y conjunto de parámetros Nombre Algoritmo Ranking Posición último encontrado 200 nodos 800 nodos 5000 arcos 20000 arcos 5000 arcos 20000 arcos A1R1 A1 R1 80.685 243.269 214.305 539.855 A2R1 A2 R1 43.016 162.793 113.455 366.966 A3R1 A3 R1 90.253 261.106 228.763 562.820 A4R1 A4 R1 49.952 148.087 90.266 277.713 A5R1 A5 R1 17.501 22.928 28.383 37.077 A6R1 A6 R1 16.084 21.396 24.960 32.677 A7R1 A7 R1 16.231 21.590 25.089 32.880 A8R1 A8 R1 16.230 21.590 25.088 32.880 A9R1 A9 R1 64.487 210.954 170.141 508.736 A10R1 A10 R1 26.843 67.938 32.452 79.148 A1R2 A1 R2 80.685 243.269 214.305 539.855 A2R2 A2 R2 58.419 234.734 182.924 627.397 A3R2 A3 R2 104.867 321.494 288.544 768.828 A4R2 A4 R2 53.393 178.597 120.849 416.881 A5R2 A5 R2 17.501 22.928 28.383 37.077 A6R2 A6 R2 16.116 21.461 25.318 33.269 A7R2 A7 R2 17.554 22.989 28.426 37.118 A8R2 A8 R2 17.554 22.989 28.426 37.118 A9R2 A9 R2 70.192 258.452 207.939 695.532 A10R2 A10 R2 26.964 68.100 33.420 80.262 A1R3 A1 R3 80.685 243.269 214.305 539.855 A2R3 A2 R3 43.915 167.061 113.494 372.121 A3R3 A3 R3 93.114 259.112 228.902 529.844 A4R3 A4 R3 50.405 152.616 93.153 297.371 A5R3 A5 R3 17.501 22.928 28.383 37.077 A6R3 A6 R3 16.046 21.362 24.923 32.728 A7R3 A7 R3 16.220 21.601 25.200 33.096 A8R3 A8 R3 16.220 21.601 25.200 33.096 A9R3 A9 R3 60.044 192.388 153.102 435.098 A10R3 A10 R3 26.850 67.936 32.569 79.305