自组织映射

我对自组织映射有一个问题:

但首先,这里是我实现它的方法:

SOM神经元存储在一个基本数组中。每个神经元由一个向量组成(另一个大小与输入神经元相同的数组),其中包含初始化为随机值的双精度值。

据我对算法的理解,这实际上是我实现它所需的全部内容。

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

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

然后,我减少邻域函数和学习率。

这会持续到达到固定的迭代次数为止。

我的问题是:训练后如何确定聚类?到目前为止,我的做法是提供一个新的输入向量,并计算它与BMU之间的最小欧几里得距离。但这对我来说似乎有点简单。我肯定是错过了什么。


回答:

没有一种正确的方法来做这件事。正如你所指出的,找到BMU是其中一种方法,也是唯一一种在你只想找到最相似聚类时有意义的方法。

如果你想重建你的输入向量,返回BMU原型也行,但可能不够精确(这相当于最近邻规则或1NN)。然后你需要在神经元之间进行插值以找到更好的重建。这可以通过将每个神经元的权重设为与其到输入向量的距离成反比,然后计算加权平均值来实现(这相当于加权KNN)。你也可以将这种插值仅限于BMU的邻居,这将运行得更快,并且可能会得到更好的结果(这将是加权5NN)。这种技术在这里被使用:连续插值自组织映射

你可以在这里看到并试验这些不同的选项:http://www.inf.ufrgs.br/~rcpinto/itm/(不是SOM,但与之关系密切)。点击“Apply”使用重建向量对曲线进行回归,然后勾选“Draw Regression”并尝试不同的选项。

顺便说一下,你对实现的描述是正确的。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注