Вы находитесь на странице: 1из 6

1

1
Algoritmo de
Agrupamiento
Fuzzy C-Means
GABRIEL JAIME CORREA HENAO
UNIVERSIDAD NACIONAL DE COLOMBIA
SEDE MEDELLN
F A C U L T A D D E M I N A S
Ingeniera de Sistemas
Ingeniera de Control
Octubre 31 de 2003
Agradecimientos
GUSTAVO PREZ HOYOS. Ph.D.
UNAL- Bogot
2
Agrupamientos
Hasta la fecha, hemos visto la
tcnica de agrupamiento (clustering)
difuso
El objetivo del anlisis por
agrupamiento, es la clasificacin de
los objetos de acuerdo a
similaridades entre ellos, y la
organizacin de los datos en grupos.
3
C-Particin
Dado un Universo de Discurso X, se
define una c-particin como una
coleccin de c Conjuntos Difusos,
definidos sobre X, y con funciones de
pertenencia
u1(x), u2(x), ..., uc(x)
4
Tcnicas de Agrupamiento
(Clustering)
Agrupamiento clsico; dendrogramas
Agrupamiento difuso; particiones
difusas
Algoritmos de agrupamiento difuso
Construccin de modelos difusos con
tcnicas de agrupamiento
5
Agrupamiento clsico
Existe un conjunto de n Individuos: I={I
1
,I
2
,...,I
n
}
Cada individuo se puede caracterizar por un conjunto de p
Caractersticas (features) C={c
1
,c
2
,...,c
p
} cuantificables.
La caracterstica i del individuo j la denotamos por x
ij
La matriz X (p*n) describe la poblacin:
[ ]
n
pn p p
n
n
x x x
x x x
x x x
x x x
X L
L
M O M M
L
L
2 1
2 1
2 22 21
1 12 11
=

=
Se desea definir c (c<n) grupos (subconjuntos) de los individuos
Ningn individuo puede pertenecer a dos grupos
No debe haber grupos vacos
Dos individuos de un mismo grupo deben ser similares
Dos individuos de grupos diferentes deben ser no similares
6
Agrupamiento Clsico
Ejemplo: 5 Individuos con 2 caractersticas cada uno:
(1,1),(1,2),(3,3),(3,4),(4,3)

=
3 4 3 2 1
4 3 3 1 1
X
Cmo decidir si dos individuos son o no similares?
Cuntos grupos deben definirse?

=
2 1
1 1
1
X

=
3 4 3
4 3 3
2
X
2
7
Distancia entre vectores
Funciones de distancia:
Una funcin d que opere sobre dos vectores x
i
,x
j
de igual orden
es una funcin de distancia si satisface:
( )
p
k j i j k k i j i
i j j i
j i j i
p
j i j i
p p
j i
R x x x x x d x x d x x d d
x x d x x d c
x x x x d b
R x x x x d a
R R R x x d
+
=
= =


, , ) , ( ) , ( ) , ( : )
) , ( ) , ( : )
0 ) , ( : )
, 0 ) , ( : )
: ) , (

=
) , ( ) , (
) , ( ) , (
1 1 1
n n n n
n
x x d x x d
x x d x x d
D
L
M O M
L El conjunto de medidas puede
representarse por la Matriz de
Distancias D (diagonal de ceros)
8
Distancia entre vectores - Ejemplos
( )
2
1
1
2
2
) , (

=

=
p
k
kj ki j i
x x x x d

=

=
p
k
kj ki j i
x x x x d
1
1
) , (
{ }
kj ki
p k
j i
x x x x d =
=

, , 1
sup ) , (
K
Euclidiana :
(Norma L
2
)
Norma L
1
:
Norma L

:
( )
r p
k
r
kj ki j i r
x x x x d
1
1
) , (

=

=
( ) ( )
j i
T
j i j i
x x M x x x x D =
1
) , (
9
Distancia entre grupos
Sean I={I
1
,I
2
,...,I
n1
} y J={J
1
,J
2
,...,J
n2
} dos grupos. Los individuos
se caracterizan por las medidas C={c
1
,c
2
,...,c
p
}. Los respectivos
conjuntos de caractersticas son X={x
1
,x
2
,...,x
n1
} y Y={y
1
,y
2
,...,y
n2
}
Podemos medir la distancia entre I y J usando:
{ } ) , ( ) , (
2
1
,..., 1
,..., 1
1 j i
n j
n i
y x d min J I D
=
=
=
{ } ) , ( ) , (
2
1
,..., 1
,..., 1
2 j i
n j
n i
y x d max J I D
=
=
=

= =
=
2 1
1 1 2 1
3
) , (
) , (
n
j
n
i
j i
n n
y x d
J I D
Distancia del vecino ms cercano :
Distancia del vecino ms lejano :
Distancia promedio :

= =
= = =
2 1
1 1 1 1
4
1 1
) , ( ) , (
n
j
j
n
i
i
y
n
y x
n
x y x d J I D
Distancia entre centroides :
10
Distancia entre grupos
Distancia del
vecino ms
cercano
Distancia del
vecino ms
lejano
Distancia
promedio :
Distancia entre
centroides
11
Algoritmos de agrupamiento
A partir de conjunto de n Individuos: I={I
1
,I
2
,...,I
n
} se pueden
definir por lo menos dos particiones extremas
P
1
: {{I
1
},{I
2
},...,{I
n
}}
P
2
: {I
1
,I
2
,...,I
n
}
P
1
: {{(1,1)},{(1,2)},
{(3,3)},{(3,4)},{(4,3)}}
P
2
: {(1,1),(1,2),(3,3),
(3,4),(4,3)}
Algoritmos aglomerativos
Algoritmos divisivos
12
Un algoritmo aglomerativo
Combinar paso a paso los grupos cuya distancia sea la menor
Ej: Sea el conjunto de caractersticas X={0.4,1.0,0.5,1.4,1.6,0.1}
Algoritmo (distancia del
vecino ms cercano)

=
0 5 . 1 3 . 1 4 . 0 9 . 0 3 . 0
5 . 1 0 2 . 0 1 . 1 6 . 0 2 . 1
3 . 1 2 . 0 0 9 . 0 4 . 0 0 . 1
4 . 0 1 . 1 9 . 0 0 5 . 0 1 . 0
9 . 0 6 . 0 4 . 0 5 . 0 0 6 . 0
3 . 0 2 . 1 0 . 1 1 . 0 6 . 0 0
D
- {{0.4},{1.0},{0.5},{1.4},{1.6},{0.1}}
- {{0.4,0,5},{1.0},{1.4},{1.6},{0.1}}
- {{0.4,0.5},{1.4,1.6},{1.0},{0.1}}
- {{0.1,0.4,0.5},{1.4,1.6},{1.0}}
- {{0.1,0.4,0.5},{1.0,1.4,1.6}}
- {{0.1,0.4,0.5,1.0,1.4,1.6}}
Matriz de distancias
(mtrica euclidiana)
3
13
Otros algoritmos aglomerativos
1. Seleccionar aleatoriamente un individuo
2. Crear un grupo con todos los individuos cuya distancia al
individuo seleccionado sea menor que un cierto radio r
3. Repetir el proceso con los individuos restantes hasta terminar
1. Seleccionar aleatoriamente un individuo y crear un grupo
con l
2. Seleccionar aleatoriamente uno de los individuos restantes
y evaluar su distancia a los grupos previamente definidos
3. Tomar la menor distancia; si es menor que un cierto radio r
incluir el elemento en el grupo; de lo contrario crear un
nuevo grupo con l.
4. Repetir desde 2 hasta terminar
14
Agrupamiento difuso
n Individuos: I={I
1
,I
2
,...,I
n
}
p Caractersticas C={c
1
,c
2
,...,c
p
} cuantificables.
La matriz X (p*n) describe la poblacin:
Definir c (c<n) grupos (subconjuntos) de los individuos
Como en el agrupamiento clsico:
Pero:
Los grupos a definir son Conjuntos Difusos
Un individuo puede pertenecer (parcialmente) a varios grupos
Dos individuos con grados de pertenencia a un mismo grupo
cercanos a 1.0 deben ser similares
15
Particiones difusas
A cada uno de los c grupos se le puede asociar un prototipo, que
es un vector v
i
(i=1,2,...,c) en el mismo espacio de los individuos
(R
p
) que sirve de centro del grupo. Con estos prototipos se
construye la matriz V (p*c)
[ ]
c
pc p p
c
c
v v v
v v v
v v v
v v v
V L
L
M O M M
L
L
2 1
2 1
2 22 21
1 12 11
=

=
Un elemento que est cerca del prototipo v
k
debe tener un alto grado
de pertenencia al grupo k.
16
C-Particin
Caractersticas:
Para todos los conjuntos debe existir al
menos un elemento de X tal que su
funcin de pertenencia al conjunto sea
distinta de cero.
Para todos los elementos de X, la suma
de sus funciones de pertenencia a los c
Conjuntos debe ser 1.
17
Algoritmo Desarrollado por
Bezdek
Bezdek desarroll un algoritmo para
obtener una c-particin para un Universo
de Discurso finito; dicho algoritmo se
conoce como el agrupamiento "fuzzy c-
means", y es uno de los ms populares,
pese a que en la literatura se reportan
muchos otros algoritmos distintos.
18
Algoritmo Desarrollado por
Bezdek
Universo de Discurso X compuesto por n elementos:
X = [ x1 x2 ... xn]
donde cada uno de los n xi es una
d-upla de elementos
x1 = [ x11 x21 ... xd1]T
x2 = [ x12 x22 ... xd2]T
...
xn = [ x1n x2n ... xdn]T
4
19
Algoritmo Desarrollado por
Bezdek
Para encontrar los c Conjuntos de la particin, Bezdek
define para cada uno de ellos un centro vi, que
identifique al conjunto, y define a V como la coleccin
de centros de dichos Conjuntos:
V = [ v1 v2 ... vc]
v1 = [ v11 v21 ... vd1]
T
v2 = [ v12 v22 ... vd2]
T
...
vc = [ v1c v2c ... vdc]
T
20
Agrupamiento Fuzzy C-Means
Tambin define la matriz U como la matriz de orden c*n
que contiene las funciones de pertenencia de cada uno de
los n xi casos a los c Conjuntos difusos identificados por
los vi centros.
21
Agrupamiento Fuzzy C-Means
Como los c conjuntos son una c-particin de X, debe
cumplirse que:
22
Agrupamiento Fuzzy C-Means
Con las definiciones anteriores, el problema del
agrupamiento de X en c grupos puede formularse como
la bsqueda de la pareja (U,V) que clasifique "mejor" los
datos de X. Para medir qu tan bien est hecha una
clasificacin, Bezdek emplea la funcin Jm(U,V)
23
Agrupamiento Fuzzy C-Means
en donde m es un real mayor que uno, y ||.|| es una norma
diferenciable. Bezdek demuestra que la pareja (U*,V*)
que optimiza Jm debe satisfacer:
24
Algoritmo para Agrupamiento Fuzzy C-Means
Con lo anterior puede plantearse un algoritmo iterativo para la bsqueda de
la pareja (U*,V*) as:
1) - Fijar c, un entero mayor que 1 y menor o igual que n.
- Fijar m un real mayor que 1.
- Seleccionar ||.|| una mtrica inducida por producto interno para medir las
distancias entre los miembro de X y los miembros de V.
- Inicializar U
0
.
- p=1
2) Calcular V
p
empleando U
ik
*
3) Calcular U
p
empleando V
i
4) Comparar U
p
con U
p-1
mediante alguna norma matricial. Si ||V
p
-V
p-1
|| es
menor que algn valor de tolerancia entonces terminar, de lo contrario
p = p+1 e ir al paso 2.
5
25
Ejemplo 1 de Fuzzy C-Means
1.7
1.8
1.9
2
2.1
2.2
2.3
2.4
0 0.5 1 1.5 2 2.5 3
"intprueb.J"
Evolucin de J Agrupamiento final
5 Individuos con 2 caractersticas cada uno:(1,1),(1,2),(3,3),(3,4),(4,3)
Obtener dos grupos con m=2 empleando la distancia euclidiana
26
Ejemplo 2 de Fuzzy C-Means
Se desea agrupar los nmero enteros del 1 al 20 en 3
conjuntos difusos empleando agrupamiento fuzzy c-
means.
En este ejemplo X=[1 2 3 ....19 20], con lo que
d=1
x1=[1]; x2=[2]; x3=[3]; ...;
x19=[19]; x20=[20];
c=3
27
Ejemplo 2 de Fuzzy C-Means
Las figuras muestran como evolucionan los tres conjuntos
difusos en cada una de las iteraciones.
La particin inicial es aleatoria, y se ha escogido m=1.5.
3-particin para p=1 3-particin para p=2
En las figuras el eje horizontal corresponde al intervalo real [0,20], y el eje vertical a las funciones
de pertenencia de los conjuntos definidos por el algoritmo fuzzy c-means
28
Ejemplo 2 de Fuzzy C-Means
3-particin para p=3 3-particin para p=4
3-particin para p=5 3-particin para p=27
29
Ejemplo 3 de Fuzzy C-Means
Modificar m en el ejemplo anterior
m=1.2 m=1.5 m=2
m=3 m=5 m=10
30
Ejemplo 4 de Fuzzy C-Means
Modificar el nmero de grupos en el ejemplo anterior (m=2)
c=2
c=3
c=5 c=10
6
31
Ejemplo 5 de Fuzzy C-Means
0
5
10 0
5
1
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
0
5
10 0
5
1
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
0
5
10 0
5
10
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
0
5
10 0
5
10
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
4 grupos en [0,10]x[0,10]
32
Se usa el programa CLUSTER, para realizar particiones
del tipo Fuzzy C-Means
CLUSTER, fue escrito en C++, y elaborado por la
Universidad Nacional de Colombia, Sede Bogot.
CLUSTER, puede encontrarse en la siguiente direccin:
http://www.ing.unal.edu.co/~ogduarte/software.htm
Los datos de entrada deben almacenarse en un archivo de
texto, en el que cada lnea debe contener las d componentes
de cada dato de entrada (en total deben haber n lneas).
Software para Prcticas de Agrupamiento
33
CLUSTER produce varios
archivos de salida, cuyo
nombre especifica el
usuario:
Un archivo con extensin
.U, que contiene la matriz
U resultante
Un archivo con extensin
.V, que contiene la matriz
V resultante
Un archivo con extensin
.J, que contiene el valor
final de J
Software para Prcticas de Agrupamiento
34
Software para Prcticas de Agrupamiento
CLUSTER tambin genera un archivo con extensin
.GNU que contiene las siguientes columnas:
Una por cada dimensin del problema (d en total), que
contiene las componentes de cada dato de entrada.
Una por cada cluster (p en total), que contiene el grado
de pertenecia del dato de entrada a cada cluster.
El archivo .GNU contiene tantas lneas como datos de
entrada (n en total). Se ha empleado la extensin .GNU
para significar que este archivo es compatible con el
programa de graficacin GNUVIEW.
Opcionalmente, pueden crearse otros archivos .U, .V,
.J y .GNU con la informacin en cada uno de los ciclos
de iteracin del algoritmo (separados por lneas en blanco).
35
Software para Prcticas de Agrupamiento
CLUSTER
36
Software para Prcticas de Agrupamiento
MATLAB
Toolbox Fuzzy Logic
Comando: findcluster

Вам также может понравиться