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