自组织映射(SOM)是一种聚类方法,被认为是人工神经网络(ANN)的无监督变异.它使用竞争性学习技术来训练网络(节点之间相互竞争,以显示对给定数据的最强激活)
您可以将SOM视为由互连节点网格(方形,六边形,...)组成,其中每个节点都是权重的N维向量(与我们想要聚类的数据点的维度大小相同).
这个想法很简单; 给定一个向量作为SOM的输入,我们找到它的节点壁橱,然后更新它的权重和相邻节点的权重,使它们接近输入向量的值(因此名称自组织).对所有输入数据重复该过程.
形成的簇由节点如何组织自身并形成具有相似权重的一组节点隐式定义.它们在视觉上很容易看到.
SOM的方式类似于K-Means算法,但不同之处在于我们没有强加固定数量的聚类,而是指定网格中我们希望它适应我们数据的节点的数量和形状.
基本上当你有一个训练有素的SOM,并且你想要对一个新的测试输入向量进行分类时,你只需将它分配给网格上最近的(作为相似性度量的距离)节点(最佳匹配单元 BMU),并作为预测给出[多数]属于该BMU节点的向量的类.
对于MATLAB,您可以找到许多实现SOM的工具箱:
MathWorks 的神经网络工具箱可用于使用SOM进行群集(请参阅nctool
群集工具).
另外值得一试的是SOM工具箱