Documente Academic
Documente Profesional
Documente Cultură
SUPERIOR DE MISANTLA
DOCENTE
RESUMEN
El clustering es un proceso de descubrimiento en datos y puede ser usado
para agrupar los objetos de una base de datos dentro de subclases tiles lo cual
servira de base para otras tcnicas de anlisis de datos.
En este trabajo se implementa un algoritmo de agrupamiento para un
conjunto de datos basado en un modelo de hipergrafo. El hipergrafo es construido
a partir de un grafo de triangulacin Delaunay de los datos de entrada, el cual
permite representar el grado de proximidad de los puntos que conforman los
tringulos. Despus se particiona el hipergrafo de manera que el peso total de las
hiperaristas sea minimizado. Por ltimo, se agrupan los puntos que formen parte
de las mismas hiperaristas para obtener como resultado los cluster finales
obtenidos de la particin.
A continuacin se presenta el desarrollo del algoritmo de agrupamiento
basado en hipergrafos, el cual se implement en tres diferentes conjuntos de
datos. Se requiri que la distribucin espacial de los datos se encontrara de
manera dispersa, densa y combinada, para observar el comportamiento del
algoritmo. Y poder comprobar si la tcnica empleada para la representacin del
grado de proximidad de los datos fue prctica.
INTRODUCCIN
La agrupacin automtica de datos que comparte caractersticas similares
sin conocer a qu pertenecen es llamada clustering [1]. El clustering o
agrupamiento de datos se utiliza para explicar las caractersticas de la distribucin
de los datos. Por ejemplo, en muchos negocios se puede aplicar clustering para
determinar grupos de diferentes clientes y permitir a las empresas dar soluciones
personalizadas o predecir patrones de compra basados en la agrupacin a la que
pertenecen.
Existen diversos algoritmos para la agrupacin de datos, uno de ellos es el
algoritmo de agrupamiento basado en hipergrafos. El cual usa un hipergrafo para
representar un conjunto de datos, en donde los vrtices representan los puntos de
datos y las hiperaristas ponderadas representan las similitudes entre los puntos
[1].
Un hipergrafo es un grafo en el cual una arista puede conectar ms de dos
vrtices. Es decir, una arista (hiperarista) es un subconjunto de vrtices [2]. Un
hipergrafo provee ms beneficios que un grafo sobre el modelado de un conjunto
de datos. Una de las principales ventajas es que un modelo de hipergrafo permite
representar efectivamente relaciones
En este trabajo implementamos un algoritmo de agrupamiento que usa un
hipergrafo para representar un conjunto de datos espacial. El hipergrafo es
inicialmente construido de un grafo de triangulacin Delaunay del conjunto de
puntos de datos. Las ventajas de generar hiperaristas ponderadas usando el grafo
de triangulacin Delaunay es que los puntos de datos que estn muy separados
podran ser completamente desconectados importantes entre puntos de datos en
una estructura de datos poco densa. [3] en el hipergrafo [1]. Y otra es que en
regiones densas, las secciones de puntos de datos estn estrechamente
definidas, por lo tanto las hiperaristas ponderadas tienden a ser ms grandes [1].
En regiones dispersas, las secciones de puntos de datos estas definidas ms
ampliamente y aqu el peso de las hiperaristas tiende a ser ms pequea.
Despus de obtener las hiperaristas con mayor peso, se agrupan aquellas que
tengan similitudes entre ellas para obtener los cluster finales.
MATERIALES Y MTODOS
Para el desarrollo e implementacin del algoritmo de agrupamiento basado
en hipergrafos se utiliz una computadora porttil con procesador AMD visin E2,
memoria RAM de 6GB, bajo la plataforma del sistema operativo Windows 7.
Se utiliz el software MATLAB R2012b para la codificacin del algoritmo, y
las bases de datos utilizadas para analizar su comportamiento fueron las
siguientes:
i.
Base de datos Iris: La cual consta de 150 instancias con valores de tres
clases diferentes de la flor Iris (setosa, versicolor y virginica). Los valores
corresponden a cuatro atributos de la flor: longitud y anchura para el ptalo
y el spalo. Para la clasificacin de esta base de datos con el algoritmo se
tomaron en cuenta los atributos longitud del ptalo y del spalo, para formar
una matriz de 150 filas y 2 columnas.
Base de datos apta: Se gener una matriz nombrada baseC, con 100 filas y
2 columnas de valores aleatorios en MATLAB, en donde se busc que los
datos formaran agrupaciones visiblemente separadas.
Base de datos no apta: En MATLAB se cre una matriz nombrada baseD,
con 160 filas y 2 columnas de valores aleatorios, en donde los datos no
formaran agrupaciones visiblemente separadas.
ii.
iii.
V.
METODOLOGA.
Para obtener los resultados que se muestran en la prxima seccin, se
siguieron los siguientes pasos:
1. Se abri el archivo Dt.m con el programa MATLAB. En la primera lnea
del cdigo se escribi el nombre del archivo iris.txt, este archivo contena
los datos que se deseaban agrupar. En la segunda lnea se escribi el
nombre de la matriz que almacen los datos de la BD, la cual se llam igual
que el del archivo. Ejemplo:
1ra lnea: load iris.txt
RESULTADOS
Los resultados obtenidos para la base de datos Iris son los que se muestra de la
Figura 1 a la 3, y la Tabla 1:
Obtenidos
50
50
50
35
79
4
0
150
4
122
51
49
100
Obtenidos
49
41
90
Esperados
Obtenidos
77
75
4
106
4
3
4
160
4
117
DISCUSIN
En la Figura 1 se observa la clasificacin real de los tres tipos de flores de
la base de datos iris: setosa (color azul), versicolor (color verde) y virginica (color
rojo). En la Figura 2 se muestra lo que se esperaba con base a la distribucin de
los datos observada, es decir, que el algoritmo formara clusters de los grupos de
puntos donde se exista ms cohesin. El resultado que gener el algoritmo se
observ en la Figura 3, donde se formaron 4 clusters, en donde slo el cluster de
color rojo correspondi a la agrupacin esperada. El nmero de puntos que
formaron parte de cada cluster se observa en la Tabla 1. El nmero total de
puntos que formaron parte de los clusters fue de 122, esto nos indic que el
algoritmo de agrupamiento basado en hipergrafos no tom en cuenta 28 puntos
para que formarn parte de algn cluster. La razn de que estos puntos no se
tomarn en cuenta fue debido a que su proximidad en comparacin con los puntos
que s formaron parte de un cluster era menor, o porque el valor de algn punto se
repeta ms de una vez.
En la Figura 4 se graficaron los datos de una base de datos generada de
manera aleatoria. En la Figura 5 se mostr los clusters que se esperaban fueran
agrupados por el algoritmo, basndose en que visiblemente se formaron dos
grupos, y la distancia entre los puntos de cada grupo se vea constante. En la
Figura 6 se muestran los dos clusters que gener el algoritmo, los cuales
corresponden a los que se esperaban. En la Tabla 2 se observ el nmero de
puntos que formaron cada cluster; que en total fueron 90 de 100 puntos, los que el
algoritmo consider en base al peso de las hiperaristas formadas por los puntos.
Por ltimo, en la Figura 7 se muestra otra base de datos generada de
manera aleatoria, en donde la distribucin de los datos en algunas regiones se
mostraba ms densa y en otras ms dispersa. Con base en lo observado, en la
Figura 8 se muestran los clusters que se esperaban fueran identificados por el
algoritmo. Y los clusters que obtuvo el algoritmo de agrupamiento basado en
hipergrafos se muestran en la Figura 9, los cuales no coinciden con los
esperados, debido a que la distancia entre los puntos es muy variable. El nmero
de puntos que formaron parte de cada cluster se muestra en la Tabla 3.
CONCLUSIN
De los resultados obtenidos por el algoritmo de agrupamiento basado en
hipergrafos con las tres bases de datos, se concluye que el comportamiento del
algoritmo depender de la distribucin de los datos. Es decir, si los datos
mantienen una distancia similar entre ellos, el peso de sus hiperaristas ser mayor
en comparacin con aquellos en que su distancia sea ms variable, por lo que el
peso de las hiperaristas ser menor. Lo cual influye cuando se realiza la
eliminacin de stas, ya que slo se considerarn aquellas con mayor peso, que
reflejan que existe mayor grado de proximidad entre los datos.
Tambin se observ que si en conjunto de datos existen puntos que estn
demasiado alejados de aquellos que se encuentren ms densos, no se tomarn
en cuenta. Debido a que la distancia con otro punto es ms grande, el peso de la
hiperarista es menor, lo cual resultar en que no sea tomado en cuenta para que
forme parte de un cluster. Es decir, que esos puntos sern considerados como
ruido,
por
lo
tanto
no
se
incluirn.
REFERENCIAS
[1]. J.S Cherng and M.J. Lo, A Hypergraph Based Clustering Algorithm fos Spatial
Data Sets. IEEE 2001.
[2]. P. Purkait, T-J. Chin H. Ackermann and D. Suter, Clustering with
Hypergraphs: The Case for Large Hyperedges..
[3]. Eui-Hong Han, G. Karypis and V. Kumar, Hypergraph Based Clustering in
High-Dimensional Data Sets: A Summary of Results. IEEE Computer Society
Technical Committee on Data Engineering, 1997.
ANEXOS
plot(PET(valor_unic(f2)),PET(valor_unic(f2),2),'vr');
hold on;
end
if(c2==2000)
plot(PET(valor_unic(f2)),PET(valor_unic(f2),2),'db');
hold on;
end
if(c2==3000)
plot(PET(valor_unic(f2)),PET(valor_unic(f2),2),'*g');
hold on;
end
if(c2==4000)
plot(PET(valor_unic(f2)),PET(valor_unic(f2),2),'sm');
hold on;
end
if(c2==5000)
plot(PET(valor_unic(f2)),PET(valor_unic(f2),2),'+k');
hold on;
end
if(c2==6000)
plot(PET(valor_unic(f2)),PET(valor_unic(f2),2),'hc');
hold on;
end
end
end
Cdigo bD.m:
function ind_encontrado= bD(numero,MP_A,ind_encontrado, ind_relacionado)
%Parmetros de entrada
%numero -> valor con el cual se comenzar a buscar sus relaciones
%MP_A -> matriz que contiene todos los puntos que ha resultado de la
eliminacion
%ind_encontrado -> contendr la lista de los nmeros que se determina
%se encuentren en un mismo grupo
%ind_relacionado -> guardar la lista de los nmeros que se vayan
%relacionando entre s.
%SI LA LISTA DE LOS INDICES RELACIONADOS SE ENCUENTRA VACA ES QUE YA
%NO SE ENCONTRARON MAS
if(isempty(ind_relacionado) == 0)
%%DE LO CONTRARIO TODAVIA SE NECESITA VERIFICAR CON QUE OTROS
NUMEROS SE ESTA RELACIONADO
%%SE OBTIENE LAS POSICIONES DENTRO DE LA MATRIZ DONDE SE ENCUENTRE
EL
%%NUMEROQUE SE COMENZARA A RELACIONAR
[fila,col]=find(MP_A==numero);
no_filas=length(fila);
%OBTENER EL TAMAO DEL VECTOR FILA PARA
%%COMENZAR A BUSCAR LOS OTROS NUMERO QUE TAMBIEN SE ENCUENTRAN
DENTRO
%%DE LA MISMA FILA.
for r=1:no_filas
%%ASIGNAR INDICE PARA NUMERO DE FILA Y COLUMNA
num_col=col(r); num_fila=fila(r);
switch num_col
case 1
col1=2; col2=3;
case 2
col1=1; col2=3;
case 3
col1=1; col2=2;
end
%%SE AGREGAN LOS OTROS NUMEROS QUE ESTAN EN LA MISMA FILA QUE EL
%%NUMERO INICIAL
%% SE VERIFICA QUE LOS NUMEROS QUE SE VAYAN OBTENIENDO NO SE HAYAN
ANALIZADO AN
if(isempty(find(ind_encontrado==MP_A(num_fila,col1))))
ind_relacionado=[ind_relacionado ; MP_A(num_fila,col1)];
end
if (isempty(find(ind_encontrado==MP_A(num_fila,col2))))
ind_relacionado=[ind_relacionado ; MP_A(num_fila,col2)];
end
end
%%SE ORDENAR EL VALOR DE LOS INDICES QUE SE OBTIENEN EN LA FILA
PARA
%%PODER ELIMINAR LAS FILAS DONDE YA SE HA BUSCADO
fila=sort(fila);
for elim=length(fila):-1:1
MP_A(fila(elim), :)=[];
end
%SE ASOCIA EL NUMERO QUE YA SE RECORRIO A IND_ENCONTRADO PARA FORMAR
LA LISTA
ind_encontrado=[ind_encontrado ; numero];
%%SI SE ENCUENTRAN NUMERO REPETIDOS SE ELIMINAN
ind_relacionado = unique(ind_relacionado);
%%TAMBIEN SE BUSCA QUE EL NUMERO QUE SE ACABA DE ANALIZAR SE ELIMINE
DE
%%LA LISTA DE RELACIONADOS PARA NO VOLVER A REALIZAR LA MISMA
BUSQUEDA
I=find(ind_relacionado==numero);
for ciclo=length(I):-1:1
ind_relacionado(I(ciclo))=[];
end
%% SE VERIFICA SI LA LISTA DE LOS INDICES DE PUNTOS RELACIONADOS ESTA
VACA
if isempty(ind_relacionado) == 0
%%SE ORDENA LA LISTA Y SE TOMA EL PRIMER NUMERO PARA COMENZAR A
BUSCAR
%%LOS NUMEROS RELACIONADOS A EL.
ind_relacionado=sort(ind_relacionado);
numero=ind_relacionado(1); %%SE TOMA EL SIGUIENTE NUMERO DE LA
LISTA
auxiliar = bD(numero,MP_A,ind_encontrado, ind_relacionado);
ind_encontrado=unique([ind_encontrado ; auxiliar ]);
else
variable = 1;
end
end