2

我有一个关于自组织地图的问题:

但首先,这是我实施的方法:

som 神经元存储在一个基本数组中。每个神经元由一个向量(输入神经元大小的另一个数组)组成,该向量被初始化为一个随机值。

据我了解算法,这实际上是我实现它所需要的。

因此,对于训练,我随机选择一个训练数据样本,并使用样本值的欧几里得距离和神经元权重计算 BMU。

之后我根据邻域函数和学习率更新它的权重和它范围内的所有其他神经元。

然后,我降低邻域函数和学习率。

这样做直到固定数量的迭代。

我现在的问题是:训练后如何确定集群?到目前为止,我的方法是呈现一个新的输入向量并计算它与 BMU 之间的最小欧几里得距离。但这对我来说似乎有点幼稚。我确定我错过了什么。

4

2 回答 2

2

没有一种正确的方法可以做到这一点。正如您所指出的,找到 BMU 就是其中之一,如果您只想找到最相似的集群,那么这是唯一有意义的。

如果你想重建你的输入向量,返回 BMU 原型也可以,但可能不是很精确(它相当于最近邻规则或 1NN)。然后你需要在神经元之间进行插值以找到更好的重建。这可以通过将每个神经元与它们与输入向量的距离成反比地加权,然后计算加权平均值来完成(这相当于加权 KNN)。您还可以将此插值限制为仅适用于 BMU 的邻居,这将更快地工作并且可能会产生更好的结果(这将是加权 5NN)。此处使用了此技术:连续插值自组织映射

您可以在此处查看并尝试这些不同的选项:http: //www.inf.ufrgs.br/~rcpinto/itm/(不是 SOM,而是近亲)。单击“应用”以使用重建的向量对曲线进行回归,然后选中“绘制回归”并尝试不同的选项。

顺便说一句,您的实现描述是正确的。

于 2016-03-27T20:41:56.620 回答
1

现在一种非常常见的方法是软子空间聚类,其中添加特征权重以找到最相关的特征。您可以使用这些权重来提高性能并改进欧式距离的 BMU 计算。

于 2016-04-05T14:03:33.050 回答