Mapas de Auto-Aprendizaje Kohonen
Mapas de Auto-Aprendizaje Kohonen
Mapas de Auto-Aprendizaje Kohonen
Kohonen (SOM)
Los mapas auto-organizados de Kohonen (SOM)
En 1982 T. Kohonen presentó un modelo de red denominado mapas
auto-organizados o SOM (Self-Organizing Maps), basado en ciertas
evidencias descubiertas a nivel cerebral. Este tipo de red posee un
aprendizaje no supervisado competitivo.
Las clases o categorías deben ser creadas por la propia red, puesto que
se trata de un aprendizaje no supervisado, a través de las correlaciones
entre los datos de entrada.
Fundamentos biológicos
Se ha observado que en el córtex de los animales superiores aparecen
zonas donde las neuronas detectoras de rasgos se encuentran
topológicamente ordenadas; de forma que las informaciones captadas
del entorno a través de los órganos sensoriales, se representan
internamente en forma de mapas bidimensionales.
Cada neurona de entrada i está conectada con cada una de las neuronas de
salida j mediante un peso wji. De esta forma, las neuronas de salida tienen
asociado un vector de pesos Wj llamado vector de referencia (o codebook),
debido a que constituye el vector prototipo (o promedio) de la categoría
representada por la neurona de salida j.
Paso 2. Una vez que se ha encontrado el vector más próximo o BMU (best
matching unit) el resto de vectores del codebook es actualizado. El BMU y
sus vecinos (en sentido topológico) se mueven cerca del vector x en el
espacio de datos. La magnitud de dicha atracción está regida por la tasa de
aprendizaje.
Mientras se va produciendo el proceso de actualización y nuevos
vectores se asignan al mapa, la tasa de aprendizaje decrece
gradualmente hacia cero. Junto con ella también decrece el radio de
vecindad.
library(kohonen)
data(wines)
set.seed(7)
wines.sc <- scale(wines)
wine.som <- som(data = wines.sc, grid = somgrid(5, 4, "hexagonal"))
names(wine.som)
summary(wine.som)
wine.som$unit.classif
wine.som$codes
plot(wine.som, main = "Datos de Vinos")
En el llamado SOM supervisado existe también hay una variable dependiente para
comparar los resultados (categórica o continua)
library(kohonen)
data(wines)
set.seed(7)
par(mfrow=c(2,2))
plot(kohmap, type="codes", main=c("Distribuci\’{o}n de variables",
"Clases de C\’{o}digos"))
plot(kohmap, type="counts")
plot(kohmap, type="mapping",labels=wine.classes, col=wine.classes+1, main="Mapa de
clases")