5.6 Impact on customers/clients
5.6.2 Disbenefits
Se realizó un ejercicio de clasificación mediante el método de kohonen para entender a fondo su funcionamiento. El ejercicio consistió en clasificar 6 patrones constituidos por coordenadas en las 3 dimensiones, los cuales se generaron predeterminadamente para que se agruparan en 3 familias como se muestra en la Tabla 5.1.
Tabla 5.1. Patrones de entrada del ejemplo de clasificación. PATRON COORD X COORD Y COORD Z GRUPO
1 0.3 0.25 0.9 3 2 0.8 0.8 0.15 1 3 0.2 0.25 0.2 2 4 0.35 0.25 0.9 3 5 0.85 0.85 0.15 1 6 0.15 0.2 0.1 2
Estos mismos datos pueden observarse de manera gráfica en la Figura 5.1.
Como se puede observar, el grupo 3 en las coordenadas X y Y es similar al grupo 2, sin embargo en la coordenada Z se diferenciaron significativamente para ver si el método de kohonen era capaz de separarlos.
0 0.2 0.4 0.6 0.8 1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 COORDENADA X COORDENADA Y C O O R DE NA DA Z
Figura 5.1. Patrones de entrada del ejemplo de clasificación.
Para resolver este problema se planteó un modelo de red auto-organizada con 20 neuronas distribuidas en 5 filas por 4 columnas como se muestra en la Figura 5.2, donde se señala el número de cada neurona en negro y el número de cada fila y columna respectivamente en rojo.
F/C
1 2 3 4 11
2
3
4
25
6
7
8
39
10
11
12
413
14
15
16
517
18
19
20
Figura 5.2. Topología del modelo de red de Kohonen.
Teniendo en cuenta que son 3 variables por patrón, se inicializaron los pesos de cada neurona, obteniéndose la matriz que se muestra en la Tabla 5.2. En esta matriz se observa para cada neurona igual número de pesos como variables
Grupo 1
Grupo 2
Grupo 3
tienen los patrones. La generación de estos pesos se hizo de forma aleatoria entre 0 y 0.5 para permitirle a la red organizarse más fácilmente.
Tabla 5.2. Inicialización de pesos de las 20 neuronas.
F/C
1 2 3 4 1 0.280 0.263 0.308 0.365 0.178 0.154 0.322 0.445 0.126 0.044 0.498 0.316 2 0.372 0.166 0.422 0.028 0.182 0.148 0.367 0.181 0.391 0.012 0.442 0.409 3 0.308 0.419 0.481 0.493 0.023 0.012 0.022 0.193 0.340 0.444 0.300 0.125 4 0.413 0.058 0.433 0.468 0.386 0.465 0.481 0.043 0.194 0.480 0.331 0.282 5 0.125 0.424 0.044 0.486 0.168 0.246 0.342 0.433 0.380 0.455 0.214 0.326Para definir los valores de la tasa de aprendizaje y la vecindad, previamente se determinó que el número de iteraciones iba a ser 5, entendiendo por una iteración en este caso la presentación a la red de los 6 patrones. El valor inicial de la tasa de aprendizaje se estableció en 0.5 y se fue disminuyendo a razón de 0.1 por iteración para culminar con un valor de 0.1. Igualmente, la vecindad para la primera iteración se estableció del tamaño de la red, es decir 5, y fue disminuyendo paulatinamente hasta que en la iteración 5 el valor de la vecindad resultó en 1.
En cada iteración, el proceso de aprendizaje de la red consistió en:
1. Presentarle a la red cada uno de los patrones y calcular la distancia euclidiana entre cada neurona y el patrón.
2. Declarar la neurona ganadora como la más cercana al patrón de acuerdo con las distancias euclidianas obtenidas a partir de la Ecuación 4. Por ejemplo, en la Tabla 5.3 se muestran las distancias euclidianas de la red con respecto al patrón 1 de la primera iteración. En rojo se señala la neurona ganadora y en escala de naranjas la magnitud de la distancia euclidiana para cada neurona, siendo naranja oscuro la distancia con mayor magnitud y naranja claro el caso contrario.
Tabla 5.3. Distancias euclidianas y neurona ganadora – Patrón 1, iteración 1. F/C 1 2 3 4 1 0.7776 0.8622 0.4085 0.6191 2 0.5185 0.9038 0.4882 0.5655 3 0.6043 0.5280 0.6669 0.8007 4 0.7278 0.5303 0.6283 0.6731 5 0.5548 0.4620 0.7380 0.6305
3. En función de la neurona ganadora, asignarle a todas las neuronas de la red el factor de ponderación según su grado de vecindad y de acuerdo con la función gausina (Ecuación 5). Para el mismo ejemplo, en la Tabla 5.4 se muestra la distribución del factor de ponderación de la red. Nótese como la neurona ganadora tiene un factor de ponderación de 1 y a medida que el grado de vecindad es mayor (colores oscuros) el factor de ponderación va disminuyendo. Es importante resaltar el hecho de que la vecindad de la neurona ganadora va disminuyendo a medida que aumentan las iteraciones, por ejemplo, en la Tabla 5.5 se muestra la distribución del factor de ponderación para el mismo patrón pero en la iteración 3 donde la vecindad también tiene un valor de 3. Nótese como las neuronas fuera de la vecindad (filas 4 y 5 y columna 1) tienen un factor de ponderación nulo, es decir que ya no se actualizan en función de este patrón por encontrarse alejadas de la neurona ganadora correspondiente.
[5] Tabla 5.4. Factor de ponderación – Patrón 1, iteración 1.
F/C 1 2 3 4 1 0.9231 0.9802 1.0000 0.9802 2 0.9231 0.9802 0.9802 0.9802 3 0.9231 0.9231 0.9231 0.9231 4 0.8353 0.8353 0.8353 0.8353 5 0.7261 0.7261 0.7261 0.7261
Tabla 5.5. Factor de ponderación – Patrón 1, iteración 3.
F/C 1 2 3 4 1 0.8007 0.9460 1.0000 2 0.8007 0.9460 0.9460 3 0.8007 0.8007 0.8007 4 5
4. Actualización de pesos de la red en función del patrón presentado (Ecuación 6). Los pesos actualizados son los pesos con los cuales se calcula posteriormente la distancia euclidiana para el siguiente patrón. Por ejemplo, en la primera iteración cuando se actualizaron los pesos de la red con respecto al primer patrón, se obtuvieron los pesos que se muestran en la Tabla 5.6, que a su vez fueron el insumo para calcular las distancias euclidianas con respecto al segundo patrón.
[6] Tabla 5.6. Pesos actualizados de la red – Patrón 1, iteración 1.
F/C
1
2
3
4
1
0.2892 0.2811 0.3040 0.3331 0.2112 0.2010 0.2860 0.3494 0.4832 0.4635 0.6990 0.60222
0.3388 0.2317 0.3622 0.1613 0.2134 0.1980 0.3097 0.2148 0.6259 0.4472 0.6665 0.64963
0.3043 0.3641 0.3975 0.4039 0.1278 0.1219 0.1272 0.2193 0.5985 0.6545 0.5769 0.48274
0.3658 0.1591 0.3775 0.3978 0.3292 0.3752 0.3845 0.1295 0.4889 0.6554 0.5686 0.54015
0.1885 0.3790 0.1369 0.4185 0.1978 0.2475 0.3086 0.3666 0.5688 0.6166 0.4631 0.5344Estos cuatro pasos se repitieron para cada patrón en cada una de las 5 iteraciones planeadas. Las ecuaciones mostradas en los pasos fueron descritas en la Sección 3.2.3.2 de este documento. Finalmente, para cada iteración se calculó el error como la suma de las distancias euclidianas de las 6 neuronas ganadoras correspondientes a cada patrón, obteniéndose la curva que se muestra en la Figura 5.3. Los cálculos detallados de este ejercicio se incluyen en el Anexo B de este documento.
0.0 0.5 1.0 1.5 2.0 2.5 3.0 3.5 0 1 2 3 4 5 6 ERRO R ITERACIÓN
VARIACIÓN DEL ERROR
Figura 5.3. Variación del error del modelo.
Finalmente, en la Figura 5.4 se muestra la ubicación de la neurona ganadora por patrón en cada iteración. Los números señalados en las neuronas ganadoras hacen referencia al patrón respectivo y los colores rojo, azul y verde señalan los grupos 1, 2 y 3 respectivamente.
6 3 1 y 4 3 y 6 1 y 4 3 y 6 1 y 4 3 y 6 1 y 4 3 y 6 1 y 4
2 y 5 2 y 5 2 y 5 2 y 5 2 y 5
ITERACIÓN 1 ITERACIÓN 2 ITERACIÓN 3 ITERACIÓN 4 ITERACIÓN 5
Figura 5.4. Agrupamiento de datos para cada iteración. De la figura anterior es importante destacar que:
• Desde la primera iteración clasificó correctamente los grupos 1 (rojo) y 3 (verde), obteniendo los patrones respectivos una sola neurona ganadora.
• En la primera iteración, el grupo 2 (azul) quedó asignado en dos neuronas consecutivas por el efecto de la vecindad. Esto resulta consistente ya que los patrones del grupo 2 son los más distanciados entre sí y es normal que de entrada no tengan la misma neurona ganadora, sin embargo, éstas sí deben ser consecutivas como en efecto ocurrió
• En la primera iteración, el grupo 2 quedó justo al lado del grupo 3, lo cual también es consistente pues de entrada el modelo los trata de agrupar porque sus coordenadas, con excepción de la coordenada Z, son muy similares.
• No obstante, sabiendo que los grupos 2 y 3 se diferencian
significativamente en sus coordenadas Z, el modelo los separó desde la iteración 2, ubicándolos en extremos diferentes a pesar de poseer coordenadas X y Y similares.
• A partir de la segunda iteración el método clasificó correctamente el 100% de los patrones. De ahí en adelante fue ajustando más los pesos de las neuronas para que representaran mejor a los patrones.