问题标签 [self-organizing-maps]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
neural-network - 自组织地图
我有一个关于自组织地图的问题:
但首先,这是我实施的方法:
som 神经元存储在一个基本数组中。每个神经元由一个向量(输入神经元大小的另一个数组)组成,该向量被初始化为一个随机值。
据我了解算法,这实际上是我实现它所需要的。
因此,对于训练,我随机选择一个训练数据样本,并使用样本值的欧几里得距离和神经元权重计算 BMU。
之后我根据邻域函数和学习率更新它的权重和它范围内的所有其他神经元。
然后,我降低邻域函数和学习率。
这样做直到固定数量的迭代。
我现在的问题是:训练后如何确定集群?到目前为止,我的方法是呈现一个新的输入向量并计算它与 BMU 之间的最小欧几里得距离。但这对我来说似乎有点幼稚。我确定我错过了什么。
neural-network - 混合 SOM(带 MLP)
有人可以提供一些有关如何将自组织地图与多层感知器正确结合的信息吗?
我最近阅读了一些关于这种技术的文章,与常规 MLP 相比,它在预测任务中的表现要好得多。因此,我想通过对输入数据进行聚类并将结果传递给 MLP 后端,将 SOM 用作降维的前端。
我目前实施它的想法是用几个训练集训练 SOM 并确定集群。之后,我使用与 SOM 集群一样多的输入单元来初始化 MLP。下一步是使用 SOM 的输出(哪个值?... BMU 的权重?)作为网络的输入(SOM 的输出用于匹配输入单元的集群和零用于任何其他输入单元?)来训练 MLP。
machine-learning - 时间序列数据中的模式检测
我有一个代表时间序列的数据框,例如:
时间戳:1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28...
价值:0|0|3|6|3|3|6|3|3|6 |3 |0 |0 |0 |1 |3 |7 |0 |0 |1 |3 |7 |1 |3 |7 |3 |6 |3 ...
目标是对不同的模式(可以在随机位置)进行分类并标记值。这意味着找到模式:
- 3-6-3
- 1-3-7
- 0
并将数据框扩展到
时间戳: 1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28...
价值:0|0|3|6|3|3|6|3|3|6 |3 |0 |0 |0 |1 |3 |7 |0 |0 |1 |3 |7 |1 |3 |7 |3 |6 |3 ...
标签:c|c|a|a|a|a|a|a|a|a |a |c |c |c |b |b |b |c |c |b |b |b |b |b |b |a |a |a ...
请注意,这种模式没有相同的长度。
问题是什么样的算法可以用于这个无监督学习问题,也许还有哪些库/框架可以用于实现这样的任务。
提前致谢!
r - 如何关联回自组织地图中的原始数据点
我正在使用 R kohonen 包来实现 SOM。我发现将自组织映射产生的代码向量与原始数据点相关联时遇到了麻烦。我尝试在训练过程中包含没有权重的标签,但结果令人费解。
有没有办法在训练过程完成后从每个节点回溯原始数据点?
machine-learning - SOM 多个 BMU,需要在其中一个或全部上随机工作
我目前正在学习我自己的自组织地图 (SOM)。我是新来的。节点都用随机值初始化。我想知道,如果在培训期间出现返回多个 BMU 的情况,我需要做什么。对于更新阶段,我需要只取其中一个,还是全部取走?
algorithm - 神经元在格子上的位置
我目前正在开发一个用于大数据集群的自组织映射原型,但不了解一件事。
SOM 算法更新最佳匹配单元及其邻域的权重,以更好地拟合输入向量。该算法是否会以某种方式改变神经元在晶格上的真实位置?我的意思是,如果我定义一个方格 (5x5),则每个神经元都可以通过二维坐标(例如 1/1 或 1/5)来引用。所以我要问的是,如果 SOM 算法更新神经元的坐标(例如从 1/1 到 1.1/1.3)。
如果没有,软件如何显示集群?我的意思是一些程序显示了神经元之间的统一距离(例如,黑色区域是那些神经元之间的距离低的区域,而白色区域是那些距离高的区域)。那么软件如何知道哪些神经元彼此相邻呢?
supervised-learning - 在 SOM 中将数据拆分为训练/测试的原因是什么?
我正在使用 SOM 算法进行研究并阅读一些论文。我不明白人们将数据集拆分为 SOM 的训练/测试集的逻辑。我的意思是,例如,当使用 C4.5 决策树时,经过训练的结构包括一些规则,当新数据集(测试)来对那里的数据进行分类时要应用这些规则。但是,通过 SOM 训练系统后会生成什么样的规则或类似的东西?如果我将 100% 的数据应用于 SOM 系统,而不是先使用 30% 进行训练,然后使用 70% 进行测试,会有什么不同?提前感谢您的回答。
r - 在 SOM 包中,所有实体都被预测为同一类
每次我运行下面的代码时,它都会为所有测试用例预测相同的类。所以我在形成网格时添加了更多参数,但它仍然预测相同的结果。有人可以帮我解决这个问题。