问题标签 [mixture-model]
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.
matlab - Matlab中的无环高斯混合模型
我有几个高斯分布,我想同时从它们中提取不同的值。因为这基本上是 GMM 所做的,所以我研究了 Matlab GMM 实现(gmrnd
),我看到它对所有组件执行了一个简单的循环。
我想以更快的方式实现它,但问题是涉及到 3d 矩阵。一个简单的代码(带循环)将是
有没有可能加快速度?我不知道如何处理 3d 协方差矩阵(不使用cellfun
,这要慢得多)。
matlab - 如何在 MATLAB 中绘制 gmdistribution 的结果?
我有来自 MATLAB 中图像的数据,我想将其分解为高斯混合。图像的计数和 binLocations 存储在 256x2 矩阵“X”中,fitgmdist(X, 3) 给出三个高斯的参数。我想绘制这些高斯并找到它们的交点。
我也有点困惑,为什么我的混合模型中的“mu”等参数有两列。每个高斯不应该有一个对应的均值吗?
python - 使用 sklearn.mixture.GMM 从 GMM 进行错误采样
我正在sklearn.mixture.GMM
用来拟合一些数据,并且无法从 GMM 对数据集中的一项进行采样。
在超过 1000 个数据实例中它工作正常,但在下面的情况下(data_not_working)我在运行以下代码时收到错误:
这会产生以下运行时错误:
所以问题在于从 GMM 采样,而不是拟合它。这是一个数据实例的示例,上面的代码可以正常工作(就像我正在使用的所有其他 1k+ 实例一样)。所有实例都具有相同的形状:
有趣的是,如果我将从 GMM 采集的样本数量减少到 10,那么它有时会起作用,但不是每次都有效!
再看一下数据,看起来 data_not_working 的组件数可能 <= 2。将 # 个组件降至 2 时它运行时没有错误。因此,尝试使用 3 个组件对此进行建模可能会导致问题。但是,我仍然不明白是什么导致了这个错误,以及它是否是库中的一个错误。
我现在也尝试在不同的系统上运行相同的代码。它似乎对某些人有效,但对其他人无效。这似乎不受 python 或库版本的影响(2 台机器运行相同的磁盘映像、python、scipy、numpy 和 sklearn 版本;1 台工作,其他没有)......非常奇怪。
我错过了一些明显的东西还是图书馆有问题?谢谢
matlab - matlab“fitgmdist”函数中不合理的[正]对数似然值
我想用高斯混合模型拟合数据集,数据集包含大约 120k 个样本,每个样本有大约 130 个维度。当我使用 matlab 执行此操作时,我运行脚本(簇号为 1000):
我得到以下输出:
对数似然大于 0!我认为这是不合理的,不知道为什么。
有人可以帮我吗?
r - 如何将复杂的模型输出整齐地应用于 data.table 一个因素
我在对象上使用normalmixEM
R 中的函数(算法)data.table
。
在整个表上运行它是一个简单的过程。这会输出一个mixEM
列表对象,其中 $posterior 项目是最感兴趣的。我可以使用 cbind 以一种公认有点尴尬的方式将其映射回数据,如下所示:
但是,我正在努力将by
data.table 的参数有效地包含在此工作流程中。我的目标是运行一个normalmixEM
函数。实际上,我想在数据子集上运行两个分离的、隔离的模型,然后根据其潜在的“拆分-应用-组合”策略,在其末尾的两列中将每个值放在一个单独的列中。by
factorAB
data.table
显然,在这里我已经成功地解决了一个似乎具有正确数字的解决方案,但在很大程度上是任意位置。
factorAB
在包含拆分的情况下,我在这个工作流程中遗漏了什么,它将整理输出?显然,我需要为这cbind
部分工作找到一个替代品,但是我目前的输出一开始就是一团糟。我可以改善 FlilymixAB 的输出来促进这一点吗?可能完全跳过这个并直接从 data.table 中运行的函数分配后验值?
编辑
在@eddi 和朋友 IRL 的帮助下,我现在的处境是:
它表示在不拆分因子的情况下运行模型的两个后列。和:
其中有两列,但确实按因子拆分,这实际上是我想要做的。
我认为这两者都是需要的,因为后对象实际上是 2 个向量,一个表示记录在 1 和组中的概率,另一个表示它在第二个中。
Eddi,您当前的答案有 2 列,但我认为这些与上面列出的不对应。如果有的话,这些值会略有不同:
我真正需要的是一种不必重复运行模型的方法。我很确定我可以在某个地方捏造 ':=',但我现在没有时间。稍后会回到它。
一段时间后 所以我在前面忽略了我不能只是重新运行模型来获得第二列,因为除了显然效率很低之外,由于算法的性质,除非我设置种子,因为每次运行都有一个不同的起点,所以它会在一次运行到下一次运行中得到一个稍微不同的答案。
machine-learning - How do I evaluate a sample in a weighted Gaussian Mixture Model?
Short version:
If I have a MoG model with n components each with individual weights w^n. I have a sample s. I wish to calculate the probability that this sample was drawn from the MoG. I can evaluate the individual gaussians easily but I don't know how to take their weights into account or aggregate their scores.
Longer Version:
I am using a MoG model in matlab for a machine learning algorithm. I am sampling Monte Carlo style and thus need to perform importance re-weighting which involves evaluating the likelihood of drawing a specific sample from the MoG model. I can easily evaluate a single Gaussian but I'm unsure how to go about it for the entire MoG model, taking into account all the components and weights.
python - PyMC3 多元混合模型:将组件约束为非空
我正在实施多元高斯回归的个性化混合,pymc3
并遇到了空组件的问题。在参考了相关的 PyMC3 混合模型示例之后,我尝试使用单变量法线来实现模型,但我也遇到了一些问题。
我尝试了几种策略来限制每个组件为非空,但每个都失败了。这些显示在下面的代码中。我的具体问题是:在使用 的多元高斯混合中,将所有组件限制为非空的最佳方法是什么pymc3
?
请注意,下面代码中的尝试 #1 来自PyMC3 示例中的混合模型,在这里不起作用。
您可以使用此 gist 中的函数复制我正在使用的合成数据。
前两种方法无法确保非空集群;尝试采样会导致LinAlgError
:
...这表明组件是空的,因为精度矩阵有 shape (0, 0)
。
第三种方法实际上解决了空组件问题,但给出了非常奇怪的推理行为。我根据跟踪图选择了老化,每 10 个样本进行稀释。样本仍然是高度自相关的,但比没有细化的要好得多。此时,我对样本中的 Z 值求和,这就是我得到的结果:
因此,出于某种原因,所有用户都被分配到每个样本的最后一个集群。
r - 从 R 中的摘要对象中删除无关紧要的变量
我正在使用betamix
R 中的包来拟合 beta 回归的混合。如果我使用包中给出的示例和代码:
运行拟合betamix
对象的摘要会给出结果:
结果Component 2
表明变量iq
不显着。有没有办法从汇总结果中删除这个变量?我试过使用summary(rs_mix)$Comp.1
,它给了我错误:
python - Python - 统计分布
我对python世界很陌生。另外,我不是统计学家。我需要用计算机科学编程语言实现数学家开发的数学模型。经过一番研究,我选择了 python。我很喜欢这样的编程(PHP/HTML/javascript)。
我有一列从 MySQL 数据库中提取的值,需要计算以下值 -
值数组看起来类似于下面的值(我填充了示例数据) -
我理解的正态分布可以计算如下 -
我能否请我就如何开始使用 (2)、(3) 和 (4) 提供一些指示?我继续在网上查找,因为我期待听到专家的意见。
如果这个问题不完全有意义,请让我知道缺少哪些方面,以便我尝试获取相关信息。
我非常感谢这里的任何帮助。
machine-learning - 在 em 算法期间处理协方差矩阵中的零行/列
我尝试实现 GMM,但在 em 算法中遇到了一些问题。
假设我有用于训练 GMM 的 3D 样本(stat1、stat2、stat3)。
我的一个 GMM 训练集几乎在每个样本中都有一个 stat1 的“0”。在训练期间,我在协方差矩阵的第一行和第一列中得到非常小的数字(如“1.4456539880060609E-124”),这在 EM 算法的下一次迭代中导致第一行和第一列中的 0.0。
我得到这样的东西:
我需要逆协方差矩阵来计算密度,但由于一列为零,我不能这样做。
我想过回到旧的协方差矩阵(和均值),或者用一个非常小的数字替换每个 0。
或者这个问题有另一个简单的解决方案吗?