Machine learning 用Python实现贝叶斯层次模型

Machine learning 用Python实现贝叶斯层次模型,machine-learning,pymc3,pymc,hierarchical-bayesian,Machine Learning,Pymc3,Pymc,Hierarchical Bayesian,我试图在不同的数据集上实现贝叶斯层次模型,我在互联网上搜索,找到了Pymc3的这份文档 我想知道他们实际上是如何使用这些参数的。μ值,sigma值,为什么要使用这些值。这是如何确定的 以下是用于Radon数据集的代码 with pm.Model() as hierarchical_model: # Hyperpriors for group nodes mu_a = pm.Normal('mu_a', mu=0., sigma=100) sigma_a = pm.Hal

我试图在不同的数据集上实现贝叶斯层次模型,我在互联网上搜索,找到了Pymc3的这份文档

我想知道他们实际上是如何使用这些参数的。μ值,sigma值,为什么要使用这些值。这是如何确定的

以下是用于Radon数据集的代码

with pm.Model() as hierarchical_model:
    # Hyperpriors for group nodes
    mu_a = pm.Normal('mu_a', mu=0., sigma=100)
    sigma_a = pm.HalfNormal('sigma_a', 5.)
    mu_b = pm.Normal('mu_b', mu=0., sigma=100)
    sigma_b = pm.HalfNormal('sigma_b', 5.)

    # Intercept for each county, distributed around group mean mu_a
    # Above we just set mu and sd to a fixed value while here we
    # plug in a common group distribution for all a and b (which are
    # vectors of length n_counties).
    a = pm.Normal('a', mu=mu_a, sigma=sigma_a, shape=n_counties)
    # Intercept for each county, distributed around group mean mu_a
    b = pm.Normal('b', mu=mu_b, sigma=sigma_b, shape=n_counties)
从您的博客帖子:

因此,我们假设截距α和斜率β来自以各自组平均值μ为中心的正态分布,具有一定的标准偏差σ^2

这意味着该模型假设这些国家并不完全相似,但它们也不是完全独立的。参数μ(μ)和σ^2(σ)表示每个国家之间的相似程度。如果我们再多读一点您发布的文章,我们会看到以下报价:

左列中的边缘后验值信息量很大。mu_a告诉我们组平均(对数)氡水平。mu_b告诉我们,没有基底会显著降低氡水平(没有质量高于零)

这就是mu_a和mu_b所代表的。西格玛_a和西格玛_b将代表数据的方差。如果您不熟悉这些术语,那么您可能需要阅读上的维基百科页面


我对这个算法不熟悉,但他们似乎只是通过选择随机数或他们知道通常是算法良好起点的数字来确定mu和sigma的值。mu和sigma的值都将更改,以更好地拟合模型所看到的数据。

您好,先生,谢谢您的回复!实际上,你知道一个人如何根据手中的数据来确定μ和sigma的值吗?你不知道,你只是猜测一些初始值,让算法找到他能找到的最佳μ。西格玛将从mu值及其与数据的关系中找到。