Desarrollo teórico de un ejemplo de aplicación de ... · PDF fileuna forma de...

8

Click here to load reader

Transcript of Desarrollo teórico de un ejemplo de aplicación de ... · PDF fileuna forma de...

Page 1: Desarrollo teórico de un ejemplo de aplicación de ... · PDF fileuna forma de determinar la similitud entre dos variables aleatorias multidimensionales. Se diferencia de la

Desarrollo teórico de un ejemplo de aplicación de clustering en redes sociales

Miguel Seijo Simó Universidad Carlos III

Madrid

[email protected]

Olga Mikhaylova Universidad Carlos III

Madrid

[email protected]

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.

Page 2: Desarrollo teórico de un ejemplo de aplicación de ... · PDF fileuna forma de determinar la similitud entre dos variables aleatorias multidimensionales. Se diferencia de la

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:

Page 3: Desarrollo teórico de un ejemplo de aplicación de ... · PDF fileuna forma de determinar la similitud entre dos variables aleatorias multidimensionales. Se diferencia de la

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

Page 4: Desarrollo teórico de un ejemplo de aplicación de ... · PDF fileuna forma de determinar la similitud entre dos variables aleatorias multidimensionales. Se diferencia de la

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

Page 5: Desarrollo teórico de un ejemplo de aplicación de ... · PDF fileuna forma de determinar la similitud entre dos variables aleatorias multidimensionales. Se diferencia de la

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.

Page 6: Desarrollo teórico de un ejemplo de aplicación de ... · PDF fileuna forma de determinar la similitud entre dos variables aleatorias multidimensionales. Se diferencia de la

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)

Page 7: Desarrollo teórico de un ejemplo de aplicación de ... · PDF fileuna forma de determinar la similitud entre dos variables aleatorias multidimensionales. Se diferencia de la

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

Page 8: Desarrollo teórico de un ejemplo de aplicación de ... · PDF fileuna forma de determinar la similitud entre dos variables aleatorias multidimensionales. Se diferencia de la

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