Mapas autoorganizados
Mapas autoorganizados (SOM) son una forma no supervisada de aprendizaje automático que se puede utilizar para agrupar datos que tienen muchas características. El SOM no sólo agrupa sus datos sino que también los "asigna" a una dimensión inferior (generalmente dos dimensiones) para que pueda visualizar los grupos más fácilmente.
Tradicionalmente, los SOM se explican como una forma de red neuronal artificial donde las características son entradas y los grupos son salidas. Pero casi todo lo relacionado con cómo se entrena y estructura un SOM es diferente de las redes neuronales tradicionales, aunque algunos de los términos sean iguales. Entonces, si está comenzando con una red neuronal en blanco, aún podrá seguir esto. 
Para facilitar las cosas, definiré algunos términos y lo que significan desde el principio:
Nodo . Los llamamos nodos porque tomamos prestados términos de las redes neuronales, pero los nodos en los SOM representan los centros de cada uno de nuestros grupos. La cantidad de nodos que tiene es la cantidad de clústeres que tendrá.
Peso . También tomamos prestado el término peso de las redes neuronales, pero los pesos en los SOM son diferentes. Los pesos representan la posición espacial del nodo (como en K-Means tenemos centros de clúster). Los pesos tendrán la misma dimensión que nuestros vectores de datos.
Vecindario . La vecindad de un nodo son todos los nodos que están suficientemente cerca de él. Qué tan cerca es "suficientemente" cerca cambiará a medida que entrenemos nuestro SOM.
Tasa de aprendizaje . La tasa de aprendizaje refleja cuánto cambiaremos los pesos de nuestros nodos en cada iteración. Las altas tasas de aprendizaje significan que nuestros pesos pueden fluctuar enormemente. Tasas de aprendizaje muy pequeñas significan que nuestros pesos no cambiarán mucho con respecto a sus valores iniciales.
Celosía/Mapa. La disposición/cuadrícula de nodos en nuestro Mapa.

SOM de aprendizaje incremental
Para darle una mejor idea general de lo que hacen los SOM, comenzaremos analizando los SOM que están capacitados iterativamente, lo que nos permitirá ver cada paso en la creación de los SOM uno por uno. Este no es el método que JMP implementos. Para ser computacionalmente eficiente, JMP entrena sus SOM con el método por lotes, que veremos a continuación.
Descripción general . Hay cinco pasos principales para entrenar un SOM de forma iterativa:
- Inicializar los pesos de los nodos SOM. Esto se puede hacer de forma aleatoria o se pueden elegir pesos iniciales particulares para que se distribuyan de manera eficiente entre todos los valores de entrada posibles (lo que hace JMP).
- Elegir un punto de datos aleatorio de su conjunto de datos.
- Calcule a qué nodo está más cercano el punto de datos . Podemos hacer esto calculando la distancia entre nuestro punto de datos y el peso de cada nodo. El nodo más cercano se llama Mejor unidad a juego ( UMB para abreviar).
- Una vez que conocemos la BMU, calculamos qué nodos están en la vecindad de la BMU . En otras palabras, qué nodos están suficientemente cerca en el mapa de la BMU.
- Nosotros actualizar el peso del BMU y todos sus vecinos para que sus pesos sean más similares a nuestro punto de datos. Básicamente, estamos haciendo que nuestros clústeres se ajusten mejor a nuestros datos. Los nodos que están más lejos de la BMU se modifican menos que los nodos cercanos a la BMU (y la propia BMU).
Repetimos los pasos 2 a 5 hasta que alcancemos nuestro número máximo de iteraciones o los pesos de nuestros nodos dejen de cambiar.
A fondo . Echemos un vistazo más profundo a los pasos 3 a 5 para comprender lo que está sucediendo de manera más intuitiva.
Antes que empecemos, no dejes que las matemáticas te impidan leer esta sección . Voy a mostrarte fórmulas, pero está bien si no entiendes todas las matemáticas, siempre y cuando conozcas la idea general detrás. por qué Usamos esta matemática.
Encontrar la BMU . Hay muchas formas de calcular la distancia entre dos vectores de n dimensiones; comúnmente con los SOM, es posible que vea medidas como la distancia euclidiana o la distancia coseno.


En este caso usaremos la distancia euclidiana. Para calcular la BMU, calculamos la distancia euclidiana entre nuestro vector de datos seleccionado y cada uno de los vectores de peso de nuestros nodos. La BMU tiene la distancia más pequeña.
Calculando barrios . La actualización de múltiples nodos/centros de clústeres separa los SOM de métodos más simples como K-Means. No solo cambiaremos el peso de nuestra BMU para que esté más cerca del vector de datos, sino que también cambiaremos los nodos que creemos que están lo suficientemente cerca de la BMU.
Los nodos se consideran en la vecindad de una BMU si están dentro de un radio determinado de la BMU. En otras palabras, si un nodo está dentro de un círculo con radio, r , centrado en la BMU, se considera vecino.
Al principio, queremos utilizar una vecindad grande y cambiar muchos nodos. Pero, a medida que pasa el tiempo, queremos que nuestros vecindarios se hagan más pequeños para poder hacer más “ajustes” de nuestro SOM. Piense en cómo, al lijar algo, a menudo comenzamos con papel de lija de grano grande y avanzamos hasta papel de lija de grano más fino.
Matemáticamente, podemos lograr esto usando una fórmula para nuestro radio de vecindad, r , eso depende del tiempo y se hace más pequeño a medida que continuamos entrenando nuestro SOM. Con el tiempo, el vecindario será tan pequeño que solo contendrá la BMU.
Actualizar pesos de nodos . Una vez que sabemos qué pesos de nodos queremos actualizar, calculamos cuánto cambiarlos. Los pesos de los nodos más cercanos a la BMU cambiarán *más*, y los nodos que están en el borde mismo de nuestra vecindad cambiarán muy poco. Pero todos los pesos de los nodos se acercarán al vector de datos actual.
Lo hacemos usando esta fórmula (no te preocupes, te explicaré las diferentes partes en un momento):

Las W representan el peso del nodo. W(t+1) es nuestro actualizado peso, W(t) es nuestro actual peso. Si simplificamos la última parte del lado derecho por un momento, podemos ver que el peso nuevo y actualizado es nuestro peso anterior multiplicado por algunos ajustamiento .

(V(t) - W(t)) es la distancia entre nuestro vector de datos y el peso del nodo actual. Esto muestra que nuestro ajuste dependerá de qué tan separados estén el vector de datos y el nodo.

L(t) es la tasa de aprendizaje. Al igual que nuestra función de vecindad (en realidad, EXACTAMENTE como nuestra función de radio de vecindad...), nuestra tasa de aprendizaje comienza con un valor relativamente grande, y se hace más pequeño con el tiempo (la parte exponencial hace eso por nosotros).

Cuando comenzamos a entrenar nuestro SOM por primera vez, nuestra tasa de aprendizaje es alta, pero con el tiempo queremos que los pesos de nuestros nodos sean más estables, por lo que reducimos nuestra tasa de aprendizaje.

No sólo la tasa de aprendizaje está disminuyendo a lo largo tiempo , pero el cambio en los pesos de nuestros nodos también disminuye a medida que el nodo se vuelve más de nuestra BMU.
es un núcleo gaussiano, que matemáticamente representa esta decadencia. ( dist. es la distancia entre el nodo que estamos cambiando y la BMU en el mapa).

Para un radio dado, r(t), el núcleo gaussiano tendrá esta forma:
Cuando la distancia entre el nodo que estamos actualizando y la BMU es grande, será pequeño. Por el contrario, cuando el nodo que estamos actualizando está cerca de la BMU, será más grande.
¡Finalmente hemos deconstruido toda la fórmula!

Para revisar:
W(t) es el peso actual de un nodo.

hace que se cambien los nodos que están más lejos de la BMU menos que los nodos cercanos a la BMU (y a la propia BMU).
L (t) es nuestra tasa de aprendizaje decreciente. A medida que pasa el tiempo, estamos "afinando" y haciendo cambios más pequeños que al comienzo del entrenamiento.
V(t) - W(t) es la distancia entre el vector de datos y el peso del nodo (ambos de n dimensiones). Cuanto mayor sea la distancia, más cambiarán las cosas.
Si has llegado hasta aquí, ¡te mereces un descanso! Hemos revisado la forma en que se entrenan los SOM de forma iterativa. Esto nos mostró las ideas generales que hacen que los SOM sean únicos: es decir, la forma en que actualizamos los pesos de múltiples nodos dependiendo de tiempo, distancia desde la BMU y distancia entre el vector de datos y el peso del nodo.
Si alguna vez ha leído sobre los SOM en otros lugares, lo que entusiasma a la gente es que los SOM "preservan la topología", que es simplemente una forma elegante de decir que los nodos que están muy juntos en el espacio multidimensional estarán muy juntos en nuestro SOM. grid una vez que lo hayamos entrenado. Esto nos ayuda a visualizar nuestros datos usando la cuadrícula SOM, ya que es fácil graficar cosas en dos dimensiones... pero mucho más difícil en múltiples dimensiones.
Aprender sobre el entrenamiento SOM iterativo es útil para comprender estas propiedades, pero no es computacionalmente eficiente. Es por eso que JMP utiliza el lote método de entrenamiento para hacer realmente los cálculos de SOM.
Aprendizaje por lotes SOM
Este algoritmo es el descrito en el sitio web de JMP. En lugar de entrenar nuestro SOM con un vector de datos a la vez, ¡podemos usar todos los vectores de datos a la vez!
Aquí están los pasos:
- Inicializar los pesos de los nodos SOM (esto es lo mismo en el método iterativo)
- De repente, calcular las BMU para cada vector de datos en nuestro conjunto de entrenamiento.
- Calcular los nuevos pesos de los nodos. usando esta fórmula:

es el número de vectores de datos cuya BMU es el nodo j,
es la media de todos esos vectores de datos y es la función de vecindad que decide qué nodos se cambian y en qué medida. Es similar al
en nuestro algoritmo de entrenamiento incremental.
4. Repetir 2 y 3 hasta que nuestro SOM haya convergido.
Las matemáticas pueden ser más difíciles de seguir cuando suceden todas a la vez, pero la premisa básica del algoritmo de aprendizaje por lotes es que, en lugar de actualizar nuestros nodos en respuesta a uno vector de datos, los actualizamos en respuesta a todo los vectores de datos a la vez (algo así como K-Means...). Y, afortunadamente para usted, este método a menudo acelerará el tiempo que le toma a JMP entrenar su SOM.
En JMP
En JMP, la opción SOM se encuentra en el menú K-Means. Usemos un SOM para agrupar algunas hamburguesas de comida rápida de varios restaurantes estadounidenses. Ir a Analizar > Agrupación > K-Medias . Aparecerá la ventana K-Means Cluster. Haga clic y arrastre todas las variables que desee utilizar al Y cuadro y haga clic DE ACUERDO .
Dentro del Panel de control, hay un menú desplegable para Método. Elegir Mapa autoorganizado . Desde aquí, puedes elegir el tamaño de tu cuadrícula. Haremos 2x2, lo que nos da cuatro nodos dispuestos en forma rectangular. Hacer clic IR .
Nuestro resultado nos muestra automáticamente las medias de cada uno de nuestros cuatro grupos. Podemos guardar estas asignaciones de clúster yendo al triángulo rojo en nuestro menú SOM Grid y seleccionando " Guardar grupos ”. En ese mismo menú, también podemos seleccionar “ biplot ”para ver una representación visual de nuestro SOM. JMP trazará los nodos/clústeres por los dos primeros componentes principales. Aquí, parece que el Grupo 1 (en la parte superior) está bastante lejos de los otros tres. Podemos comprobarlo más adelante en Graph Builder.

Incluso examinando algunas de nuestras variables, podemos empezar a ver por qué el Grupo 1 era tan diferente. No tiene absolutamente ninguna proteína. Si observamos nuestro conjunto de datos, podemos ver que los artículos del Grupo 1 tienden a ser postres. 
¡El grupo 2, por otro lado, tiene un alto contenido de calorías, proteínas y grasas! Es posible que desees tener cuidado con esos artículos si buscas permanecer despierto por mucho tiempo después de comerlos.
Conclusión
Los mapas autoorganizados son una herramienta útil para agrupar sus datos mediante la creación de un mapa que toma datos potencialmente altamente dimensionales y los mapea en una forma 2D mucho más manejable. En JMP , los SOM son tan fáciles de implementar como los K-Means (incluso si las matemáticas detrás de ellos son mucho más complicadas), entonces, ¿qué tienes que perder al probarlos?
Mapas autoorganizados (SOM) son una forma no supervisada de aprendizaje automático que se puede utilizar para agrupar datos que tienen muchas características. El SOM no sólo agrupa sus datos sino que también los "asigna" a una dimensión inferior (generalmente dos dimensiones) para que pueda visualizar los grupos más fácilmente.
Re: mapas autoorganizadoshola chelsea
¿Tiene un ejemplo sobre cómo utilizar el SOM en JMP para reducir la dimensionalidad?
Normalmente uso SOM para agrupar, pero sé que también se puede usar para reducir la cantidad de predictores.
Gracias
Felice