如何构建U矩阵以显示self-organizing-map?更具体地说,假设我有一个3x3节点的输出网格(已经过训练),我该如何构建一个U矩阵呢?你可以,例如假设神经元(和输入)具有维度4。
我在网上找到了几种资源,但它们并不清楚,或者它们是矛盾的。例如,original paper充满了拼写错误。
答案 0 :(得分:19)
U矩阵是输入数据维度空间中神经元之间距离的直观表示。即,您使用他们训练的矢量计算相邻神经元之间的距离。如果您的输入维度为4,则训练地图中的每个神经元也对应于4维向量。假设您有一个3x3六角形地图。
U矩阵将是一个5x5矩阵,其中两个神经元之间的每个连接都有插值元素
{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呢? 让我们从一些基础知识开始: