如何制作U矩阵?

时间:2012-11-29 17:48:34

标签: machine-learning neural-network som self-organizing-maps

如何构建U矩阵以显示self-organizing-map?更具体地说,假设我有一个3x3节点的输出网格(已经过训练),我该如何构建一个U矩阵呢?你可以,例如假设神经元(和输入)具有维度4。

我在网上找到了几种资源,但它们并不清楚,或者它们是矛盾的。例如,original paper充满了拼写错误。

2 个答案:

答案 0 :(得分:19)

U矩阵是输入数据维度空间中神经元之间距离的直观表示。即,您使用他们训练的矢量计算相邻神经元之间的距离。如果您的输入维度为4,则训练地图中的每个神经元也对应于4维向量。假设您有一个3x3六角形地图。

map lattice

U矩阵将是一个5x5矩阵,其中两个神经元之间的每个连接都有插值元素

u-mat lattice

{x,y}元素是神经元x和y之间的距离,{x}元素中的值是周围值的平均值。例如,{4,5} =距离(4,5)和{4} =平均值({1,4},{2,4},{4,5},{4,7})。对于距离的计算,您使用每个神经元的训练的4维向量和您用于训练地图的距离公式(通常是欧几里德距离)。因此,U矩阵的值仅是数字(不是向量)。然后,您可以为这些值中的最大值指定浅灰色,将最小的深灰色指定为灰色,将其他值指定为相应的灰色阴影。您可以使用这些颜色绘制U矩阵的单元格,并可视化表示神经元之间的距离。

还要看this web article

答案 1 :(得分:2)

问题中引用的原始文件指出:

  

Kohonen算法的天真应用虽然保留了输入数据的拓扑结构但却无法显示输入数据中固有的集群。

首先,这是真的,其次,它是对SOM的深刻误解,第三,它也是对计算SOM的目的的误解。

以RGB色彩空间为例:有3种颜色(RGB),或6种(RGBCMY),或8种(+ BW)还是更多?您如何定义与目的无关的内容,即数据本身固有的内容?

我的建议是不要使用群集边界的最大似然估计 - 甚至不是U-Matrix这样的原始估计,因为基础论证已经存在缺陷。无论您使用哪种方法来确定群集,都会继承该漏洞。更确切地说,群集边界的确定根本不感兴趣,并且它正在丢失关于构建SOM的真实意图的信息。那么,为什么我们要从数据中构建SOM呢? 让我们从一些基础知识开始:

  1. 任何SOM都是数据空间的代表模型,因为它降低了后者的维度。因为它是一个模型,它可以用作诊断工具和预测工具。然而,这两种情况都没有被一些普遍的客观性所证明。相反,模型在很大程度上取决于目的和可接受的相关错误风险。
  2. 让我们暂时假设U-Matrix(或类似的)是合理的。所以我们在地图上确定了一些聚类。这不仅是一个问题如何证明它的标准(在目的本身之外),它也是有问题的,因为任何进一步的计算都会破坏一些信息(它是关于模型的模型)。
  3. SOM唯一有趣的事情就是准确性本身就是分类错误,而不是对它的估计。因此,在验证和稳健性方面对模型的估计是唯一有趣的事情。
  4. 任何预测都有一个目的,预测的接受是精度的函数,而精度又可以由分类误差表示。请注意,可以为2类模型以及多类模型确定分类错误。如果您没有目的,则不应对数据执行任何操作。
  5. 相反,“簇数”的概念完全依赖于“允许簇内发散”的标准,因此它掩盖了数据结构中最重要的事物。它还取决于您愿意承担的风险和风险结构(就I / II型错误而言)。
  6. 那么,我们如何确定SOM上的数字类?如果没有可用的外部先验推理,唯一可行的方法是对适合度进行后验检查。在给定的SOM上,施加不同数量的类并测量错误分类成本方面的偏差,然后选择(主观地)最令人愉快的类(使用一些花哨的启发式方法,如奥卡姆剃刀)
  7. 总而言之,U矩阵假装客观性,没有客观性。这完全是对建模的严重误解。 恕我直言,SOM的最大优势之一是它所隐含的所有参数都是可访问的,并且可以参数化。像U矩阵这样的方法只是忽略了这种透明度,并用不透明的统计推理再次关闭它。