Subido por ARMANDO ALBERTO CAJAHUARINGA CAMACO

7 REDES NEURO SOM 2020 1

Anuncio
Universidad Nacional de Ingeniería - Facultad de Ingeniería Industria y de Sistemas
Sección de Post Grado. Doctorado en Ingeniería Industrial. Curso: Programación Matemática.
Pedro C. Espinoza H.
3. RNA NO SUPERVISADAS (KOHONEN O SOM)
Introducción
La sigla SOM viene del ingles: Self-Organizing Feature Maps o brevemente SelfOrganizing-Maps. El aprendizaje de este tipo de RNA es el no supervisado.
3.1 La topología de capas de neuronas
Las neuronas en la capa de un SOM pueden ser representadas por puntos o posiciones de un
plano bidimensional o plano coordenado XY, formando los vértices de un grafo, donde los
vértices o nodos, son las posiciones de las neuronas y las aristas o arcos son los enlaces entre
estos. Los grafos adoptan diversas formas o geometrías, denominadas Topologías. En
MATLAB existen funciones que ayudan a crear estas Topologías: gridtop, hextop o randtop,
estas tres funciones presentan a las neuronas en forma de una malla rectangular, hexagonal,
o en forma de un grafo aleatoria, respectivamente.
a) La topología gridtop
Crea una sucesión de puntos del plano XY, que son las posiciones de las neuronas y que son
los vértices de una malla o rejilla rectangular.
Ejemplo 1
p=gridtop(4,3)
p =
0
0
1
0
2
0
3
0
0
1
1
1
2
1
3
1
0
2
1
2
2
2
3
2
Aquí la entrada(4,3)significa que se trata de una malla con 3 filas y 4 columnas de
posiciones, como puede apreciarse en el gráfico adjunto generado con:
plotsom(p) % grafo en forma de malla rectangular
Fig.1
Neuron Positions
2
1.5
position(2,i)
El orden en que aparecen las posiciones
de p en la malla, es de abajo hacia arriba
y de izquierda a derecha. En la primera
fila debajo de la malla, están (0,0),
B(1,0), C(2,0) y (3,0). En la segunda
fila están E(0,1) etc.
Nota: para un gridtop(3,4) , con los
argumentos invertidos, se tiene un
arreglo diferente y por ende un grafo
de 4 fila con 3 columnas de vértices.
1
0.5
b) La topología hextop
Con esta función se crean las posiciones
de las neuronas, que son los vértices de un
grafo, pero que tienen un patrón hexagonal.
Ejemplo 2
0
0
0.5
1
1.5
position(1,i)
2
2.5
q=hextop(4,3)
q =
0 1.0000 2.0000 3.0000 0.5000 1.5000 2.5000 3.5000
0 0
0
0
0.8660 0.8660 0.8660 0.8660
107
0
1.0000 2.0000 3.0000
1.7321 1.7321 1.7321 1.7321
3
Universidad Nacional de Ingeniería - Facultad de Ingeniería Industria y de Sistemas
Sección de Post Grado. Doctorado en Ingeniería Industrial. Curso: Programación Matemática.
Pedro C. Espinoza H.
plotsom(q)
Fig.2
Neuron Positions
2
1.5
position(2,i)
Las posiciones de las neuronas están
en q,el orden en que aparecen en el
grafo, es de abajo hacia arriba y de
izquierda a derecha.
Nota hextop es el patrón por defecto
para las redes SOM generado con
newsom.
1
0.5
c) La topología randtop
Crea grafos para una capa de
0
neuronas con un patrón aleatorio, es
decir los vértices del grafo ocupan
-0.5
posiciones aleatorias del plano XY,
0
las aristas en forma aleatoria. El
código siguiente genera un grafo con
nodos aleatorios (posiciones de las neuronas).
0.5
1
1.5
2
position(1,i)
2.5
3
3.5
Ejemplo 3
Para crear y graficar una capa de 8x10 neuronas, en una topología de randtop se utiliza el
siguiente código:
pos3 = randtop(8,10); % matriz de 2 filas y 80 columnas= 80 puntos en XY
plotsom(pos3)
% grafo aleatorio de 80 vértices o puntos
Fig. 3
Neuron Positions
6
5
position(2,i)
4
3
2
1
0
0
1
2
3
position(1,i)
4
5
6
3.2 Las métricas o nociones de distancia entre neuronas
La noción de distancia más común entre dos puntos de un espacio es la denominada distancia
“euclideana” que es la longitud del segmento de recta que une estos puntos. Desde el punto
de vista matemático, existen infinitas nociones de distancia, que se definen a continuación.
Pero estas nociones de distancia se basan en la noción de norma o longitud de un vector,
108
Universidad Nacional de Ingeniería - Facultad de Ingeniería Industria y de Sistemas
Sección de Post Grado. Doctorado en Ingeniería Industrial. Curso: Programación Matemática.
Pedro C. Espinoza H.
puesto que dos puntos definen un vector. Entonces se pasará a definir una clase de normas,
donde algunas de ellas se utilizarán en las nociones de distancia para redes neuronales SOM.
Definición
Si x = ( x1 , x2 ,......, xN ) es un vector de  n , la longitud o norma de este vector, en el
sentido de los L p (Minkowski), se denota y define como:
1/ p
x
p
 N

=  | xi | p 
 i =1

donde 1  p   es cualquier número real.
Propiedades de la norma o longitud L p de un vector
a) x
b) x
p
p
c)  x
0
=0 x=0
p
d) x + y
= x
p
 x
p
p
+ y
p
La distancia o métrica L p entre dos vectores x = ( x1 , x2 ,......, xn ) y = ( y1 , y2 ,......, yn ) se
denota y define como d ( x, y ) = x − y
p
Propiedades
a) d ( x, y )  0
b) d ( x, y ) = 0  x = y
c) d ( x, z )  d ( x, y ) + d ( y, z ) desigualdad triangular
Casos especiales de las métricas L p
◊ Cuando p = 1 la distancia se llama de Mahattan y coincide con la distancia que existe
entre dos puntos de una ciudad cuyas calles forman una malla rectangular.
◊ Cuando p = 2 , se tiene la distancia Euclideana, que es la longitud del segmento que une
estos puntos. Este es único caso en que la norma provienen de un producto interno. Como se
recordará (sección 2.5 del capítulo 1) el producto interno o escalar de dos vectores
x = ( x1 , x2 ,......, xn ) y = ( y1 , y2 ,......, yn ) se denota y define como el número
x • y = x1 y1 + x2 y2 + ...... + xn yn
◊ La distancia L (Chebychev). Este límite es igual a la distancia del máximo y se define
como sigue:
Si x = ( x1 , x2 ,......, xN ) e y = ( y1 , y2 ,......, y N ) son dos vectores de dimensión N , entonces
la distancia L entre estos dos vectores viene a ser
d ( x, y) = x − y  = max | xi − yi |
i =1, 2,.. N
109
Universidad Nacional de Ingeniería - Facultad de Ingeniería Industria y de Sistemas
Sección de Post Grado. Doctorado en Ingeniería Industrial. Curso: Programación Matemática.
Pedro C. Espinoza H.
Ejemplo
Fig.1
Sean los puntos 𝑝 = (2,2) y 𝑞 = (6,5).
Entonces la distancia entre 𝑝 y 𝑞:
a) La Euclideana es 5
b) La de Manhatan es 4+3=7
c) Del máximo es 4
La noción de distancia entre las neuronas viene mayormente de la noción de distancia
entre vectores que se ha resumido al inicio de esta sección, sin embargo hay otras que
vienen de otro tipo de conceptos, como la del enlace. Hay cuatro funciones de distancia
que emplea MATLAB: dist, boxdist, linkdist y mandist, que son las distancias:
euclideana, del máximo, del enlace y de Mahattan respectivamente.
Como hay tres topologías: gridtop, hextop o randtop podemos hacer combinaciones de
estas con la cuatro distancias, por ejemplo a la topología gridtop asociarle la distancia
eucideana con dist, es decir hacer un plotsom(gridtop,dist), otro podría ser un
plotsom(hexatop,mandist) etc.
Fig. 2
a) gridtop y dist
Esta función de distancia es la euclidiana.
Ejemplo 1
Retomemos el ejemplo 1 de la sección anterior, esto
es:
>> p = gridtop(2,3)
p =
0
0
1
0
0
1
1
1
0
2
1
2
plotsom(p)
Esta topología proporciona 6 neuronas, con sus
posiciones en el plano coordenado XY que son los
vértices o nodos de una malla rectangular. (Fig. 4)
La lectura de los nodos es de abajo hacia arriba y de izquierda a derecha. El primer nodo es
A(0,0), el siguiente es B(1,0) y así sucesivamente. Esto se resume en la siguiente:
Tabla 1
A
(0,0)
B
(1,0)
C
(0,1)
D
(1,1)
E
(0,2)
F
(1,2)
Para esta topología, la matriz de distancias entre las 6 neuronas, con la distancia euclideana
dist, es una matriz de 6x6 que tiene la siguiente forma:
A
B
A
B
d(A, A) d(A, B)
d(B, A) d(B, B)
C
d(A, C)
d(B, C)
D
d(A, D)
d(B, D)
110
E
d(A, E)
d(B, E)
F
d(A, F)
d(B, F)
Universidad Nacional de Ingeniería - Facultad de Ingeniería Industria y de Sistemas
Sección de Post Grado. Doctorado en Ingeniería Industrial. Curso: Programación Matemática.
Pedro C. Espinoza H.
C
D
E
F
d(C, A)
d(D, A)
d(E, A)
d(F, A)
d(C, B)
d(D, B)
d(E, B)
d(F, B)
d(C, C)
d(D, C)
d(E, C)
d(F, C)
d(C, D)
d(D, D)
d(E, D)
d(F, D)
d(C, E)
d(D, E)
d(E, E)
d(F, E)
d(C, F)
d(D, F)
d(E, F)
d(F, F)
En efecto, en la topología de la malla rectangular, la distancia euclideana entre A(0,0) y
D(1,1) es d(A, D)=||(1,1)-(0,0)||= 2^(0.5)=1.414, la distancia de B(1,0) a F(1,2) es d(B,
F)=||(1,2)-(1,0)||=4^(0.5)=2 etc.
Esta matriz de distancias se obtiene con la función:
dp = dist(p)
dp =
0
1.0000
1.0000
1.4142
2.0000
2.2361
1.0000
0
1.4142
1.0000
2.2361
2.0000
1.0000
1.4142
0
1.0000
1.0000
1.4142
1.4142
1.0000
1.0000
0
1.4142
1.0000
2.0000
2.2361
1.0000
1.4142
0
1.0000
2.2361
2.0000
1.4142
1.0000
1.0000
0
b) hextop y linkdist
Ejemplo 2
r = hextop(3,3);
r=
0 1.0000 2.0000 0.5000 1.5000 2.5000
0 0
0
0.8660 0.8660 0.8660
A
B
0
0
C
1
0
D
E
F
0
1.0000 2.0000
1.7321 1.7321 1.7321
G
H
I
2
0.5
1.5
2.5
0
1
2
0 0.866 0.866 0.866 1.732 1.732 1.732
plotsom(r)
Neuron Positions
linkdist(r)
1.8
1.6
1
0
1
1
1
2
2
2
2
2
1
0
2
1
1
3
2
2
1
1
2
0
1
2
1
1
2
2
1
1
1
0
1
2
1
1
3
2
1
2
1
0
3
2
1
2
2
3
1
2
3
0
1
2
2
2
2
1
1
2
1
0
1
3
2
2
2
1
1
2
1
0
1.4
1.2
position(2,i)
dr =
dr =
0
1
2
1
2
3
2
2
3
Fig. 3
1
0.8
F
0.6
0.4
0.2
A
0
0
0.5
1
1.5
position(1,i)
2
2.5
Por ejemplo la distancia con linkdist entre A(0,0) y F(2.5,0.866), es d(A,F)=1+1+1=3
c) randtop y mandist
Fig. 4
111
Universidad Nacional de Ingeniería - Facultad de Ingeniería Industria y de Sistemas
Sección de Post Grado. Doctorado en Ingeniería Industrial. Curso: Programación Matemática.
Pedro C. Espinoza H.
Ejemplo 4
Neuron Positions
1.5
La matriz rm de las posiciones de 6 neuronas en la
topología aleatoria randtop se obtiene haciendo:
rm =
0.2221 1.0272 0.3006 1.2519
0
0
1.5809 1.4460
0.0511 0.6531 0.7598
1
position(2,i)
rm=randtop(2,3)
0.8621
0.5
plotsom(rm)
la distancia de Mahttan, entre todas las columnas de la
0
0
0.5
position(1,i)
1
matriz r es
drm = mandist(rm)
drm=
0
0.8563
0.7317
1.7897
1.8030
2.0861
0.8563
0
1.3287
0.9334
2.5571
1.5600
0.7317
1.3287
0
1.0580
1.2284
1.3544
1.7897
0.9334
1.0580
0
2.0730
1.0760
1.8030
2.5571
1.2284
2.0730
0
0.9971
2.0861
1.5600
1.3544
1.0760
0.9971
0
Observando las columnas de drm y la topología randtop se verifica que la distancia de
Manhattan mandist de la neurona A(0.2221,0) a la neurona D(1.2519, 0.7598) es d(A,
D)=||(1.2519, 0.7598)-(0.2221,0)||=1.0298+0.7598 =1.7896
3.3 Vecindad o esfera de una neurona
Dada una topología T y una distancia d, la vecindad o esfera de radio r, de una neurona i*,
se denota N(i*, r) y se define como el conjunto de todas las neuronas i que están en T a una
distancia menor o igual que r , brevemente:
Fig. 1
N(i*, r) = { i en T, tal que d(i, i*)<= r }
Weight Vectors
4
Para ilustrar el concepto de vecindad, considere la siguiente
figura, que es la distribución de las neuronas con gridtop,
W(i,2)
es decir con la topología de la malla rectangular y con la
3
2
distancia de Manhattan: mandist.
1
0
112
0
1
2
W(i,1)
3
4
Universidad Nacional de Ingeniería - Facultad de Ingeniería Industria y de Sistemas
Sección de Post Grado. Doctorado en Ingeniería Industrial. Curso: Programación Matemática.
Pedro C. Espinoza H.
El diagrama adjunto muestra una vecindad bidimensional de radio r = 1 y con centro la
neurona (2,2). Esto se ha logrado con los códigos:
Q = gridtop(5,5);%
Fig.2
D = mandist(Q);
Weight Vectors
plotsom(Q',D);
hold on
V1=[ 2 2 1 3 2;1 2 2 2 3];
D1= mandist(V1);
plot(V1(1,:),V1(2,:),'x','markersize',20);
plot(V1(1,:),V1(2,:),'o','markersize',20);
4
Weight Vectors
W(i,2) W(i,2)
4
3
El diagrama de la Fig. 2 muestra la vecindad de la neurona
(2,2) con la misma noción de distancia, pero de radio r = 2.
3
2
2
1
1
0
Esta se consigue agregando a lo anterior los códigos:
0
V2=[ 2 2 1 3 2 2 3 4 1 0 1 2 3 4;
1 2 2 2 3 0 1 2 1 2 3 4 3 2];
plot(V2(1,:),V2(2,:),'x','markersize',20);
plot(V2(1,:),V2(2,:),'o','markersize',20);
0
1
0
1
2
W(i,1)
2
W(i,1)
3
4
3
4
Fig. 3
Q = gridtop(5,5);
D = mandist(Q);
V3=[2 2 1 3 2 3 1 1 3;1 2 2 2 3 1 1 3 3
];
plotsom(Q',D);;
hold on
Weight Vectors
4.5
4
3.5
3
2.5
W(i,2)
d) El gráfico muestra una neurona central en una capa
de neuronas bidimensionales (gridtop). La neurona
central de coordenadas (2,2) , tiene una vecindad de
radio 1, con la distancia boxdist. Por ejemplo la neurona
de coordenadas (1,3), está a la distancia 1 por que el
máximo entre |2-1| y |2-3| es 1. La gráfica se ha
logrado con los códigos:
2
1.5
1
0.5
0
-0.5
0
plot(V3(1,:),V3(2,:),'x','markersize',20);
plot(V3(1,:),V3(2,:),'o','markersize',20);
1
2
W(i,1)
3
4
Esta vecindad de radio 1 incluye la neurona central y sus vecinos inmediatos.
3.4 La arquitectura
Esta arquitectura no emplea sesgos, lo demás es como la de una red cualquiera, con la
salvedad de que sus funciones de transferencia son como las de las RNA competitivas.
113
Universidad Nacional de Ingeniería - Facultad de Ingeniería Industria y de Sistemas
Sección de Post Grado. Doctorado en Ingeniería Industrial. Curso: Programación Matemática.
Pedro C. Espinoza H.
Se puede elegir entre varias topologías para desarrollar los grafos de las capas de neuronas
y también las diversas distancias para calcular las neuronas que están cerca de la neurona
ganadora.
3.5 Creación de una red selforgmap (“newsom” en la versión Matlab 2010)
Sintaxis: se crea esta red neuronal con la función
selforgmap(dimensions, coverSteps, initNeighbor, topologyFcn, distanceFcn)
donde los parámetros tienen el siguiente significado:
dimensions=número de neuronas de la capa (puede ser [d1, d2], d1xd2 neuronas)
coverSteps= Número de pasos de entrenamiento. (Por defecto=200)
initNeighbor= Tamaño inicial de la vecindad. (Por defecto =3)
topologyFcn= describe la topología. (Por defecto toma la topología hextop)
distanceFcn= describe la distancia. (Por defecto toma la distancia linkdist)
Ejemplo 1
Se tiene los siguientes datos de entrada:
P=[5 5 4 6 12 11 18 17 1 3 3 4 12 11 18 17
5 4 6 5 3 1 3 2 18 18 16 18 19 19 17 18];
Es una matriz P de 2 filas y 16 columnas.
Supongamos que se desea trabajar con 6 neuronas, con la topología hextop, la distancia
linkdist y los demás parámetros por defecto. En este caso simple el código es:
net = selforgmap([2,3]);
Todos los parámetros que ingresan a la función selforgmap, con excepción de la
dimensión, se completan por defecto: coverSteps=200; initNeighbor=3;
topologyFcn=hextop; distanceFcn=linkdist.
3.6 El entrenamiento de la red neuronal
La neurona ganadora y el algoritmo de Kohonen.
Cuando ingresa un vector p a la red neuronal net, lo que ocurre es que se identifica una
neurona ganadora i* y se actualizan los pesos de todas las neuronas que se encuentran
dentro de una determinada vecindad N(i*, r) de la neurona ganadora i*.
Si w = [ w1 , w2 ,......., wN ] es la matriz de pesos de una de la neuronas “ i ” en la iteración k ,
entonces en la iteración (k + 1) la actualización de estos valores para cada neurona de la
vecindad N (i*, r ) = { i  T : d (i, i*)  r} se realiza mediante el siguiente algoritmo:
114
Universidad Nacional de Ingeniería - Facultad de Ingeniería Industria y de Sistemas
Sección de Post Grado. Doctorado en Ingeniería Industrial. Curso: Programación Matemática.
Pedro C. Espinoza H.
w = w +  ( p'− w) donde 0    1
 [ p − w]
En consecuencia, después de muchas iteraciones las
neuronas de una vecindad N(i*, r) tendrán pesos similares
p
w( k + 1)
entre sí.
w(k )
Continuando con el ejemplo 1 del parágrafo 3.5. El entrenamiento de la red se da con 200
iteraciones:
net=train(net,P);
luego de correr, sale una interface con 6 botones:
SOM Topology
2
1
0
-1
-1
0
1
2
El botón SOM Topology, genera una gráfica que muestra la topología de la red neuronal.
115
Universidad Nacional de Ingeniería - Facultad de Ingeniería Industria y de Sistemas
Sección de Post Grado. Doctorado en Ingeniería Industrial. Curso: Programación Matemática.
Pedro C. Espinoza H.
SOM Neighbor Connections
2.5
2
1.5
1
0.5
0
-0.5
-1
-1
0
1
2
En el gráfico Hits se observa 6 clústeres. Haciendo la lectura de abajo hacia arriba y de
izquierda a derecha, ellos son: 1, 2, 3, 4, 5 y 6. Los números que aparecen en cada hexágono
indican el número de elementos que tiene cada clúster. Así en el clúster 1 hay 2; en el 2 hay
2, el clúster 3 es vacío. Así sucesivamente.
b) Los pesos o coordenadas de las neuronas (luego del entrenamiento)
La gráfica de los agrupamientos (SOM Weight Positions) salen con mayor nitidez,
mediante el siguiente código:
plot(P(1,:),P(2,:),'.b','markersize',20); hold on
plotsom(net.iw{1,1},net.layers{1}.distances);
hold on
grid
116
Universidad Nacional de Ingeniería - Facultad de Ingeniería Industria y de Sistemas
Sección de Post Grado. Doctorado en Ingeniería Industrial. Curso: Programación Matemática.
Pedro C. Espinoza H.
Esta gráfica muestra aproximadamente las coordenadas de las neuronas (puntos rojos) en el
plano XY. Pero con el siguiente programa se muestra exactamente las posiciones (pesos) de
cada neurona.
Cluster=1:1:6;
[net.IW{1}, Cluster']
ans =
x
17.5000
12.0000
10.9167
2.7500
14.5000
5.0000
y
clúster
17.5000 1.0000
19.0000 2.0000
10.5000 3.0000
17.5000 4.0000
2.2500 5.0000
5.0000 6.0000
3.7 Los Clúster y sus miembros
En esta parte se verá exactamente qué miembros de la data de ingreso P pertenecen a uno u
otro clúster. Se consiguen con el siguiente código:
distances = dist(P',net.IW{1}');
[d,cndx] = min(distances,[],2);
Con este se genera una tabla, donde las dos primeras columnas son las coordenadas de los
puntos y la tercera el número del clúster al que pertenece el punto:
TABLA=[P',cndx]
5
5
4
6
12
11
18
17
5
4
6
5
3
1
3
2
6
6
6
6
5
5
5
5
117
Universidad Nacional de Ingeniería - Facultad de Ingeniería Industria y de Sistemas
Sección de Post Grado. Doctorado en Ingeniería Industrial. Curso: Programación Matemática.
Pedro C. Espinoza H.
1
3
3
4
12
11
18
17
18
18
16
18
19
19
17
18
4
4
4
4
2
2
1
1
4. Agrupamiento de una base de datos con 4 variables
4.1 La base de datos
La base de datos que se utilizará en esta oportunidad, se obtiene activando en Matlab:
load fisheriris;
Luego de activado aparecen dos matrices, una denominada “species”, que es una matriz
columna de 150 componentes, formada por caracteres, en las 50 primeras componentes se
repite la palabra Setosa, en las 50 siguientes Versicolor y las 50 últimas Verginica. La
segunda matriz es “meas” que es de 150x4, donde las 50 primeras filas son los registros de
las medidas del ancho y largo del sépalo y del pétalo de cada flor de la especie Setosa, las
50 filas siguientes de Versicolor y las 50 últimas de Verginica.
Con la finalidad de tener un control de cada una de las 3 especies, le asignaremos un código
a cada una de ellas. A Setosa el número 1, a Versicolor 2 y a Vergínica 3. Entonces la matriz
Esp=[ones(50,1); 2*ones(50,1); 3*ones(50,1)];
sustituye perfectamente a la matriz de las especies. Pero la matriz que ingresará a la red
neuronal será solo la transpuesta de “meas”, esto es: P=meas';
4.2 Creando la red neuronal SOM y su entrenamiento
Se creará una red neuronal SOM eligiendo la dimensión, la topología y la distancia de la
función “selforgmap” que tiene por sintaxis:
selforgmap(dimensions, coverSteps, initNeighbor,topologyFcn,distanceFcn)
La red neuronal SOM es
net=selforgmap([2 2], 200, 3,'topologyFcn','gridtop','distanceFcn','mandist');
El entrenamiento
P=meas';
net=train(net,P);
118
Universidad Nacional de Ingeniería - Facultad de Ingeniería Industria y de Sistemas
Sección de Post Grado. Doctorado en Ingeniería Industrial. Curso: Programación Matemática.
Pedro C. Espinoza H.
SOM Neighbor Connections
2
1.5
1
0.5
0
-0.5
-1
-1
-0.5
0
0.5
1
1.5
2
2.5
Los pesos de las neuronas (luego del entrenamiento)
net.IW{1}
5.0093
6.9760
5.5400
6.2857
3.4140
3.1120
2.6400
2.8976
1.4674
5.8840
3.9840
4.8929
0.2535
2.1680
1.2360
1.6619
119
Universidad Nacional de Ingeniería - Facultad de Ingeniería Industria y de Sistemas
Sección de Post Grado. Doctorado en Ingeniería Industrial. Curso: Programación Matemática.
Pedro C. Espinoza H.
4.3 Los clústeres y sus miembros
En esta parte se verá exactamente qué miembros de los datos de ingreso P=meas' son los que
conforman los clústeres. Según el gráfico Hits, se observa que hay 4 clústeres. Haciendo la
lectura de abajo hacia arriba y de izquierda a derecha, ellos son los clústeres: 1, 2, 3 y 4. El
clúster 1 tiene 27 miembros, el 2 tiene 50, el 3 tiene 45 y 4 tienen 28 elementos.
Pero los miembros concretos de estos clústeres se consiguen con el siguiente código:
distances = dist(P',net.IW{1}');
[d,cndx] = min(distances,[],2);
cndx es una matriz columna, con igual número de filas que P' que indica el clúster al que
pertenece cada punto (fila) de P. Para esto se tiene la siguiente tabla:
TABLA=[Esp, P', cndx]
La tabla se pasa al Excel, se ordena según los clústeres, luego se ordena en cada clúster
según las especies, de este modo se sabe cuántas especies hay en cada clúster. El resultado
se muestra en el cuadro que sigue:
Especie SepLarg
SepAnch
PetLarg PetAnch Clúster
1
5.1
3.5
1.4
0.2
1
1
4.9
3.0
1.4
0.2
1
1
4.7
3.2
1.3
0.2
1
1
4.6
3.1
1.5
0.2
1
1
5.0
3.6
1.4
0.2
1
1
5.4
3.9
1.7
0.4
1
1
4.6
3.4
1.4
0.3
1
1
5.0
3.4
1.5
0.2
1
1
4.4
2.9
1.4
0.2
1
1
4.9
3.1
1.5
0.1
1
1
5.4
3.7
1.5
0.2
1
1
4.8
3.4
1.6
0.2
1
1
4.8
3.0
1.4
0.1
1
1
4.3
3.0
1.1
0.1
1
1
5.8
4.0
1.2
0.2
1
1
5.7
4.4
1.5
0.4
1
1
5.4
3.9
1.3
0.4
1
1
5.1
3.5
1.4
0.3
1
1
5.7
3.8
1.7
0.3
1
1
5.1
3.8
1.5
0.3
1
1
5.4
3.4
1.7
0.2
1
1
5.1
3.7
1.5
0.4
1
1
4.6
3.6
1.0
0.2
1
1
5.1
3.3
1.7
0.5
1
1
4.8
3.4
1.9
0.2
1
1
5.0
3.0
1.6
0.2
1
1
5.0
3.4
1.6
0.4
1
120
Universidad Nacional de Ingeniería - Facultad de Ingeniería Industria y de Sistemas
Sección de Post Grado. Doctorado en Ingeniería Industrial. Curso: Programación Matemática.
Pedro C. Espinoza H.
1
5.2
3.5
1.5
0.2
1
1
5.2
3.4
1.4
0.2
1
1
4.7
3.2
1.6
0.2
1
1
4.8
3.1
1.6
0.2
1
1
5.4
3.4
1.5
0.4
1
1
5.2
4.1
1.5
0.1
1
1
5.5
4.2
1.4
0.2
1
1
4.9
3.1
1.5
0.2
1
1
5.0
3.2
1.2
0.2
1
1
5.5
3.5
1.3
0.2
1
1
4.9
3.6
1.4
0.1
1
1
4.4
3.0
1.3
0.2
1
1
5.1
3.4
1.5
0.2
1
1
5.0
3.5
1.3
0.3
1
1
4.5
2.3
1.3
0.3
1
1
4.4
3.2
1.3
0.2
1
1
5.0
3.5
1.6
0.6
1
1
5.1
3.8
1.9
0.4
1
1
4.8
3.0
1.4
0.3
1
1
5.1
3.8
1.6
0.2
1
1
4.6
3.2
1.4
0.2
1
1
5.3
3.7
1.5
0.2
1
1
5.0
3.3
1.4
0.2
1
3
6.3
3.3
6.0
2.5
2
3
7.1
3.0
5.9
2.1
2
3
6.5
3.0
5.8
2.2
2
3
7.6
3.0
6.6
2.1
2
3
7.3
2.9
6.3
1.8
2
3
6.7
2.5
5.8
1.8
2
3
7.2
3.6
6.1
2.5
2
3
6.8
3.0
5.5
2.1
2
3
7.7
3.8
6.7
2.2
2
3
7.7
2.6
6.9
2.3
2
3
6.9
3.2
5.7
2.3
2
3
7.7
2.8
6.7
2.0
2
3
6.7
3.3
5.7
2.1
2
3
7.2
3.2
6.0
1.8
2
3
6.4
2.8
5.6
2.1
2
3
7.2
3.0
5.8
1.6
2
3
7.4
2.8
6.1
1.9
2
3
7.9
3.8
6.4
2.0
2
3
6.4
2.8
5.6
2.2
2
3
7.7
3.0
6.1
2.3
2
3
6.3
3.4
5.6
2.4
2
3
6.9
3.1
5.4
2.1
2
121
Universidad Nacional de Ingeniería - Facultad de Ingeniería Industria y de Sistemas
Sección de Post Grado. Doctorado en Ingeniería Industrial. Curso: Programación Matemática.
Pedro C. Espinoza H.
3
6.7
3.1
5.6
2.4
2
3
6.9
3.1
5.1
2.3
2
3
6.8
3.2
5.9
2.3
2
3
6.7
3.3
5.7
2.5
2
3
6.7
3.0
5.2
2.3
2
2
5.5
2.3
4.0
1.3
3
2
5.7
2.8
4.5
1.3
3
2
4.9
2.4
3.3
1.0
3
2
5.2
2.7
3.9
1.4
3
2
5.0
2.0
3.5
1.0
3
2
5.9
3.0
4.2
1.5
3
2
6.0
2.2
4.0
1.0
3
2
5.6
2.9
3.6
1.3
3
2
5.6
3.0
4.5
1.5
3
2
5.8
2.7
4.1
1.0
3
2
5.6
2.5
3.9
1.1
3
2
6.1
2.8
4.0
1.3
3
2
5.7
2.6
3.5
1.0
3
2
5.5
2.4
3.8
1.1
3
2
5.5
2.4
3.7
1.0
3
2
5.8
2.7
3.9
1.2
3
2
5.4
3.0
4.5
1.5
3
2
5.6
3.0
4.1
1.3
3
2
5.5
2.5
4.0
1.3
3
2
5.5
2.6
4.4
1.2
3
2
5.8
2.6
4.0
1.2
3
2
5.0
2.3
3.3
1.0
3
2
5.6
2.7
4.2
1.3
3
2
5.7
3.0
4.2
1.2
3
2
5.7
2.9
4.2
1.3
3
2
5.1
2.5
3.0
1.1
3
2
5.7
2.8
4.1
1.3
3
3
4.9
2.5
4.5
1.7
3
2
7.0
3.2
4.7
1.4
4
2
6.4
3.2
4.5
1.5
4
2
6.9
3.1
4.9
1.5
4
2
6.5
2.8
4.6
1.5
4
2
6.3
3.3
4.7
1.6
4
2
6.6
2.9
4.6
1.3
4
2
6.1
2.9
4.7
1.4
4
2
6.7
3.1
4.4
1.4
4
2
6.2
2.2
4.5
1.5
4
2
5.9
3.2
4.8
1.8
4
2
6.3
2.5
4.9
1.5
4
2
6.1
2.8
4.7
1.2
4
122
Universidad Nacional de Ingeniería - Facultad de Ingeniería Industria y de Sistemas
Sección de Post Grado. Doctorado en Ingeniería Industrial. Curso: Programación Matemática.
Pedro C. Espinoza H.
2
6.4
2.9
4.3
1.3
4
2
6.6
3.0
4.4
1.4
4
2
6.8
2.8
4.8
1.4
4
2
6.7
3.0
5.0
1.7
4
2
6.0
2.9
4.5
1.5
4
2
6.0
2.7
5.1
1.6
4
2
6.0
3.4
4.5
1.6
4
2
6.7
3.1
4.7
1.5
4
2
6.3
2.3
4.4
1.3
4
2
6.1
3.0
4.6
1.4
4
2
6.2
2.9
4.3
1.3
4
3
5.8
2.7
5.1
1.9
4
3
6.3
2.9
5.6
1.8
4
3
6.5
3.2
5.1
2.0
4
3
6.4
2.7
5.3
1.9
4
3
5.7
2.5
5.0
2.0
4
3
5.8
2.8
5.1
2.4
4
3
6.4
3.2
5.3
2.3
4
3
6.5
3.0
5.5
1.8
4
3
6.0
2.2
5.0
1.5
4
3
5.6
2.8
4.9
2.0
4
3
6.3
2.7
4.9
1.8
4
3
6.2
2.8
4.8
1.8
4
3
6.1
3.0
4.9
1.8
4
3
6.3
2.8
5.1
1.5
4
3
6.1
2.6
5.6
1.4
4
3
6.4
3.1
5.5
1.8
4
3
6.0
3.0
4.8
1.8
4
3
5.8
2.7
5.1
1.9
4
3
6.3
2.5
5.0
1.9
4
3
6.5
3.0
5.2
2.0
4
3
6.2
3.4
5.4
2.3
4
3
5.9
3.0
5.1
1.8
4
Conclusiones
1) La red neuronal SOM que se ha credo con 4 neuronas, luego de 400 iteraciones de
entrenamiento, ha permitido descubrir 4 clases o grupos de registros.
2) El clúster 1 tiene 50 miembros y está conformado por la especie Setosa. Este clúster
identificó perfectamente a la especie Setosa, pues ninguno de los clústeres restantes contiene
esta especie.
3) El clúster 2 tiene 27 registros y está formado exclusivamente por la especie Vergínica(3).
4) El clúster 3 está constituido por 28 miembros, 1 de la especie Verginica (3) y 27 registros
de la especie Versicolor(2).
123
Universidad Nacional de Ingeniería - Facultad de Ingeniería Industria y de Sistemas
Sección de Post Grado. Doctorado en Ingeniería Industrial. Curso: Programación Matemática.
Pedro C. Espinoza H.
5) El clúster 4 está constituido por 45 miembros, 27 de la especie Verginica (3) y 23 registros
de la especie Versicolor(2).
Referencia en Internet
[1] “Redes Neuronales Aplicadas a los Negocios: análisis de un caso” Autor: M. S. Gómez
de Lima, Instituto Tecnológico de Buenos Aires.
https://ri.itba.edu.ar/bitstream/handle/123456789/1062/Tesis%20Manuel%20G%C3%B3m
ez%20de%20Lima.pdf?sequence=1&isAllowed=y
[2] “Tutorial de redes Neuronales”. Autores: M. Acosta, C.A. Zuluaga, H. Bazalar,
Universidad Tecnológica de Pereira. http://ohm.utp.edu.co/neuronales
[3] “Programación Matemática”
Separata del curso del mismo nombre. Universidad
Nacional de Ingeniería-FIIS. 2019.
124
Descargar