Desarrollo teórico de un ejemplo de aplicación de ... · PDF fileuna forma de...
Click here to load reader
Transcript of Desarrollo teórico de un ejemplo de aplicación de ... · PDF fileuna forma de...
Desarrollo teórico de un ejemplo de aplicación de clustering en redes sociales
Miguel Seijo Simó Universidad Carlos III
Madrid
Olga Mikhaylova Universidad Carlos III
Madrid
RESUMEN
En este trabajo desarrollamos de manera teórica una posible
aplicación del algoritmo de clustering k-means para clasificación de los contactos en una red social.
Categorías y Descripciones
I.2.6 [Computing Methodologies]: ARTIFICIAL
INTELLIGENCE: Learning: Connectionism and neural nets
Términos generales
Algoritmos.
Palabras clave
Clustering, k-means, red social.
1. INTRODUCCIÓN Las redes sociales proporcionan una nueva fuente de información
sobre sus usuarios y las relaciones entre ellos. Información que
presenta un interés creciente para empresas y otras organizaciones debido a la popularización de estas herramientas en los últimos
años.
Es tan conocido el uso comercial de esta información (para
estudios de mercado, optimización de estrategias publicitarias, etc.) como la polémica en torno a la pérdida de privacidad de los
usuarios y la posible utilización de esta información en perjuicio
de éstos.
Nuestro trabajo aborda un aspecto más lúdico de la aplicación de la minería de datos a este tipo de información: vamos a proponer
un ejemplo de “aplicación” para Facebook que clasificaría los
contactos de un usuario en función de su relación con él o ella.
Para ello hemos pensado en utilizar un algoritmo de agrupamiento o clustering, que consiste en organizar los elementos de un
conjunto de datos en grupos de individuos similares. Esta técnica
consiste en modelar los elementos del conjunto de datos como
vectores de atributos, y la medida de similitud de dos individuos como función de la distancia entre estos vectores. El resultado es
un “mapa” donde los elementos forman grupos diferenciados,
situándose más cerca los más similares y alejándose unos de otros
los que menos se asemejan.
2. CONCEPTOS
2.1 Minería de datos
La minería de datos consiste en la extracción de información
“oculta” y potencialmente útil de un conjunto de datos. Los
algoritmos de minería de datos se clasifican en supervisados o
predictivos, que predicen datos desconocidos a priori a partir de otros conocidos, y no supervisados, que descubren patrones y
tendencias en los datos.
2.1.1 Objetivos La minería de datos puede tener como objetivo realizar un
trabajo descriptivo o predictivo sobre el objeto de los datos a los
que se aplica.
Descripción: Al analizar los datos, se hallan relaciones entre
las variables, reglas, etc.
Predicción: Una vez sepamos las relaciones entre variables,
podemos estimar otras variables en principio desconocidas.
En nuestro caso, el análisis de los datos tiene un fin
descriptivo, ya que tratamos de hallar relaciones entre los usuarios
y no de predecir variables de los mismos.
2.1.2 Técnicas de minería de datos Las técnicas más importantes son:
Redes neuronales: Son un paradigma de
aprendizaje y procesamiento automático inspirado en la forma en que funciona el sistema nervioso de
los animales.
Figura 1. Ilustración de red neuronal.
Regresión lineal: Es la más utilizada para formar
relaciones entre datos. Rápida y eficaz pero
insuficiente en espacios multidimensionales donde puedan relacionarse más de 2 variables.
Figura 2. Regresión lineal
Árboles de decisión: Un árbol de decisión tiene
unas entradas las cuales pueden ser un objeto o una
situación descrita por medio de un conjunto de atributos y a partir de esto devuelve una respuesta
la cual en últimas es una decisión que es tomada a
partir de las entradas.
Figura 3. Arbol de decisión
Modelos estadísticos.
Agrupamiento o Clustering: Es un procedimiento
de agrupación de una serie de vectores según criterios habitualmente de distancia; se tratará de
disponer los vectores de entrada de forma que estén
más cercanos aquellos que tengan características
comunes.
Figura 4. Clustering
2.2 Agrupamiento o Clustering Esta técnica consiste en organizar los elementos de un conjunto de datos en grupos según criterios de similitud.
Es un procedimiento de aprendizaje no supervisado, ya que
encuentra patrones y en los datos – la información que extrae no
se basa en resultados previos.
Existen diferentes algoritmos de clustering; los más comunes son
Algoritmos jerárquicos: crean “clusters” sucesivos a
partir de los ya establecidos. Pueden ser aglomerativos
(inicialmente cada elemento forma un cluster para ir
convergiendo en grupos más numerosos) o divisivos (comienzan con todo el conjunto de datos y lo van
subdividiendo sucesivamente en grupos más pequeños).
Algoritmos particionales: estableces todos los clusters
simultáneamente.
Algoritmos basados en densidad: diseñados para
descubrir clusters de formas arbitrarias – el clúster en
este caso se defide como una región con una mayor densidad de elementos.
Muchos algoritmos de clustering exigen que se especifique a
priori el número de grupos a establecer. No siempre es posible
conocer de antemano el número adecuado de clusters, por lo que
existen métodos para calcularlo que no vamos a estudiar aquí.
Computacionalmente esto se traduce en el modelado de los
elementos como vectores de n dimesiones y la “similitud” se mide
normalmente como una función de la distancia entre estos
vectores.
Las funciones de distancia que se utilizan habitualmente son
Distancia euclídea, más comúnmente utilizada:
Distancia Manhattan (distancia en norma 1)
Distancia de norma infinita
Distancia de Mahalanobis: Su utilidad radica en que es
una forma de determinar la similitud entre dos variables
aleatorias multidimensionales. Se diferencia de la distancia euclídea en que tiene en cuenta la correlación
entre las variables aleatorias.
Formalmente, la distancia de Mahalanobis entre dos
variables aleatorias con la misma distribución de
probabilidad y con matriz de covarianza Σ se
define como:
El ángulo entre dos vectores se puede utilizar como
medida de la distancia para datos multidimensionales.
Distancia Hamming: mide el mínimo número de
sustituciones necesarias para transformar un elemento
en otro.
Algoritmos particionales
K-means es el algoritmo particional más importante y es el que
vamos a usar. Se explica en el siguiente apartado.
Otros algoritmos derivados son el fuzzy c-means, basado en el
concepto de lógica difusa (fuzzy logic), en el que las fronteras entre los conjuntos son difusas – los elementos presentan un
“grado de pertenencia” a un conjunto en vez de formar parte de
uno exclusivamente; el algoritmo QT (quality threshold), que no
requiere especificar el número de clusters a priori y siempre devuelve el mismo resultado.
2.3 K-Means K-means es un algoritmo usado en la minería de datos para
realizar clustering, es decir, agrupar conjuntos de datos. Es uno de los algoritmos más usados debido a su sencilla implementación.
Se basa en la idea intuitiva de representar los conjuntos de datos
en el espacio y agruparlos según sus distancias, mediante el
cálculo recursivo de los centroides de los grupos.
Ventajas:
Sencilla implementación
Idea intuitiva
Inconvenientes:
Algoritmo recursivo, cuyo número de iteraciones crece
según el número de elementos y no es necesariamente
convergente.
El resultado depende de la elección de los centroides
iniciales (calculados aleatoriamente).
El número de grupos a formar debe ser definido a priori.
2.3.1 Algoritmo K-Means La complejidad del algoritmo es O(ndk+1 log n), siendo n el
número de elementos, d la dimensión del espacio y k el número de
clusters.
El algoritmo K-means puede recoger los datos por lotes o en línea.
En nuestro ejemplo de aplicación, todos los datos nos vienen
dados a priori,por lo tanto usaremos la versión por lotes del
algoritmo,en la cual los centroides iniciales se eligen aleatoriamente.
1 - Datos iniciales: Para realizar el algoritmo de K-means,
necesitamos a priori:
Un conjunto de datos (matriz “z” nxN) que contenga los datos de los N objetos en sus n dimensiones.
El número de grupos “k” en los que deseamos agrupar
los objetos.
Un centroide para cada grupo (matriz de centroides “v”
nxk), que será el representante de ese cluster. En este
caso elegimos los centroides aleatoriamente.
Figura 5. Conjunto de datos representados en el espacio
(cuadrados grises) y “k” centroides elegidos aleatoriamente
(círculos de colores).
2 - División: La división de los elementos en cada uno de los
clusters se determina según la distancia de los mismos a cada uno de los centroides (el elemento pertenecerá al grupo cuyo centroide
esté a menor distancia). Para ello, es necesario calcular las
distancias de cada uno de los N puntos a los k centroides,
formando la matriz D de dimensiones kxN.
Posteriormente se asigna cada punto al grupo cuyo centroide está
a menor distancia.
Figura 6. Conjunto de datos divididos en clusters (en este caso
k=3)
3 - Cálculo del nuevo centroide: Una vez establecidos los grupos, se calcula el centroide de cada grupo según los puntos agrupados
y se actualiza en la matriz de centroides “v”.
Siendo S los elementos de cada conjunto, Ns el número de
elementos y zi los vectores de elementos. Es decir, el centroide
será la media aritmética de los S elementos de cada grupo.
Figura 7. Cálculo iterativo de nuevos centroides
Los pasos 2 y 3 son recursivos hasta que que alcanza la condición
de convergencia.
Algunas posibles condiciones de convergencia son: Número de
iteraciones que se fija a priori, cuando los centroides sufren cambios por debajo de un umbral o los objetos no cambian de
grupo.
3. REDES SOCIALES
Las redes sociales son estructuras compuestas de grupos de
personas, conectadas entre si por uno o varios tipos de relaciones,
tales como amistad, parentesco, intereses comunes o que
comparten conocimientos.
El término “red social” es acuñado por los antropólogos ingleses
John Barnes y Elizabeth Bott, ya que, para ellos resultaba
imprescindible cosiderar lazos externos a los famliares, residenciales o de pertenencia a algún grupo social.
El análisis de redes sociales es una metodología emergente en
campos como la sociología o la economía. Se ha utilizado en
epidemiología para ayudar a entender cómo los patrones de contacto humano favorecen o impiden la propagación de
enfermedades como el VIH en una población. La teoría de
Difusión de innovaciones explora las redes sociales y su rol en la
influencia de la difusión de nuevas ideas y prácticas.
El análisis de redes sociales también puede ser una herramienta
eficaz para la vigilancia masiva - por ejemplo, el Total Information Awareness
(http://en.wikipedia.org/wiki/Information_Awareness_Office)
realizó una investigación a fondo sobre las estrategias para
analizar las redes sociales para determinar si los ciudadanos de EE.UU. eran o no amenazas políticas.
Esta metodología aplica la teoría de grafos para estudiar las
estructuras sociales, en las que los individuos se modelan como nodos y las relaciones entre ellos como enlaces.
En su forma más simple, una red social es un mapa de todos los
lazos relevantes entre todos los nodos estudiados. Se habla en este
caso de redes "sociocéntricas" o "completas". Otra opción es identificar la red que envuelve a una persona (en los diferentes
contextos sociales en los que interactúa); en este caso se habla de
"red personal".
Redes sociales en internet
Los fines que han motivado la creación de las llamadas redes sociales son varios, principalmente, es el diseñar un lugar de
interaccion virtual, en el que millones de personas alrededor del
mundo se concentran con diversos intereses en común.
El software germinal de las redes sociales parte de la teoría de los Seis grados de separación, según la cual cualquier persona del
planeta está conectada con cualquier otra a través de, como
máximo, seis enlaces.
El concepto está basado en la idea de que el número de conocidos
crece exponencialmente con el número de enlaces en la cadena, y
sólo un pequeño número de enlaces son necesarios para que el
conjunto de conocidos se convierta en la población humana
entera.
El origen de las redes sociales se remonta, al menos, a 1995,
cuando Randy Conrads crea el sitio web classmates.com. Con esta red social se pretende que la gente pueda recuperar o mantener el
contacto con antiguos compañeros del colegio, instituto,
universidad, etc.
En 2002 comienzan a aparecer sitios web promocionando las
redes de círculos de amigos en línea cuando el término se
empleaba para describir las relaciones en las comunidades virtuales, y se hizo popular en 2003 con la llegada de sitios tales
como MySpace o Xing.
Actualmente hay más de 200 sitios de redes sociales, siendo las más populares Facebook, a nivel mundial, y Tuenti en España.
3.1 Facebook
Facebook es un servicio de redes sociales que lleva operativo
desde Febrero de 2004, fecha desde la cual ha dado servicio a más de 500 millones de usuarios activos. Los usuarios pueden crear su
perfil personal, unirse a grupos con intereses comunes, añadir a
otros usuarios como amigos, intercambiar mensajes con ellos
además de publicar información personal y fotografías, lo cual convierte a este servicio en una fuente importante de información
que puede ser procesada por aplicaciones inteligentes y usada con
distintos fines.
Algunos ejemplos de aplicaciones inteligentes que hacen uso de estos datos son la publicidad contextual, que muestra anuncios a
medida en función de los gustos y datos personales del usuario, o
las distintas aplicaciones, que utilizan los datos del usuario para
ofrecer distintos servicios.
Un tipo de aplicaciones inteligentes que utilizan minería de datos
sobre los datos del perfil para obtener resultados, son las que
analizan los contactos del usuario para hallar gráficos o extraer
conclusiones sobre sus relaciones sociales y los grupos de personas con los que se relaciona.
3.1.1 Ejemplos de aplicaciones inteligentes de
minería de datos en Facebook.
Friend Wheel:
Esta aplicación utiliza las relaciones de amistad (contactos y
contactos de tus contactos) para establecer un gráfico circular donde se representan las relaciones entre tus contactos.
Según seleccionamos unos contactos u otros, nos resalta las
relaciones de los mismos con el resto de nuestros contactos.
Figura 8. Resultado de la aplicación “FriendWheel”
Social Graph:
Esta aplicación también utiliza las relaciones de amistad (contactos y contactos de tus contactos) para establecer un gráfico
donde se representan las relaciones entre tus contactos.
Se diferencia de la anterior en que además de representar las
relaciones entre contactos, establece grupos separados entre ellos (clusters), pudiéndose observar a simple vista los amigos que se
conocen entre ellos y los grupos de amigos del usuario.
Esta aplicación se parece más al modelo que nosotros planteamos,
sin embargo el nuestro sería más completo ya que no solo tiene en cuenta las relaciones de amistad ente los contactos, sino también
los gustos y datos del perfil.
Figura 9. Resultado de la aplicación “Social Graph”
Profile Stats:
Otra aplicación interesante de la misma naturaleza, aunque con
distinta funcionalidad es la de Profile Stats, que da información
sobre tus estados más comentados.
Social Statistics:
Esta aplicación calcula tus mayores fans, teniendo en cuenta las interacciones que tus contactos han hecho en tu muro.
También calcula la compatibilidad con ellos.
4. IMPLEMENTACIÓN Vamos a desarrollar a nivel teórico una aplicación que, partiendo
de la información de un perfil de Facebook, cree un gráfico modelando las relaciones entre el usuario y sus contactos.
4.1.1 Base teórica Para ello, vamos a utilizar una técnica de clustering basada en el
algoritmo k-means.
Cada contacto, incluido el propio usuario, se modela como un
vector de 7 dimensiones:
1.- Porcentaje de amigos en común (
)1
2.- Porcentaje de páginas en común (
)
3.- Porcentaje de centros de estudio/trabajo en común (se pondera
igual que arriba)
4.- ¿Es familia? (0=no, 100=si)
5.- Situación geográfica (función de la distancia, 0 si misma
ciudad)
6.- Porcentaje de fotos en las que coinciden
(
)
7.- Frecuencia con la que interactúan (publicaciones, comentarios,
“me gusta” por semana; ponderado entre 0 y 100)
De esta manera, el vector que representa al propio usuario valdría
U = (100, 100, 100, 100, 0, 100, 100).
Los siguientes vectores ejemplo pueden representar a algunos de
sus contactos:
Pablo, compañero de clase = (30, 2, 50, 0, 0, 8, 0)
Ana, su hermana = (15, 4, 0, 100, 36, 40, 15)
Carlos, su mejor amigo = (80, 60, 10, 0, 0, 70, 86)
Estos amigos serían procesados mediante el algoritmo de K-Means para obtener clusters (se agruparían los amigos según
relaciones familiares, cercanía geográfica, gustos similares, etc.)
El usuario se situaría en el centro del mapa y los contactos se
situarían a su alrededor en circunferencias concéntricas (cuyo centro es el usuario), con radio proporcional a la distancia
euclídea del vector de cada contacto, estando los contactos
distribuidos además según los clusters. De esta manera no solo se
representarían los grupos, sino también analizaría la relación de cada contacto al usuario.
1 Ponderamos cada elemento del vector para que el peso de esa
variable no varíe en función del número de amigos/páginas de cada usuario de quiera utilizar la aplicación.
4.1.2 Implementación en Matlab Para simplificar, hemos hecho el vector con las 30 muestras de
contactos un vector aleatorio y hemos hecho la representación
gráfica sobre un solo eje, haciendo la media aritmética de las 7 dimensiones.
Código Matlab:
% Generamos el vector con los individuos, en este caso por
sencillez lo % hacemos aleatorio X = [randn(30,7)+ones(30,7); randn(30,7)-ones(30,7)]; %Calculamos los clusters con K-Means [idx,ctrs] = kmeans(X,3); % Representamos los puntos con Ãndices pertenecientes al
primer cluster % (idx==1) con coordenada x igual a la media aritmética de las
7 % dimensiones plot((X(idx==1,1)+X(idx==1,2)+X(idx==1,3)+X(idx==1,4)+X(idx==1,5)+X(idx==1,6)+X(idx==1,7))/7,0,'r.','MarkerSize',12)
hold on
% Representamos los puntos con Ãndices pertenecientes al
segundo cluster % (idx==1) con coordenada x igual a la media aritmética de las
7 % dimensiones plot((X(idx==2,1)+X(idx==2,2)+X(idx==2,3)+X(idx==2,4)+X(id
x==2,5)+X(idx==2,6)+X(idx==2,7))/7,0,'b.','MarkerSize',12)
% Representamos los puntos con Ãndices pertenecientes al tercer
cluster % (idx==1) con coordenada x igual a la media aritmética de las
7 % dimensiones plot((X(idx==3,1)+X(idx==3,2)+X(idx==3,3)+X(idx==3,4)+X(idx==3,5)+X(idx==3,6)+X(idx==3,7))/7,0,'g.','MarkerSize',12) % Representamos los centroides plot((ctrs(:,1)+ctrs(:,2)+ctrs(:,3)+ctrs(:,4)+ctrs(:,5)+ctrs(:,6)+ctrs(:
,7))/7,0,'kx','MarkerSize',12,'LineWidth',2)
plot((ctrs(:,1)+ctrs(:,2)+ctrs(:,3)+ctrs(:,4)+ctrs(:,5)+ctrs(:,6)+ctrs(:
,7))/7,0,'ko','MarkerSize',12,'LineWidth',2)
Representación gráfica:
Figura 10. Representación en Matlab de los 30 individuos
divididos en 3 clusters.
4.1.3 Implementación con Weka
4.1.3.1 Generación de datos Primero generamos los datos, limitando los atributos a 7 y
aplicando el filtro de Normalize con valor 100 para normalizar los datos entre 0 y 100 (ya que en nuestra implementación hemos
usado porcentajes).
Figura 11. Datos con Weka
4.1.3.2 Clustering Para realizar el clustering, accedemos a la pestaña “Cluster” y seleccionamos “SimpleKMeans” con numClusters igual a 3 (para
crear 3 grupos) y máx iterations igual a 500 como condición de
convergencia.
Como función de distancia, elegimos Euclidean distance.
Figura 12. Configuración de SimpleKMeans
Tras presionar Start, vemos los resultados del algoritmo en la siguiente figura:
Figura 13. Resultados del clustering
4.1.3.3 Representación gráfica de los conjuntos En la imagen a continuación podemos observar la representación
de los individuos y los grupos generados.
Figura 14. Representación gráfica de los conjuntos
5. REFERENCIAS [1] Transparencias de la asignatura Inteligencia en redes de
comunicaciones. Universidad Carlos III de Madrid.
[2] Agrupamiento utilizando k-means clustering
http://omarsanchez.net/kmeans.aspx
[3] El algoritmo de k-medias
http://lc.fie.umich.mx/~calderon/estadistica/k_medias.html
[4] Wikipedia - k-means clustering. http://en.wikipedia.org/wiki/K-means_clustering
[5] Facebook - http://www.facebook.com/
[6] Friend Wheel - http://www.thomas-fletcher.com/friendwheel/
[7] K-Means Matlab -
http://www.mathworks.com/help/toolbox/stats/kmeans.html
[8] Clustering: An Introduction -
http://home.dei.polimi.it/matteucc/Clustering/tutorial_html/
[9] Wikipedia – Minería de Datos
http://es.wikipedia.org/wiki/Miner%C3%ADa_de_datos
[10] Wikipedia – Clustering
http://en.wikipedia.org/wiki/Clustering_algorithm
[11] Wikipedia – Redes Sociales
http://es.wikipedia.org/wiki/Red_social