我在很多地方都看过U-Matrix,包括这个网站。在这个网站上找到了一个U-Matrix的最佳解释here,并解释了为什么关于U-Matrix如何正确的正确信息(原始paper完全没用)的原因很少计算
上述问题的答案完全解释了六角形地图的概念。但是,当地图是矩形时,在链接问题的答案中计算U矩阵的逻辑不成立。
例如,考虑如下所示的3 x 3矩形点阵。
使用上面的点阵我可以计算U-Matrix,如下所示。
黄色方块是蓝色方块之间的距离。我确定黄色方块。我也确定蓝色方块,因为我们只需要取其周围的平均值或中位数。
所以我的问题是:如何计算红色方块?
我找到了一些消息来源,包括我在上面引用的上一个问题中提到的消息来源。我得到的矩形U矩阵的最佳解释如下
Description 1 - >在本文中,作者没有完全解释如何计算红色方块。只是解释了周围需要的平均值。哪个不清楚,在我看来不合适(见下文)
Description 2 - >在本文中,作者已经明确说明了如何计算红色方块,但他们提出的逻辑似乎存在缺陷。
我的解释为何上述可能不合适
如果用其周围的平均值来计算描述1所述的红色方块,蓝色方块的计算将直接受到影响。例如,考虑计算U-Matrix中蓝色方块数1的值。如果我们要取其周围的平均值,我们需要距离(1,2),(1,4)和(1,5)。如果我们用(1,5)填充相应的红色正方形,则蓝色正方形4的计算是错误的,因为我们没有计算(2,4)并且相同的红色正方形应该是它的位置。因此,将(1,5)和(2,4)的加法除以2 *(1.414 ......)的等式将不起作用,因为存在不属于平均值的分量。在蓝色方块1的情况下,(2,4)的距离部分不属于那里。
我使用第二篇论文中的描述编程,并且为简单数据集生成的U-Matrix不令人满意。虽然给定节点周围的平均距离比下面给出的相同数据集的U-Matrix表现更好。 (图像是U-Matrix,后跟平均值)
答案 0 :(得分:1)
我没有阅读你提到的论文,我一直在使用六角形地图,但似乎最合理的解决方案是将红色正方形作为黄色正方形的平均值,因为这些是它们的邻居。当您使用矩形地图时,没有对角连接,因为如果它们那么它将更像是六角形地图。所以黄色正方形是你考虑的那些。将红色方块视为“假”地图单元,填充由U矩阵中的节点插值所创建的间隙。 顺便说一下,六角形地图在捕获底层数据集的拓扑结构时被认为是更好的。
答案 1 :(得分:0)
我非常感谢这个问题。我同意这个答案,认为将红色正方形视为“伪”地图单位,并因此分配黄色正方形的平均值是一个很好的解决方案。更进一步,更简单地,我们创建一个具有相同训练网格大小的距离图,然后将一个正方形的邻居的平均值分配给该正方形。我发现这是minisom所采用的解决方案。为了方便起见,请参见以下get_distance()
函数__doc__
。
def distance_map(self):
"""Returns the distance map of the weights.
Each cell is the normalised sum of the distances between
a neuron and its neighbours."""
um = zeros((self._weights.shape[0], self._weights.shape[1]))