Mapas autoorganizados
Mapas autoorganizados (SOM) son una forma no supervisada de aprendizaje automático que se puede usar para agrupar datos que tienen muchas características. El SOM no solo agrupa sus datos, sino que también los "asigna" a una dimensión más baja (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 sobre cómo se entrena y estructura un SOM es diferente de las redes neuronales feedforward tradicionales, aunque algunos de los términos son los mismos. Entonces, si está comenzando con una pizarra en blanco en cuanto a redes neuronales, aún podrá seguir esto. 
Para facilitar las cosas, definiré algunos términos y lo que significan por adelantado:
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 clústeres. La cantidad de nodos que tiene es la cantidad de clústeres que tendrá.
Peso . También tomamos prestado el término peso de Neural Networks, pero los pesos en SOM son diferentes. Los pesos representan la posición espacial del nodo (como cómo 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 está "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 nuestro peso puede fluctuar enormemente. Tasas de aprendizaje muy pequeñas significan que nuestros pesos no cambiarán mucho de 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 observando los SOM que están capacitados iterativamente, lo que nos permitirá ver cada paso en la creación de 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.
Visión general . Hay cinco pasos principales para entrenar un SOM iterativamente:
- Inicializar los pesos de los nodos SOM. Esto se puede hacer al azar 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 qué nodo está más cerca del 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 coincidente ( UMB para abreviar).
- Una vez que conocemos la UMB, calculamos qué nodos están en la vecindad de la BMU . En otras palabras, qué nodos están lo suficientemente cerca en el mapa de la BMU.
- Nosotros actualizar el peso de la BMU y todos sus vecinos para que sus pesos sean más similares a nuestro punto de datos. Esencialmente, 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 hayamos alcanzado 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-5 para entender lo que está pasando 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 UMB . Hay muchas formas de calcular la distancia entre dos vectores n-dimensionales; comúnmente con los SOM, es posible que vea medidas como Distancia euclidiana o Distancia coseno.


En este caso, vamos a utilizar 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 para nuestros nodos. La BMU tiene la distancia más pequeña.
Cálculo de barrios . La actualización de múltiples nodos/centros de clúster 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 cierto radio de la BMU. En otras palabras, si un nodo está dentro de un círculo con radio, r , centrado en la BMU, se considera un vecino.
Al principio, queremos usar un vecindario grande y cambiar muchos nodos. Pero, a medida que pasa el tiempo, queremos que nuestros vecindarios se hagan más pequeños para que podamos 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 hacia un 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. Eventualmente, el vecindario será tan pequeño que solo contendrá la BMU.
Actualización de 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 límite de nuestro vecindario cambiarán muy poco. Pero todos los pesos de los nodos se acercarán más al vector de datos actual.
Lo hacemos usando esta fórmula (no se preocupe, lo guiaré a través de 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 nuevo peso 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 la distancia entre 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 en un valor relativamente alto, , y se vuelve más pequeño con el tiempo (la parte exponencial lo hace 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 disminuimos nuestra tasa de aprendizaje.

No sólo está disminuyendo la tasa de aprendizaje tiempo , pero el cambio en los pesos de nuestros nodos también está disminuyendo a medida que el nodo se vuelve más lejos de nuestra UMB.
es un núcleo gaussiano, que matemáticamente representa este decaimiento. ( 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 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 n-dimensionales). 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 los SOM se entrenan 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 según tiempo, distancia desde la BMU y distancia entre el vector de datos y el peso del nodo.
Si alguna vez leyó sobre los SOM en otros lugares, lo que entusiasma a la gente es que los SOM "preservan la topología", que es solo una forma elegante de decir que los nodos que están juntos en un espacio multidimensional estarán juntos en nuestro SOM. grilla una vez que la 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 de SOM iterativo es útil para comprender estas propiedades, pero no es computacionalmente eficiente. Por eso JMP utiliza el lote método de entrenamiento para hacer realmente los cálculos SOM.
SOM de aprendizaje por lotes
Este algoritmo es el descrito en la 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 UMB para cada vector de datos en nuestro conjunto de entrenamiento.
- Calcule los pesos de los nuevos 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 modifican y cuánto. es similar al
en nuestro algoritmo de entrenamiento incremental.
4. Repita 2 y 3 hasta que nuestro SOM haya convergido.
Las matemáticas pueden ser más difíciles de seguir cuando ocurren 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 una vector de datos, los actualizamos en respuesta a todos 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 Analizar > Clustering > K-Means . Aparecerá la ventana Clúster de K-Means. Haga clic y arrastre todas las variables que desea utilizar sobre el Y cuadro y haga clic OK .
Dentro del Panel de control, hay un menú desplegable para Método. Elegir Mapa autoorganizado . Desde aquí, puede elegir el tamaño de su cuadrícula. Haremos 2x2, lo que nos da cuatro nodos dispuestos en forma rectangular. Hacer clic VAMOS .
Nuestra salida nos muestra automáticamente las medias de cada uno de nuestros cuatro grupos. Podemos guardar estas asignaciones de clústeres yendo al triángulo rojo debajo de nuestro menú SOM Grid y seleccionando " Guardar clústeres ”. En ese mismo menú, también podemos seleccionar “ Biplot ” para ver una representación visual de nuestro SOM. JMP trazará los nodos/clusters 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 al examinar algunas de nuestras variables, podemos comenzar a ver por qué el Grupo 1 fue tan diferente. No tiene absolutamente ninguna proteína. Si miramos nuestro conjunto de datos, podemos ver que los artículos en el 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 desee tener cuidado con esos artículos si desea permanecer despierto 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 K-Means (incluso si las matemáticas detrás de esto son mucho más complicadas), entonces, ¿qué tiene que perder si los prueba?
Mapas autoorganizados (SOM) son una forma no supervisada de aprendizaje automático que se puede usar para agrupar datos que tienen muchas características. El SOM no solo agrupa sus datos, sino que también los "asigna" a una dimensión más baja (generalmente dos dimensiones) para que pueda visualizar los grupos más fácilmente.
Re: Mapas autoorganizadoshola chelsea
¿Tiene un ejemplo sobre cómo usar el SOM en JMP para la reducción de dimensionalidad?
Por lo general, uso SOM para la agrupación en clústeres, pero sé que también se puede usar para reducir la cantidad de predictores.
Gracias
feliz