使用新数据进行贝叶斯更新

机器算法验证 贝叶斯 正态分布 共轭先验
2022-02-14 19:15:22

在观察 n 个数据点之后,我们如何计算具有先验 N~(a, b) 的后验?我假设我们必须计算数据点的样本均值和方差,并进行某种将后验与先验相结合的计算,但我不太确定组合公式是什么样的。

3个回答

贝叶斯更新的基本思想是给定一些数据先验参数,其中数据和参数之间的关系使用似然函数来描述,您使用贝叶斯定理获得后验Xθ

p(θX)p(Xθ)p(θ)

这可以按顺序完成,在看到第一个数据点之前更新为后验之后,接下来您可以获取第二个数据点并使用之前获得的后验作为您的先验,再次更新它等等.x1 θ θx2θ

让我给你举个例子。想象一下,你想估计正态分布的平均值并且是你已知的。在这种情况下,我们可以使用正态-正态模型。我们假设具有超参数μσ2μμ0,σ02:

XμNormal(μ, σ2)μNormal(μ0, σ02)

由于正态分布是正态分布的共轭先验我们有封闭形式的解决方案来更新先验μ

E(μx)=σ2μ+σ02xσ2+σ02Var(μx)=σ2σ02σ2+σ02

不幸的是,这种简单的封闭式解决方案不适用于更复杂的问题,您必须依赖优化算法(使用最大后验方法进行点估计)或 MCMC 模拟。

下面你可以看到数据示例:

n <- 1000
set.seed(123)
x     <- rnorm(n, 1.4, 2.7)
mu    <- numeric(n)
sigma <- numeric(n)

mu[1]    <- (10000*x[i] + (2.7^2)*0)/(10000+2.7^2)
sigma[1] <- (10000*2.7^2)/(10000+2.7^2)
for (i in 2:n) {
  mu[i]    <- ( sigma[i-1]*x[i] + (2.7^2)*mu[i-1] )/(sigma[i-1]+2.7^2)
  sigma[i] <- ( sigma[i-1]*2.7^2                  )/(sigma[i-1]+2.7^2)
}

如果你绘制结果,你会看到随着新数据的积累,后验如何接近估计值(它的真实值用红线标记)。

在正常-正常模型的后续步骤中更新先验

要了解更多信息,您可以查看Kevin P. Murphy 对高斯分布论文的这些幻灯片共轭贝叶斯分析。还要检查贝叶斯先验是否与大样本量无关?您还可以查看这些注释此博客条目,了解贝叶斯推理的可访问分步介绍。

如果您有事先P(θ)和似然函数P(xθ)你可以计算后验:

P(θx)=θP(xθ)P(θ)P(x)

自从P(x)只是使概率总和为 1 的归一化常数,您可以这样写:

P(θx)θP(xθ)P(θ)

在哪里意思是“成正比”。

共轭先验的情况(你经常得到很好的封闭式公式)

这篇关于共轭先验的维基百科文章可能提供了丰富的信息。成为参数的向量。成为参数的先验。为似然函数,即给定参数的数据概率。如果先验后验属于同一个族,则先验是似然函数的共轭先验(例如,两者高斯)。θP(θ)P(xθ)P(θ) P(θx)

共轭分布表可能有助于建立一些直觉(并提供一些指导性示例以帮助您自己解决)。

这是贝叶斯数据分析的核心计算问题。这实际上取决于所涉及的数据和分布。对于一切都可以用封闭形式表示的简单情况(例如,使用共轭先验),您可以直接使用贝叶斯定理。对于更复杂的情况,最流行的技术系列是马尔可夫链蒙特卡罗。有关详细信息,请参阅任何有关贝叶斯数据分析的介绍性教科书。