问题标签 [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.

0 投票
1 回答
122 浏览

r - R:fdwm() 函数(evmix 包)的意外行为

我正在尝试使用包中的fdwm()函数来拟合动态混合模型(主体为 Weibull,尾部为 Pareto) evmix

我遇到了一个奇怪的行为:函数首先返回一个错误......:

...但继续运行并最终返回一些值:

更远,

给出:

在此处输入图像描述

因此,似乎估计的参数是有效的。 因此,我应该忽略fdwm()函数返回的错误吗?我可以使用估计的参数值吗?

关于我的 R 会话的一些信息:

我使用的是 2.5 版evmix

0 投票
0 回答
314 浏览

matlab - 更改 gmdistribution.fit bin 大小

我目前正在使用高斯混合模型来拟合我在 matlab 中的一些数据。我正在使用 gmdistribution.fit 函数,并且对拟合有疑问。

以下代码用于生成 PDF。

这个例子适合我最差的数据集之一:

图片

简而言之,我的 3 阶 GMM 有 2 个标准差 (SD) 较大的模态,但第 3 阶模态具有高峰值和小 SD。

同样,我可以使用 ECDFhist 函数更改 bin 大小,有没有办法更改 gmdist.fit(options) 或类似选项上的选项,以增加我的 bin 宽度(减少 bin 数量)?

任何帮助将不胜感激!!

非常感谢, M

0 投票
1 回答
1496 浏览

python - python - curve_fit 似乎无法拟合高斯的总和

在这里,我定义了一个函数来返回任意数量的高斯分布之和:

然后,我继续为给定的一组参数生成 x 和 y 数据,并要求 curve_fit 使用与生成集匹配的初始参数来拟合该数据。我尝试了许多不同的集合,包括单个和多个高斯。

每个参数集都给我一个不合适的结果,即使我已经在解决方案中开始了拟合。(在上面的单高斯中):

我知道该功能本身运行正常,因为我已经用它绘制并验证了它的有效性。

0 投票
1 回答
980 浏览

algorithm - Matlab:没有 gmdistribution 的高斯混合模型的 EM

我必须在给定数据集上使用四个组件来训练高斯混合模型。该集合是三维的,包含 300 个样本。

问题是我无法使用对数似然检查收敛性,因为它是-Inf. 这是在评估责任公式中的高斯时四舍五入的零值导致的(参见 E-step)。

你能告诉我到目前为止我的 EM 算法的实现是否正确吗?以及如何解决舍入零值的问题?

这是我对 EM 算法的实现(一次迭代):

首先,我使用 kmeans初始化了分量的均值和协方差:

对于E-step,我使用以下公式来计算责任 责任

下面是对应的代码:

Nk(k)使用 M 步中给出的公式计算。

M步

使用当前职责重新估计参数

现在为了检查收敛性,使用以下公式计算对数似然: 对数似然

loglikelihood-Inf因为gm(k,i)E 步中的某些值为零。因此,对数显然是负无穷大。

我怎么解决这个问题?

可以通过提高Matlab的精度来解决吗?

还是我的实现有问题?

0 投票
2 回答
83 浏览

r - mixAK getProfiles bug?

I hope someone can straighten me out here.

From the vignette http://www.jstatsoft.org/v59/i12/paper, page 9...

...all well and good so far, as this gives the documented output (page 9). Then the following is supposed to give one data.frame per subject (from page 11).

So to test that...

correctly gives the first sub-set (albeit id=2, rather than maybe a more useful index).

However, digging a bit deeper, it looks like the sub-setting gets out of synch, at least for me. For example by inspecting the results of...

Just showing here...

I get the following, which starts with the last entry of the previous sub-set. The end of subset spills over, and it all gets a bit messy.

Plotting the results shows the same effect...

...showing a distinct reversal.

I must have missed something obvious somewhere....

0 投票
1 回答
9008 浏览

algorithm - 高斯混合模型EM算法的实现

使用 EM 算法,我想在给定数据集上训练具有四个分量的高斯混合模型。该集合是三维的,包含 300 个样本。

问题是在大约 6 轮 EM 算法之后,协方差矩阵 sigma 根据 matlab 变得接近奇异(rank(sigma) = 2而不是 3)。这反过来会导致不希望的结果,例如评估高斯分布的复值gm(k,i)

此外,我使用高斯的日志来解决下溢问题 - 请参阅 E-step。我不确定这是否正确,是否必须将责任 p(w_k | x^(i), theta) 的 exp 带到其他地方?

你能告诉我到目前为止我的 EM 算法的实现是否正确吗?以及如何解释接近奇异协方差 sigma 的问题?

这是我对 EM 算法的实现:

首先,我使用 kmeans初始化了分量的均值和协方差:

对于E-step,我使用以下公式来计算责任。

责任

w_k 是 k 个高斯分量。

x^(i) 是单个数据点(样本)

theta 代表高斯混合模型的参数:mu, Sigma, pi。

下面是对应的代码:

Nk(k)是使用 M 步中给出的公式计算的,并在 M 步中用于计算新的概率p(k)

M步

使用当前职责重新估计参数

现在为了检查收敛性,使用以下公式计算对数似然:

对数似然

我的高斯混合模型 EM 算法的 Matlab 实现有问题吗?


以前的烦恼:

问题是我无法使用对数似然检查收敛性,因为它是-Inf. 这是在评估责任公式中的高斯时四舍五入的零值导致的(参见 E-step)。

你能告诉我到目前为止我的 EM 算法的实现是否正确吗?以及如何解决舍入零值的问题?

这是我对 EM 算法的实现:

首先,我使用 kmeans初始化了分量的均值和协方差:

对于E-step,我使用以下公式来计算责任 责任

下面是对应的代码:

Nk(k)使用 M 步中给出的公式计算。

M步

使用当前职责重新估计参数

现在为了检查收敛性,使用以下公式计算对数似然: 对数似然

第一轮之后loglikelihood大约是 700。在第二轮中,这是-Inf因为gm(k,i)E-step 中的某些值为零。因此,对数显然是负无穷大。

零值也导致sumGM等于零,因此导致musigma矩阵内的所有 NaN 条目。

我怎么解决这个问题?你能告诉我我的实现是否有问题吗?是否可以通过某种方式提高 Matlab 的精度来解决?


编辑:

我为 gm(k,i) 中的 exp() 项添加了缩放比例。不幸的是,这并没有多大帮助。经过几轮后,我仍然遇到下溢问题。

此外,我注意到,与在 M 步中计算均值的后续轮次相比,kmeans 初始化的均值完全不同。

意思是:

M步后:

在接下来的回合mu中根本没有改变。它与第 2 轮相同。

我猜这是因为 gm(k,i) 中的下溢引起的?要么我的缩放实现不正确,要么算法的整个实现在某处出错:(


编辑 2

经过四轮,我得到了NaN价值,并更详细地研究了 gm。仅查看一个样本(并且没有 0.5 因子),gm在所有组件中都变为零。放入matlab gm(:,1) = [0 0 0 0]。这反过来导致 sumGM 等于零 -> NaN,因为 I 除以零。我已经给出了更多的细节

首先,与kmeans的初始化相比,手段似乎没有改变并且完全不同。

并且每个样本(不仅仅是像这里的第一个样本)根据 的输出仅对应一个高斯分量gm(:,1)。样本不应该在每个高斯分量中“部分分布”吗?


编辑3:

所以我猜 mu 没有改变的问题是 M-step: 中的第一行mu = zeros(K,3);

为了解决下溢问题,我目前正在尝试使用高斯日志:

新问题是协方差矩阵 sigma。Matlab 声称:警告:矩阵接近奇异或严重缩放。结果可能不准确。

6 轮后,我得到 gm(高斯分布)的虚值。

更新后的 E-Step 现在看起来像这样:

0 投票
0 回答
73 浏览

algorithm - 使用Matlab实现高斯混合模型的EM算法

使用 EM 算法,我想在给定数据集上训练具有四个分量的高斯混合模型。该集合是三维的,包含 300 个样本。

问题是在大约 6 轮 EM 算法之后,协方差矩阵 sigma 根据 matlab 变得接近奇异(rank(sigma) = 2而不是 3)。这反过来会导致不希望的结果,例如评估高斯分布的复值gm(k,i)

此外,我使用高斯的日志来解决下溢问题 - 请参阅 E-step。我不确定这是否正确,是否必须将责任 p(w_k | x^(i), theta) 的 exp 带到其他地方?

你能告诉我到目前为止我的 EM 算法的实现是否正确吗?以及如何解释接近奇异协方差 sigma 的问题?

这是我对 EM 算法的实现:

首先,我使用 kmeans初始化了分量的均值和协方差:

对于E-step,我使用以下公式来计算责任。

责任

w_k 是 k 个高斯分量。

x^(i) 是单个数据点(样本)

theta 代表高斯混合模型的参数:mu, Sigma, pi。

下面是对应的代码:

Nk(k)是使用 M 步中给出的公式计算的,并在 M 步中用于计算新的概率p(k)

M步

使用当前职责重新估计参数

现在为了检查收敛性,使用以下公式计算对数似然:

对数似然

我的高斯混合模型 EM 算法的 Matlab 实现有问题吗?

0 投票
1 回答
1619 浏览

python - python GMMHMM 说明

我正在阅读有关高斯混合 hmms 的信息,我想实现一个。我正在使用 hmmlearn 包,我知道它已被 scikit-learn 弃用。在文档中,它说在 GMMHMM 构造函数中它需要:“gmms(GMM 对象数组,长度 n_components)每个状态的 GMM 排放分布。”

我理解我应该继续的方式如下:1)首先使用 scikit-learn 执行 GMM 训练 2)将 GMM 对象传递给 GMMHMM 构造函数以训练 hmm。

这是正确的还是我错过了什么?

谢谢。

0 投票
0 回答
161 浏览

wolfram-mathematica - 使用混合分布的 Mathematica 条件期望

我正在使用 Mathematica 为条件期望找到一个封闭形式的解决方案。我感兴趣的分布是两个三元法线的混合。特别是,我想知道一个随机变量的条件期望,条件是另外两个被固定在某个向量 {a,b} 上。

下面的代码设置了期望,但我不能让它运行。我相信问题出在我指定分布的部分,因为当我尝试使用其他分布时,另一部分工作正常。任何帮助深表感谢!

0 投票
2 回答
2010 浏览

r - 从 flexmix 对象 (R) 进行预测

我将一些数据拟合到两个高斯的混合分布中flexmix

模型拟合如下:

但是我如何从这个模型中实际预测呢?

当我做

我得到一个列表,其中包含两个组件中的每一个的预测

要获得单个预测,我是否必须像这样添加集群大小?