2

我有大数据集(时间序列,大约 50 个参数/值)。我想使用 Kohonen 网络对相似的数据行进行分组。我读过一些关于 Kohonen 神经网络的文章,我了解 Kohonen 网络的概念,但是:

  1. 我不知道如何实现这么多维度的 Kohonen。我在 CodeProject 上找到了示例,但只有 2 或 3 维输入向量。当我有 50 个参数时 - 我应该在我的神经元中创建 50 个权重吗?

  2. 我不知道如何更新获胜神经元的权重(如何计算新的权重?)。

我的英语并不完美,我不了解我读到的关于 Kohonen 网络的所有内容,尤其是对公式中变量的描述,这就是我问的原因。

4

3 回答 3

3

应该区分地图的维数,它通常很低(例如,在矩形网格的常见情况下为 2)和参考向量的维数,它可以任意高而不会出现问题。

查看http://www.psychology.mcmaster.ca/4i03/demos/competitive-demo.html以获得 49 维输入向量(7x7 像素图像)的一个很好的例子。在这种情况下,Kohonen 映射具有 8 个单元的一维环的形式。

另请参阅http://www.demogng.de以获得各种 Kohonen 类网络的 java 模拟器,包括像 McMasters 那样的环形网络。然而,参考向量都是二维的,只是为了更容易显示。它们可以具有任意高维度,而无需更改算法。

于 2013-02-05T22:43:43.783 回答
2
  1. 是的,你需要 50 个神经元。然而,这些类型的网络通常是低维的,如这篇自组织地图文章中所述。我从未见过他们使用超过几个输入。

  2. 您必须使用更新公式。来自同一篇文章:Wv(s + 1) = Wv(s) + Θ(u, v, s) α(s)(D(t) - Wv(s))

于 2013-01-02T15:37:14.800 回答
1
  1. 是的,每个神经元需要 50 个输入

  2. 您基本上在神经元和目标(输入)神经元之间进行线性插值,并使用W(s + 1) = W(s) + Θ() * α(s) * (Input(t) - W(s))Θ 作为邻域函数。

你应该更新你所有的神经元,不仅仅是赢家

您将哪个函数用作邻域函数取决于您的实际问题。这种函数的一个共同特性是,当 i=k 时它的值为 1,并且随着距离欧几里得距离而下降。此外,它会随着时间的推移而缩小(为了定位集群)。

简单的邻域函数包括线性插值(达到“最大距离”)或高斯函数

于 2013-01-02T15:38:58.657 回答