organizing organizativos mapas kohonen cluster autoorganizados algorithm machine-learning self-organizing-maps

algorithm - organizativos - self organizing maps python



¿La ubicación de una neurona en un mapa autoorganizado depende de su peso? (1)

He analizado muchos ejemplos teóricos de SOM, pero una cosa no es muy clara para mí: ¿la ubicación de los nodos depende de su peso? Por ejemplo, ¿los nodos con un mayor peso estarán en un lado del mapa, mientras que los nodos con un peso menor estarán más alejados en el mapa?


No. En un SOM (también conocido como mapa de Kohonen) la función de peso se aplica a sus datos, no a las "neuronas".

Los pesos se usan durante la construcción del mapa (entrenamiento), es decir, se calculan en cada iteración y para cada celda reticular dentro de cada iteración. Dicho de otra manera, para cada iteración que comprende la construcción del mapa, se usa una función de ponderación para escalar la contribución de esos puntos al determinar la posición / ubicación de la celda.

La ubicación de un punto de datos en un mapa de Kohonen está determinada por la celda reticular del mapa más cercana a ese punto de datos , es decir, construir un mapa de Kohonen implica la reasignación iterativa de cada punto del conjunto de datos a la celda del enrejado más cercano a eso.

Aquí hay una manera de pensarlo: un mapa Kohonen es solo un mapeo de sus datos en una topología fija, o retícula, en 2 dimensiones, una cuadrícula regular, por ejemplo.

Cada iteración en la fase de entrenamiento (construcción del mapa) implica una reasignación de cada punto de datos (si es necesario) a la celda más cercana en el enrejado más cercano a ella. A continuación, las posiciones de las celdas se ajustan en función de (i) los puntos de datos asignados a esa celda de la iteración anterior; y (ii) los puntos de datos en las celdas vecinas.

La forma en que los valores de los puntos de datos en (i) y (ii) contribuyen al nuevo valor de la ubicación de la celda está determinada por el peso de cada punto de datos, que a su vez está determinado por una función de ponderación. Esto es consistente con la intuición: los puntos más alejados de la celda deberían tener una influencia menor sobre el nuevo valor de la celda en comparación con los puntos de datos más cercanos a la celda. En un mapa de Kohonen, la función de peso aplica esta restricción. La función de peso del libro de texto es gaussiana. En Python:

def gaussian(dist, t, alpha=1.0, sigma=1.0) : from math, import e return alpha * t * e**(-dist/(2*sigma*t))**2

En esta función, dist es la distancia del punto de datos desde el centro de la celda, yt es el tiempo (por ejemplo, cada iteración durante la construcción del mapa es un tic del reloj).

Entonces imagina una curva gaussiana, cortada a la mitad por su centro; el eje x es dist y el eje y representa el peso; a medida que aumenta la distancia, el peso disminuye. Del mismo modo, a medida que aumenta t, también lo hace el peso. Este es un elemento crucial en la construcción del Mapa Kohonen: con iteraciones crecientes (durante la construcción del mapa) los puntos vecinos tienen cada vez menos influencia en el reposicionamiento de una celda determinada. Por lo tanto, la importancia de la relación tiempo-peso es que la tasa de cambio en las posiciones celulares disminuye con el tiempo (las posiciones cambian menos con cada iteración), hasta que finalmente no hay cambio en la posición con la siguiente iteración, que es el criterio de convergencia para una Mapa de Kohonen.

¿Qué tiene que ver el peso del punto de datos con esto? Bueno, la ubicación de esa celda reticular en la iteración anterior fue determinada por los puntos de datos en esa celda y aquellos en la celda vecina, las contribuciones de esos puntos a la posición de la nueva célula se determinan de acuerdo con una función de ponderación.

Finalmente, el peso de un punto de datos no es realmente un atributo inherente de ese punto de datos. Por un lado, es útil solo durante la construcción del mapa, y por otro, los puntos de datos en realidad no tienen un valor de peso, sino que en cada iteración durante la construcción del mapa, los puntos de datos asignados a una celda determinada y esos puntos en las celdas vecinas son utilizado para calcular la nueva posición de una celda de celosía dada. Ese cálculo toma en cuenta la distancia de cada punto desde el centro celular al asignar un peso a cada punto de datos; por lo tanto, ese valor de peso solo es significativo para esa iteración y para ese centro celular, por ejemplo, al calcular el siguiente centro celular, el mismo punto de datos tendrá un peso diferente porque su distancia al centro de celda es diferente.