首页 > 解决方案 > 如何解释 SOM 重量位置图?

问题描述

我是 SOM 的新手,我正在使用 Matlab SOM 包来检查随时间变化的海平面压力。我的二维输入数组是(行 x 列):压力(纬度和经度的函数)x 时间。训练完成后,我绘制 SOM 权重位置,得到以下信息: 在此处输入图像描述

这个对吗?我看到的所有重量位置图都不是 1:1,所以我的图看起来很奇怪。

这是我的代码(注意:代码不会执行,仅用于概念目的)

slp = somedata; % dim: 30200 x 1550 [pressure x time]

% Calculate mean for each location over time
mean_slp = nanmean(slp,2);

% Calculate anomalies for each location over time
slp_anom = nan((i2-i1+1)*(j2-j1+1),nfiles);
for i = 1:time
    slp_anom(:,i) = slp3(:,i) - mean_slp(i,1);
end

% Normalize data
[slp_anom2,PS] = mapminmax(slp_anom);

net = selforgmap([4 4]);
net.trainParam.epochs = 1000;
net = train(net,slp_anom2);

我感谢任何和所有的反馈。谢谢!

标签: matlabmachine-learningsom

解决方案


SOM 算法训练中的权重位置图是什么?

SOM 是如何训练的

SOM 算法本质上是计算一组与输入数据具有相同维度的原型/码本向量。它通过根据输入空间内的某些规则(随机、PCA 等)初始化 # 个神经元,然后在输入空间内移动它们的位置,以便在确定影响的邻域函数的约束下最小化距离度量。每次迭代时神经元感受野中的数据点。

重量位置图

重量位置图是3D 图 (!),因此您需要使用旋转 3D 工具才能理解地图。

然后,根据维度,您看到的是淡蓝色点和红线的集合。淡蓝色的点是神经元位置根据为图选择的两个维度的投影,这些维度已经在输入空间周围移动。

因此,根据您选择计算绘图的权重维度(又名输入列),绘图看起来会有所不同。Matlab 通常选择前两个输入列。

水压呢?

我在这里无法提供帮助,因为对于简单的压力/时间向量,您的数据集似乎非常宽。这些列是否代表地球上的不同测量点?如果是这样,您应该问问自己,拥有这样的 SOM 模型会获得什么。当你从一个新的时间戳得到一个新的向量时,你会怎么做?你想用它做什么?您将获得哪些额外信息?


推荐阅读