我一直在阅读关于自组织映射的内容,我认为我理解了算法,但有些东西仍然让我困惑。
如何解释训练后的网络?
然后,如何实际使用它来进行分类任务(一旦你用训练数据完成了聚类)?
我似乎找到的所有材料(印刷和数字)都集中在算法的训练上。我认为我可能错过了某些关键的东西。
回答:
SOM
主要是一种降维算法,而不是分类工具。它们用于降维,就像PCA
和类似的方法一样(一旦训练完成,你可以检查哪个神经元被你的输入激活,并使用这个神经元的位置作为值),唯一的实际区别是它们能够保留给定的输出表示拓扑结构。
因此,SOM
实际产生的是从你的输入空间X
到降维空间Y
的映射(最常见的是二维网格,使Y
成为二维空间)。要进行实际分类,你应该通过这个映射转换你的数据,并运行其他分类模型(如SVM
、神经网络、决策树等)。
换句话说,SOM
用于寻找数据的其他表示。这种表示对于人类进一步分析很容易(因为它主要是二维的,可以绘制图表),对于任何进一步的分类模型也非常容易。这是可视化高维数据、分析“发生了什么”、某些类别如何几何分组等的绝佳方法。但它们不应与其他神经模型(如人工神经网络甚至是生长神经气体(这是一个非常相似的概念,但直接提供数据聚类))混淆,因为它们的用途不同。
当然,人们可以直接使用SOM
进行分类,但这是对原始想法的修改,需要其他数据表示,一般来说,它的效果不如在其上使用其他分类器那么好。
编辑
至少有几种方法可以可视化训练后的SOM
:
- 可以将
SOM
的神经元渲染为输入空间中的点,并用边连接拓扑上接近的神经元(这只有在输入空间的维数较少,如2-3维时才可能) - 在
SOM
的拓扑结构上显示数据类别 – 如果你的数据标有某些数字{1,..k}
,我们可以将k
种颜色绑定到它们上,对于二元情况,让我们考虑蓝色
和红色
。接下来,对于每个数据点,我们计算它在SOM
中对应的神经元,并将此标签的颜色添加到神经元中。一旦所有数据都被处理,我们绘制SOM
的神经元,每个神经元都以其在拓扑中的原始位置显示,颜色是分配给它的颜色的某种聚合(例如平均值)。如果我们使用像二维网格这样的简单拓扑结构,这种方法会给我们一个很好的低维数据表示。在下面的图像中,从第三个子图像到最后的子图像是这种可视化的结果,其中红色
表示标签1(“是”答案),
蓝色表示标签
2`(“否”答案) - 还可以通过计算每个连接的神经元之间的距离,并在
SOM
的地图上绘制它,来可视化神经元之间的距离(上述可视化的第二个子图像) - 可以使用某种聚类算法(如K-means)对神经元的位置进行聚类,并将聚类ID可视化为颜色(第一个子图像)