recomendación de usuarios en twitter basada en topología

126
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

Upload: joan-sol-roo

Post on 24-Jul-2015

77 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Recomendación de usuarios en Twitter basada en topología

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

Page 2: Recomendación de usuarios en Twitter basada en topología

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.

Page 3: Recomendación de usuarios en Twitter basada en topología

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

Page 4: Recomendación de usuarios en Twitter basada en topología

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

Page 5: Recomendación de usuarios en Twitter basada en topología

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

Page 6: Recomendación de usuarios en Twitter basada en topología

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

Page 7: Recomendación de usuarios en Twitter basada en topología

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

Page 8: Recomendación de usuarios en Twitter basada en topología

7

Capí tulo 1: Íntroduccio n

Page 9: Recomendación de usuarios en Twitter basada en topología

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

Page 10: Recomendación de usuarios en Twitter basada en topología

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.

Page 11: Recomendación de usuarios en Twitter basada en topología

10

Capí tulo 2: Marco Teo rico

Page 12: Recomendación de usuarios en Twitter basada en topología

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).

Page 13: Recomendación de usuarios en Twitter basada en topología

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:

Page 14: Recomendación de usuarios en Twitter basada en topología

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

Page 15: Recomendación de usuarios en Twitter basada en topología

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.

Page 16: Recomendación de usuarios en Twitter basada en topología

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.

| |

Page 17: Recomendación de usuarios en Twitter basada en topología

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

| |

Page 18: Recomendación de usuarios en Twitter basada en topologí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.

Page 19: Recomendación de usuarios en Twitter basada en topología

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

Page 20: Recomendación de usuarios en Twitter basada en topología

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)

Page 21: Recomendación de usuarios en Twitter basada en topología

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:

| |

| |

Page 22: Recomendación de usuarios en Twitter basada en topología

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.

Page 23: Recomendación de usuarios en Twitter basada en topología

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

Page 24: Recomendación de usuarios en Twitter basada en topología

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:

Page 25: Recomendación de usuarios en Twitter basada en topología

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:

Page 26: Recomendación de usuarios en Twitter basada en topología

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.

Page 27: Recomendación de usuarios en Twitter basada en topología

26

Capí tulo 3: Algoritmo de recomendacio n topolo gica

Page 28: Recomendación de usuarios en Twitter basada en topología

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

Page 29: Recomendación de usuarios en Twitter basada en topología

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.

Page 30: Recomendación de usuarios en Twitter basada en topología

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.

Page 31: Recomendación de usuarios en Twitter basada en topología

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.

Page 32: Recomendación de usuarios en Twitter basada en topología

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.

Page 33: Recomendación de usuarios en Twitter basada en topología

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.

Page 34: Recomendación de usuarios en Twitter basada en topología

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

Page 35: Recomendación de usuarios en Twitter basada en topologí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.

Page 36: Recomendación de usuarios en Twitter basada en topología

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.

Page 37: Recomendación de usuarios en Twitter basada en topología

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

Page 38: Recomendación de usuarios en Twitter basada en topología

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

Page 39: Recomendación de usuarios en Twitter basada en topología

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.

Page 40: Recomendación de usuarios en Twitter basada en topología

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.

Page 41: Recomendación de usuarios en Twitter basada en topología

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.

Page 42: Recomendación de usuarios en Twitter basada en topología

41

Capí tulo 4: Disen o e Ímplementacio n

Page 43: Recomendación de usuarios en Twitter basada en topología

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.

Page 44: Recomendación de usuarios en Twitter basada en topología

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:

Page 45: Recomendación de usuarios en Twitter basada en topología

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.

Page 46: Recomendación de usuarios en Twitter basada en topología

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.

Page 47: Recomendación de usuarios en Twitter basada en topología

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.

Page 48: Recomendación de usuarios en Twitter basada en topología

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

Page 49: Recomendación de usuarios en Twitter basada en topología

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

Page 50: Recomendación de usuarios en Twitter basada en topología

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.

Page 51: Recomendación de usuarios en Twitter basada en topología

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.

Page 52: Recomendación de usuarios en Twitter basada en topología

51

Capí tulo 5: Experimentacio n

Page 53: Recomendación de usuarios en Twitter basada en topología

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.

Page 54: Recomendación de usuarios en Twitter basada en topología

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

Page 55: Recomendación de usuarios en Twitter basada en topología

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

Page 56: Recomendación de usuarios en Twitter basada en topología

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

Page 57: Recomendación de usuarios en Twitter basada en topología

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

Page 58: Recomendación de usuarios en Twitter basada en topología

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

Cat

ego

ría

Segu

ido

s

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

Re

call

restantes

Recall de A9 según número seguidos

N200-L5000 N800-L20000

Page 59: Recomendación de usuarios en Twitter basada en topología

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

No

mb

re

Alg

ori

tmo

Ran

kin

g

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

Page 60: Recomendación de usuarios en Twitter basada en topología

59

Antes de pasar al estudio de los datos obtenidos, es necesario aclarar la decisión de utilizar la

mediana en lugar de la media: dada la distribución de encontrados, la última posición involucra un

rango de valores con gran dispersión, a fin de evitar valores poco representativos causados por

casos extremos, la mediana ofrece una medida más descriptiva para este caso.

Puede observarse que la última posición alcanzada está asociada al fanout: para cada algoritmo,

aumentar tanto el número de arcos como de nodos considerados incrementa de manera

considerable la última posición donde se encuentra un acierto. En cuando a los resultados

individuales de cada algoritmo, puede encontrarse una relación entre el recall total obtenido y la

última posición donde se encuentra un acierto. Entonces, para los algoritmos estudiados, al

aumentar el recall (ya sea por el tipo de recorrido o el aumento de fanout), aumenta el rango en el

cual buscar.

5.2.3.1.3 Recall según posiciones

De mayor interés es la recuperación de usuarios en las primeras posiciones según las distintas

técnicas de ranking presentadas. A continuación en la Tabla 8 se estudia el recall medio en 100,

1.000 y 10.000, resaltando en negrita el 25% de los mejores resultados para cada conjunto de

parámetros en cada posición, para finalmente indicar resaltado en naranja el mejor algoritmo para

cada posición. Se ha utilizado una escala exponencial con el fin de ilustrar el comportamiento los

resultados: el recall obtenido aumenta no linealmente con el número de posiciones evaluadas,

sino exponencialmente.

Respecto a los algoritmos, se mantiene lo observado con el recall total: el algoritmo 2 provee los

mejores resultados tanto directa como indirectamente; en este caso no solo al combinar mediante

unión, sino también mediante intersección.

Respecto a las técnicas de ranking, R2 (basado en menciones) provee los peores resultados. R1

(basado en peso propagado) y R3 (la combinación de R1 y R2) proveen resultados similares, pero

R1 ofrece los mejores valores.

Respecto a los parámetros, los resultados obtenidos parecen indicar los nodos considerados

poseen un impacto positivo mayor, mientras que el número de arcos considerados posee un

impacto o bien menor, o negativo.

Puede observarse que, independientemente del recall provisto, cada una de las soluciones ofrece

cerca del 50% de su recall total en los primeros 1.000 evaluados, y un 80% en los primeros 10.000.

Esto permite utilizar otros algoritmos de ranking de mayor coste evaluando un número máximo de

posiciones. Esto es estudiado en mayor detalle en la sección 5.2.3.1.7.

En este punto es posible observar que A1 posee un rendimiento menor; por esto, será excluido de

las pruebas siguientes. Los recorridos basados en Amigos (A5, A6, A7 y A8) poseen rendimientos

menores pero poseen ventajas en cuanto a las dimensiones de los conjuntos resultantes y así

también en la velocidad, como se observa a continuación en la sección 5.2.3.2.

Page 61: Recomendación de usuarios en Twitter basada en topología

60

Tabla 8: Recall en k para cada algoritmo y combinación de parámetros

No

mb

re Recall en 100 Recall en 1.000 Recall en 10.000

200 nodos 800 nodos 200 nodos 800 nodos 200 nodos 800 nodos

5000 arcos

20000 arcos

5000 arcos

20000 arcos

5000 arcos

20000 arcos

5000 arcos

20000 arcos

5000 arcos

20000 arcos

5000 arcos

20000 arcos

A1R1 0,138 0,130 0,125 0,113 0,284 0,264 0,272 0,251 0,443 0,405 0,434 0,386

A2R1 0,175 0,171 0,197 0,197 0,385 0,382 0,412 0,413 0,568 0,570 0,604 0,606

A3R1 0,163 0,162 0,175 0,169 0,307 0,302 0,359 0,346 0,416 0,406 0,502 0,503

A4R1 0,180 0,174 0,175 0,169 0,360 0,355 0,362 0,351 0,515 0,520 0,555 0,544

A5R1 0,063 0,059 0,063 0,060 0,211 0,203 0,211 0,204 0,436 0,436 0,441 0,440

A6R1 0,103 0,103 0,104 0,104 0,252 0,252 0,256 0,256 0,447 0,455 0,457 0,464

A7R1 0,097 0,097 0,098 0,097 0,256 0,256 0,259 0,259 0,453 0,463 0,462 0,471

A8R1 0,097 0,097 0,098 0,097 0,256 0,256 0,259 0,259 0,453 0,463 0,462 0,471

A9R1 0,142 0,138 0,164 0,161 0,291 0,286 0,337 0,331 0,486 0,471 0,528 0,516

A10R1 0,147 0,148 0,154 0,155 0,331 0,337 0,342 0,348 0,435 0,469 0,472 0,496

A1R2 0,138 0,130 0,125 0,113 0,284 0,264 0,272 0,251 0,443 0,405 0,434 0,386

A2R2 0,135 0,131 0,132 0,123 0,295 0,280 0,287 0,267 0,474 0,443 0,458 0,415

A3R2 0,138 0,132 0,129 0,119 0,293 0,274 0,278 0,257 0,460 0,429 0,445 0,401

A4R2 0,138 0,132 0,129 0,119 0,293 0,274 0,278 0,257 0,458 0,429 0,445 0,401

A5R2 0,063 0,059 0,063 0,060 0,211 0,203 0,211 0,204 0,436 0,436 0,441 0,440

A6R2 0,065 0,062 0,065 0,063 0,219 0,212 0,219 0,213 0,449 0,450 0,453 0,453

A7R2 0,063 0,059 0,063 0,060 0,211 0,203 0,211 0,204 0,436 0,436 0,441 0,440

A8R2 0,063 0,059 0,063 0,060 0,211 0,203 0,211 0,204 0,436 0,436 0,441 0,440

A9R2 0,094 0,087 0,087 0,081 0,287 0,268 0,261 0,239 0,523 0,488 0,505 0,470

A10R2 0,091 0,085 0,086 0,080 0,278 0,264 0,254 0,236 0,427 0,434 0,434 0,426

A1R3 0,138 0,130 0,125 0,113 0,284 0,264 0,272 0,251 0,443 0,405 0,434 0,386

A2R3 0,196 0,191 0,181 0,175 0,382 0,376 0,373 0,363 0,563 0,560 0,578 0,564

A3R3 0,163 0,155 0,152 0,145 0,334 0,316 0,317 0,298 0,512 0,490 0,516 0,481

A4R3 0,163 0,077 0,152 0,145 0,334 0,317 0,316 0,298 0,502 0,490 0,512 0,480

A5R3 0,063 0,059 0,063 0,060 0,211 0,203 0,211 0,204 0,436 0,436 0,441 0,440

A6R3 0,097 0,097 0,098 0,097 0,256 0,256 0,259 0,259 0,453 0,463 0,462 0,471

A7R3 0,082 0,080 0,082 0,081 0,243 0,240 0,244 0,242 0,454 0,463 0,462 0,469

A8R3 0,082 0,080 0,082 0,081 0,243 0,240 0,244 0,242 0,454 0,463 0,462 0,469

A9R3 0,164 0,156 0,157 0,150 0,389 0,377 0,388 0,374 0,580 0,567 0,593 0,578

A10R3 0,138 0,136 0,133 0,129 0,329 0,332 0,326 0,325 0,435 0,468 0,469 0,489

5.2.3.1.4 Recall según posiciones y número de seguidos

De igual manera que con el recall total, es posible estudiar el recall según el número de seguidos,

dividiendo el conjunto de resultados en cuatro subgrupos. A continuación en se exponen los

valores de recall asociados a cada uno de los subgrupos generados, en la Tabla 9 el recall en 100,

en la Tabla 10 el recall en 1.000 y finalmente en la Tabla 11 el recall en 10.000. Se ha resaltado en

negrita el mejor resultado para cada algoritmo y subconjunto, y en naranja el mejor resultado para

cada subconjunto.

Page 62: Recomendación de usuarios en Twitter basada en topología

61

Tabla 9: Recall en 100 para cada algoritmo seleccionado y combinación de parámetros

Recall en 100 Se

guid

os A2R1 A2R3 A6R3 A9R3

N200 N800 N200 N800 N200 N800 N200 N800

L5000 L20000 L5000 L20000 L5000 L20000 L5000 L20000 L5000 L20000 L5000 L20000 L5000 L20000 L5000 L20000

19-99 0,256 0,252 0,279 0,281 0,292 0,281 0,242 0,234 0,162 0,163 0,162 0,163 0,256 0,245 0,246 0,234

100-167 0,171 0,166 0,192 0,189 0,198 0,191 0,171 0,164 0,113 0,111 0,113 0,111 0,166 0,155 0,152 0,141

168-258 0,156 0,153 0,174 0,173 0,170 0,167 0,166 0,161 0,078 0,077 0,078 0,077 0,129 0,123 0,128 0,123

259-396 0,118 0,116 0,145 0,144 0,128 0,126 0,145 0,142 0,061 0,060 0,066 0,065 0,108 0,103 0,105 0,100

Media 0,175 0,171 0,197 0,197 0,196 0,191 0,181 0,175 0,097 0,097 0,098 0,097 0,164 0,156 0,157 0,150

Puede observarse en la Tabla 9 que el recall en 100 tiende a disminuir al aumentar el número de

seguidos; lo opuesto ocurre con el recall total, como se observó en la Tabla 6. Esto indica que al

aumentar el número de seguidos un mayor número de usuarios son recuperados pero se

distribuyen en el rango de encontrados.

Tabla 10: Recall en 1.000 para cada algoritmo seleccionado y combinación de parámetros

Recall en 1.000

Segu

ido

s A2R1 A2R3 A6R3 A9R3

N200 N800 N200 N800 N200 N800 N200 N800

L5000 L20000 L5000 L20000 L5000 L20000 L5000 L20000 L5000 L20000 L5000 L20000 L5000 L20000 L5000 L20000

19-99 0,444 0,443 0,478 0,480 0,444 0,437 0,441 0,431 0,311 0,315 0,311 0,315 0,473 0,465 0,473 0,465

100-167 0,371 0,367 0,395 0,391 0,371 0,362 0,356 0,340 0,274 0,271 0,274 0,271 0,381 0,367 0,381 0,363

168-258 0,381 0,379 0,403 0,400 0,377 0,368 0,365 0,353 0,228 0,227 0,229 0,228 0,377 0,361 0,369 0,349

259-396 0,344 0,340 0,375 0,374 0,339 0,336 0,332 0,326 0,198 0,197 0,212 0,211 0,327 0,318 0,330 0,318

Media 0,385 0,382 0,412 0,413 0,382 0,376 0,373 0,363 0,256 0,256 0,259 0,259 0,389 0,377 0,388 0,374

Tabla 11: Recall en 10.000 para cada algoritmo seleccionado y combinación de parámetros

Recall en 10.000

Segu

ido

s A2R1 A2R3 A6R3 A9R3

N200 N800 N200 N800 N200 N800 N200 N800

L5000 L20000 L5000 L20000 L5000 L20000 L5000 L20000 L5000 L20000 L5000 L20000 L5000 L20000 L5000 L20000

19-99 0,577 0,581 0,608 0,615 0,573 0,574 0,592 0,588 0,424 0,449 0,424 0,449 0,625 0,619 0,638 0,630

100-167 0,545 0,547 0,584 0,583 0,544 0,544 0,562 0,544 0,468 0,472 0,468 0,472 0,567 0,551 0,575 0,554

168-258 0,582 0,584 0,611 0,607 0,576 0,568 0,580 0,561 0,464 0,464 0,468 0,469 0,577 0,563 0,587 0,567

259-396 0,566 0,567 0,611 0,611 0,561 0,555 0,576 0,556 0,434 0,435 0,468 0,468 0,553 0,538 0,573 0,557

Media 0,568 0,570 0,604 0,606 0,563 0,560 0,578 0,564 0,453 0,463 0,462 0,471 0,580 0,567 0,593 0,578

El recall en 10.000 presentado en la Tabla 11 tiende a aumentar junto al número de seguidos, pero

no indefinidamente, dado que la cuarta categoría (entre 259 y 396 seguidos restantes) el recall

disminuye. Este fenómeno puede deberse a los límites impuestos de fanout, y podría eliminarse al

aumentar los parámetros.

Page 63: Recomendación de usuarios en Twitter basada en topología

62

A diferencia del recall total, el recall en las primeras 10.000 posiciones no se ve favorecido por la

unión (A9), exceptuando para el caso de menor cantidad de seguidos.

Entonces, el recall en todas las posiciones tiende a aumentar junto al número de nodos

considerados, pero a disminuir si el número de arcos considerados aumenta. Esto puede deberse a

que un mayor número de nodos aporta información útil, mientras que el aumento en el número

de arcos parece generar ruido en el recorrido, llevando a conservar usuarios no relevantes y podar

aquellos que sí lo son.

Siendo A2R1 el mejor algoritmo, a continuación se estudia su comportamiento de cada evaluación

individualmente. El recall en 10.000 se encuentra más disperso que el obtenido al estudiar el recall

total. A continuación en la Ilustración 23 se presenta la frecuencia de cada uno de los resultados.

Puede observarse la frecuencia encontrada asemeja una distribución normal. En la Ilustración 24

se presenta el recall en 10.000 para cada evaluación, ilustrando claramente ruidosa si no se

acompaña de la frecuencia.

Ilustración 23: Histograma indicando las frecuencias obtenidas para el recall en 10.000.

0%

10%

20%

30%

40%

50%

60%

70%

80%

90%

100%

0,00%

2,00%

4,00%

6,00%

8,00%

10,00%

12,00%

[0,0

0 ,

0,0

6]

(0,0

6 ,

0,1

0]

(0,1

0 ,

0,1

4]

(0,1

4 ,

0,1

8]

(0,1

8 ,

0,2

2]

(0,2

2 ,

0,2

5]

(0,2

5 ,

0,2

9]

(0,2

9 ,

0,3

3]

(0,3

3 ,

0,3

7]

(0,3

7 ,

0,4

1]

(0,4

1 ,

0,4

5]

(0,4

5 ,

0,4

9]

(0,4

9 ,

0,5

3]

(0,5

3 ,

0,5

7]

(0,5

7 ,

0,6

1]

(0,6

1 ,

0,6

5]

(0,6

5 ,

0,6

9]

(0,6

9 ,

0,7

3]

(0,7

3 ,

0,7

6]

(0,7

6 ,

0,8

0]

(0,8

0 ,

0,8

4]

(0,8

4 ,

0,8

8]

(0,8

8 ,

0,9

2]

(0,9

2 ,

0,9

6]

(0,9

6 ,

1,0

0]

Fre

cue

nci

a ac

um

ula

da

Fre

cue

nci

a

Rango Recall obtenido

Frecuencia de Recall en para 10.000 para A2R1

Frecuencia Frecuencia acumulada

Page 64: Recomendación de usuarios en Twitter basada en topología

63

Ilustración 24: Comparación del recall en 10.000 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 a al número de arcos.

5.2.3.1.5 Encontrados según seguidos

Si bien el recall permite determinar qué porcentaje de los usuarios fueron recuperados, no indica

qué cantidad de usuarios están actualmente disponibles para la recomendación. Siendo el método

de evaluación seleccionado 3-fold, significa que en cada evaluación es posible recomendar hasta

un 50% de usuarios válidos sobre el número de seguidos (el número de usuarios ocultos en

relación con el número de usuarios restantes). A continuación en la Tabla 12 se presenta el valor

medio de encontrados para cada categoría.

Tabla 12: Encontrados totales para cada algoritmo seleccionado y combinación de parámetros

Cat

ego

ría

Segu

ido

s

Encontrados

A3 A6 A9

N200 N800 N200 N800 N200 N800

L5000 L20000 L5000 L20000 L5000 L20000 L5000 L20000 L5000 L20000 L5000 L20000

19-99 17,4 18,2 19,7 20,6 12,3 13,2 12,3 13,2 19,0 19,8 21,1 21,9

100-167 41,4 45,4 50,0 52,7 33,5 35,8 33,5 35,8 46,3 49,5 52,8 55,1

168-258 70,0 75,7 81,8 85,4 57,6 61,5 58,9 62,9 76,9 81,0 85,1 88,1

259-396 108,2 119,6 131,1 137,0 86,1 93,2 101,4 107,8 118,5 126,7 136,1 140,8

A continuación, en la Ilustración 25, se estudia A9, comparando el número de usuarios

recuperados con el número de usuarios ocultos para dos conjuntos de parámetros de fanout.

-

0,10

0,20

0,30

0,40

0,50

0,60

0,70

0,80

0,90

1,00

0 50 100 150 200 250 300 350 400

Re

call

(Seguidos - Ocultos)

Recall en 10.000 para A2R1 según número seguidos

N200-L5000 N800-L20000

Page 65: Recomendación de usuarios en Twitter basada en topología

64

Ilustración 25: Comparación del número de usuarios recuperados 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 a al número de arcos.

Puede observarse como el aumento de nodos ocultos implica un aumento en el número de

recuperados, lo que es una consecuencia lógica, pero será de gran utilidad al estudiar la precisión.

Por sobre 50 seguidos, son encontrados, en promedio, al menos 20 usuarios de interés, suficientes

como para realizar una recomendación.

5.2.3.1.6 Encontrados según posiciones y número de seguidos

Siendo el objetivo de este estudio la generación de recomendaciones, ya sea directa o

indirectamente, se estudia a continuación el número de usuarios encontrados en 100, 1000 y

10.000. El objetivo en este punto no es considerar los encontrados como recomendaciones

directas, sino establecer en que intervalo de entre los usuarios evaluados es posible encontrar

suficientes para realizar una recomendación.

0

20

40

60

80

100

120

140

160

180

200

0 50 100 150 200 250 300 350 400

Enco

ntr

ado

s

restantes = (Seguidos - Ocultos)

Encontrados de A9 según número seguidos

Ocultos N200-L5000 N800-L20000

Tendencia(N200-L5000) Tendencia(N800-L20000)

Page 66: Recomendación de usuarios en Twitter basada en topología

65

Tabla 13: Encontrados en 100 para cada algoritmo seleccionado y combinación de parámetros C

ateg

orí

a

Segu

ido

s

Encontrados en 100

A2R1 A2R3 A6R3 A9R3

N200 N800 N200 N800 N200 N800 N200 N800

L5000 L20000 L5000 L20000 L5000 L20000 L5000 L20000 L5000 L20000 L5000 L20000 L5000 L20000 L5000 L20000

19-99 6,6 6,6 7,3 7,4 6,8 6,6 6,4 6,2 4,2 4,2 4,2 4,2 6,5 6,3 6,2 5,9

100-167 11,4 11,1 12,8 12,6 12,2 11,8 11,4 11,0 7,5 7,4 7,5 7,4 11,0 10,3 10,0 9,3

168-258 15,9 15,6 18,0 17,8 17,5 17,2 17,1 16,6 7,8 7,7 7,7 7,6 13,0 12,4 13,0 12,5

259-396 18,5 18,4 23,0 22,8 22,2 22,0 23,0 22,6 9,7 9,5 10,6 10,4 17,1 16,4 16,5 15,8

Puede observarse en la Tabla 13 que entre las primeras 100 posiciones son recuperadas en promedio al menos 6 usuarios por los algoritmos de interés. El valor aumenta considerablemente junto con el número de seguidos.

Tabla 14: Encontrados en 1.000 para cada algoritmo seleccionado y combinación de parámetros

Cat

ego

ría

Segu

ido

s

Encontrados en 1.000

A2R1 A2R3 A6R3 A9R3

N200 N800 N200 N800 N200 N800 N200 N800

L5000 L20000 L5000 L20000 L5000 L20000 L5000 L20000 L5000 L20000 L5000 L20000 L5000 L20000 L5000 L20000

19-99 12,0 12,0 12,9 12,9 12,1 11,9 12,0 11,6 8,4 8,5 8,4 8,5 12,8 12,5 12,8 12,4

100-167 24,7 24,4 26,4 26,1 24,8 24,2 23,7 22,7 18,4 18,2 18,4 18,2 25,5 24,5 25,4 24,3

168-258 39,0 38,8 41,3 41,0 38,6 37,7 37,4 36,1 22,9 22,8 23,0 23,0 38,5 36,8 37,7 35,5

259-396 54,8 54,2 59,8 59,7 54,2 53,7 53,0 52,0 31,5 31,3 33,9 33,6 52,1 50,8 52,6 50,7

En la Tabla 14 puede observarse que entre los primeros 1.000 evaluados el algoritmo A2R1 ofrece

los mejores resultados, particularmente para un máximo de 800 nodos y 5.000 arcos. Por sobre

100 seguidos, en promedio hay más de 20 encontrados, suficiente para una recomendación.

Tabla 15: Encontrados en 10.000 para cada algoritmo seleccionado y combinación de parámetros

Cat

ego

ría

Segu

ido

s

Encontrados en 10.000

A2R1 A2R3 A6R3 A9R3

N200 N800 N200 N800 N200 N800 N200 N800

L5000 L20000 L5000 L20000 L5000 L20000 L5000 L20000 L5000 L20000 L5000 L20000 L5000 L20000 L5000 L20000

19-99 15,9 16,0 16,8 16,9 15,8 15,8 16,3 16,1 12,2 12,8 12,2 12,8 17,0 16,8 17,4 17,1

100-167 36,5 36,6 39,0 39,0 36,4 36,4 37,6 36,3 31,5 31,7 31,5 31,7 37,8 36,8 38,4 37,0

168-258 59,7 59,8 62,6 62,2 58,9 58,1 59,3 57,4 47,1 47,2 47,6 47,7 59,0 57,5 60,1 58,0

259-396 90,1 90,4 97,6 97,5 89,4 88,5 91,9 88,7 69,1 69,2 74,7 74,6 88,3 86,0 91,6 89,0

Page 67: Recomendación de usuarios en Twitter basada en topología

66

En la Tabla 14 puede observarse que entre los primeros 1.000 evaluados el algoritmo A2R1 ofrece

los mejores resultados, particularmente para un máximo de 800 nodos y 5.000 arcos. Por sobre

100 seguidos, en promedio hay más de 20 encontrados, suficiente para una recomendación.

Tabla 15 que en las primeras 10.000 posiciones el número de recuperados no dista en demasía del

total, presentado en la Tabla 6. Con dos consecuencias de interés: 1) no se obtiene un gran

beneficio de estudiar por sobre los primeros 10.000 alcanzados, y 2) la cantidad de encontrados es

suficiente para realizar una recomendación; el siguiente paso es mejorar el orden en el cual son

presentados los usuarios encontrados.

Siendo A2R1 el mejor algoritmo, a continuación se estudia su comportamiento de cada evaluación

individualmente.

Ilustración 26: Comparación del número de usuarios recuperados en 10.000 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 a al número de arcos.

Puede observarse en la Ilustración 26 que, por sobre 100 usuarios seguidos, se recuperan al menos

20 usuarios en 10.000, siendo suficiente para generar una recomendación ideal en 20, esto, claro

está, teniendo algoritmos de ranking suficientemente eficientes. Es de interés también que para

los casos estudiados no se ha obtenido un recall en 10.000 de 0%, teniendo al menos un acierto

entre los usuarios ocultos; a primera vista puede resultar negativo tan baja recuperación, pero

dado que el punto de partida son las comunidades implícitas, el algoritmo muestra la capacidad de

alcanzar dichas comunidades en todos los casos. El siguiente paso es determinar que otros

usuarios de las comunidades alcanzadas son de interés; este estudio debe continuarse mediante la

evaluación manual, estando fuera del alcance de los algoritmos de redescubrimiento.

0

20

40

60

80

100

120

140

160

180

200

0 50 100 150 200 250 300 350 400

Enco

ntr

ado

s

(Seguidos - Ocultos)

Encontrados en 10.000 para A2R1 según número seguidos

Ocultos N200-L5000 N800-L20000 tendencia(N200-A5000) tendencia(N800-A20000)

Page 68: Recomendación de usuarios en Twitter basada en topología

67

5.2.3.1.7 Frecuencia

Hasta el momento se ha presentado el recall medio. A continuación se presentan los histogramas

de los algoritmos de mayor interés, mostrando la frecuencia en la que se recuperan usuarios en

cada intervalo. A fin de poder comparar los algoritmos, se normaliza la frecuencia F de un

algoritmo en el intervalo como:

De esta manera, la frecuencia acumulada del algoritmo es igual al recall del mismo.

A continuación en la Tabla 16 se exponen las frecuencias obtenidas para los algoritmos de mayor

interés, indicando en negrita el 25% de mayor frecuencia para cada algoritmo, y resaltados en

naranja las mayores frecuencias según categoría.

Tabla 16: Frecuencia de encontrados para los algoritmos preseleccionados y cada combinación de parámetros

Cat

ego

ría

10

X

Frecuencia normalizada

A2R1 A2R3 A6R3 A9R3

N200 N800 N200 N800 N200 N800 N200 N800

L5000 L20000 L5000 L20000 L5000 L20000 L5000 L20000 L5000 L20000 L5000 L20000 L5000 L20000 L5000 L20000

100.0

0,004 0,004 0,005 0,005 0,005 0,005 0,005 0,005 0,003 0,003 0,003 0,003 0,004 0,004 0,005 0,005

100.5

0,006 0,006 0,008 0,008 0,008 0,008 0,008 0,009 0,004 0,004 0,004 0,004 0,007 0,006 0,007 0,007

101.0

0,018 0,018 0,023 0,023 0,023 0,023 0,023 0,024 0,011 0,011 0,011 0,011 0,017 0,016 0,017 0,016

101.5

0,040 0,039 0,050 0,050 0,049 0,047 0,049 0,048 0,019 0,019 0,019 0,019 0,034 0,033 0,033 0,031

102.0

0,079 0,078 0,085 0,084 0,081 0,079 0,081 0,072 0,038 0,037 0,038 0,038 0,071 0,067 0,067 0,064

102.5

0,103 0,103 0,107 0,108 0,095 0,095 0,095 0,090 0,063 0,063 0,064 0,063 0,111 0,107 0,108 0,102

103.0

0,117 0,116 0,116 0,115 0,104 0,102 0,104 0,095 0,093 0,094 0,098 0,098 0,117 0,115 0,124 0,121

103.5

0,109 0,111 0,113 0,112 0,104 0,103 0,104 0,104 0,113 0,117 0,120 0,122 0,108 0,106 0,117 0,116

104.0

0,092 0,096 0,099 0,101 0,096 0,098 0,096 0,110 0,112 0,116 0,117 0,121 0,098 0,098 0,105 0,104

104.5

0,070 0,080 0,085 0,087 0,074 0,085 0,074 0,105 0,072 0,091 0,087 0,099 0,089 0,091 0,096 0,096

105.0

0,027 0,056 0,066 0,071 0,029 0,062 0,029 0,089 0,004 0,017 0,018 0,038 0,072 0,082 0,085 0,092

105.5

0,000 0,022 0,036 0,050 0,000 0,022 0,000 0,061 0,000 0,001 0,001 0,002 0,004 0,051 0,063 0,073

106.0

0,000 0,000 0,000 0,017 0,000 0,000 0,000 0,018 0,000 0,000 0,000 0,000 0,000 0,001 0,002 0,032

106.5

0,000 0,000 0,000 0,000 0,000 0,000 0,000 0,000 0,000 0,000 0,000 0,000 0,000 0,000 0,000 0,001

Total 0,666 0,728 0,795 0,832 0,666 0,728 0,795 0,832 0,533 0,573 0,580 0,618 0,733 0,779 0,733 0,860

La frecuencia de encontrados indica que porcentaje de los usuarios encontrados fueron hallados en

el rango indicado (a modo de ejemplo, para A2R1 con N200 y L5000, el 10,3% de los usuarios

ocultos fueron encontrados entre las posiciones 102.5 y 103.0, y un total del 40% entre 102 y 104).

Los valores obtenidos indican una distribución exponencial, lo que puede observarse más

claramente en la representación gráfica, presentada en la Ilustración 27. Puede apreciarse como

cada algoritmo posee un intervalo de mayor frecuencia, al observar las posiciones con una escala

exponencial.

Page 69: Recomendación de usuarios en Twitter basada en topología

68

Ilustración 27: Frecuencia de encontrados para los algoritmos principales.

De mayor interés son las frecuencias acumuladas normalizadas, presentadas a continuación en la

Tabla 17, y visualmente los mejores casos en la Ilustración 28.

Tabla 17: Frecuencia acumulada de encontrados para los algoritmos preseleccionados y cada combinación de

parámetros

Cat

ego

ría

10

X

Frecuencia normalizada acumulada

A2R1 A2R3 A6R3 A9R3

N200 N800 N200 N800 N200 N800 N200 N800

L5000 L20000 L5000 L20000 L5000 L20000 L5000 L20000 L5000 L20000 L5000 L20000 L5000 L20000 5000 20000

100.0

0,004 0,004 0,005 0,005 0,005 0,005 0,006 0,005 0,003 0,003 0,003 0,003 0,004 0,004 0,004 0,005

100.5

0,010 0,010 0,013 0,012 0,013 0,012 0,014 0,014 0,007 0,007 0,007 0,007 0,011 0,011 0,011 0,011

101.0

0,028 0,028 0,036 0,036 0,035 0,036 0,038 0,038 0,018 0,018 0,018 0,018 0,028 0,027 0,028 0,027

101.5

0,068 0,067 0,086 0,086 0,084 0,083 0,088 0,086 0,038 0,037 0,037 0,037 0,063 0,060 0,063 0,058

102.0

0,147 0,145 0,171 0,170 0,165 0,161 0,162 0,158 0,075 0,075 0,075 0,074 0,134 0,127 0,134 0,122

102.5

0,250 0,248 0,279 0,278 0,260 0,256 0,255 0,249 0,139 0,137 0,139 0,138 0,245 0,235 0,245 0,224

103.0

0,367 0,364 0,394 0,393 0,364 0,358 0,354 0,344 0,232 0,231 0,237 0,236 0,362 0,350 0,362 0,345

103.5

0,476 0,474 0,508 0,505 0,468 0,461 0,462 0,448 0,345 0,348 0,357 0,358 0,470 0,456 0,470 0,461

104.0

0,568 0,570 0,607 0,606 0,564 0,559 0,576 0,558 0,457 0,463 0,474 0,479 0,568 0,554 0,568 0,565

104.5

0,639 0,650 0,692 0,693 0,637 0,643 0,677 0,663 0,529 0,554 0,561 0,578 0,657 0,645 0,657 0,661

105.0

0,666 0,706 0,759 0,764 0,666 0,706 0,754 0,752 0,533 0,571 0,579 0,616 0,729 0,726 0,729 0,753

105.5

0,666 0,728 0,794 0,814 0,666 0,728 0,794 0,813 0,533 0,573 0,580 0,618 0,733 0,778 0,733 0,827

106.0

0,666 0,728 0,795 0,831 0,666 0,728 0,795 0,831 0,533 0,573 0,580 0,618 0,733 0,779 0,733 0,859

106.5

0,666 0,728 0,795 0,832 0,666 0,728 0,795 0,832 0,533 0,573 0,580 0,618 0,733 0,779 0,733 0,860

0,00

0,02

0,04

0,06

0,08

0,10

0,12

0,14

Fre

cue

nci

a e

nco

ntr

ado

s

Posiciones

Frecuencia encontrados

A2R1 A2R3 A6R3 A9R3

Page 70: Recomendación de usuarios en Twitter basada en topología

69

Ilustración 28: Frecuencia acumulada de encontrados para los algoritmos principales.

Cada uno de los tres algoritmos claves posee el mayor aumento de recall en el área de mayor

frecuencia, como era de esperarse. Esto ofrece una herramienta útil al momento de generar una

función de ranking compuesta.

Puede verificarse lo indicado previamente en la sección 5.2.3.1.3: los algoritmos ofrecen cerca del

50% de su potencial entre los primeros 1.000 recomendados, y próximo al 80% entre los 10.000.

Dada la distribución exponencial, los éxitos son cada vez más infrecuentes. Puede observarse

también que el aumento de fanout implica un aumento de recall, pero se obtienen mejoras

considerables sólo luego de las primeras 10.000 posiciones.

Tiempo 5.2.3.2

Una métrica de interés asociada a la capacidad de recuperación de usuarios es el tiempo necesario

para la ejecución del algoritmo. Dentro de las alternativas planteadas, existen tres categorías

posibles:

1. Algoritmos de dos niveles: basados en el recorrido amigos

2. Algoritmos de tres niveles: basados en el recorrido fuentes

3. Algoritmos combinados: requieren la ejecución de dos algoritmos y la combinación de

resultados

Entre estas alternativas, es de esperar que los algoritmos de dos niveles posean un tiempo de

ejecución marcadamente menor a los de tres niveles, y los algoritmos combinados dependerán

directamente de los recorridos a combinar. A continuación en la Tabla 18 se presentan los tiempos

medios de ejecución para los algoritmos estudiados.

0,0

0,1

0,2

0,3

0,4

0,5

0,6

0,7

0,8

0,9

1,0

Fre

cue

nci

a a

cum

ula

da

en

con

trad

os

Posiciones

Frecuencia acumulada encontrados

A2R1 A6R3 A2R3 A9R3

Page 71: Recomendación de usuarios en Twitter basada en topología

70

Tabla 18: Mediana de los tiempos de ejecución para todos los algoritmos y conjuntos de parámetros

Alg

ori

tmo Tiempo (segundos)

200 nodos 800 nodos

5000 arcos 20000 arcos 5000 arcos 20000 arcos

A1 19,06 22,10 52,47 56,13

A2 24,05 27,13 63,90 72,13

A3 44,09 51,11 117,03 131,27

A4 44,06 50,92 116,90 131,02

A5 4,48 4,69 4,32 4,52

A6 4,48 4,69 4,32 4,52

A7 5,05 5,36 4,98 5,33

A8 5,04 5,35 4,97 5,33

A9 28,88 32,35 68,96 77,66

A10 25,29 28,45 65,24 73,75

Pueden ordenarse entonces los algoritmos en orden creciente según tiempo de ejecución:

1. Algoritmos de dos niveles: A5 y A6

2. Combinando dos algoritmos de dos niveles: A7 y A8

3. Algoritmos de tres niveles: A1 y A2

4. Combinando algoritmos de 2 y tres niveles: A9 y A10

5. Combinando dos algoritmos de tres niveles: 2 y 3

Adicionalmente, el aumento de los parámetros de fanout tiene un impacto mucho mayor en los

algoritmos de tres niveles. A continuación en la Ilustración 29 se expone un gráfico comparativo

con los algoritmos de mayor interés.

Ilustración 29: Tiempo de ejecución en segundos para los principales algoritmos.

4,4

8

4,6

9

4,3

2

4,5

2

24

,05

27

,13

63

,90

72

,13

28

,88

32

,35

68

,96

77

,66

44

,06

50

,92

11

6,9

0

13

1,0

2

44

,09

51

,11

11

7,0

3

13

1,2

7

1

10

100

1000

N200-L5000 N200-L20000 N800-L5000 N800-L20000

Tie

mp

o e

jecu

ció

n (

seg)

Fanout

Tiempo ejecución

A6 A2 A9 A4 A3

Page 72: Recomendación de usuarios en Twitter basada en topología

71

Puede observarse entonces que un mayor recall tiene asociado un mayor tiempo de ejecución.

Precisión 5.2.3.3

En esta sección se estudia el porcentaje de acierto entre las primeras posiciones, descartando

aquellos algoritmos que no ofrecen ningún beneficio, según los estudios realizados en las

secciones anteriores.

Antes de pasar al estudio de la precisión, se estudia primero nDCG, dado que es una métrica que

resume la precisión, y permite reducir el número de algoritmos considerados.

5.2.3.3.1 nDCG en 10

nDCG resume en un valor la precisión obtenida en las primeras n posiciones, dando mayor peso a

los elementos mejor posicionados. En el caso estudiado, se desconocen los pesos relativos de los

elementos de interés, por lo que se han asignado pesos binarios. En este contexto, y suponiendo

existen al menos 10 elementos de interés, cada acierto tiene un peso definido, según la Tabla 19.

Tabla 19: Aporte de cada acierto en nDGC 10

Posición 1 2 3 4 5 6 7 8 9 10

Aporte a nDCG 10

0,220 0,139 0,110 0,095 0,085 0,078 0,073 0,069 0,066 0,064

A continuación en la Tabla 20 se exponen los valores de nDCG10 para los algoritmos estudiados, excluyendo el ranking R2 por poseer menor desempeño, según lo observado en la sección anterior. Puede observarse que para el R1, los mejores resultados se obtienen al combinar A1 y A2 (fuentes

con transiciones binarias y probabilísticas, respectivamente); mientras que para R3 los mejores

resultados se obtienen para el A2. Los algoritmos restantes proveen resultados inferiores; se

destaca el A6 por proveer los mejores resultados entre los algoritmos con recorrido de amigos,

que como se ha visto en al estudiar la velocidad en la sección 5.2.3.2, posee un tiempo de

ejecución mucho menor.

Respecto a los parámetros de fanout, para todos los casos exceptuando A1 el aumento de los

nodos considerados tiene un efecto favorable para nDCG, mientras que el aumento de los arcos

tiene un efecto negativo.

A continuación en la Ilustración 30 se muestra un gráfico comparativo de los algoritmos de mayor

interés, para las distintas configuraciones.

Page 73: Recomendación de usuarios en Twitter basada en topología

72

Tabla 20: Resultados obtenidos para nDGC 10

Alg

ori

tmo

Ran

kin

g NDCG en 10

200 nodos 800 nodos

5000 arcos 20000 arcos 5000 arcos 20000 arcos

A1 R1 0,249 0,268 0,257 0,239

A2 R1 0,265 0,262 0,341 0,338

A3 R1 0,312 0,311 0,368 0,357

A4 R1 0,324 0,316 0,363 0,354

A5 R1 0,108 0,103 0,106 0,103

A6 R1 0,192 0,187 0,189 0,185

A7 R1 0,179 0,178 0,175 0,175

A8 R1 0,179 0,178 0,175 0,175

A9 R1 0,265 0,264 0,309 0,310

A10 R1 0,285 0,283 0,309 0,307

A1 R3 0,249 0,268 0,257 0,239

A2 R3 0,336 0,336 0,374 0,366

A3 R3 0,306 0,310 0,328 0,311

A4 R3 0,306 0,310 0,328 0,311

A5 R3 0,108 0,103 0,106 0,103

A6 R3 0,179 0,178 0,175 0,175

A7 R3 0,147 0,144 0,145 0,142

A8 R3 0,147 0,144 0,145 0,142

A9 R3 0,280 0,270 0,288 0,277

A10 R3 0,269 0,260 0,274 0,264

Ilustración 30: nDCG en 10 para los principales algoritmos

0,1

92

0,1

87

0,1

89

0,1

85

0,2

49

0,2

68

0,2

57

0,2

39

0,2

80

0,2

70

0,2

88

0,2

77

0,3

36

0,3

36

0,3

74

0,3

66

0,3

24

0,3

16

0,3

63

0,3

54

0,2

65

0,2

62

0,3

41

0,3

38

0,00

0,05

0,10

0,15

0,20

0,25

0,30

0,35

0,40

N200-L5000 N200-L20000 N800-L5000 N800-L20000

nD

CG

en

10

Fanout

nDCG en 10

A6R1 A2R1 A9R3 A2R3 A4R1 A3R1

Page 74: Recomendación de usuarios en Twitter basada en topología

73

Puede observarse que los algoritmos A3R1 y A4R1 presentan un comportamiento similar a A2R3,

pero inferior en todas las métricas evaluadas. Esto es comprensible dado que se basan en el

mismo principio de combinación de pesos binarios y probabilísticos, ya sea durante la recolección

(R1) o durante el ordenamiento posterior (R3); A3R1 y A4R1 requieren dos pasadas de recorrido y

por lo tanto duplican el tiempo de ejecución respecto a A2R3, y por esta razón serán excluidos de

los algoritmos finales seleccionados.

5.2.3.3.2 nDCG según número de seguidos

Al igual que el recall, la precisión se ve afectada por el número de usuarios seguidos. El modo más

sencillo de mostrar este hecho es observando los valores para nDCG en 10 agrupando los

resultados en categorías, según el número de seguidos. A continuación en la Tabla 21 se estudian

estos subconjuntos, para los algoritmos seleccionados hasta el momento.

Tabla 21: Resultados obtenidos para nDGC 10 según número de seguidos

NDCG en 10

Segu

ido

s A2R1 A2R3 A6R3 A9R3

N200 N800 N200 N800 N200 N800 N200 N800

L5000 L20000 L5000 L20000 L5000 L20000 L5000 L20000 L5000 L20000 L5000 L20000 L5000 L20000 L5000 L20000

19-99 0,266 0,256 0,271 0,265 0,269 0,258 0,262 0,256 0,165 0,164 0,165 0,164 0,218 0,213 0,216 0,204

100-167 0,262 0,255 0,330 0,323 0,304 0,291 0,307 0,292 0,224 0,216 0,224 0,216 0,281 0,263 0,278 0,260

168-258 0,243 0,241 0,368 0,372 0,365 0,365 0,436 0,435 0,153 0,150 0,150 0,147 0,264 0,259 0,297 0,290

259-396 0,287 0,293 0,394 0,390 0,406 0,426 0,489 0,480 0,224 0,218 0,217 0,213 0,355 0,343 0,359 0,353

Media 0,265 0,262 0,341 0,338 0,336 0,336 0,374 0,366 0,179 0,178 0,175 0,175 0,280 0,270 0,288 0,277

Puede observase que A2R1 y A2R3 poseen mejores resultados para distintas subcategorías, A2R1

para menos de 168 seguidos, mientras que A2R3 ofrece una gran mejora para más de 167

seguidos.

Exceptuando el algoritmo A6R3, el nDCG en 10 aumenta junto con el número de seguidos. Efectos

similares pueden observarse respecto al número de nodos considerados. Siendo A6R3 un

algoritmo de un solo nivel, los límites de nodos o el número de seguidos no tienen un efecto

acumulativo, como en los algoritmos de 3 niveles. Esta puede ser la razón por la que no se observa

una mejora en el desempeño.

En conjunto, esto parecería indicar que cuantos más usuarios de referencia se poseen, aumenta la

información sobre los intereses del usuario inicial, permitiendo mejorar no sólo los usuarios de

interés alcanzados, sino también el ranking asociado.

5.2.3.3.3 Precisión en posiciones

Al estudiar nDCG es posible seleccionar aquellos algoritmos que proveen mejor precisión general.

A continuación en la Tabla 22 se estudian entre los algoritmos seleccionados las precisiones entre

las primeras 1, 5 y 10 posiciones.

Page 75: Recomendación de usuarios en Twitter basada en topología

74

Tabla 22: Resultados obtenidos para la precisión en 1, en 5, y en 10

Alg

ori

tmo

Ran

kin

g

Precisión en 1 Precisión en 5 Precisión en 10

200 nodos 800 nodos 200 nodos 800 nodos 200 nodos 800 nodos

5000 arcos

20000 arcos

5000 arcos

20000 arcos

5000 arcos

20000 arcos

5000 arcos

20000 arcos

5000 arcos

20000 arcos

5000 arcos

20000 arcos

2 1 0,333 0,328 0,407 0,410 0,275 0,273 0,357 0,359 0,250 0,247 0,323 0,324

3 1 0,392 0,380 0,477 0,468 0,328 0,323 0,387 0,379 0,293 0,295 0,340 0,330

4 1 0,380 0,373 0,472 0,466 0,335 0,326 0,382 0,373 0,309 0,301 0,335 0,326

6 1 0,227 0,220 0,205 0,197 0,209 0,205 0,208 0,201 0,179 0,175 0,179 0,173

9 1 0,315 0,317 0,367 0,371 0,291 0,289 0,333 0,338 0,247 0,245 0,290 0,289

2 3 0,405 0,403 0,493 0,471 0,356 0,353 0,397 0,390 0,317 0,318 0,345 0,338

3 3 0,397 0,395 0,445 0,437 0,314 0,318 0,342 0,329 0,286 0,291 0,301 0,282

4 3 0,397 0,395 0,445 0,437 0,314 0,318 0,342 0,329 0,286 0,291 0,301 0,282

6 3 0,242 0,247 0,242 0,236 0,192 0,191 0,190 0,186 0,162 0,161 0,158 0,157

9 3 0,400 0,397 0,437 0,417 0,299 0,287 0,306 0,300 0,252 0,242 0,255 0,246

Puede observarse que los valores de precisión se condicen con los obtenidos para nDCG en 10: A2,

A3 y A4 ofrecen los mejores resultados. R1 se destaca en los A2 y A3, mientras que R3 ofrece el

mejor resultado para A2.

Nuevamente, se ha conservado A6 por su diferencia en velocidad. La precisión alcanzada ronda el

50% de la mejor obtenida, pero es necesario recordar que el tiempo de ejecución es del orden de

la décima parte de A2.

Combinación de algoritmos 5.2.3.4

Llegado este punto, es posible seleccionar los siguientes algoritmos como buenos candidatos; a

continuación en la Tabla 23 se resumen sus características.

Tabla 23: Cuadro comparativo entre los algoritmos seleccionados

ID Recall total Recall entre 100 y 10000

Precisión Velocidad

A2R1 bueno máximo buena buena

A2R3 bueno muy bueno máxima buena

A6R1 pobre pobre pobre máxima

A9R3 máximo muy bueno Buena buena

Entre los casos presentados, es posible combinar los algoritmos para maximizar todas las métricas,

de la siguiente manera:

1. Precisión: Utilizar el algoritmo 2, y evaluar los usuarios usando el ranking 3 normalizado, y

conservar los 100 mejores puntajes

2. Recall parcial: Evaluar los usuarios restantes con el ranking 1, multiplicando el ranking

obtenido por el valor número 100 del ranking 3 (de esta manera, los resultados serán

menores.

Page 76: Recomendación de usuarios en Twitter basada en topología

75

3. Recall total: unir los resultados del algoritmo 2 con los usuarios no redundantes del

algoritmo 3 ( ), o bien unir ambos algoritmos sin combinar sus puntajes.

4. Velocidad: Si bien no maximiza la velocidad, la combinación de los algoritmos 2 y 3 no

genera un overhead mucho mayor sobre el tiempo necesario para el algoritmo 2.

Siguiendo la notación presentada hasta el momento, denominaremos a este algoritmo A9R4.

Selección de parámetros 5.2.3.5

Según las pruebas realizadas hasta el momento, las métricas se ven favorecidas con

configuraciones distintas, con distintos usos, esto es analizado a continuación en la Tabla 24.

Tabla 24: Relación entre métricas y parámetros de fanout

Métrica Nodos

seleccionados Arcos seleccionados Uso

Recall total Directamente proporcional

Directamente proporcional

Pre-filtrado para recuperar el mayor número de usuarios de interés

Recall en 10.000

Depende del algoritmo

Depende del algoritmo, baja influencia

Pre-filtrado para recuperar el 80% de la capacidad del algoritmo

Precisión Directamente proporcional

Inversamente proporcional, baja

influencia

Recomendación directa o bien pre-filtrado para técnicas de gran coste computacional

Velocidad Inversamente proporcional

Inversamente proporcional

Pre-filtrado rápido. Viable si la técnica de evaluación por redescubrimiento posee un alto grado de falsos

negativos.

Conclusión 5.2.3.6

En esta sección se han evaluado los algoritmos presentados y los parámetros disponibles,

mediante su combinación se llegaron a un algoritmo que maximiza las métricas planteadas, sin un

gran overhead temporal. El algoritmo en cuestión es una unión entre recorrido A2 (transiciones

probabilísticas y recorrido tipo fuente) y A6 (transiciones probabilísticas y recorrido tipo amigo),

priorizando los puntajes de A2, utilizando para las primeras 100 posiciones A2R3 (el puntaje se

define como ), y A2R1 para las restantes (utilizando el peso obtenido durante

la recolección). Los usuarios nuevos aportados por R6 son incluidos al final de la lista de

encontrados.

En la evaluación, se determinó que el recall depende directamente del fanout y el número de

seguidos. La precisión muestra resultados similares, solo que se ve afectada por el límite de arcos

impuestos de manera errática; sería de interés estudiar en profundidad este fenómeno, con

rangos mayores para los parámetros estudiados.

La precisión obtenida es suficiente como para proveer un subconjunto de usuarios candidatos para

utilizar otros algoritmos de ranking, con mayor coste computacional. Junto con esto, es necesario

determinar si los resultados obtenidos se mantienen para la recomendación de fuentes de

información.

Page 77: Recomendación de usuarios en Twitter basada en topología

76

Recomendación rápida: el ranking utilizado durante la recolección provee una precisión

suficientemente alta para realizar una recomendación.

recolección para post-proceso: Se observó que el recall de los algoritmos es elevado

(superior al 70% para A9), pero dada la distribución exponencial de los encontrados, es

inviable la evaluación del conjunto total. Sin embargo, es posible recuperar un número

aceptable de usuarios en un conjunto reducido (alrededor del 20% en los primeros 100,

40% en los primeros 1.000 y 60% en los primeros 10.000), sobre el cual realizar otras

técnicas de recomendación, lo que se estudiará en la siguiente sección.

Respecto a la influencia de los parámetros, se ha observado:

Fanout: influencia positiva en el recall y la precisión; el aumento de los arcos considerados

reduce la precisión.

Cantidad usuarios ocultos: una mayor cantidad de usuarios ocultos influencia

positivamente la precisión.

Cantidad de usuarios seguidos: la cantidad de usuarios ocultos, dada la técnica de k-fold,

es un tercio de los usuarios seguidos. Si bien la influencia positiva del número de usuarios

ocultos puede deberse simplemente al aumento de los usuarios esperados, al aumentar la

cantidad de usuarios seguidos se incremente la información disponible, y por lo tanto el

ranking basado en el número de ocurrencias mejore su capacidad de predicción.

5.2.4 Recomendación de fuentes de información

Considerando el criterio heurístico presentado en la sección 3.1.1, donde se espera que una fuente

tenga más seguidos que seguidores, es posible estudiar las métricas sobre el subconjunto de

fuentes de información ocultas. Una representación gráfica, actualizando la utilizada para explicar

la precisión y el recall, puede encontrarse en la Ilustración 31.

Ilustración 31: Diagrama de Venn mostrando los conjuntos utilizados para la recomendación de fuentes de

información, en base a los utilizados para la recomendación inicial.

Page 78: Recomendación de usuarios en Twitter basada en topología

77

Se consideran solo los primeros 10.000 alcanzados dado que ya se ha establecido que es posible

recuperar gran parte de los usuarios ocultos en este intervalo, y obtener información de cada uno

requiere consultas adicionales (particularmente al interactuar con el API de Twitter).

Seleccionando un algoritmo de preselección, según las opciones y parámetros presentados en las

secciones 5.2.3.4 y 5.2.3.5 respectivamente, es posible estudiar el rendimiento distintos

algoritmos de ranking con mayor coste computacional. Para esto, será utilizado el algoritmo A9R4,

presentado en la sección 5.2.3.4, para generar un ranking inicial para luego utilizar una de las

siguientes alternativas:

A9R4: Puntaje inicial de A9R4 (control)

A9R5: Índice de fuente de información (IS), presentado en la sección 3.3.2

A9R6: Hannon S6, presentado en la sección 3.3.3

Habiendo realizado múltiples pruebas, es posible establecer como parámetros ideales, entre los

estudiados, un máximo de 800 nodos y 5.000 arcos. A continuación, se estudian las métricas

asociadas a los tres algoritmos de ranking planteados para la recomendación de fuentes de

información.

Recall 5.2.4.1

Al partir de la recolección de un único algoritmo, el recall total será el mismo para todos los

rankings aplicados, por lo que se procede a estudiar el recall en posiciones directamente.

5.2.4.1.1 Recall en posiciones

Se ha observado que un recall elevado es importante no solo por proveer un mayor número de

resultados válidos, sino por influenciar en la precisión. Habiendo realizado el mismo estudio

previamente, y siendo innecesaria la evaluación de parámetros, se presentan en la Tabla 25 el

recall en posiciones dividiendo el conjunto total en subconjuntos, según el número de seguidos.

Tabla 25: Recall en k en la recomendación de fuentes de información

Categoría Recall en 10 Recall en 100 Recall en 1000

Recall en 10000

A9R4 A9R5 A9R6 A9R4 A9R5 A9R6 A9R4 A9R5 A9R6 Todos

19-99 0,123 0,002 0,037 0,313 0,025 0,092 0,518 0,263 0,273 0,572

100-167 0,088 0,003 0,009 0,297 0,026 0,035 0,509 0,296 0,263 0,568

168-258 0,094 0,003 0,006 0,368 0,027 0,026 0,627 0,326 0,301 0,694

259-396 0,081 0,003 0,004 0,364 0,024 0,023 0,661 0,350 0,275 0,738

Media 0,096 0,003 0,013 0,336 0,026 0,043 0,580 0,309 0,278 0,644

Puede observarse que el recall obtenido por el algoritmo de A9R4 (recomendación topológica)

ofrece resultados muy superiores, en las pruebas realizadas, obteniendo, como mínimo, el doble

de recall. El algoritmo A9R6 (Hannon S6) se encuentra en segundo puesto, por tratarse también de

un estudio de las interacciones entre usuarios. A9R5 (basado en IS) posee el peor desempeño en

Page 79: Recomendación de usuarios en Twitter basada en topología

78

las primeras 100 posiciones, al evaluar únicamente el carácter absoluto de “fuente de

información”, sin considerar las relaciones o intereses del usuario.

El recall obtenido es mucho superior al de las alternativas, por lo que su representación gráfica no

aporta mayores beneficios. En su lugar, se estudiará únicamente la relación del recall en cada una

de las subcategorías, junto con la media. Una comparación visual se presenta en la Ilustración 32.

Ilustración 32: Recall de A9R4 en la recomendación de fuentes de información, según seguidos.

Puede observarse que, a partir del recall en 100, a mayor número de seguidos mayor recall; este

fenómeno no fue observado en la recomendación de usuarios de la sección 5.2.3.1.4. Esto

indicaría que a mayor número de seguidos el algoritmo tiende a priorizar fuentes de información

sobre los usuarios restantes.

5.2.4.1.2 Encontrados

Antes de pasar al estudio de la precisión, se estudian en la Tabla 26 el número promedio de

recuperados, a fin de poner en perspectiva los valores de recall y su relación con la precisión.

Tabla 26: Encontrados en k en la recomendación de fuentes de información

Categoría Seguidos

Encontrados en 10 Encontrados en 100 Encontrados en 1000 Recall en

10000

A9R4 A9R5 A9R6 A9R4 A9R5 A9R6 A9R4 A9R5 A9R6 Todos

19-99 1,22 0,02 0,13 2,99 0,27 0,45 4,65 2,60 2,08 5,15

100-167 2,15 0,06 0,15 7,70 0,65 0,77 13,15 7,54 6,29 14,54

168-258 3,94 0,15 0,23 15,70 1,14 1,18 27,30 14,18 13,45 30,44

259-396 5,86 0,20 0,28 26,06 1,76 1,64 46,78 24,64 19,56 52,15

Media 3,31 0,11 0,20 13,18 0,96 1,01 23,09 12,31 10,36 25,69

Antes de continuar, se estudia una posible razón de este suceso: en la Ilustración 33 se presenta la

relación entre el número de usuarios ocultos y el número de no encontrados, según el número de

0,1

14

0,3

00

0,5

06

0,5

64

0,0

88

0,3

07

0,5

23

0,5

78

0,0

96

0,3

36

0,5

80

0,6

44

0,0

94

0,3

67

0,6

26

0,6

96

0,0

84

0,3

68

0,6

63

0,7

39

0,0

0,1

0,2

0,3

0,4

0,5

0,6

0,7

0,8

10 100 1.000 10.000

Re

call

Recomendados

Recall A9R4 según seguidos

19-99 100-167 Media 168-258 259-396

Page 80: Recomendación de usuarios en Twitter basada en topología

79

seguidos. Puede observarse claramente que, para la mayoría de las recomendaciones, el número

de usuarios no encontrados es menor a 20, independientemente del número de usuarios ocultos.

Sean estos usuarios inalcanzables por la técnica presentada, no representan un porcentaje del

conjunto objetivo, sino que depende de otros factores no determinados.

El recuento de fuentes ocultas es menor a la evaluación de recomendación general. Así, el número

de fuentes disponibles para la primera categoría (menos de 100 seguidos) es insuficiente para

generar una recomendación, lo que posee un efecto negativo en la precisión.

Ilustración 33: Usuarios ocultos vs no encontrados para el algoritmo A9R4 en la recomendación de fuentes de

información.

5.2.4.1.3 Frecuencia

Si se estudia la frecuencia de encontrados por los tres algoritmos de ranking presentados, es

posible prever los resultados que se obtendrán al estudiar la precisión. En la Tabla 27 se presentan

en conjunto la frecuencia y la frecuencia acumulada para los algoritmos estudiados, resaltando el

25% de mayores resultados para cada algoritmo.

0

10

20

30

40

50

60

70

80

90

100

0 50 100 150 200 250 300 350 400

Re

cue

nto

Seguidos

A9R4 - No encontrados vs ocultos

ocultos No encontrados

Page 81: Recomendación de usuarios en Twitter basada en topología

80

Tabla 27: Frecuencia de encontrados en la recomendación de fuentes de información

Categoría 10

X

Frecuencia Frecuencia acumulada

A9R4 A9R5 A9R6 5000 20000 5000

100.0

0,013 0,001 0,001 0,013 0,001 0,001

100.5

0,021 0,001 0,001 0,034 0,002 0,002

101.0

0,054 0,001 0,003 0,088 0,003 0,005

101.5

0,102 0,004 0,006 0,191 0,007 0,012

102.0

0,161 0,019 0,015 0,352 0,026 0,027

102.5

0,150 0,078 0,044 0,501 0,104 0,071

103.0

0,115 0,225 0,206 0,616 0,328 0,277

103.5

0,069 0,350 0,406 0,685 0,679 0,682

104.0

0,000 0,007 0,003 0,686 0,686 0,686

Total 0,686 0,686 0,686 0,686 0,686 0,686

Puede observarse que el ranking original presentado provee mejor recall en todas las posiciones.

Ambas alternativas fallan en detectar por si mismas usuarios de interés entre los primeros 10.000

recomendados, acumulándolos en consecuencia al final de la lista. Esto puede apreciarse al

visualizar la frecuencia en la Ilustración 34 y la frecuencia acumulada en la Ilustración 35.

Ilustración 34: Frecuencia de encontrados para los algoritmos de ranking en la recomendación de fuentes de

información

0,00

0,05

0,10

0,15

0,20

0,25

0,30

0,35

0,40

0,45

10

^0.0

10

^0.5

10

^1.0

10

^1.5

10

^2.0

10

^2.5

10

^3.0

10

^3.5

10

^4.0

Fre

cue

nci

a e

nco

ntr

ado

s

Posiciones

Frecuencia Fuentes encontradas

A9R4 A9R5 A9R6

Page 82: Recomendación de usuarios en Twitter basada en topología

81

Ilustración 35: Frecuencia acumulada de encontrados para los algoritmos de ranking en la recomendación de fuentes

de información

Precisión 5.2.4.2

5.2.4.2.1 nDCG en 10

Nuevamente, se introduce la precisión utilizando nDCG para generar un valor resumen. Puede

observarse en la Tabla 28 que el puntaje de nDCG para A9R4 es superior a las alternativas

estudiadas. Por su parte, A9R6 ofrece mejores resultados que A9R5 para las primeras categorías,

pero con suficientes seguidos (y, en consecuencia, suficientes fuentes de información ocultas),

alcanzan un rendimiento similar.

Tabla 28: nDCG en 10 en la recomendación de fuentes de información

Categoría nDCG en 10

A9R4 A9R5 A9R6

19-99 0,158 0,003 0,016

100-167 0,250 0,012 0,020

168-258 0,426 0,022 0,028

259-396 0,608 0,034 0,031

Media 0,362 0,018 0,024

Por completitud, se presenta la representación gráfica de nDCG en 10 para A9R4 en la Ilustración

36.

0,0

0,1

0,2

0,3

0,4

0,5

0,6

0,7

0,8

10

^0.0

10

^0.5

10

^1.0

10

^1.5

10

^2.0

10

^2.5

10

^3.0

10

^3.5

10

^4.0

Fre

cue

nci

a a

cum

ula

da

en

con

trad

os

Posiciones

Frecuencia acumulada Fuentes encontradas

A9R4 A9R5 A9R6

Page 83: Recomendación de usuarios en Twitter basada en topología

82

Ilustración 36: nDCG en 10 para A9R4 en la recomendación de fuentes de información.

5.2.4.2.2 Precisión en posiciones

Llegado este punto, es posible predecir la precisión de los algoritmos comparados, indicada en la

Tabla 29.

Tabla 29: Precisión en k en la recomendación de fuentes de información

Categoría 1 5 10 15 20 100

A9R4 A9R5 A9R6 A9R4 A9R5 A9R6 A9R4 A9R5 A9R6 A9R4 A9R5 A9R6 A9R4 A9R5 A9R6 A9R4 A9R5 A9R6

19-99 0,329 0,007 0,021 0,169 0,003 0,022 0,122 0,002 0,013 0,098 0,002 0,012 0,083 0,001 0,010 0,030 0,003 0,005

100-167 0,391 0,053 0,046 0,281 0,011 0,020 0,215 0,006 0,015 0,184 0,004 0,016 0,168 0,004 0,015 0,077 0,006 0,008

168-258 0,552 0,056 0,049 0,439 0,024 0,029 0,394 0,015 0,023 0,360 0,011 0,020 0,326 0,010 0,017 0,157 0,011 0,012

259-396 0,689 0,095 0,054 0,626 0,036 0,027 0,586 0,020 0,028 0,547 0,015 0,025 0,509 0,013 0,024 0,261 0,018 0,016

Media 0,492 0,053 0,043 0,380 0,018 0,025 0,330 0,011 0,020 0,298 0,008 0,018 0,272 0,007 0,017 0,132 0,010 0,010

Los resultados obtenidos son similares a los del Recall: el algoritmo A9R4 ofrece valores

sustancialmente mayores, sin necesitar posteriores evaluaciones. En cuanto a las alternativas

restantes, la diferencia es menos marcada que al estudiar el recall. Al comparar A9R4 con las

alternativas, se puede observar que no se obtendrían mayores beneficios en la comparación

gráfica.

A continuación en la Ilustración 37 se presenta una gráfica de la precisión obtenida para A9R4,

buscando como la precisión depende en gran medida de los usuarios seguidos, permitiendo

alcanzar valores semejantes al procesamiento de contenido [8]; esta afirmación se basa en

comparación de datos heterogéneos, por lo que sería de interés verificarla experimentalmente.

0,1

58

0,2

50

0,3

62

0,4

26

0,6

08

0,0

0,1

0,2

0,3

0,4

0,5

0,6

0,7n

DC

G

nDCG en 10 para A9R4 según seguidos

19-99 100-167 Media 168-258 259-396

Page 84: Recomendación de usuarios en Twitter basada en topología

83

Ilustración 37: Precisión en k de A9R4 en la recomendación de fuentes de información.

Conclusión 5.2.4.3

Se ha estudiado el algoritmo de unión de recorridos presentado por ser el que provee mejor recall,

utilizando tres funciones de ranking: scoring topológico combinado, índice de fuente de

información (IS) y filtrado colaborativo según Hannon (S6).

El algoritmo presentado parece destacarse en la recomendación de fuentes de información en el

ordenamiento de los 10.000 primeros encontrados, y su precisión y recall depende en gran

medida del número de usuarios seguidos.

5.2.5 Recomendación de amigos

Los rankings presentados hasta el momento se basan en la presencia topográfica de los usuarios,

lo que limita su capacidad al momento de recomendar de manera precisa usuarios “amigos”. Por

completitud, a continuación se presentan los resultados correspondientes a los algoritmos de

ranking presentados, aplicados a la recomendación de amigos (según la clasificación planteada,

este grupo contiene todos aquellos usuarios que no son fuentes de información).

Recall 5.2.5.1

Al partir de la recolección de un único algoritmo, el recall total será el mismo para todos los

rankings aplicados. Se ha observado al caracterizar los algoritmos que es eficiente estudiar el recall

entre los primeros 10.000 usuarios recuperados.

5.2.5.1.1 Recall en posiciones

Al comparar los algoritmos en la Tabla 31, los resultados son similares a la recomendación de fuentes de información: A9R4 es

superior a A9R6 y A9R5, siendo este último el que provee peores resultados. El recall no mejora al

aumentar el número de seguidos, por el contrario, disminuye. Esto sugiere que A9R4 puede ser

utilizado para realizar recomendaciones a usuarios nuevos, y, una vez incrementado el número de

usuarios seguidos, continuar con la recomendación de fuentes de información.

0,3

29

0,1

69

0,1

22

0,0

98

0,0

83

0,0

30

0,3

91

0,2

81

0,2

15

0,1

84

0,1

68

0,0

77

0,4

92

0,3

80

0,3

30

0,2

98

0,2

72

0,1

32

0,5

52

0,4

39

0,3

94

0,3

60

0,3

26

0,1

57

0,6

89

0,6

26

0,5

86

0,5

47

0,5

09

0,2

61

0,0

0,1

0,2

0,3

0,4

0,5

0,6

0,7

1 5 10 15 20 100

Pre

cisi

ón

Recomendados

Precisión A9R4 según seguidos

19-99 100-167 Media 168-258 259-396

Page 85: Recomendación de usuarios en Twitter basada en topología

84

Tabla 30: Recall en k en la recomendación de amigos

Categoría Recall en 10 Recall en 100 Recall en 1000 Recall en 10000

A9R4 A9R5 A9R6 A9R4 A9R5 A9R6 A9R4 A9R5 A9R6 Todos

19-99 0,118 0,001 0,031 0,291 0,006 0,089 0,439 0,115 0,197 0,557

100-167 0,056 0,002 0,017 0,199 0,008 0,078 0,382 0,097 0,225 0,548

168-258 0,035 0,001 0,016 0,151 0,010 0,063 0,352 0,093 0,198 0,560

259-396 0,028 0,001 0,008 0,116 0,007 0,043 0,320 0,082 0,171 0,549

Media 0,0587 0,001 0,018 0,187 0,008 0,068 0,372 0,097 0,197 0,554

La progresión en posiciones para A9R4 puede observarse en la Ilustración 38.

Ilustración 38: Recall en k de A9R4 en la recomendación de amigos

5.2.5.1.2 Frecuencia

Si se estudia la frecuencia de encontrados por los tres algoritmos de ranking presentados, es

posible prever los resultados que se obtendrán al estudiar la precisión. Los resultados obtenidos se

presentan en la Tabla 31, junto con la representación gráfica en la Ilustración 39 (frecuencia) y la

Ilustración 40 (frecuencia acumulada).

Nuevamente, el ranking original presentado provee mejor recall en todas las posiciones. El

algoritmo de ranking de Hannon S6 ofrece mejoras sustanciales en comparación con la

recomendación de información, pero no logra igualar a la recomendación topológica. Como se

encuentra fuera del alcance de este trabajo, no se realizarán mayores experimentos al respecto,

pero plantea una posible línea de trabajo a futuro, la generación de una función de ranking

combinando Hannon S6 y el ranking obtenido mediante topología.

0,1

18

0,2

91

0,4

39

0,5

57

0,0

56

0,1

99

0,3

82

0,5

48

0,0

59

0,1

87

0,3

72

0,5

54

0,0

35

0,1

51

0,3

52

0,5

60

0,0

28

0,1

16

0,3

20

0,5

49

0,0

0,1

0,2

0,3

0,4

0,5

0,6

10 100 1.000 10.000

Re

call

Recomendados

Recall A9R4 según seguidos

19-99 100-167 Media 168-258 259-396

Page 86: Recomendación de usuarios en Twitter basada en topología

85

Tabla 31: Frecuencia de encontrados en la recomendación de amigos

Categoría 10

X

Frecuencia Frecuencia acumulada

A9R4 A9R5 A9R6 5000 20000 5000

100.0

0,007 0,001 0,001 0,007 0,001 0,001

100.5

0,011 0,000 0,003 0,017 0,001 0,004

101.0

0,021 0,000 0,009 0,038 0,001 0,013

101.5

0,036 0,001 0,017 0,075 0,003 0,030

102.0

0,072 0,005 0,028 0,146 0,008 0,058

102.5

0,090 0,021 0,049 0,237 0,029 0,107

103.0

0,107 0,059 0,086 0,344 0,088 0,193

103.5

0,123 0,146 0,163 0,467 0,234 0,355

104.0

0,086 0,318 0,197 0,552 0,552 0,552

Total 0,552 0,552 0,552 0,552 0,552 0,552

Ilustración 39: Frecuencia de encontrados para los algoritmos de ranking en la recomendación de amigos

0,00

0,05

0,10

0,15

0,20

0,25

0,30

0,35

10

^0.0

10

^0.5

10

^1.0

10

^1.5

10

^2.0

10

^2.5

10

^3.0

10

^3.5

10

^4.0

Fre

cue

nci

a e

nco

ntr

ado

s

Posiciones

Frecuencia Amigos encontrados

A9R4 A9R5 A9R6

Page 87: Recomendación de usuarios en Twitter basada en topología

86

Ilustración 40: Frecuencia acumulada de encontrados para los algoritmos de ranking en la recomendación de amigos

Precisión 5.2.5.2

5.2.5.2.1 nDCG en 10

A continuación en la Tabla 32 se exponen los resultados obtenidos.

Tabla 32: nDCG en 10 en la recomendación de amigos según seguidos

Categoría nDCG en 10

A9R4 A9R5 A9R6

19-99 0,185 0,002 0,048

100-167 0,239 0,009 0,064

168-258 0,225 0,008 0,089

259-396 0,285 0,020 0,080

Media 0,234 0,010 0,071

Puede observarse que, en comparación con la recomendación de fuentes, los algoritmos A9R4 y

A9R5 poseen peor rendimiento; en cambio A9R6 posee una notable mejora. Aun ante esto, A9R4

parece ofrecer la mejor alternativa para la recomendación de amigos. La representación gráfica de

nDCG en 10 para las distintas categorías se presenta a continuación en la Ilustración 41.

0,0

0,1

0,2

0,3

0,4

0,5

0,6

10

^0.0

10

^0.5

10

^1.0

10

^1.5

10

^2.0

10

^2.5

10

^3.0

10

^3.5

10

^4.0Fr

ecu

en

cia

acu

mu

lad

a e

nco

ntr

ado

s

Posiciones

Frecuencia acumulada Amigos encontrados

A9R4 A9R5 A9R6

Page 88: Recomendación de usuarios en Twitter basada en topología

87

Ilustración 41: nDCG en 10 de A9R4 para la recomendación de amigos.

5.2.5.2.2 Precisión en posiciones

Por último, solo resta estudiar la precisión de los algoritmos de ranking para la recomendación de amigos. A continuación en la Tabla 33 se listan los resultados obtenidos:

Tabla 33: Precisión en k en la recomendación de amigos

Categoría Seguidos

Precisión en 1 Precisión en 5 Precisión en 10 Precisión en 15 Precisión en 20 Precisión en 100

A9R4 A9R5 A9R6 A9R4 A9R5 A9R6 A9R4 A9R5 A9R6 A9R4 A9R5 A9R6 A9R4 A9R5 A9R6 A9R4 A9R5 A9R6

19-99 0,338 0,007 0,041 0,211 0,003 0,059 0,147 0,001 0,047 0,114 0,001 0,044 0,095 0,001 0,037 0,039 0,001 0,013

100-167 0,343 0,028 0,056 0,270 0,010 0,074 0,210 0,006 0,061 0,168 0,005 0,057 0,153 0,003 0,053 0,075 0,003 0,029

168-258 0,304 0,020 0,095 0,247 0,008 0,097 0,201 0,005 0,089 0,178 0,006 0,078 0,161 0,005 0,069 0,086 0,006 0,036

259-396 0,406 0,056 0,088 0,329 0,021 0,081 0,251 0,013 0,080 0,213 0,012 0,075 0,188 0,011 0,071 0,107 0,007 0,042

Media 0,348 0,030 0,070 0,265 0,011 0,078 0,203 0,007 0,069 0,169 0,006 0,064 0,151 0,005 0,058 0,078 0,004 0,030

0,1

85

0,2

39

0,2

34

0,2

25

0,2

85

0,0

0,1

0,1

0,2

0,2

0,3

0,3

nD

CG

en

10

nDCG en 10 A9R4 según seguidos

19-99 100-167 Media 168-258 259-396

Page 89: Recomendación de usuarios en Twitter basada en topología

88

Ilustración 42: Precisión en k de A9R4 para la recomendación de amigos.

Conclusión 5.2.5.3

Se ha estudiado, por completitud, el efecto de los algoritmos de ranking utilizados para la

recomendación de fuentes de información. Los resultados obtenidos indican que, si bien el ranking

topológico planteado (A9R4) provee un menor desempeño, es superior a las alternativas.

El algoritmo A9R6, basado en Hannon(S6) muestra una mejora sustancial, y sería de interés

estudiar la combinación de su función de scoring con la presentada en este trabajo, en busca de

mejorar la precisión final.

5.3 Evaluación Subjetiva Hasta el momento se ha estudiado la viabilidad de los algoritmos presentados mediante la técnica

de redescubrimiento. En esta etapa, se busca determinar si los usuarios nuevos recomendados (es

decir, aquellos no incluidos entre los seguidos) son de interés para el usuario inicial.

Dado que la recomendación manual depende de usuarios reales e interacción con el API de

Twitter, las pruebas a realizar en esta sección serán reducidas, en comparación con la evaluación

automática.

5.3.1 Experimento

Se les solicitó a un grupo de 15 candidatos, cuyos detalles se presentan en la

Tabla 34, evalúen un documento con distintas recomendaciones8. El documento lista, en orden: 1)

fuentes de información y 2) usuarios similares o “amigos”, ambas recomendaciones generadas con

el algoritmo A9R4 y la clasificación presentada en la sección 3.1.1; 3) adicionalmente, se solicitó a

8 El documento fue generado manualmente a partir de los resultados obtenidos en la aplicación web. Se

realizaron las recomendaciones de modo serial, probando la aplicación web pero evitando a los voluntarios la demora impuesta por las cuotas de consultas de Twitter.

0,3

38

0,2

11

0,1

47

0,1

14

0,0

95

0,0

39

0,3

43

0,2

70

0,2

10

0,1

68

0,1

53

0,0

75

0,3

48

0,2

65

0,2

03

0,1

69

0,1

51

0,0

78

0,3

04

0,2

47

0,2

01

0,1

78

0,1

61

0,0

86

0,4

06

0,3

29

0,2

51

0,2

13

0,1

88

0,1

07

0,0

0,1

0,1

0,2

0,2

0,3

0,3

0,4

0,4

0,5

1 5 10 15 20 100

Pre

cisi

ón

Recomendados

Precisión A9R4 según seguidos

19-99 100-167 Media 168-258 259-396

Page 90: Recomendación de usuarios en Twitter basada en topología

89

los usuarios evalúen la recomendación provista por WTF de Twitter9, a fin de poseer un referente

de los resultados obtenidos.

Tabla 34: Voluntarios para la evaluación subjetiva

usuario Datos personales Datos de cuenta

Sexo Edad Ocupación Creada Seguidos Seguidores Tweets

@PiccadillySt M 29 Doctorando

química 10/2010 60 16 191

@LePaisanus M 26 Ingeniero Sistemas

01/2011 75 61 41

@polakete M 26 Estudiante Sistemas

01/2012 32 25 60

@elmeroale M 26 Estudiante

Biología 07/2011 30 18 141

@Anto_Stark F 29 Chef N / I 385 70 2.440

@LambdaP M 23 Ingeniero 08/2009 217 94 1.746

@luismante M 26 Doctorando

Sistemas 01/2011 150 121 2.907

@ignaciorlando M 26 Doctorando

Sistemas 12/2010 237 242 6.329

@gmuloc M 23 Ingeniero N / I 65 13 14

@PyraahYuya F 23 Ingeniera 06/2010 33 21 2

@Simposio_Griego M 18 Estudiante Psicología

N / I 25 9 159

@emmanueliarussi M 26 Doctorando

Sistemas 05/2010 270 245 3.485

@VeroChatain F 49 Ingeniera 11/2010 53 15 64

@Erkhaly F 23 N / I 01/2011 95 162 4.813

@ndrezet M 23 Ingeniero N / I 75 18 32

N / I: No indicado

Se solicitó a los voluntarios asignen un puntaje a cada uno de los 20 primeros de cada

recomendación, seleccionando uno entre los siguientes valores posibles:

No interesa (0): el usuario recomendado no es de interés

Parcialmente interesante (1) : el usuario recomendado es parcialmente interesante, y

quizás lo siga

Interesante (2): el usuario recomendado es muy interesante, y voy a seguirlo

Protegido (P): el usuario recomendado está protegido, y no es posible evaluarlo,

equivalente a un puntaje de cero.

Puesto que se la recomendación provista por Twitter incluye tanto Fuentes de Información como

amigos, se presentarán las métricas considerando solo una de las clases, o bien ambas. No se

9 Para acceder a WTF de Twitter: https://twitter.com/who_to_follow/suggestions

Page 91: Recomendación de usuarios en Twitter basada en topología

90

presenta A9R4 general a fin de comparar con WTF dado que, dado la función de ranking, coincide

en casi todos los casos con A9R4 fuentes. En conclusión, se estudian 5 alternativas:

A9R4 fuentes: seleccionando las fuentes de la recomendación A9R4

A9R4 amigos: seleccionando los amigos de la recomendación A9R4

WTF fuentes: considerando el puntaje subjetivo en la recomendación de los primeros 20

WTF amigos: considerando el puntaje subjetivo de similitud entre los primeros 20

WTF: considerando el máximo puntaje en cada posición, ya sea fuente o amigo

A continuación se estudian los resultados obtenidos.

5.3.2 Precisión en k posiciones

En busca de comprender como se presentan los resultados obtenidos por WTF, se ha decidido por

comenzar el estudio evaluando la precisión, en lugar de nDCG.

A continuación se presentan en la Ilustración 43 los resultados obtenidos. Puede observarse como

WTF tiende a generar recomendaciones hibridas (con tanto fuentes de información como amigos

en una misma recomendación general), por lo que no es posible comparar únicamente A9R4

fuentes contra el algoritmo WTF. Comparando la precisión obtenida, la recomendación de fuentes

ofrece mejores resultados que WTF general.

Ilustración 43: Precisión en k de A9R4 y WTF en la evaluación subjetiva.

0,2

67

0,4

00

0,3

87

0,3

67

0,4

67

0,3

87

0,3

80

0,3

47

0,4

67

0,5

60

0,5

27

0,5

03

0,7

33

0,5

07

0,4

67

0,4

57

0,5

33

0,5

60

0,5

67

0,5

30

-

0,10

0,20

0,30

0,40

0,50

0,60

0,70

0,80

1 5 10 20

Pre

cisi

ón

Posiciones

Precisión - Evaluación subjetiva

WTF fuentes WTF amigos WTF A9R4 amigos A9R4 fuentes

Page 92: Recomendación de usuarios en Twitter basada en topología

91

Sorprendentemente, la precisión en 1 para la recomendación de amigos de A9R4 es

particularmente elevada, distinto de lo previsto; de igual manera, la recomendación de fuentes

para el mismo algoritmo no posee una caída acelerada al aumentar el número de posiciones

consideradas. Esto puede deberse a que el redescubrimiento es incapaz de detectar usuarios de

interés nuevos, los que pueden ser muchos más que un 50% de los actualmente seguidos (el

número de usuarios de interés para 3-fold).

5.3.3 nDCG en posiciones

Disponiendo de usuarios reales para la evaluación subjetiva, es posible sacar provecho de nDCG,

generando un ranking más elaborado de los resultados obtenidos.

A fin de normalizar el puntaje obtenido, se establece IDCG para el caso donde cada uno de los 20

usuarios recomendados recibiría un 2. En este contexto, es de mayor interés evaluar nDCG en

todas las posiciones que se evalúa la precisión, a diferencia de en la evaluación automática que

solo proveía un valor de resumen.

Los resultados obtenidos para nDCG, presentados en la Ilustración 44, confirman A9R4 fuentes

como la alternativa con mejor recuento y calidad de resultados. La recomendación de A9R4

amigos es la que más varía de la precisión a nDCG, por proveer un gran conjunto de usuarios

candidatos, pero de poco interés. Adicionalmente, la recomendación generada alcanza un número

importante de usuarios protegidos, afectando particularmente al algoritmo A9R4 amigos.

Ilustración 44: nDCG en k de A9R4 y WTF en la evaluación subjetiva.

0,1

90

0,1

94

0,1

61

0,2

11

0,2

38

0,1

50

0,1

30

0,1

67

0,2

38

0,2

49

0,2

07

0,2

73

0,3

33

0,2

47

0,1

82

0,2

49

0,2

86

0,2

45

0,2

17

0,2

92

-

0,05

0,10

0,15

0,20

0,25

0,30

0,35

1 5 10 20

nD

CG

Posiciones

nDCG- Evaluación subjetiva

WTF fuentes WTF amigos WTF A9R4 amigos A9R4 fuentes

Page 93: Recomendación de usuarios en Twitter basada en topología

92

La comparación directa de los resultados con WTF no permite evaluarlo contra A9R4 fuentes, dado

que claramente WTF busca ofrecer un resultado hibrido combinando fuentes y amigos (y

adicionalmente usuarios que pueden cumplir ambos roles). Si se utiliza WTF como referencia de

los valores de calidad esperados, un usuario consultando la recomendación presentada por A9R4

obtendría un grado de éxito similar o superior al provisto por Twitter, con un mayor foco en las

fuentes de información.

5.4 Conclusión En este capítulo se estudió experimentalmente el algoritmo general presentado, comenzando por

la evaluación automática a fin de seleccionar que parámetros son los que favorecen en promedio

las métricas estudiadas (recall, precisión y nDCG).

Una vez seleccionado el mejor algoritmo, basado en el recorrido SALSA y la asignación de pesos

hibrida, se prosiguió con comparar el ranking obtenido durante la recolección con algoritmos de

ranking topológicos, mostrándose superior en todos los casos.

Finalmente, se realizó la evaluación subjetiva del algoritmo presentado, utilizando usuarios reales

y comparando con el recomendador oficial provisto por Twitter. Si bien no es posible generar una

conclusión definitiva, dado el tamaño de la muestra estudiada y la finalidad que presenta WTF,

resultados iniciales indican que el algoritmo presentado provee resultados con un nivel de

aceptación similar (o superior) a WTF, y centrado en la recomendación de fuentes de información.

Page 94: Recomendación de usuarios en Twitter basada en topología

93

Capí tulo 6: Ínterfaz Web

Page 95: Recomendación de usuarios en Twitter basada en topología

94

6 Interfaz web Una vez implementado el algoritmo y comprobada su utilidad, se procede a implementar una

interfaz web para permitir su utilización. Estando el algoritmo implementado en java, y

dependiendo de servicios externos y de base de datos, se optó por utilizar el framework Spring,

con JSF 2.0 para las vistas web e Hibernate para la persistencia. En este capítulo se describen las

características de cada uno de los componentes utilizados, y como se unen para formar la

arquitectura final.

Antes de describir en detalle la arquitectura, es necesario explicar que, debido a los cambios

realizados en los servicios provistos por Twitter, la aplicación final no podrá publicarse.

6.1 Inviabilidad practica El proyecto original dependía en gran medida de los webservices originales provistos por Twitter,

buscando un algoritmo que trabaje en las condiciones limitadas de TwitterAPI. Durante el

desarrollo, se encontraron múltiples modificaciones, entre las más importantes se encuentran:

Requerimiento de la autentificación10 para la utilización de hasta 380 consultas por hora

Eliminación del whitelist11, que ofrecía 20.000 consultas por hora a usuarios habilitados

Modificación de los términos de uso prohibiendo la generación de datasets con

información completa12

Cambio de la interfaz de los servicios, cambiando el ID de usuario de integer a long, por

estar próximos a alcanzar el máximo valor posible

Limites individuales para cada categoría de consulta13, con 15 consultas para seguidores o

seguidos cada 15 minutos

El crecimiento constante de la red social dio lugar a la restricción progresiva de los servicios

provistos inicialmente por Twitter. Actualmente, Twitter sugiere alternativas comerciales14 para

acceder a la información que se genera diariamente.

Como se ha comentado previamente, llegado el momento Twitter incluyó su propio algoritmo de

recomendación de usuarios, un servicio del que carecía cuando otras redes sociales ya poseían;

una posible razón es que haya sido medida para reducir las aplicaciones con un gran consumo de

los servicios más costosos. Puede verse en las últimas limitaciones que las consultas de arcos se

encuentran en la categoría más restrictiva, por devolver hasta 15 consultas cada 15 minutos, con

páginas de hasta 5.000 ids; en este contexto, un recorrido topológico de la red es inviable, en

particular cuando hay usuarios con millones de seguidos15 o seguidores16.

10

https://dev.twitter.com/docs/rate-limiting/1 11

http://bit.ly/1mMYnj6 12

https://dev.twitter.com/terms/api-terms 13

https://dev.twitter.com/docs/rate-limiting/1.1/limits 14

https://business.twitter.com/partners/list/certified-products 15

http://friendorfollow.com/twitter/following-the-most/ 16

http://twittercounter.com/pages/100

Page 96: Recomendación de usuarios en Twitter basada en topología

95

Con el objetivo de realizar los experimentos presentados en este trabajo, se practicaron las

pruebas utilizando más de 20 cuentas de manera rotativa, esperando una vez que se agotaban las

consultas disponibles, y añadiendo en consecuencia un tiempo de espera de entre 15 y 30 minutos

por prueba. Claramente, no es posible proveer un sistema de recomendación masivo en estas

circunstancias.

Siendo parte del alcance inicial del proyecto, se diseñó e implementó el prototipo de la página

web, utilizada para las evaluaciones subjetivas.

6.2 Arquitectura general A continuación en la Ilustración 45 se presenta una vista general de la arquitectura utilizada.

Ilustración 45: Arquitectura web.

Page 97: Recomendación de usuarios en Twitter basada en topología

96

Puede observarse como la arquitectura de tres capas involucra la integración de múltiples

tecnologías, descriptas brevemente a continuación.

6.3 Capa de presentación En la capa de presentación se encuentran las vistas, implementadas utilizando Java Server Faces

2.0, con su lenguaje descriptivo basado en XML, utilizando componentes provistos por PrimeFaces.

El resultado es una vista HTML con componentes basados en JQuery, que permiten la interacción

de manera transparente con controladores implementados en Java. De esta manera, una vez

configurado el entorno es particularmente sencillo la integración con el recomendador

implementado previamente, o cualquier otro conjunto de servicios, no necesariamente

implementados localmente.

6.4 Capa de negocios Con la arquitectura y las tecnologías presentadas, este representa el corazón del proyecto.

Mediante la utilización de Spring, se definen interfaces y se asocian sus implantaciones. Mediante

anotaciones, se realiza la configuración de los servicios, determinando el alcance y el ciclo de vida

de cada uno de ellos. Mediante este sencillo mecanismo, es posible distribuir la carga y generar

instancias individuales para atender distintos usuarios.

La capa de negocios del proyecto es donde se encuentran los paquetes del recomendador de

usuarios descriptos en el capítulo 0, junto con la publicación de los servicios pertinentes para

permitir su uso. En esta, se incluyen también servicios para la comunicación con librerías externas:

Hibernate y Twitter4j, ocultas detrás un Facade, tal como se observó al estudiar el diseño.

En caso de desearse, Spring permite exportar los webservices, a fin de proveer servicios a terceros.

6.5 Capa de integración En la capa de integración se encuentran las librerías asociadas y su configuración. Entre los

componentes encontrados, el más importante es Hibernate y sus archivos de configuración,

particularmente los mapeos de objetos. Dadas las limitaciones iniciales del API de Twitter, una de

las soluciones estudiadas fue la implementación de una Caché de las consultas realizadas,

inicialmente en memoria principal, y luego en memoria secundaria. Un estudio detallado de las

alternativas posibles y los beneficios provistos se encuentra en el Apéndice B: Persistencia.

Page 98: Recomendación de usuarios en Twitter basada en topología

97

Capí tulo 7: Conclusiones

Page 99: Recomendación de usuarios en Twitter basada en topología

98

7 Conclusiones A continuación se resumen los aspectos principales del proyecto.

7.1 Trabajo realizado En este proyecto se presenta una alternativa práctica para el problema de recomendación de

fuentes de información en Twitter, basándose en la topología de la red social. Se comenzó

estudiando alternativas de link analysis y la clasificación de usuarios basada en sus interrelaciones,

para definir un algoritmo de recorrido incremental, optimizado para equipos con limitaciones de

hardware.

Se estudiaron distintas configuraciones del algoritmo mediante redescubrimiento, encontrando

que la unión de recorridos tipo fuente de información (inspirado en HITS) y amigo (inspirado en

PageRank) maximiza la recuperación de usuarios. En cuanto al ranking de los usuarios alcanzados,

se ha encontrado que un acercamiento hibrido entre el peso probabilístico y el peso binario ofrece

la mejor precisión entre las primeras posiciones. De particular interés es que la recuperación

muestra una distribución exponencial, que, si bien puede recuperarse un alto porcentaje de los

usuarios ocultos, cerca del 60% se encuentra entre los primeros 10.000 alcanzados, permitiendo

utilizar otras técnicas más elaboradas de ranking sobre un conjunto acotado.

Se estudiaron las capacidades de recomendación de fuentes de información mediante una

clasificación de usuarios basada en topología (puntualmente, considerando fuentes aquellos

usuarios que poseen al menos el doble de seguidos que seguidores), encontrando que el

desempeño es similar a la recomendación sin clasificación; en esta etapa, los resultados obtenidos

superan notablemente la precisión mediante el índice de fuente de información (IS, basada en una

métrica absoluta de relación entre seguidores y seguidos) o el filtrado colaborativo de Hannon S6

(basada en la similitud entre seguidores). Dado el carácter acotado de la evaluación, se plantea

como trabajo futuro continuar la experimentación.

Al realizar evaluaciones subjetivas del algoritmo con la mejor configuración encontrada durante la

evaluación automática, se obtuvieron valores no sólo superiores a los obtenidos durante la

recolección automática, sino también iguales o superiores a los obtenidos por WTF, el

recomendador oficial provisto por Twitter. El conjunto de prueba fue reducido por las limitaciones

impuestas por Twitter, por lo que sería necesario verificar estos resultados.

Si bien escapa el alcance del proyecto, se estudió la viabilidad del algoritmo presentado para la

recomendación de usuarios que no son fuentes de información (que denominamos amigos),

mostrando resultados aceptables, mostrando una notable mejora en la evaluación subjetiva

respecto a la evaluación por redescubrimiento, posiblemente debido a que el número de usuarios

similares en las comunidades implícitas a las que pertenece es mayor que una fracción de los

actualmente seguidos.

La implementación del algoritmo fue realizada dentro del marco de un framework para recorridos

incrementales, diseñado para este proyecto. En este se provee una solución flexible, permitiendo

extenderla para otros problemas de link analysis.

Page 100: Recomendación de usuarios en Twitter basada en topología

99

Se considera cumplido el objetivo inicial de la recomendación de fuentes de información desde la

topología de la red, permitiendo entonces la recomendación de usuarios que hablan de temáticas

de interés para un usuario dado, sin que sea necesaria la evaluación del contenido.

7.2 Limitaciones encontradas El trabajo realizado parte de la búsqueda de una alternativa que reduzca los requerimientos de

hardware e interacción con los webservices de Twitter. Por esto mismo, la técnica presenta

múltiples limitaciones tanto en sus características técnicas como en los medios de evaluación

disponibles. Como se ha indicado en el capítulo 6.1, las modificaciones y restricciones sobre los

webservices de Twitter hacen inviable una aplicación de recomendación masiva, reduciendo el

aporte de este trabajo al algoritmo y su evaluación experimental.

Dejando de lado las restricciones del API de Twitter, el algoritmo presentado requiere reevaluar la

red cada vez que se desea generar una recomendación, siendo este un método poco eficiente para

utilizar para un gran conjunto de usuarios. En caso de tener acceso ilimitado al grafo, es posible

utilizar un recorrido estático o bien un enfoque hibrido, según lo estudiado en el capítulo 2.4.6.

Desde el punto de vista experimental, se han comparado algoritmos disjuntos, obteniendo

mejores resultados. Los valores obtenidos se aproximan los resultados de recomendación basada

en temáticas presentados en [8], pero no es posible comparar los valores directamente. Sería de

interés realizar una comparación empírica entre ambas técnicas para determinar la veracidad de

esta afirmación.

Otro aspecto limitado por la ausencia de procesamiento de contenido es la clasificación de

usuarios. Para poder subclasificar a los usuarios influyentes en fuentes de información o

celebridades, es necesario el estudio de las interacciones en contenido, puntualmente, menciones

y retweets.

7.3 Trabajo futuro Al momento de definir el alcance de este proyecto, y dadas las características de los servicios y

datasets disponibles, se optó por excluir el procesamiento de contenido. Como se ha observado en

el capítulo 0, la implementación presentada es flexible y permite la extensión para incluir

procesamiento de contenido con fines de clasificación y puntuación de usuarios; una estrategia

hibrida permitiría aprovechar la velocidad y flexibilidad del recorrido con la precisión de la

evaluación de contenido.

Durante el análisis de alternativas de link prediction en la sección 2.3, se mencionaron las

comunidades implícitas en Twitter, que fueron consideradas indirectamente al realizar

recomendaciones basadas en topología. Sería interesante ahondar en este tema, clasificando a

partir de sus interrelaciones a cada usuario como perteneciente a una o más comunidades, y

determinar en qué grado. Esto permitiría recomendaciones avanzadas, al precio de evaluar el total

de la red.

Page 101: Recomendación de usuarios en Twitter basada en topología

100

Como siempre, la etapa experimental del proyecto alcanza para estudiar el comportamiento del

algoritmo en condiciones controladas, pero no cierra definitivamente la evaluación. Es de gran

interés permitir se utilice la herramienta por usuarios reales sobre el entorno real de Twitter, y

observar como varían los resultados a través del tiempo. Esto fue intentado con una pequeña

muestra otorgando una noción inicial del funcionamiento del algoritmo en comparación con Who

To Follow. Lamentablemente, para poder publicar la aplicación es necesario acceder a una

alternativa comercial para obtener la información, debido al cierre del API y la eliminación del

whitelisting.

Page 102: Recomendación de usuarios en Twitter basada en topología

101

Capí tulo 8: Bibliografí a

Page 103: Recomendación de usuarios en Twitter basada en topología

102

8 Bibliografía [1] A. Java, X. Song, T. Finin and B. Tseng. Why we twitter: understanding

microbloging usage and communities. En Proceedings of the 9th WebKDD and

1st SNA-KDD 2007 Workshop on Web Mining and Social Network Analysis,

páginas 56-65. 2007.

[2] B. Krishnamurthy, P.Gill, and M. Arlitt. A few chirps about Twitter. En

Proceedings of the 1st WorkShop on Online Social Networks (WOSP ’08), pages

19-24. USA, 2008.

[3] H. Kwak, C. Lee, H. Park and S. Moon. What is Twitter, a social network or a

news media? En Proceedings of the 19th International Conference on World

Wide Web (WWW’10), páginas 591-600. USA, 2010.

[4] L. Hong, B.D. Davison. Empirical study of topic modeling in Twitter. En

Proceedings of the SIGKDD Workshop on SMA. 2010.

[5] J. Chen, W. Geyer, C. Dugan, M. Muller, and I. Guy. Make new friends, but

keep the old: recommending people on social networking sites. En

Proceedings of the 27th International Conference on Human Factors in

Computing Systems, pages 201-210. USA, 2009.

[6] A. R. Sun, J. Cheng, and D.D. Zeng. A novel recommendation framework for

micro-blogging based on information diffusion. En proceedings of the 19th

Workshop on Information Technologies and Systems, 2009.

[7] J. Hannon, M Bennett, and B. Smyth. Recommending Twitter users to follow

using content and collaborative filtering approaches. En Proceedings of the

4th. ACM Conference on Recommender Systems (Rec Sys ’10), páginas 199-206.

2010.

[8] Marcelo Armentano, Daniela Godoy y Analía Amandi. Recommending

information sources to information seekers in Twitter. En Proceedings del

International Workshop on Social Web Mining co-located with IJCAI 2011,

2011.

[9] S. Schiaffino, A. Amandi. Intelligent User Profiling. En M. Bramer (Ed.):

Artificial Intelligence, LNAI 5640, páginas 193 – 216, 2009.

[10] M. Cha, H. Haddadi, F. Benevenuto, K.P. Gummadi. Measuring User Influence

in Twitter: The Million Follower Fallacy. En Proc. International AAAI

Conference on Weblogs and Social Media (ICWSM), May 2010.

[11] P. Gupta, A. Goel, J. Lin, A. Sharma, D. Wang, R. Zadeh. WTF: The Who to

Follow Service at Twitter. En l World Wide Web Conference Committee

(IW3C2). Brazil. 2013.

[12] L. Page, S. Brin, R. Motwani, T. Andwinograd. The PageRank citation

ranking: Bringing order to the web. En Tech. rep. Stanford Digital Library

Technologies Project. 1998.

[13] D. Liben-Nowell, J. Kleinberg. The Link Prediction Problem for Social

Networks. En Journal of the American Society for Information Science and

Technology, Volume 58 Issue 7. 2007.

[14] A. Borodin, G.O. Roberts, J.S. Rosenthal. Link analysis ranking: algorithms,

theory, and experiments. En ACM Transactions on Internet Technology

(TOIT) 5.1, páginas 231 – 297. 2005.

Page 104: Recomendación de usuarios en Twitter basada en topología

103

[15] R. Lempel, S. Moran. SALSA: the stochastic approach for link-structure

analysis. En ACM Transactions on Information Systems (TOIS), Volume 19

Issue 2. 2001.

[16] B. Bahmani, A. Chowdhury, A. Goel. Fast incremental and personalized

PageRank. En Proceedings of the VLDB Endowment 4.3: páginas173-184. 2010.

[17] M.G. Armentano n, D. Godoy, A.A. Amandi. Followee recommendation based

on text analysis micro-blogging activity. En Information Systems, Volume 38,

Issue 8, páginas1116–1127. 2013.

[18] S.A. Myers, A. Sharma, P. Gupta, J. Lin. Information etwork or Social

Network? The Structure of the Twitter Follow Graph. En Proceedings of the

companion publication of the 23rd international conference on World wide web

companion -WWW 2014. Seoul, Korea. 2014.

[19] M. Watanabe, T. Suzumura. How Social Network is Evolving? A Preliminary

Study on Billion-scale Twitter Network. En Proceedings of the companion

publication of the 22rd international conference on World wide web companion -

WWW 2013, Rio de Janeiro, Brasil. 2013.

Page 105: Recomendación de usuarios en Twitter basada en topología

104

Ape ndice A: Cadenas de Markov

Page 106: Recomendación de usuarios en Twitter basada en topología

105

1 Introducción En esta sección se describen las nociones básicas de cadenas de Markov, concepto fundamental

detrás de los recorridos utilizados en link analysis.

2 Recorrido aleatorio sobre grafos Un recorrido aleatorio (en inglés “random walk”) de largo k en un grafo G con raíz 0 es un proceso

estocástico con variables aleatorias tal que y es un nodo seleccionado

uniformemente al azar entre los vecinos de . Entonces, es la probabilidad de que un

camino de largo k inicie en i y termine en j. En particular, si G es un grafo con raíz en 0,

es la probabilidad que un recorrido aleatorio 2k-pasos regrese a 0.

Ejemplo: Sea G el grafo indicado en la Ilustración 46 (izquierda), la probabilidad de partir del nodo

0 y alcanzar el nodo 5 depende de los caminos posibles entre estos nodos, indicados en la

Ilustración 46 (derecha).

Ilustración 46: Grafo de ejemplo (izquierda) y los caminos de recorrido aleatorio (derecha)

A partir del grafo es posible armar el árbol de probabilidades asociado a sus caminos,

considerando, por ejemplo, una probabilidad de salto uniformemente distribuida entre los arcos, y

determinar de esta manera la probabilidad de cada camino independientemente.

Ilustración 47: Árbol de probabilidades asociado al recorrido aleatorio

De esta manera, es posible determinar la probabilidad de alcanzar desde el nodo 0 al nodo 5 en 2

y 3 movimientos:

Page 107: Recomendación de usuarios en Twitter basada en topología

106

Y, para todo número de movimientos:

Un recorrido al azar en un grafo es un caso especial de cadenas de Markov.

3 Cadena de Markov Una cadena de Markov es una secuencia de variables aleatorias a través de las que se desplaza un

proceso estocástico, donde la propiedad de Markov define dependencia serial solo entre periodos

adyacentes. Por lo tanto, puede ser utilizada para describir sistemas que siguen una serie de

eventos vinculados, donde lo que sucede en el siguiente estado depende únicamente del estado

actual.

| |

Se denominan cadenas de Markov estacionarias u homogéneas en el tiempo cuando la

probabilidad de transición es independiente del momento actual.

| |

Para todo n, la probabilidad de transición es independiente de n.

3.1 Secuencias de transiciones La probabilidad de ir de un estado i a un estado j en n pasos es:

|

Y para la transición de un solo paso es:

|

Para cadenas de Markov estacionarias, la probabilidad de ir de un estado i a un estado j en n pasos

es:

|

Y para la transición de un solo paso es:

|

Page 108: Recomendación de usuarios en Twitter basada en topología

107

Sea S el conjunto de estados de la cadena de Markov, las probabilidades de transición de n pasos

satisfacen que, para cualquier k tal que 0 < k < n

La distribución marginal es la distribución sobre los estados en el momento n. A partir

de la distribución inicial , se describe la evolución en el tiempo como:

∑ ∑

Para el caso de cadenas de Markov estacionarias,

3.2 Matriz de transición Si el espacio de estados es finito la distribución de probabilidades de transición puede

representarse como una matriz, llamada matriz de transición P en el momento n, donde el

elemento (i,j) corresponde a:

|

Donde se cumple, para una matriz de NxN, y 0<j :

De esta manera, pueden computarse las probabilidades de transición de n pasos como:

( ∏

)

Si la cadena de Markov es estacionaria, la matriz P es constante, por lo que en la iteración k puede

calcularse como .

3.3 Distribución estacionaria La distribución estacionaria es un vector fila, cuyas entradas son no negativas y suman 1, que no

se ve afectado por la operación de transición de la matriz P, definida como:

Si la cadena es aperiódica, la distribución estacionaria puede calcularse como:

Page 109: Recomendación de usuarios en Twitter basada en topología

108

4 Cadenas de Markov aplicadas a recorridos aleatorios La intuición detrás de las cadenas de Markov aplicadas a grafos es la construcción de caminos de

modo incremental. De esta manera, es posible determinar:

1. La probabilidad de alcanzar desde un nodo i a un nodo j en n pasos, para 0 < k < n:

( ∏

)

2. La probabilidad de alcanzar desde un nodo i a un nodo j para todo número de pasos:

3. La probabilidad marginal de alcanzar un nodo j tras n iteraciones:

∑ ∑

4. La distribución estacionaria , sea P la matriz de transiciones:

(∏

)

Para el caso básico de recorrido aleatorio, donde la estructura del grafo no varía y la probabilidad

de salto se distribuye uniformemente entre el número de arcos, las cadenas de Markov

estacionarias proveen una solución simplificada al problema.

Page 110: Recomendación de usuarios en Twitter basada en topología

109

Ejemplo: Recordemos el grafo G presentado al describir los recorridos aleatorios, indicado

nuevamente en la Ilustración 48 (izquierda), a partir de él es posible definir la matriz de

transiciones P asociada, presentada Ilustración 48 (derecha).

Ilustración 48: Grafo de ejemplo (izquierda) y matriz de transiciones asociada (Derecha)

A partir de la matriz de transiciones, es posible obtener las matrices de transición de n pasos como

Pn:

Ilustración 49: Matrices de transición Pn

para caminos de largo n.

La suma de estas matrices provee la probabilidad de la existencia en un camino entre dos nodos,

independientemente del número de pasos:

Page 111: Recomendación de usuarios en Twitter basada en topología

110

Ilustración 50: Matrices de transición Pn

para caminos de largo n.

De esta manera, es posible determinar, por ejemplo, la probabilidad de alcanzar desde el nodo 0 al

nodo 5 en 2 y 3 movimientos:

Y, para todo número de movimientos:

Siendo estos los mismos resultados a los obtenidos al utilizar el árbol de probabilidades en el

ejemplo de recorridos aleatorios sobre grafos.

Page 112: Recomendación de usuarios en Twitter basada en topología

111

Ape ndice B: Persistencia

Page 113: Recomendación de usuarios en Twitter basada en topología

112

1 Introducción La persistencia es un atributo de la información (datos), que permite que ésta permanezca

disponible aun cuando la aplicación que la usa termine su sesión. Para un lenguaje orientado a

objetos como Java, la persistencia asegura que el estado de un objeto sea accesible luego de que

la aplicación que lo creó haya terminado su ejecución.

Hay diferentes formas de conseguir la persistencia. El enfoque tradicional al problema es usar

sistemas de archivos que almacenen la información en archivos planos. Si la cantidad de

información a almacenar es demasiado grande, el acceso y administración del sistema de archivos

se vuelve muy complicado. Encontrar los datos necesarios en uno de estos sistemas es una

operación que puede llegar a tardar demasiado, especialmente si los archivos dentro del sistema

no están indexados. Por estas y otras razones, los sistemas de archivos no son considerados

buenas soluciones para resolver la persistencia.

El enfoque más común hoy día es usar bases de datos como repositorios para grandes cantidades

de información. Hay varios tipos de bases de datos: relacionales, jerárquicas, orientadas a objetos,

etc; de las cuales, las bases de datos relacionales son las más usadas.

La información en una base de datos relacional se modela como un conjunto de tablas

interrelacionadas. Es decir, ésta tecnología se basa en los datos y sus relaciones, lo cual difiere del

paradigma orientado a objetos, que se concentra principalmente en las operaciones sobre los

datos, más que en los datos mismos. Por esta razón, cuando se necesita usar estas tecnologías en

conjunto, surge un conflicto de intereses. Las diferentes formas de persistir objetos usando bases

de datos relacionales deben de algún modo abordar este conflicto y proveer una solución

balanceada.

Este estudio se divide en dos partes: 1) el estudio de las alternativas más populares y, una vez

seleccionada la más acorde al trabajo actual, 2) los beneficios obtenidos al incluir persistencia al

proyecto.

2 Alternativas En las siguientes secciones se analizan tres formas populares de conectar Java con bases de datos

relacionales: Uso de SQL, iBatis y ORM, y finalmente presentamos las conclusiones del estudio en

una tabla comparativa.

2.1 SQL Las bases de datos SQL organizan los datos en tablas con filas y columnas, permitiendo la

ejecución de comandos y consultas sobre ellos a través del lenguaje SQL (Structured Query

Language).

El acceso a los datos usando SQL desde Java es preciso y eficiente, ya que el código debe incluir

directamente todas las consultas a hacer sobre la base de datos. Esto permite optimizaciones a

Page 114: Recomendación de usuarios en Twitter basada en topología

113

bajo nivel, pero genera un alto nivel de acople, ya que se necesita en todo momento conocimiento

sobre la estructura de las tablas y de la tecnología usada (DBMS).

El uso directo de SQL tiene sentido en aplicaciones en donde estas restricciones son de utilidad, es

decir, cuando se necesita llevar un control estricto sobre la estructura de los datos y su forma de

acceso. De lo contrario, diseñar cuidadosamente una base de datos en forma manual, existiendo

otras alternativas posibles, suele ser una pérdida de tiempo y recursos.

Ilustración 51: La aplicación debe incluir las sentencias SQL atadas al DBMS, así como los mapeos de los resultados a

objetos Java

2.2 iBATIS iBATIS es un framework de persistencia que automatiza el mapeo entre una base de datos SQL y

objetos en Java (POJOs), .NET y Ruby on Rails. Al contrario que otros frameworks de persistencia,

iBATIS “comienza” desde una base de datos SQL, y crea los POJOs automáticamente, a partir de

archivos de configuración. Esto conserva los beneficios del uso directo de SQL (control estricto

sobre la base de datos y su acceso), simplificando y encapsulando la interfaz entre la aplicación y la

base de datos usada.

Otra ventaja que trae es que el modelo de datos y los objetos resultantes no necesitan tener un

mapeo estricto entre ellos, ya que el data mapper de iBatis permite conectar objetos con

procedimientos almacenados, declaraciones SQL o ResultSets, además del mapeo normal hacia

una tabla en la base de datos. Esto permite que ambos modelos sean independientes, y facilita el

uso de bases de datos heredadas, o que cambian constantemente.

Page 115: Recomendación de usuarios en Twitter basada en topología

114

iBATIS es especialmente útil cuando se necesita un absoluto control sobre la base de datos, y los

accesos a la misma; pero no sirve para bases de datos no relacionales, y es poco efectivo si se

tiene un control total tanto sobre la base de datos como de la aplicación. En estos casos, otras

herramientas de persistencias suelen ser más adecuadas.

Ilustración 52: La interacción con la base de datos es transparente para la aplicación, pero requiere generar las

consultas y los mapeos

2.3 ORM El mapeo objeto-relacional (ORM) permite crear bases de datos orientadas a objetos virtuales

sobre bases de datos relacionales, lo cual permite aplicar sobre la misma, características

específicas del paradigma, como el polimorfismo y la herencia.

Es la solución ideal cuando se tiene control total sobre el diseño de la base de datos y la aplicación,

ya que permite adaptar la aplicación a las necesidades de la base de datos y viceversa. Otra gran

Page 116: Recomendación de usuarios en Twitter basada en topología

115

ventaja es que no se necesitan conocimientos de SQL para lograr una aplicación Objeto-Relacional

efectiva.

En el contexto del proyecto estudiado, el considerar la utilización de ORM posee diversos

beneficios:

Productividad: El código necesario para generar la persistencia suele ser repetitivo y

tedioso a lo largo de una gran variedad de aplicaciones. Usar una herramienta ORM

permite centrarse en la verdadera funcionalidad de la aplicación, delegando todos los

pequeños detalles de persistencia a ella.

Mantenibilidad: Usar una herramienta ORM no solo reduce la cantidad de líneas de

código, reduciendo así también su complejidad y aumentando la legibilidad, sino que

elimina el problema de la correspondencia directa entre los objetos y su representación

relacional, en donde la modificación de un objeto lleva aparejada la modificación de la

base de datos y viceversa.

Performance: Suele decirse que el código para persistencia hecho manualmente es más

rápido que el código automatizado. Esto es verdadero en el mismo sentido en que un

programa hecho directamente en assembler es más rápido que uno en un lenguaje de alto

nivel.

La decisión de usar ORM afectará siempre la productividad, pero no siempre afecta

negativamente la performance. Esto se debe a que dada una tarea de persistencia, hay

disponibles una cantidad de optimizaciones para ella. ORM permite aplicar muchas de

estas optimizaciones a todas las tareas todo el tiempo en forma automática, sin necesidad

de un especialista en bases de datos, y generalmente deja el espacio abierto a

optimizaciones manuales en los cuellos de botella que puedan encontrarse.

Independencia de la tecnología: Las herramientas ORM separan completamente el código

de la aplicación de la tecnología de bases de datos usada, y usualmente soportan

diferentes tecnologías dependiendo de las preferencias del desarrollador o las

necesidades del proyecto. Del mismo modo, portar los datos de una tecnología a otra se

hace una tarea muy fácil.

Page 117: Recomendación de usuarios en Twitter basada en topología

116

Ilustración 53: La interacción con la base de datos es transparente para la aplicación

2.4 Comparación A continuación en la tabla 1 se resumen las características principales de las alternativas

planteadas.

Tabla 1: características principales de las alternativas planteadas

Alternativa Requiere realizar SQL Acoplamiento entre DB y

modelo de datos Esfuerzo de implementación

SQL si alto alto

IBATIS si bajo alto

ORM no transparente bajo

Dado que se trata de un proyecto existente que no había contemplado el uso de persistencia

inicialmente, se priorizará la simplicidad de implementación de la solución, siendo entonces ORM

la alternativa preferida; a continuación se describe la implementación de ORM a utilizar.

2.5 Hibernate Hibernate es una herramienta de ORM para Java. Su principal objetivo es proveer persistencia

para objetos, permitiendo su obtención y manipulación en forma transparente. Para esto se

genera un esquema de datos a partir de archivos de configuración o anotaciones en los objetos

Page 118: Recomendación de usuarios en Twitter basada en topología

117

entidades a mapear, sobre el cual se trabajará operando sobre los objetos como se hace

normalmente.

Ilustración 54: Capas en la comunicación de Hibernate

Hibernate también provee el lenguaje Hibernate Query Language, inspirado en SQL, que permite

hacer consultas sobre los objetos entidad en el esquema.

Hibernate permite definir clases persistentes, que serán las mapeadas a tablas en una base de

datos. El único requerimiento pedido a estas clases es que sean definidas como Plain Old Java

Objects (POJOs), es decir, con un constructor sin parámetros y con accesos get y set para cada uno

de sus atributos. Para los atributos, Hibernate permite prácticamente todos los tipos de datos

disponibles, incluyendo fechas (Date) y colecciones.

Para hacer el mapeo Hibernate necesita un poco más de información, necesita saber cómo las

instancias de cada clase deben ser almacenadas y cargadas. Estos metadatos pueden ponerse en

un documento de mapeo XML, que define entre otras cosas, como se pondrán los atributos de la

clase en las diferentes columnas de su tabla. Otra forma de lograr lo mismo es con anotaciones en

la misma clase persistente. Adicionalmente, Hibernate usa otro archivo de configuración global,

llamado hibernate.cfg.xml por convención, que le indica en donde se encuentran los archivos de

configuración de cada clase persistente.

Las ventajas más importantes que trae el uso de Hibernate sobre el proyecto actual, además de las

ya indicadas, como la persistencia transparente, son:

Page 119: Recomendación de usuarios en Twitter basada en topología

118

2.5.1 Transparent lazy fetching

Esta propiedad demora la carga de los objetos desde la base de datos hasta necesitarlos para su

uso, lo cual disminuye el uso de RAM de la aplicación.

Hibernate usa esta estrategia por defecto para todas las entidades y colecciones. Esto quiere decir

que cuando se hace una operación load() sobre un objeto persistente, Hibernate crea y devuelve

un proxy, una estructura vacía que dispara la operación de cargado del objeto real cuando se

accede a sus propiedades (por primera vez).

Esto es especialmente útil cuando se necesita una referencia al objeto obtenido, más que sus

propiedades; y en el caso de atributos que representan colecciones de objetos, ya que sin esta

estrategia, obtener un objeto que referencia varios otros implicaría la carga de todos ellos.

2.5.2 Automatic dirty checking

Hibernate monitorea todos los objetos persistentes obtenidos en forma automática. Cuando un

objeto es modificado (comparación por valor) es marcado como dirty, pero no se actualiza su valor

en la base de datos hasta que sea necesario leerlo o hasta el fin del uso del objeto mismo. Esto

agrupa efectivamente una cantidad de transacciones de actualización, disminuyendo los accesos a

disco.

2.5.3 Transitive persistence

Al trabajar con colecciones de datos, el guardado, eliminación y asociación de cada objeto en un

grafo puede hacerse una tarea pesada. Una relación común entre objetos es la de padre/hijo.

Cuando el objeto padre es guardado en la base de datos, también debe guardarse el grupo de

objetos hijo; cuando el objeto padre es eliminado, también deben eliminarse los objetos hijos que

tiene asociados. De la misma manera, cuando se agregan o eliminan objetos hijos del grupo, este

cambio debe reflejarse en la base de datos. Hibernate detecta estas situaciones y hace los cambios

pertinentes, simplificando el manejo de estructuras jerárquicas.

Si los objetos hijo son entidades persistentes propias, esta propiedad de cambio debe ser

especificada en el documento de configuración de mapeo, de lo contrario, Hibernate realiza esta

funcionalidad por defecto.

3 Implementación Como se ha comentado previamente, el objetivo de este informe es agregar persistencia a un

proyecto existente. A continuación se exponen las clases pertenecientes al modelo de datos del

que se requiere persistencia.

Page 120: Recomendación de usuarios en Twitter basada en topología

119

Ilustración 55: diagrama de clases del modelo de datos

3.1 Mapeo

3.2 Encabezado Un archivo de mapeo puede contener la información perteneciente a una o más clases

pertenecientes a un mismo paquete, o bien cada clase puede poseer su archivo de configuración.

A continuación se muestra el encabezado del BasicUser:

<hibernate-mapping package= "buscadortwitters.Usuario"> <class name="UsuarioBasico" ...> </class> </hibernate-mapping>

3.3 Atributos primitivos Los atributos primitivos se mapean de manera intuitiva, indicando el nombre del atributo y su tipo,

a modo de ejemplo, se muestra el mapeo del BasicUser:

<id name="id"/> <property name="screenName" type= "string"/> <property name="followersCount" type="integer"/> <property name="followsCount" type="integer"/> <property name="lang" type= "string"/> <property name="url" type= "string"/> <property name="protected" type = "boolean"/>

Como puede observarse en el mapeo, existe un atributo especial, denominado id; esté será

utilizado como clave primaria.

Page 121: Recomendación de usuarios en Twitter basada en topología

120

3.4 Atributo no primitivo (relación 1:1) Para los atributos de tipo no primitivo, es necesario indicarlo como una relación. Siendo solo

necesario indicar la clase referenciada. A modo de ejemplo, se muestra la relación entre el User y

el BasicUser:

<one-to-one name = "usuarioBasico" class = "UsuarioBasico" cascade = "all"/>

3.5 Colección (relación 1:N y N:N) Las colecciones requieren indicar además ciertas propiedades, a saber:

● Lazy: si al levantar la colección, no deben levantarse los objetos referenciados hasta ser

requeridos

● inverse: si la lista es una entidad débil

● key: clave en la tabla referenciada

● index: posición en la colección

● one-to-many / many-to-many class: clase con la que se relaciona

A modo de ejemplo, se muestra el mapeo de la lista de Tweets del User:

<list name="tw" lazy="false" cascade = "all" inverse="true"> <key column="usuario"/> <index column="idx"/> <one-to-many class="TweetApi"/> </list>

4 Solución en acción Una vez generados los archivos de mapeo e indicados en el archivo de configuración de Hibernate,

se encuentra completo el tratamiento de la base de datos. A partir de este momento, es posible

obtener y persistir objetos de manera sencilla. A continuación, se exponen los pasos necesarios

para obtener un usuario desde la base de datos:

long userId = //número de usuario Session session = HibernateUtil.getSessionFactory().getCurrentSession(); User result = (User) session.get(User.class, userId);

Page 122: Recomendación de usuarios en Twitter basada en topología

121

Como puede observarse, el proceso de obtención de un usuario es muy simple. El usuario

recuperado poseerá, según sea su configuración, todos o solo algunos de sus atributos, quedando

los demás inicializados como lazy. En caso que la base no posea el usuario solicitado, este se

obtendrá de Twitter. Es importante aclarar que los atributos lazy no podrán recuperarse si se

cierra la sesión.

Para agregar o modificar un usuario, el proceso es similar. El único factor a tener en cuenta es si el

objeto se encuentra previamente persistido, dado que hibernate realizará entonces una

actualización de los campos modificados. Si se ha indicado, la actualización se realizará en cascada.

User user= //usuario a persistir Session session = HibernateUtil.getSessionFactory().getCurrentSession(); User result = (User) session.get(User.class, u.getId()); if (result == null) { session.saveOrUpdate(u); } else { session.merge(u); }

4.1 Proxy Para la recomendación de usuarios, es necesario evaluar redes con gran cantidad de nodos, siendo

utilizada la información de sólo unos pocos. Por esto, es la idea disminuir al mínimo la cantidad de

consultas, tanto a Twitter como a la base de datos.

A fin de ocultar esta característica al resto de la aplicación, se incluye un User Proxy, que es el que

se encarga de obtener los datos, de manera lazy, de una fachada de servicios (llamada interfaz

Twitter), ésta, a su vez, obtiene de manera transparente los datos de la base de datos o de Twitter,

según corresponda.

Ilustración 56: Diagrama final de clases, incluyendo el UserProxy

Page 123: Recomendación de usuarios en Twitter basada en topología

122

4.2 Caché Si bien el objetivo de este trabajo es disminuir la carga en memoria, es recomendable reducir al

mínimo las consultas a la base de datos. En lugar de utilizar la caché provista por Hibernate, se

implementará una caché manualmente. Entre otras ventajas, la utilización en conjunto con el

Proxy permite crear objetos Flyweight, eliminando la redundancia y así optimizando el uso de

memoria RAM.

5 Resultados experimentales Una vez implementada la solución, se realizó un conjunto de pruebas para evaluar el impacto en la

performance de la aplicación. Estudios previos [EST 2011] serán utilizados como punto de

comparación.

Para cada usuario a utilizar, existen tres estados posibles:

1. No ha sido persistido, o ha sido persistido sólo parcialmente (debe solicitarse a Twitter).

2. Se encuentra persistido (almacenamiento secundario), pero no se encuentra en la caché.

3. El nodo se encuentra en la caché (RAM).

La performance en cada uno de estos casos será evaluada por separado.

5.1 Proceso de recuperación de la red (Crawling) Durante la primera etapa de recomendación, los usuarios no se encuentran persistidos en la base

de datos. A medida que se obtienen nuevos usuarios, se guardan, quedando disponibles para

próximas recomendaciones.

A continuación se muestra el tiempo de recomendación por nodo de la red, partiendo de una base

de datos vacía, hasta alcanzar 100 mil usuarios (aproximadamente el 0.03% del total) y cerca de 80

millones de relaciones.

Page 124: Recomendación de usuarios en Twitter basada en topología

123

Ilustración 57: Tiempo por nodo en consultas sucesivas en la etapa de crawling

Como puede observarse, existe una disminución progresiva del tiempo por nodo, dando un

tiempo medio en las primeras 300 consultas de 2.34ms por nodo; esto representa una leve mejora

contra utilizar almacenamiento secundario (3,67 milisegundos, como en [EST2011]). A diferencia

de la estrategia planteada inicialmente, sin almacenamiento secundario, es posible persistir gran

cantidad de usuarios (actualmente, la base ocupa aproximadamente 6.6GiB), el objetivo actual es

generar una red con 1 millón de usuarios y sus relaciones.

5.2 Proceso de reevaluación de la red Para evaluar cuál sería la performance en caso que se posea el total de la red (o bien, subred), se

procedió a reevaluar usuarios. A continuación se exponen los primeros resultados, en

comparación con sus tiempos de crawling:

Page 125: Recomendación de usuarios en Twitter basada en topología

124

Ilustración 58: Tiempo por nodo en consultas sucesivas en la etapa de reevaluación vs el tiempo de crawling

Como puede observarse, en caso de poseerse el total de la red en almacenamiento secundario, el

tiempo promedio por nodo se reduce a 0.13ms, dando una optimización temporal de 1:18; a

grandes rasgos, esto se debe a que obtener un usuario completo de la base de datos toma

aproximadamente 150 ms, en contraste con los 3 segundos promedio de cada consulta a Twitter.

5.3 Evaluación de red en caché Como último caso, se evaluó la ventaja de poseer nodos cargados en memoria RAM. A

continuación se muestran los resultados iniciales de evaluación de subredes enteramente en

caché:

Page 126: Recomendación de usuarios en Twitter basada en topología

125

Ilustración 59: Tiempo por nodo en consultas sucesivas de subredes en caché, vs el tiempo de reevaluación y de

crawling

Como puede observarse, los resultados de recomendación sobre redes en caché muestran una

mejora, pero con un comportamiento errático; esto se debe al método utilizado de

recomendación, la estructura de la red se modifica levemente entre recomendaciones, y dado el

orden temporal de las consultas en caché, obtener algunos nodos de Hibernate o Twitter puede

significar una gran variación (para poner los datos en perspectiva, el tiempo medio de evaluación

de una red en caché de 150 mil nodos es de 6.8 segundos, cada consulta a Hibernate toma en

promedio 150 milisegundos, y cada consulta a Twitter 1 segundo).

El tiempo promedio resultante es de 0.04 ms, dando una optimización temporal de 1:4 sobre la

recomendación sobre redes en almacenamiento secundario, y una optimización total de 1:56

sobre la solución inicial.