18
Práctica de redes competitivas Vamos a utilizar redes competitivas con topología para nuestro ejemplo de datos sobre zonas residenciales. 1. Tratamiento mínimo 1.1. Matlab (toolbox propia) Nos planteamos un agrupamiento de los datos residenciales, imponiendo una cierta topología entre las clases. Vamos a proponer 6 clases; como son pocas no merece la pena probar dimensiones superiores a 2 y vamos a ponerlas colo- cadas según una plantilla hexagonal. 1. Cargamos los datos 2. Creamos la red con redt=selforgmap([2 3]); donde la plantilla hexago- nal es por defecto y hemos elegido un patrón de 2 por 3 3. Hacemos 50 pasadas como mínimo, pudiendo plantearnos hasta 200, con los comandos: redt.trainParam.epochs=50;redt=train(redt,p); y vemos los centroides con redt.IW{1}. Cada fila se corresponde con una categoría y cada columna con una variable. Expresa resumidamente las diferencias entre clases. 1.2. Octave (netlab) Nos planteamos un agrupamiento de los datos residenciales, imponiendo una cierta topología entre las clases. Vamos a proponer 6 clases. 1. Cargamos los datos 2. Creamos la red con redt = som(13, [3, 2]); donde hemos elegido un patrón de 3 por 2 (netlab sólo trabaja en dos dimensiones) 1

Práctica de redes competitivas · 2019-03-13 · Ahora vamos a tener en cuenta los datos de salida en el agrupamiento y a elegir con más cuidado los parámetros que hemos cogido

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Práctica de redes competitivas · 2019-03-13 · Ahora vamos a tener en cuenta los datos de salida en el agrupamiento y a elegir con más cuidado los parámetros que hemos cogido

Práctica de redes competitivas

Vamos a utilizar redes competitivas con topología para nuestro ejemplo dedatos sobre zonas residenciales.

1. Tratamiento mínimo

1.1. Matlab (toolbox propia)

Nos planteamos un agrupamiento de los datos residenciales, imponiendo unacierta topología entre las clases. Vamos a proponer 6 clases; como son pocasno merece la pena probar dimensiones superiores a 2 y vamos a ponerlas colo-cadas según una plantilla hexagonal.

1. Cargamos los datos

2. Creamos la red con redt=selforgmap([2 3]); donde la plantilla hexago-nal es por defecto y hemos elegido un patrón de 2 por 3

3. Hacemos 50 pasadas como mínimo, pudiendo plantearnos hasta 200, conlos comandos: redt.trainParam.epochs=50;redt=train(redt,p);y vemos los centroides con redt.IW{1}. Cada fila se corresponde con unacategoría y cada columna con una variable. Expresa resumidamente lasdiferencias entre clases.

1.2. Octave (netlab)

Nos planteamos un agrupamiento de los datos residenciales, imponiendo unacierta topología entre las clases. Vamos a proponer 6 clases.

1. Cargamos los datos

2. Creamos la red con redt = som(13, [3, 2]); donde hemos elegido unpatrón de 3 por 2 (netlab sólo trabaja en dos dimensiones)

1

Page 2: Práctica de redes competitivas · 2019-03-13 · Ahora vamos a tener en cuenta los datos de salida en el agrupamiento y a elegir con más cuidado los parámetros que hemos cogido

3. Hacemos 50 pasadas como mínimo, pudiendo plantearnos hasta 200, conlos comandos:

options (1 ) = 1;options (6 ) = 1; %Ajuste tras cada pasada completa .%Poner a 0 si la dimensión de la entrada es muy alta

options (14) = 50; %Número de iteracionesoptions (17) = 1; %Distancia de vecindad in i c i a loptions (15) = 0; %Distancia de vecindad f ina loptions (18) =0.05; %Tasa de ajuste in i c i a l ( por caso )options (16) =0.01; %Tasa de ajuste f ina lredt = somtrain ( redt , options , p ) ;

y vemos los centroides con pesos = sompak(redt) Cada fila se corres-ponde con una categoría y cada columna con una variable. Expresa resu-midamente las diferencias entre clases.

2. Afinado de ajuste

Ahora vamos a tener en cuenta los datos de salida en el agrupamiento ya elegir con más cuidado los parámetros que hemos cogido antes de manerairreflexiva.

2.1. Matlab

1. Escalado de los datos. Antes no hemos hecho: los datos se han manejadocomo estaban en el fichero. Si una variable tenía un rango entre 1 y 1000y otra entre 0 y 2, cuando se calcule la distancia entre dos vectores deesas componentes, ¿pesarán lo mismo? ¿Es esto lo que queremos? Lasposibilidades que ofrece Matlab son (podemos aplicarlas por separado adistintas variables):

a) mapminmax: normalización a rango común predefinidob) mapstd: normalización a varianza 1

2. Variables elegidas. Hemos cogido las variables elegidas sin más. ¿Necesi-tamos todas? ¿Son directamente esas las que dan mejor agrupamiento?¿Y la variable de salida? Las posibilidades fáciles en Matlab son:

a) Concatenar variables. Si una variable aparece varias veces, es unamanera trucada de aumentar su importancia.

b) processpca para elegir combinaciones de variables significativas porel método de componentes principales

2

Page 3: Práctica de redes competitivas · 2019-03-13 · Ahora vamos a tener en cuenta los datos de salida en el agrupamiento y a elegir con más cuidado los parámetros que hemos cogido

3. Dimensión de la topología. Es generalizado coger dos dimensiones, pero¿estamos seguros que es lo mejor para nuestros datos? Como norma ge-neral dimensiones mayores posibilitan mayores interrelaciones entre gru-pos. Pero las herramientas gráficas disponibles sólo funcionan bien en dosdimensiones.

4. Cantidad de grupos. ¿Por qué dos por tres? Existen dos posibilidades sen-satas:

a) Poner una cantidad claramente elevada de grupos y luego reagrupar-los

b) Hacer un agrupamiento previo que nos dé una idea

5. Topología: ¿por qué hexagonal? Podemos analizar el solapamiento de unagrupamiento previo con el comando silhouette. Posibilidades que ofreceMatlab:

a) randtop por probar a no imponer nadab) gridtop en casos de bajo solape entre grupos (si hemos hecho un agru-

pamiento previo)c) hextop para más solape

6. Comprobación: sea cuál sea la combinación que probemos, hay medidasque nos pueden indicar si la cosa va bien. A continuación se comentanalgunas, aunque no son directas de obtener:

a) El error de topología: fracción de puntos cuyo segundo mejor no esadyacente. Idealmente debería ser 0

b) Error de cuantización: la distancia media entre cada ítem y su «repre-sentante» Idealmente debería ser baja.

c) Correlación entre la distancia entre puntos y la distancia entre sus«representantes» Idealmente debería ser 1

7. Los grupos, ¿qué representan? Podemos mirar el gráfico de planos y se-leccionar aquellos pesos donde la diferencia sea mayor.

8. Uso de la red en predicción:

a) ajustar una red con los datos y los resultadosb) crear una nueva red sólo para los datos y copiar en sus pesos los de

la red anterior, pero sólo las columnas correspondientes a los datosc) usar esta red para la predicciónd) obtener el peso correspondiente al mismo grupo de la red ajustada

con todo para la variable de salida: esa es la predicción3

Page 4: Práctica de redes competitivas · 2019-03-13 · Ahora vamos a tener en cuenta los datos de salida en el agrupamiento y a elegir con más cuidado los parámetros que hemos cogido

2.1.1. Caso ejemplo

Vamos a tomar varias decisiones de entre lo comentado anteriormente:Vamos a normalizar las variables de entrada a varianza unidad. La desalida no la normalizaremos.

Elegiremos por componentes principales las combinaciones de variablesde entrada que expliquen el 80 % de la varianza. A estas les añadiremosla de salida.

Haremos un tanteo con el agrupamiento jerárquico. De él sacaremos unaidea de cantidad de grupos y solape entre ellos (analizado con silhouet-te), lo que nos llevará a organizarlos en cierta dimensión y topología. Nosquedaremos en dos dimensiones.

Tras ajustar la red comprobaremos la calidad de su agrupamiento con la«silueta»

Probaremos la red con algún valor para ver qué pasa

Crearemos una red sólo para entradas que podremos usar para hacerpredicciones. Probaremos alguna.

Veamos los comandos:

1. Cargar los datos, escalarlos y reducirlos a sus componentes principales,añadiendo la variable de salida

load housing ;[ pesc , datesc ]=mapstd (p ) ; %entradas a varianza 1[pimp, datpca ]=processpca ( pesc ,0 .2 ) ;datos=[pimp; t ] ;

2. Probar un agrupamiento jerárquico para estimar una cantidad de clases.Miramos la inconsistencia de la distancia de los nodos de agrupamiento.El coeficiente de inconsistencia es la diferencia respecto a la media (de losinferiores) dividido por la desviación típica.

arbol=linkage ( datos ’ ) ; %Tantear jerárquicoinc=inconsistent ( arbol ); %Análisis del árbolvecinc=inc ( : , 4 ); %La cuarta columnahist ( vecinc )

4

Page 5: Práctica de redes competitivas · 2019-03-13 · Ahora vamos a tener en cuenta los datos de salida en el agrupamiento y a elegir con más cuidado los parámetros que hemos cogido

0 0.2 0.4 0.6 0.8 1 1.2 1.40

50

100

150

200

250

300

Viendo lo anterior, podemos quizá admitir hasta 0.9 ó 1 ó 1.1 Supongamosque nos decidimos por ser más exhaustivos y cogemos 1.1 Ahora indica-mos que queremos un agrupamiento hasta una inconsistencia de 1.1

grupos=clusterdata ( datos ’ , 1 .1 ) ;max( grupos ) % Salen 173

3. Crear una red de agrupamiento, con un número de clases similar (porejemplo, 13 por 13 dan 169):

redtot=selforgmap ([13 13]) ;redtot=train ( redtot , datos ) ;pesostot=redtot .IW { 1 } ;

4. Como 169 grupos pueden ser muchos, vamos a agrupar las clases, crean-do «superclases» Para este agrupamiento, las entradas son los centroidesobtenidos en el paso anterior. Podemos hacer con ellos un agrupamientojerárquico.

arbolpesos=linkage ( pesostot ); %vamos a reagruparlosincarbol=inconsistent ( arbolpesos ) ;hist ( incarbol ( : , 4 ) ) ;

−0.2 0 0.2 0.4 0.6 0.8 1 1.20

20

40

60

80

100

120

5

Page 6: Práctica de redes competitivas · 2019-03-13 · Ahora vamos a tener en cuenta los datos de salida en el agrupamiento y a elegir con más cuidado los parámetros que hemos cogido

grupesos=clusterdata ( pesostot ,1 .1 ) ;

5. Vamos a comparar el agrupamiento jerárquico, el dado por las clases ori-ginales de la red y el de las superclases obtenidas por agrupamiento deéstas. Utilizaremos la «silueta» que nos compara, para cada punto, la dis-tancia media a puntos de su mismo grupo con la distancia media a puntosde los otros grupos, poniéndolo en escala [-1,1]:

s i l =si lhouette ( datos ’ , grupos ) ;hist ( s i l )

−1 −0.8 −0.6 −0.4 −0.2 0 0.2 0.4 0.6 0.8 10

20

40

60

80

100

120

140

grupred=redtot ( datos ) ;[ ngrupred ,d]= find ( grupred ) ;s i l red=silhouette ( datos ’ , ngrupred ) ;hist ( s i l red )

−0.5 0 0.5 10

10

20

30

40

50

60

70

80

90

6

Page 7: Práctica de redes competitivas · 2019-03-13 · Ahora vamos a tener en cuenta los datos de salida en el agrupamiento y a elegir con más cuidado los parámetros que hemos cogido

agrupred=grupesos ( ngrupred ) ;s i l r red=silhouette ( datos ’ , agrupred ) ;hist ( s i l r red )

−1 −0.8 −0.6 −0.4 −0.2 0 0.2 0.4 0.6 0.8 10

10

20

30

40

50

60

70

80

Se considera mejor aquellos en que hay más valores cerca de 1 (más altoindica más diferencia entre la distancia con puntos de otros grupos quecon puntos de su propio grupo)

6. Vamos a probar un punto y a ver qué tal es representado por el centroidecorrespondiente elegido por la red, por lo menos en su variable de salida:

%Probamos con , por ejemplo , e l punto 250p250=p( : ,250) ;pesc250=mapstd ( ’ apply ’ , p250, datesc ) ;pimp250=processpca ( ’ apply ’ , pesc250 , datpca ) ;dat250=[pimp250; t (250) ] ;grupored250=redtot ( dat250 ) ;f ind ( grupored250==1); %Sale 145grupesos ( grupored250==1) %Sale la superclase 25find ( grupesos==25) %Sale e l 145 y los que están con él en la

superclase 25pesostot (145 ,14) %Sale 26.4t (250) %Sale 26.2

7. Vamos a intentar hacer una red para predicción: será igual que la declasificación, pero sólo con los datos. Ella nos dará la clase y miraremosen la de clasificación completa cuál es el centroide de las salidas para esaclase.

7

Page 8: Práctica de redes competitivas · 2019-03-13 · Ahora vamos a tener en cuenta los datos de salida en el agrupamiento y a elegir con más cuidado los parámetros que hemos cogido

redpredic=selforgmap ([13 13]) ;%Copiamos los pesos de la completaredpredic .IW{1 }= pesostot ( : ,1 :13 ) ;%Supongamos que tenemos datos de un caso nuevonuevoesc=mapstd ( ’ apply ’ , nuevo , datesc ) ;nuevoimp=processpca ( ’ apply ’ , nuevoesc , datpca ) ;gruponuevo=redpredic (nuevoimp ) ;f ind ( gruponuevo==1); %Sale yy : su grupopesostot ( yy ,14) %La predicción según ese grupogrupesos ( gruponuevo==1) %Sale xx : e l metagrupo%Sacamos la predicción de todos los grupos del metagrupopesostot ( f ind ( grupesos==xx ) ,14)

2.2. Octave (netlab)

1. Escalado de los datos. Antes hemos cogido los datos simplemente lleva-dos a una escala [0,1]. Otra posibilidad es la normalización a media 0 yvarianza 1 (zscore)

2. Variables elegidas. Hemos cogido las variables elegidas sin más. ¿Necesi-tamos todas? ¿Son directamente esas las que dan mejor agrupamiento?¿Y la variable de salida? Una posibilidad fácil es concatenar variables. Siuna variable aparece varias veces, es una manera trucada de aumentarsu importancia.

3. Cantidad de grupos. ¿Por qué dos por tres? Existen dos posibilidades sen-satas:

a) Poner una cantidad claramente elevada de grupos y luego reagrupar-los

b) Hacer un agrupamiento previo que nos dé una idea

4. Comprobación: sea cuál sea la combinación que probemos, hay medidasque nos pueden indicar si la cosa va bien. A continuación se comentanalgunas, aunque no son directas de obtener:

a) El error de topología: fracción de puntos cuyo segundo mejor no esadyacente. Idealmente debería ser 0

b) Error de cuantización: la distancia media entre cada ítem y su «repre-sentante» Idealmente debería ser baja.

c) Correlación entre la distancia entre puntos y la distancia entre sus«representantes» Idealmente debería ser 1

8

Page 9: Práctica de redes competitivas · 2019-03-13 · Ahora vamos a tener en cuenta los datos de salida en el agrupamiento y a elegir con más cuidado los parámetros que hemos cogido

5. Los grupos, ¿qué representan? Podemos seleccionar aquellos pesos dondela diferencia sea mayor.

6. Uso de la red en predicción:

a) ajustar una red con los datos y los resultadosb) crear una nueva red sólo para los datos y copiar en sus pesos los de

la red anterior, pero sólo las columnas correspondientes a los datosc) usar esta red para la predicciónd) obtener el peso correspondiente al mismo grupo de la red ajustada

con todo para la variable de salida: esa es la predicción

2.2.1. Caso ejemplo

Vamos a tomar varias decisiones de entre lo comentado anteriormente:Vamos a añadir la variable de salida.

Haremos un tanteo con el agrupamiento jerárquico. De él sacaremos unaidea de cantidad de grupos.

Tras ajustar la red comprobaremos la calidad de su agrupamiento

Probaremos la red con algún valor para ver qué pasa

Crearemos una red sólo para entradas que podremos usar para hacerpredicciones. Probaremos alguna.

Veamos los comandos:

1. Cargar los datos, separar una parte para pruebas y juntar entradas consalida

[p1, t1 , nin ,nout , ndata ]=datread ( ’ casas . dat ’ ) ;orden=randperm(506) ;pt=p1 ( orden , : ) ;t t =t1 ( orden ) ;pprueba=pt (1 :50 , : ) ;tprueba= t t (1:50) ;p=pt (51:end , : ) ;t= t t (51:end ) ;datos=[p t ] ;

2. Probar un agrupamiento jerárquico para estimar una cantidad de clases.Miramos como va variando la distancia entre grupos.

9

Page 10: Práctica de redes competitivas · 2019-03-13 · Ahora vamos a tener en cuenta los datos de salida en el agrupamiento y a elegir con más cuidado los parámetros que hemos cogido

arbol=linkage ( datos , ’ single ’ , ’ euclidean ’ ) ; %Tantearjerárquico

plot ( arbol ( : , 3 ) ); %Distancias entre nodos agrupados

100 200 300 400 5000

0.2

0.4

0.6

0.8

1

1.2

1.4

Viendo lo anterior, podemos quizá admitir hasta, por ejemplo, 420 unio-nes, lo que nos dejaría con 36 grupos. Toma tu propia decisión.

3. Otra posibilidad: dibuja un gráfico tridimensional con los primeros compo-nentes principales (más de unas pocas dimensiones no se visualizan bien)y mira cuántos grupos ves. Tira hacia arriba, porque hay dimensiones queno estás viendo. Podría ser algo como:

[ coorprin , coord ]=princomp ( datos ) ;scatter ( coord ( : , 1 ) , coord ( : , 2 ) )scatter3 ( coord ( : , 1 ) , coord ( : , 2 ) , coord ( : , 3 ) )scatter3 ( coord ( : , 1 ) , coord ( : , 2 ) , coord ( : , 3 ) , coord ( : , 4 ) *10)scatter3 ( coord ( : , 1 ) , coord ( : , 2 ) , coord ( : , 3 ) , coord ( : , 4 ) *10,

coord ( : , 5 ) , ’ f i l l e d ’ )

Que nos darían (recuerda rotar los gráficos tridimensionales para apreciarbien las posiciones):

10

Page 11: Práctica de redes competitivas · 2019-03-13 · Ahora vamos a tener en cuenta los datos de salida en el agrupamiento y a elegir con más cuidado los parámetros que hemos cogido

11

Page 12: Práctica de redes competitivas · 2019-03-13 · Ahora vamos a tener en cuenta los datos de salida en el agrupamiento y a elegir con más cuidado los parámetros que hemos cogido

Incluso podemos acceder a una sexta coordenada rebanando el espacio:

pca6=coord ( : , 6 ) ;m6=min( pca6 ) ;max6=max( pca6 ) ;cor6 (1 )=m6;

12

Page 13: Práctica de redes competitivas · 2019-03-13 · Ahora vamos a tener en cuenta los datos de salida en el agrupamiento y a elegir con más cuidado los parámetros que hemos cogido

ran6=max6−m6;sal6=ran6/5;for i =2:6

cor6 ( i ) =m6+( i−1)* sal6 ;endfor i =2:5

reban=find ( abs ( pca6−cor6 ( i ) ) <sal6 ) ;f igure ; scatter3 ( coord ( reban ,1 ) , coord ( reban ,2 ) , coord

( reban ,3 ) , coord ( reban ,4 ) *10,coord ( reban ,5 ) , ’f i l l e d ’ ) ;

end

13

Page 14: Práctica de redes competitivas · 2019-03-13 · Ahora vamos a tener en cuenta los datos de salida en el agrupamiento y a elegir con más cuidado los parámetros que hemos cogido

14

Page 15: Práctica de redes competitivas · 2019-03-13 · Ahora vamos a tener en cuenta los datos de salida en el agrupamiento y a elegir con más cuidado los parámetros que hemos cogido

4. Crear una red de agrupamiento, con un número de clases similar (porejemplo, 6 por 6 dan 36):

redtot=som(14 ,[6 6 ] ) ;options (1 ) = 1;options (6 ) = 1; %Ajuste tras cada pasada completaoptions (14) = 100; %Número de iteracionesoptions (17) = 4; %Vecindad in i c i a loptions (15) = 0; %Vecindad f ina loptions (18) =0.1; %Tasa de ajuste in i c i a loptions (16) =0.01; %Tasa de ajuste f ina lredtot = somtrain ( redtot , options , datos ) ;pesostot = sompak( redtot ) ;

5. Si esa cantidad de grupos nos parecen muchos, podemos reagrupar lasclases, creando «superclases» Para este agrupamiento, las entradas sonlos centroides obtenidos en el paso anterior. Podemos hacer con ellos unagrupamiento jerárquico.

arbolpesos=linkage ( pesostot , ’ single ’ , ’ euclidean ’ ) ; %vamos areagruparlos

plot ( arbolpesos ( : , 3 ) ) ;15

Page 16: Práctica de redes competitivas · 2019-03-13 · Ahora vamos a tener en cuenta los datos de salida en el agrupamiento y a elegir con más cuidado los parámetros que hemos cogido

0 5 10 15 20 25 30 350.2

0.4

0.6

0.8

1

Si, por ejemplo, cortamos en el 24º agrupamiento nos quedarían 12 gru-pos, que podríamos ajustar con:

redgran=som(14 ,[4 3 ] ) ;options (1 ) = 1;options (6 ) = 1; %Ajuste tras cada pasada completaoptions (14) = 50; %Número de iteracionesoptions (17) = 2; %Vecindad in i c i a loptions (15) = 0; %Vecindad f ina loptions (18) =0.1; %Tasa de ajuste in i c i a loptions (16) =0.01; %Tasa de ajuste f ina lredgran = somtrain ( redgran , options , pesostot ) ;pesosgran = sompak( redgran ) ;

6. Vamos a comparar los agrupamientos, usando los conjuntos de pruebaque habíamos separado:

a) el dado por las 36 clasesb) el de las superclases obtenidas por agrupamiento de éstas.

Miraremos la relación entre la distancia al grupo propio con la distanciaal segundo:

prueba=[pprueba tprueba ] ;[ dista , grupa]=somfwd( redtot , prueba ) ;dista=sort ( dista ,2 ) ;[ distb , grupb]=somfwd( redgran , pesostot ( grupa , : ) ) ;distb=sort ( distb ,2 ) ;plot ( dista ( : , 1 ) , dista ( : , 2 ) , ’ xr ’ , distb ( : , 1 ) , distb ( : , 2 ) , . . .’+b ’ , dista ( : , 1 ) , dista ( : , 1 ) )

El gráfico anterior nos da pistas sobre el error de cuantización y la fiabi-lidad de la clasificación. Si queremos echarle un vistazo también al error

16

Page 17: Práctica de redes competitivas · 2019-03-13 · Ahora vamos a tener en cuenta los datos de salida en el agrupamiento y a elegir con más cuidado los parámetros que hemos cogido

de topología y a la correlación de distancias, podemos hacer, por ejemplo,para la primera red:

[ dista , grupa]=somfwd( redtot , prueba ) ;[ dista , quienes ]= sort ( dista ,2 ) ;[ f i l s , cols ]= ind2sub ( [6 6] , quienes ) ;grupdismin=[ f i l s ( : , 1 ) cols ( : , 1 ) ] ;grupdis2=[ f i l s ( : , 2 ) cols ( : , 2 ) ] ;disgrup1=abs ( grupdismin−grupdis2 ) ;d i f f c=max( disgrup1 , [ ] , 2 ) ;hist ( d i f f c ) %Gráfica de problemas de topología . Idealmente

todos los elementos en 1length ( find ( d i f f c >1) ) /length ( d i f f c ) %Error de topología .

Idealmente 0distpuntos=dist2 ( prueba ,prueba ) ;distgrupos=dist2 ( grupdismin , grupdismin ) ;dispun1=tr iu ( distpuntos ,1 , ’ pack ’ ) ;disgru1=tr iu ( distgrupos ,1 , ’pack ’ ) ;corr ( dispun1 , disgru1 ) % Correlación de distancias entre

puntos y entre grupos . Idealmente 1plot ( dispun1 , disgru1 , ’ x ’ ) %Gráfica de relación entre ambas

distancias . Debería ser estrecha cerca de la diagonal

7. Vamos a qué tal es representado un punto particular por el centroidecorrespondiente elegido por la red, también en ambos casos, fijándonosen la variable de salida:

%Probamos con , por ejemplo , e l punto 25 de la pruebasalreal=tprueba (25)salreda=pesostot ( grupa (25) ,14)salredb=pesosgran ( grupb(25) ,14)

8. Vamos a intentar hacer una red para predicción: será igual que la declasificación, pero sólo con los datos. Ella nos dará la clase y miraremosen la de clasificación completa cuál es el centroide de las salidas para esaclase.

redpredic=som(13 ,[6 6 ] ) ;%Copiamos los pesos de la completaredpredic=somunpak( redpredic , pesostot ( : ,1 :13 ) ) ;%Supongamos que cogemos como caso nuevo e l 10 de los de pruebanuevo=pprueba (10 , : ) ;real=tprueba (10)[ dist , grupo]=somfwd( redpredic ,nuevo ) ;

17

Page 18: Práctica de redes competitivas · 2019-03-13 · Ahora vamos a tener en cuenta los datos de salida en el agrupamiento y a elegir con más cuidado los parámetros que hemos cogido

pesostot ( grupo ,14) %La predicción según ese grupo[ dist , clase ]=somfwd( redgran , pesostot ( grupo , : ) ) ;pesosgran ( clase ,14) %Predicción según grupo de grupos%Curiosidad : predicción de todos los grupos del metagrupo[ dist , c l a s i f ]=somfwd( redgran , pesostot ) ;pesostot ( c l a s i f ==clase ,14)

18