Análisis llamadas telefónicas con Teoría de Grafos y R
1. ANÁLISIS DE LOS FLUJOS DE LLAMADAS
EN UNA ORGANIZACIÓN CON TEORÍA DE
GRAFOS Y R
Dr. Rafael Nogueras
https://rafaelnogueras.wordpress.com
Agosto 2021
2. ÍNDICE
Alcance
Introducción
Teoría de Grafos
Lenguaje de Programación R
Planteamiento del Problema
Creación de la Red
Visualización de la Red
Análisis de la Red
Conclusiones
Bibliografía 2
Teoría
de
Grafos
y
R
3. ALCANCE
SITUACIÓN
En una organización puede haber un número elevado de líneas
telefónicas.
Estas líneas son asignadas a los empleados para uso
profesional.
Puede haber un gasto elevado en llamadas telefónicas y en
tiempo de trabajo.
OBJETIVOS
Analizar el uso de las líneas telefónicas.
Detectar usos indebidos.
Determinar posibles relaciones profesionales para mejorar la
eficiencia y reorganizar departamentos.
Disminuir el gasto telefónico y el tiempo ocioso en la
organización.
3
Teoría
de
Grafos
y
R
4. INTRODUCCIÓN
Según la RAE “una red es un conjunto de elementos
organizados para determinado fin”.
También “un conjunto de equipos informáticos conectados
entre sí y que pueden intercambiar información”.
Existe un interés creciente por el análisis de datos y en
concreto, por el análisis de datos de redes.
Tipos de redes:
Redes sociales: Facebook, LinkedIn, ResearchGate, etc.
Redes de infraestructuras: electricidad, saneamiento,
carreteras, aeropuertos, etc.
Redes biológicas: epidemiológicas (covid-19), neuronales,
etc.
Redes informáticas: Internet, redes locales, páginas webs,
etc.
4
Teoría
de
Grafos
y
R
5. INTRODUCCIÓN
En una organización:
Gran cantidad de información (datos) disponible para su
análisis.
Necesario Herramientas y conocimientos para aplicar las
técnicas adecuadas.
Pero, ¿cómo se pueden modelar las llamadas telefónicas
mediante una red?
Cada línea telefónica puede modelarse como un vértice
(nodo) de una red.
Las llamadas telefónicas entre diferentes líneas son las
aristas (ejes) que conectan cada nodo de la red. 5
Teoría
de
Grafos
y
R
6. TEORÍA DE GRAFOS
Un grafo G es un elemento formado por un conjunto de
puntos llamados vértices o nodos (V), unidos por un conjunto
de aristas denominadas arcos o ejes (E).
G = (V, E).
Leonhard Euler, matemático y físico suizo, desarrolló la teoría
de grafos en el siglo XVIII, al resolver el problema de los siete
puentes de Königsberg.
Las redes se pueden representar matemáticamente mediante
grafos y la teoría de grafos es la rama de las matemáticas
que estudia sus propiedades.
Actualmente la teoría de grafos tiene una gran aplicabilidad
en diversas áreas de la ingeniería informática.
6
Teoría
de
Grafos
y
R
7. TEORÍA DE GRAFOS
Definiciones:
Nodos (vértices): conjunto de objetos que se interrelacionan.
El número total de nodos es el orden de la red y se denota
por Nv.
Ejes (aristas): conjunto de pares de nodos relacionados. El
número total de ejes es el tamaño de la red y se denota por
Ne.
Atributos: características de los nodos o de los ejes.
El grafo puede ser dirigido (si existe un orden entre los nodos
relacionados).
Un nodo es aislado si no tiene relación con el resto.
Un eje es un lazo si conecta un nodo consigo mismo. 7
Teoría
de
Grafos
y
R
8. LENGUAJE DE PROGRAMACIÓN R
R es un entorno y un lenguaje de programación orientado al
análisis estadístico.
Muy utilizado en ciencia de datos y en aprendizaje
automático. También para problemas económicos y
financieros.
R proporciona un amplio abanico de herramientas
estadísticas (modelos lineales y no lineales, tests
estadísticos, análisis de series temporales, algoritmos
de clasificación y agrupamiento, etc.).
R tiene una gran capacidad gráfica, que permite generar
gráficos con alta calidad.
R forma parte de un proyecto colaborativo y abierto, lo que
permite incrementar los paquete disponibles.
8
Teoría
de
Grafos
y
R
9. LENGUAJE DE PROGRAMACIÓN R
igraph – The network analysis package
La librería igraph es una colección de herramientas para el
análisis de redes open source y free.
igraph puede programarse en diversos lenguajes: R, Python,
Mathematica y C/C++.
La URL es: https://igraph.org
La versión para R:
Dispone de múltiples algoritmos para el análisis de redes de
gran tamaño.
Facilita la representación y visualización de la red.
La URL es: http://igraph.org/r
9
Teoría
de
Grafos
y
R
10. PLANTEAMIENTO DEL PROBLEMA
Componentes de la red:
Nodos: las líneas telefónicas de la organización. Nv ≈ 250.
Ejes: las llamadas realizadas entre dos líneas (nodos)
durante un periodo de tiempo t. Ne ≈ 10000, t = 30 días.
La red es dirigida, ya que el orden de la llamada tiene
relevancia.
Los ejes iguales se agrupan añadiendo un peso que
representa el número de llamadas realizadas entre ellos.
10
Teoría
de
Grafos
y
R
11. PLANTEAMIENTO DEL PROBLEMA
Atributos de la red:
Cada nodo tiene un atributo “ext”, que representa la extensión
del número de teléfono, es decir, su número interno corto.
Cada eje (x,y) dispone de un atributo denominado “weight”
con el número de llamadas realizadas desde la línea x a la y.
11
Teoría
de
Grafos
y
R
12. CREACIÓN DE LA RED
La red se puede crear a partir de datos representados en dos
estructuras:
Matrices de proximidad (adjacency matrix): matriz que relaciona los
nodos en filas y columnas. Función en R:
g graph_from_data_frame
Edgelist: matriz de dos columnas en la que cada fila representa una
conexión entre dos nodos individuales. Función en R:
g graph.edgelist
En ambos casos se crea el objeto de R denominado igraph.
El fichero de datos con todas las llamadas realizadas con los
números de la organización tiene la forma:
(tel1,ext,tel2,weight).
Doble Análisis:
Llamadas entre números internos.
Llamadas a números externos.
12
Teoría
de
Grafos
y
R
13. CREACIÓN DE LA RED
Llamadas entre números internos:
Antes de la creación de la red se filtran las llamadas (ejes)
inicialmente solo llamadas entre números internos.
En R se puede hacer con la función filter.
El gráfico se puede dibujar con la función plot usando
diversos tipos de layout (circular):
13
Teoría
de
Grafos
y
R
14. VISUALIZACIÓN DE LA RED
La representación gráfica de una red con muchos nodos y ejes
puede ser confusa Reducir la red:
Se pueden eliminar nodos aislados mediante la función:
delete.vertices(g,degree(g)==0)
Se pueden eliminar ejes cuyo peso sea menor que p:
delete_edges(g, E(g)[weight < p])
El orden de eliminación influye en el resultado.
14
Teoría
de
Grafos
y
R
15. VISUALIZACIÓN DE LA RED
Primero se eliminan los nodos aislados y después los ejes
con peso menor que p:
Primero se eliminan los ejes con peso menor que p y después
los nodos aislados:
15
Teoría
de
Grafos
y
R
16. VISUALIZACIÓN DE LA RED
Algunas conclusiones:
Se observan algunas agrupaciones de llamadas entre
números.
Hay números de teléfono aislados o solo conectados con otro
número.
Existen múltiples opciones para representar los grafos:
Ordenados en una retícula (layout_on_grid)
En círculo (layout_in_circle)
En árbol (layout_as_tree)
Siguiendo diversos algoritmos: simulated annealing
(layout_with_dh), método de Kamada-Kawai (layout_with_kk),
algoritmo de Fruchterman-Reingold (layout_with_fr), etc.
La elección de la representación puede ser importante. 16
Teoría
de
Grafos
y
R
17. ANÁLISIS DE LA RED
Definición: distancia geodésica
Para una red la distancia geodésica entre dos nodos u y v,
denotada por dist(u,v), se define como la longitud del camino
mas corto entre los nodos, es decir, el numero de ejes para ir
de un nodo al otro.
dist (u,v) = ∞ si u y v son inalcanzables entre sí (en grafos
dirigidos si desde u no se puede llegar a v).
El valor de la mayor distancia geodésica (excluyendo ∞) en
una red se denomina diámetro de la red.
17
Teoría
de
Grafos
y
R
18. ANÁLISIS DE LA RED
Nodos de gran influencia Medidas de Centralidad
El grado de un nodo es el número de ejes que salen o llegan al
nodo es un indicador de la conectividad del nodo.
Las llamadas que realizan: dg degree(g, mode = c(“out”))
Las llamadas que reciben: dg degree(g, mode = c(“in”))
¿Cuál es el teléfono que más llama?
which.max(degree(g, mode = c(“out”)))
¿Cuántas llamadas realiza?
max(degree(g, mode = c(“out”)))
Ordenar todos los teléfonos por número de llamadas:
dg[order(degree(g, mode = c("out")), decreasing = T, na.last = T)]
18
Teoría
de
Grafos
y
R
19. ANÁLISIS DE LA RED
Nodos de gran influencia Medidas de Centralidad
La centralidad por intermediación de un nodo (betweenness) es
la frecuencia de aparición del nodo en todos los caminos
mínimos del grafo.
𝐵𝑒𝑡𝑤𝑒𝑒𝑛𝑛𝑒𝑠𝑠 𝑣 =
𝑖,𝑗≠𝑣∈𝑉
𝜎𝑖𝑗 𝑣
𝜎𝑖𝑗
Siendo 𝜎𝑖𝑗 el número de rutas de mínima distancia entre i y j y 𝜎𝑖𝑗(v) el número de rutas de mínima
distancia entre i y j que pasan por v.
Es una medida de la importancia de un nodo, como punto
intermedio de conexión entre los demás.
Cálculo: b <- betweenness(g, directed = T)
¿Cuál es el teléfono más influyente? which.max(b) 19
Teoría
de
Grafos
y
R
20. ANÁLISIS DE LA RED
Nodos de gran influencia Medidas de Centralidad
La centralidad por cercanía de un nodo (closeness) es el
promedio de las distancias del nodo a todos los demás.
𝐶𝑙𝑜𝑠𝑒𝑛𝑒𝑠𝑠(𝑣) =
1
𝑖∈𝑉 𝑑𝑖𝑠𝑡(𝑣, 𝑖)
Se considera una medida de centralidad global. Menos fiable
para grafos desconectados.
Cálculo: c <- closeness(g, directed = T)
¿Cuál es el teléfono más influyente según su closeness?
which.max(c)
20
Teoría
de
Grafos
y
R
21. ANÁLISIS DE LA RED
Nodos de gran influencia Medidas de Centralidad
La centralidad del autovector (authority.score) analiza el
nodo en función de los autovalores y autovectores de la matriz
de adyacencia.
Se considera una medida de centralidad global.
Cálculo: as <- authority.score(g)$vector
¿Cuál es el teléfono más influyente según su closeness?
which.max(as)
21
Teoría
de
Grafos
y
R
22. ANÁLISIS DE LA RED
Nodos de gran influencia Resultados
1) Examinando el grado de los nodos se detecta que hay unas
pocas líneas desde las que se realizan muchas llamadas a
números diferentes (internos y externos).
2) Con las métricas de centralidad se detectan algunas líneas
influyentes, diferentes a las detectadas en el punto anterior.
3) Además, accediendo directamente a los datos se encuentran
pares de líneas desde las que se realiza un gran número de
llamadas entre ellas.
22
Teoría
de
Grafos
y
R
23. ANÁLISIS DE LA RED
Nodos de gran influencia Otras métricas
Distancia promedio (mean_distance): calcula el promedio de
las distancias entre todos los pares de nodos de la red.
Excentricidad de un nodo (eccentricity): se define como la
distancia del nodo al nodo más lejano del grafo.
Diámetro (diameter): calcula el valor máximo de la
excentricidad.
Densidad (edge_density): es la proporción de pares de
nodos conectados en el grafo sobre todos los posibles.
Transitividad (transitivity): es una medida de la ocurrencia de
pequeñas subredes de tres nodos totalmente conexas.
Reciprocidad (reciprocity): calcula la probabilidad de que si
existe un eje E(x,y) también exista el eje E(y,x). 23
Teoría
de
Grafos
y
R
24. ANÁLISIS DE LA RED
Detección de comunidades
Se trata de detectar la existencia de subredes mediante la
segmentación de los nodos de la red en conjuntos disjuntos.
A los subconjuntos de nodos más estrechamente
relacionados se le denomina comunidad.
Existen muchos algoritmos para detectar comunidades:
Método de Girvan-Newman (cluster_edge_betweenness(g))
Algoritmo voraz (cluster_fast_greedy(g))
Algoritmo de propagación de etiquetas (cluster_label_prop(g))
Método de camino aleatorio (cluster_walktrap(g))
24
Teoría
de
Grafos
y
R
25. ANÁLISIS DE LA RED
Detección de comunidades
Método de Girvan-Newman
Algoritmo voraz
25
Teoría
de
Grafos
y
R
26. ANÁLISIS DE LA RED
Detección de comunidades: Cliques
Un clique C, en un grafo no dirigido G = (V, E), es un
conjunto de nodos, C ⊆ V, tal que todo par de nodos distintos
son adyacentes, es decir, existe un eje que los conecta. Esto
equivale a decir que el subgrafo de G inducido por C es
un grafo completo.
En R tenemos la función largest_cliques(g) para obtener los
cliques más grandes de la red.
26
Teoría
de
Grafos
y
R
27. ANÁLISIS DE LA RED
Detección de comunidades: Cliques
Se detectan varios cliques de tamaño máximo 7.
En este subconjunto de líneas de teléfono existe una relación
completa, es decir, existen llamadas entre cada par de líneas.
27
Teoría
de
Grafos
y
R
28. ANÁLISIS DE LA RED
Detección de comunidades Resultados
1) Se detectan subredes de números de teléfonos, es decir,
comunidades y cliques de números afines entre sí.
2) Muchos números de teléfono están aislados. Esto no implica
que no realicen llamadas, sino simplemente que no
pertenecen a ninguna subred (comunidad).
3) Estas subredes (comunidades) pueden ser debidas a:
Relaciones profesionales por ser números pertenecientes a
personas vinculadas en la organización profesionalmente (p.ej.:
pertenecen al mismo departamento o a departamentos afines).
Relaciones no profesionales: personas afines que se llaman entre
sí, pero no por motivos profesionales (p. ej.: llamadas fuera del
horario laboral). 28
Teoría
de
Grafos
y
R
29. CONCLUSIONES
La teoría de grafos es una herramienta matemática muy
potente para la detección de relaciones en una organización.
Con R se dispone de las utilidades necesarias para analizar
de forma eficiente un grafo o una red.
Cualquier estructura social que se pueda representar
mediante un grafo puede ser analizada para extraer
información útil de ella.
En el proyecto estudiado se ha modelado el conjunto de
líneas telefónicas de una organización para extraer las
relaciones existentes entre los empleados.
Se detectan relaciones potencialmente no profesionales y, por
lo tanto, posibles llamadas telefónicas innecesarias para la
organización.
29
Teoría
de
Grafos
y
R
30. BIBLIOGRAFÍA
Teoría de Grafos
van Steen, Maarten (2010). “Graph Theory and Complex Networks:
An Introduction”.
Trudeau, Richard J. (1993). “Introduction to Graph Theory”.
Deo, Narsingh (1974). Graph “Theory with Application to
Engineering and Computer Science”, Prentice-Hall, Englewood Cliffs,
N.J.
R
R Core Team (2018). “R: A Language and Environment for Statistical
Computing”. R Foundation for Statistical Computing. Vienna, Austria.
URL: https://www.R-project.org
Csardi, Gabor y Nepusz, Tamas (2005). “The igraph software
package for complex network research”. InterJournal Complex
Systems, pág. 1695. URL: http://igraph.org
30
Teoría
de
Grafos
y
R