GSOM

GSOM stands for the Growing Self Organizing Map. It is a growing variant of the popular Self Organizing Map (SOM). The GSOM was developed to address the issue of identifying a suitable map size in the SOM. It starts with a minimal number of nodes (usually 4) and grows new nodes on the boundary based on a heuristic. By using the value called Spread Factor (SF), the data analyst has the ability to control the growth of the GSOM.

All the starting nodes of the GSOM are boundary nodes, i.e. each node has the freedom to grow on its own direction at the beginning. (Fig. 1) New Nodes are grown from the boundary nodes. Once a node is selected for growing all its free neighboring positions will be grown new nodes. The figure shows the three possible node growth options for a rectangular GSOM.



The Algorithm
The GSOM process is as follows:
 * 1) Initialization phase:
 * 2) Initialize the weight vectors of the starting nodes (usually four) with random numbers between 0 and 1.
 * 3) Calculate the growth threshold ($$GT$$) for the given data set of dimension $$D$$ according to the spread factor ($$SF$$) using the formula $$GT = - D \times ln ( SF )$$
 * 4) Growing Phase:
 * 5) Present input to the network.
 * 6) Determine the weight vector that is closest to the input vector mapped to the current feature map (winner), using Euclidean distance (similar to the SOM). This step can be summarized as: find $$q'$$ such that $$\left | v - w_{q'} \right \vert \le \left | v - w_q \right \vert \forall q \in \mathbb{N}$$ where $$v$$, $$w$$ are the input and weight vectors respectively, $$q$$ is the position vector for nodes and $$\mathbb{N}$$ is the set of natural numbers.
 * 7) The weight vector adaptation is applied only to the neighborhood of the winner and the winner itself. The neighborhood is a set of neurons around the winner, but in the GSOM the starting neighborhood selected for weight adaptation is smaller compared to the SOM (localized weight adaptation). The amount of adaptation (learning rate) is also reduced exponentially over the iterations. Even within the neighborhood, weights that are closer to the winner are adapted more than those further away. The weight adaptation can be described by $$w_j ( k + 1 ) = \begin{cases} w_j ( k ) & \mbox{if}j \notin \Nu_{k+1} \\ w_j ( k ) + LR ( k ) \times (x_k - w_j ( k ) ) & \mbox{if}j \in \Nu_{k+1} \end{cases}$$ where the Learning Rate $$LR ( k )$$, $$k \in \mathbb{N}$$ is a sequence of positive parameters converging to zero as $$k \to \infty$$. $$w_j ( k )$$, $$w_j ( k + 1 )$$ are the weight vectors of the node $$j$$ before and after the adaptation and $$\Nu_{k+1}$$ is the neighbourhood of the winning neuron at the $$( k + 1 )$$th iteration. The decreasing value of $$LR ( k )$$ in the GSOM depends on the number of nodes existing in the map at time $$k$$.
 * 8) Increase the error value of the winner (error value is the difference between the input vector and the weight vectors).
 * 9) When $$TE_i > GT$$(where $$TE_i$$ is the total error of node $$i$$ and $$GT$$ is the growth threshold). Grow nodes if i is a boundary node. Distribute weights to neighbors if $$i$$ is a non-boundary node.
 * 10) Initialize the new node weight vectors to match the neighboring node weights.
 * 11) Initialize the learning rate ($$LR$$) to its starting value.
 * 12) Repeat steps 2 – 7 until all inputs have been presented and node growth is reduced to a minimum level.
 * 13) Smoothing phase.
 * 14) Reduce learning rate and fix a small starting neighborhood.
 * 15) Find winner and adapt the weights of the winner and neighbors in the same way as in growing phase.