matlab - 如何解释 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);
我感谢任何和所有的反馈。谢谢!
解决方案
SOM 算法训练中的权重位置图是什么?
SOM 是如何训练的
SOM 算法本质上是计算一组与输入数据具有相同维度的原型/码本向量。它通过根据输入空间内的某些规则(随机、PCA 等)初始化 # 个神经元,然后在输入空间内移动它们的位置,以便在确定影响的邻域函数的约束下最小化距离度量。每次迭代时神经元感受野中的数据点。
重量位置图
重量位置图是3D 图 (!),因此您需要使用旋转 3D 工具才能理解地图。
然后,根据维度,您看到的是淡蓝色点和红线的集合。淡蓝色的点是神经元位置根据为图选择的两个维度的投影,这些维度已经在输入空间周围移动。
因此,根据您选择计算绘图的权重维度(又名输入列),绘图看起来会有所不同。Matlab 通常选择前两个输入列。
水压呢?
我在这里无法提供帮助,因为对于简单的压力/时间向量,您的数据集似乎非常宽。这些列是否代表地球上的不同测量点?如果是这样,您应该问问自己,拥有这样的 SOM 模型会获得什么。当你从一个新的时间戳得到一个新的向量时,你会怎么做?你想用它做什么?您将获得哪些额外信息?
推荐阅读
- airflow - Airflow 2.1.0 使用 TriggerDagRunOperator 将变量传递给另一个 DAG
- node.js - 'shopify node serve' 启动开发环境 - 错误(Shopify CLI)
- angular - 如何以反应形式为未声明的控件赋值?
- javascript - WooCommerce Hooks - 如果选中复选框,则为必填字段
- php - 在带有 if 语句的 php 函数中使用 return
- blazor - Blazor 初始化对象的最佳实践
- sql - 在 Oracle 中选择并更新日期为 00/00/0000 00:00:00 00 的行
- python - Python:在文本中的两个字符串之间查找一个字符串
- html - 如何将导航栏与页面的其余部分分开
- node.js - Nodejs在未来的固定时间执行任务