SOM(Self-Origanizing Maps),自组织映射网络,是一种基于神经网络的聚类算法。有时候也称为 SOFM(Self-Origanizing Features Maps)。SOM 是一个单层的神经网络,仅包含输入层和计算层。
SOM 结构
计算层也称为竞争层,也是输出层。其由一系列神经元组成的节点构成,可以是一维的结构,也可以是二维的结构。即计算层是拓扑结构的。也可以看出,SOM 起到了降维的作用 -- 将高纬度的输入数据映射到一维或者二维空间中。在 k-means 中,我们需要提前指定 k 的取值,即集群的数量。但在 SOM 中,需提前指定一个拓扑结构(集群间的几何关系)。在拓扑结构中,一个节点就是一个聚类。
SOM 将输入数据转换为离散的低维数据,然后被表示成局部区域或者网络中的活动点。初始化的步骤完成后,接下来是竞争,协作和适应这三个重要的学习过程。
1.初始化权重 w
2.寻找最近的神经元 i(x) = argminj||x(n) - wj(n)||
3.更新邻近神经元的权重
4.减少邻近神经元以及学习速率 η wj(n+1)= wj(n) + η(n) hj,i(x)(x - wj(n))
5.回到第2步
因为在 Rapid Miner 中,SOM 操作器的主要用途是用来将高纬度的特征进行降维,其输出结果不适合用来进行聚类分析。所以,转战 Matlab 进行实践。
在命令行窗口输入nnstart
,弹出如下界面:
训练完成后,点击 “Plots” 下的 “SOM Sample Hits”。对于 SOM 训练,与每个神经元相关联的权重向量移动成为输入向量集群的中心。此外,拓扑中彼此相邻的神经元也应该在输入空间中彼此靠近移动,因此可以在网络拓扑的两个维度中可视化高维输入空间。
SOM 的默认拓扑是六边形。该图显示拓扑中的神经元位置,并显示有多少训练数据与每个神经元(聚类中心)相关联。拓扑结构是10×10网格,因此有100个神经元。与任何神经元都相关的最大命中数为 31。因此,该群集中有31个输入向量。
也可以点击 “SOM Weights Positions” 来分析结果。下图显示了输入矢量的每个元素的权重平面(在这种情况下为两个)。它们是将每个输入连接到每个神经元的权重的可视化。 (较暗的颜色代表较大的权重)如果两个输入的连接模式非常相似,则可以假设输入高度相关。在本例情况下,input 1 具有与 input 2 非常不同的连接模式。
[1]. Self Organizing Maps (SOM): 一种基于神经网络的聚类算法 [2]. SOM是怎样一种模型(对于初学者如何操作,算法等)?