SOM(Self-Organizing|SOM(Self-Organizing Maps) 聚类算法

SOM 的基本结构
SOM(Self-Origanizing Maps),自组织映射网络,是一种基于神经网络的聚类算法。有时候也称为 SOFM(Self-Origanizing Features Maps)。SOM 是一个单层的神经网络,仅包含输入层和计算层。
SOM(Self-Organizing|SOM(Self-Organizing Maps) 聚类算法
文章图片
SOM 结构
计算层也称为竞争层,也是输出层。其由一系列神经元组成的节点构成,可以是一维的结构,也可以是二维的结构。即计算层是拓扑结构的。也可以看出,SOM 起到了降维的作用 -- 将高纬度的输入数据映射到一维或者二维空间中。在 k-means 中,我们需要提前指定 k 的取值,即集群的数量。但在 SOM 中,需提前指定一个拓扑结构(集群间的几何关系)。在拓扑结构中,一个节点就是一个聚类。
SOM(Self-Organizing|SOM(Self-Organizing Maps) 聚类算法
文章图片
SOM 的学习过程
【SOM(Self-Organizing|SOM(Self-Organizing Maps) 聚类算法】SOM 将输入数据转换为离散的低维数据,然后被表示成局部区域或者网络中的活动点。初始化的步骤完成后,接下来是竞争,协作和适应这三个重要的学习过程。

  • 竞争过程(Competitive Process)
    在 SOFM 中,竞争层的各个神经元依据输入的 N 维的数据模式(x)和连接强度(权重 w)来连接。w 的范围在【0,1】之间,以正规化的任意值来初始化。在学习过程中,会计算输入模式 x 与所有神经元的权重 w 之间的距离。当距离最小时该神经元成为胜者,这就是竞争的过程。
  • 协作过程(Cooperation Process)
    这一过程是仅竞争过程的胜者与其邻近的神经元,对提供的输入数据进行学习。为了对相似的特征在竞争阶层中更敏感地形成地图,“胜者”神经元依据固定的函数来决定邻近的神经元,同时此神经元的相应权重也会得到更新。Kohonen 网络的哲学就是 “胜者独占(winner take all)”,即只有胜者才有输出,只有胜者才能够更新权重 w
  • 适应过程(Adaptation Process)
    该过程适应激活函数,使得获胜者神经元和邻近神经元对特定输入值更敏感,同时也更新相应的权重。通过此过程,与胜者神经元邻近的神经元将会比远离的神经元更加适应。适应的大小用过学习率来控制,学习率随着学习的时间而衰减,其对 SOFM 的收敛速度起到减小的作用。
SOM(Self-Organizing|SOM(Self-Organizing Maps) 聚类算法
文章图片
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步
基于 Matlab 的 SOM 实践
因为在 Rapid Miner 中,SOM 操作器的主要用途是用来将高纬度的特征进行降维,其输出结果不适合用来进行聚类分析。所以,转战 Matlab 进行实践。
  1. 启动神经网络 GUI 界面
在命令行窗口输入nnstart,弹出如下界面:

SOM(Self-Organizing|SOM(Self-Organizing Maps) 聚类算法
文章图片

  1. 选择 “Clustering app”,点击 “Next”
SOM(Self-Organizing|SOM(Self-Organizing Maps) 聚类算法
文章图片
SOM(Self-Organizing|SOM(Self-Organizing Maps) 聚类算法
文章图片
  1. 加载数据集
    可以选择本地文件,也可以选择 Matlab 中自带的示例数据集。这里选择 Matlab 中的示例数据集。点击 “Load Example Data Set”,再选择 “Sample Cluster”,并点击 “Import”。
SOM(Self-Organizing|SOM(Self-Organizing Maps) 聚类算法
文章图片
SOM(Self-Organizing|SOM(Self-Organizing Maps) 聚类算法
文章图片
  1. 选择数据维度
    选择数据集完成后会回到开始的页面,点击 “Next” ,出现如下页面,在这里选择映射后数据的维度。此例子选择 10 作为 映射后的维度。

    SOM(Self-Organizing|SOM(Self-Organizing Maps) 聚类算法
    文章图片
  2. 训练
    选择维度后,点击 “Next” ,进入训练阶段。点击 “Train” 进行训练。训练共进行 200 个 Epochs。

    SOM(Self-Organizing|SOM(Self-Organizing Maps) 聚类算法
    文章图片
SOM(Self-Organizing|SOM(Self-Organizing Maps) 聚类算法
文章图片
训练完成后,点击 “Plots” 下的 “SOM Sample Hits”。对于 SOM 训练,与每个神经元相关联的权重向量移动成为输入向量集群的中心。此外,拓扑中彼此相邻的神经元也应该在输入空间中彼此靠近移动,因此可以在网络拓扑的两个维度中可视化高维输入空间。
SOM 的默认拓扑是六边形。该图显示拓扑中的神经元位置,并显示有多少训练数据与每个神经元(聚类中心)相关联。拓扑结构是10×10网格,因此有100个神经元。与任何神经元都相关的最大命中数为 31。因此,该群集中有31个输入向量。

SOM(Self-Organizing|SOM(Self-Organizing Maps) 聚类算法
文章图片
也可以点击 “SOM Weights Positions” 来分析结果。下图显示了输入矢量的每个元素的权重平面(在这种情况下为两个)。它们是将每个输入连接到每个神经元的权重的可视化。 (较暗的颜色代表较大的权重)如果两个输入的连接模式非常相似,则可以假设输入高度相关。在本例情况下,input 1 具有与 input 2 非常不同的连接模式。
SOM(Self-Organizing|SOM(Self-Organizing Maps) 聚类算法
文章图片
参考
[1]. Self Organizing Maps (SOM): 一种基于神经网络的聚类算法
[2]. SOM是怎样一种模型(对于初学者如何操作,算法等)?

    推荐阅读