Pomegranate: 问题:从条件概率中抽样

创建于 2016-02-28  ·  18评论  ·  资料来源: jmschrei/pomegranate

你好,
我不知道这是否适合问这个问题,如果不是,请告诉我。
对于我的硕士论文,我想估计多个随机变量的条件概率,这些变量可以是离散的和连续的(连续和离散变量的混合)。 我认为这可以通过对这种混合物和证据变量的联合分布进行密度估计来使用石榴来完成。 结果将是 2 个混合分布的一小部分,但不是封闭形式的分布。 因此,要从条件分布中采样,我将不得不求助于拒绝采样(或优化的 MCMC 方法)。 这样对吗?

最有用的评论

@jmschrei :当然! sample() 方法非常棒,或者可以将石榴模型迁移到 PyMC,因此可以在那里进行采样。 :)

所有18条评论

不幸的是,pomegranate 目前不支持以连续分布为条件的条件分布。 不过,这是我想尽快添加的内容。 不过这个想法听起来很有道理。 您可以考虑 PyMC,它在这方面更为成熟。

比,如果可以的话,一个建议。 PyMC 还支持分布混合、HMM 等。但是没有工厂方法来创建它们。 如果 pomegranate(具有非常清晰的界面)能够与 PyMC 的(优化的)采样方法集成,那就太好了。 也许,通过将石榴模型转换为 PyMC 模型。

这似乎是一个合理的想法。 但是,如果我必须花时间进行设置,我也有时间在 pomegranate 中实现它。 我今天实际上会有一些时间来处理这些问题。 如果您可以提供您希望看到的示例代码片段,我可以看看我是否可以尽快实现它。

我还没有使用石榴,我正处于为我的问题寻找最完整的库的阶段。 但是有了条件分布,我就拥有了这一切。 我所拥有的是我当前的代码,我在其中完全按照我在第一篇文章中提到的方式进行操作,但仅使用高斯混合(存在封闭形式推导)。

编辑:我将展示我现在如何在 sklearn GMM 中使用它的片段

weighted_fit 是处理加权数据的 sklearns fit() 的扩展版本

gmm.weighted_fit(数据,权重数据)

我的数据是 3 维连续向量 [X,Y,Z]

z=1.2

P(X=nan,X=nan | p=Z)

(con_mean, con_cov, con_weights) = Utility.cond_dist_gmm(np.array([np.nan,np.nan,z]), gmm.means_, gmm._get_covars(), gmm.weights_)

我需要添加的说明性伪代码。基本上,如果你有这样的东西:

a = NormalDistribution( 5, 2 )
b = ConditionalGaussianDistribution( w=[5], w0=2, sigma=2 )

这将指定一个正态的父分布和一个以父项的线性回归为中心的条件正态分布。 什么对你来说最方便。

我不确定你在问什么。 GMM 是在 pomegranate 中实现的(我认为比 sklearn 更快)。 您在寻找条件高斯混合模型吗?

我有条件 GMM。
给定具有离散变量和连续变量的数据,例如 d=[c1,c2,d1,d2],我会用不同的方式表述它。
我希望能够做到这一点:

k分量混合模型,对连续数据[d1,d2]进行建模,多变量是二维的,对向量[d1,d2]进行建模

gmm=MixtureDistribution(MultivariateGaussianDistribution1, MultivariateGaussianDistribution2, ..., MultivariateGaussianDistributionk)

离散分布

cat1=DiscreteDistribution([(0,0.1),(1,0.3),(2,0.6)])
cat2=DiscreteDistribution([(0,0.6),(1,0.4)])

新模型定义了连续和离散数据的连接分布 -> p(d)

我认为这是不可能的,但是,在石榴中

我认为这可能就是为什么我的意图并不完全清楚的原因,我将分配混合物与混合联合分配混合...

有关数学公式,请参阅页面底部的“混合情况”的联合分布

d_model=JointDistribution(gmm,cat1,cat2)

用数据拟合模型参数

d_model.from_sample(数据)

现在鉴于我知道(大约)联合概率,我想知道例如 [c1,c2] 的联合概率给定 d1=1 和 d2=0

cond_d = ConditionalDistr(d_model,[np.nan,np.nan,1,0])

对不起,我仍然没有完全理解你的意思。 您是说您希望 a 能够定义条件分布以同时具有连续和离散父项吗? 基本上,一个同时包含离散和连续变量的贝叶斯网络?

是的,我想就是这样。 但我做了更多的研究,我将避免任何形式的采样方法,而支持 EM。 即使这会降低我的模型的表现力。 因此,如果您要实现条件高斯混合模型(我自己的实现无法正常工作),那将不胜感激。 我可以提供我使用的纸张,但您可能拥有所需的所有资源。

当然,我想看看这篇论文,以确保我们在同一页上。

我发现了两种方法:
我试过的一个:机器学习的高斯过程中的附录 A
条件高斯混合模型中的第 2 章环境风险图

您是否在条件分配方面取得了进展?

我还没有太多时间来深入了解这些内容,未来的学生访问日是本周。 我很快就会回到这个问题。

这完全脱离了我的视线,对不起! 如果我很快就开始研究这个,它对你有用吗,或者你完成了你的论文吗?

没问题。
谢谢你回复我,但我的论文已经完成了。
祝你的图书馆好运。

2016 年 9 月 1 日 04:21,Jacob Schreiber [email protected]写道:

这完全脱离了我的视线,对不起! 如果我很快就开始研究这个,它对你有用吗,或者你完成了你的论文吗?


您收到此消息是因为您创作了该线程。
直接回复本邮件,在GitHub上查看https://github.com/jmschrei/pomegranate/issues/86#issuecomment -243958007,或者静音该线程https://github.com/notifications/unsubscribe-auth/AG5qEFMbUPk0uoKA4JTxdt8CaxTfPXja_Jgaks5

亲爱的@jmschrei ,您在这个主题上的流程是什么? 也会很感兴趣。 谢谢!

嗨@jaSunny。 你能准确描述一下你想要实现什么吗?

@jmschrei :当然! sample() 方法非常棒,或者可以将石榴模型迁移到 PyMC,因此可以在那里进行采样。 :)

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

anntzer picture anntzer  ·  20评论

xkortex picture xkortex  ·  6评论

arose13 picture arose13  ·  19评论

chananshgong picture chananshgong  ·  11评论

ucsky picture ucsky  ·  12评论