Bayes参数估计

来源:互联网 发布:潍坊行知学校招生简章 编辑:程序博客网 时间:2024/06/12 23:51

极大似然估计

贝叶斯估计是参数估计中的一种方法,以贝叶斯思想为基础,而贝叶斯思想在机器学习中经常用到。机器学习中常涉及贝叶斯网络,最终的问题都是转化为参数求解。贝叶斯参数估计是这些问题的基础版本。前方高能预警,本文的讲解比较理论。

实际问题中我们会有很多数据,比如一篇文章中每个单词的词频等。我们得到的数据通常用X表示,也称为样本。我们还会假设这些数据服从某一个分布,例如最常用的正态分布,这时可以将问题表示为XN(μ,σ)μσ表示正态分布的两个参数。如果这两个参数知道了,这个分布就确定了,从而可以知道数据X的许多性质。最常用的参数估计方法是极大似然(或最大似然估计)估计。

一般的最大似然法求解两个参数的基本步骤是:

  • 假设每个样本Xi是独立同分布(iid)的,即每一个样本都有XiN(μ,σ).
  • 求所有样本X的联合分布
    因为是iid,所以X的联合分布等于每个样本Xi的概率密度函数的乘积,即:L(μ,σ2;x)=f(x)=(12πσ2)nexp{ni=1(xiμ)22σ2}
  • 对上述联合分布的概率密度函数取对数,即:(μ,σ2;x)=logL(μ,σ2;x)=n2log(2πσ2)ni=1(xiμ)22σ2
  • 对上述函数分别求μσ2并另它们等于0,进而求得极值
  • 分别对μσ2求二阶偏导,验证极值是最大值

上述步骤是极大似然法的求解步骤,用到的信息都是已知样本的信息。但是通常在估计参数时我们可能已经对参数有了一个大概的了解,比如已经知道μσ2的取值范围。仅仅知道取值范围还太简单,有时会更进一步假设μσ2的取值服从某个分布,这样问题就变成了在正态分布中,要估计期望μ和方差σ2的值,但与极大似然法不同的是,我们事先已经知道了μσ2的取值是服从某种分布的,这个信息如果不用到参数估计中那真是太浪费了,于是问题变成:如何将这两个参数的分布结合到参数估计当中去呢?贝叶斯估计解决了这个问题。

贝叶斯估计(Bayes Estimation)

上述提到的在估计参数之前对参数已经有了了解称为参数的先验知识。贝叶斯估计即在估计过程中将先验知识也考虑了进去,博众家之长总是好的。先验知识可以是一个具体的值,也可以是取值范围(函数)。实际应用中,通常会将参数的先验知识视作一个分布,那么这个参数就会有一个概率密度函数,这个pdf叫做参数的先验概率

一般待估计的一维参数用θ表示,多维用粗体θ. 先验概率密度函数用符号π(θ)表示。样本的概率密度函数用f(x|θ)表示,其中加入θ是表示该pdf跟θ有关,同时说明要估计的参数是θ.

贝叶斯估计涉及到三个基本概念,他们长的很像:
- 损失函数(Loss Funcition)
- 风险函数(Risk Function)
- 贝叶斯风险(Bayes Risk)

贝叶斯估计的目的是结合参数的先验知识,使得估计出来的参数能令贝叶斯风险达到最小。简单说就是最小化贝叶斯风险。

下面解释这三个概念。

损失函数

在参数估计问题中,评价估计的好坏就是看估计出来的参数与真值的差距有多小。估计出来的参数通常用θ̂ 表示,参数的真值用θ表示。那么这个差距如何定义呢?实际上,这个差距就是损失函数。

损失函数有好几种:
-

L(θ̂ ,θ)=(θ̂ θ)2

-
L(θ̂ ,θ)=|θ̂ θ|

-
L(θ̂ ,θ)={01if |θθ̂ |Δif |θθ̂ |>Δ

上述是三种常用的损失函数。可以看到当估计值与真实值无限接近时,损失函数都会无限接近0,相当于没有损失. 损失函数中的估计值θ̂ 是通过样本计算出来的。比如正态分布中的μ,我们可以用样本均值来估计μ,即μ̂ =1nni=0Xi=X¯。我们也常常用样本方差来估计σ2. 但是注意到μ̂ σ̂ 2的值都跟样本的个数有关,即都跟n有关。如果1nni=0Xiμ的估计值,那1n1n1i=0Xiμ的估计值吗?那1n6n6i=0Xi呢?可以看到n不一样,估计值也不一样,到底用哪个n(用多少个样本)来计算损失函数呢?这时容易(其实不容易!)想到,既然损失函数可以因为θ̂ 的不同而有不同的值,那就求平均啊!通过判断损失的平均值的大小来判断参数估计得好不好。求平均是很自然的想法,但平均通常是相对样本来说的,如果是总体,我们通常说期望。这时就要引入风险函数了。

风险函数

其实风险就是损失函数关于θ̂ 的期望

既然估计值θ̂ 是随n的变化而变化的,那也可以将θ̂ 视为随机变量,进而可以计算损失函数的期望。于是风险函数的定义如下:

R(θ̂ ,θ)=Eθ̂ [L(θ̂ ,θ)]

Eθ̂ 表示对θ̂ 求期望(因为真值是固定的,不是变量)。我们的目标是:求出一个θ̂ ,使得风险最小(最小化风险)

举个栗子,估计期望μ,假设损失函数是L(μ̂ ,μ)=(μ̂ μ)2,计算当μ̂ =1nni=0Xi时的风险是多少?

E[L(μ̂ ,μ)]=E(X¯μ)2=EX¯22μEX¯+μ2  ()

算出上式中的EX¯2EX¯就可以知道风险是多少啦!其实上式的风险是0,已经是最小值了。这个结果说明当使用样本均值来估计总体期望时,风险最低。

到目前为止我们并没有用到前面提过的先验知识π(θ)。仅仅定义了损失函数和风险函数。上式的风险函数求出了一个具体的值,但很多情况没有那么简单,求出的风险是一个函数表达式,而不是值。如果求出来的风险是一个值,其实可以不用贝叶斯估计(上面也一直没有用到θ的任何先验知识)。贝叶斯估计通常用于风险不可以直接比较的情况。

这时就要引入贝叶斯风险的概念了。贝叶斯风险中就用到了θ的先验分布π(θ).

贝叶斯风险

我们注意到风险函数R(θ̂ ,θ)θ̂ 的函数,前面也提到真值θ是一个固定的值,不是变量。但是!我们又提到,我们会在估计θ之前知道了一些θ的知识,比如说θ的分布π(θ)(这个分布是怎么知道的呢?下文有讲解)。既然θ是有一个概率分布的,那么此时θ也变成一个随机变量了,所以R(θ̂ ,θ)同时是θ̂ θ的函数。这时要怎么使用π(θ)呢?下面定义贝叶斯风险。

(注意!下面要积分了!)

贝叶斯风险:

Bayes Risk=Eθ[R(θ,θ̂ )]=R(θ,θ̂ )π(θ)dθ

上式表示:贝叶斯风险是风险函数在θ上的期望(时刻注意到期望是通过积分来定义的)

回顾一下期望的定义。如果随机变量用X表示,其概率密度函数是f(x),那么X的期望EX=xf(x)dx. 对照期望的积分形式,可以看到π(θ)就是θ的概率密度函数,随机变量是θ. R(θ,θ̂ )是关于随机变量θ的一个函数,所以Bayes Risk就是在求风险函数的期望。总的来说:风险函数是损失函数关于θ̂ 的期望,而贝叶斯风险是风险函数关于θ的期望。所以贝叶斯风险是一个双期望。更进一步,θ̂ 是关于随机变量X的函数(θ̂ 总是通过X求出来的呀!),所以也可以说:风险函数是损失函数关于x的期望。这样就将风险与θ的先验知识结合起来了。

之所以叫贝叶斯风险是因为引入了一个先验分布π(θ). 『先验』这个词本身就是贝叶斯理论的一部分。

如何最小化贝叶斯风险(贝叶斯估计)

终于到达贝叶斯估计的核心了,即如何找到一个θ̂ ,使得贝叶斯风险最小。问题转化为求R(θ,θ̂ )π(θ)dθ的最小值。

这是一个积分形式的函数,如果知道R(θ,θ̂ )π(θ)的形式或许可以求出最小值。但其实仅仅根据这个抽象的形式,也是可以求出最小值的形式的。

下面要开始积分了!不想看推导过程可以直接看最后结论。

为了跟一些书的符号统一,下面引入一个新的符号:a=θ̂ . 即用字母a来表示参数的估计值θ̂ .

字母a表示action,表示采取某一动作求得θ的估计。在参数估计问题中,a就是θ̂ . 所以R(θ,θ̂ )=R(θ,a)

因为R(θ,a)的本质也是求期望,先将其转换为积分的形式。

R(θ,a)=Ea[L(θ,a)]=L(θ,a(x))f(x|θ)dx

因为ax的函数,所以对a求期望就是在x上求期望,进而转换为对x求积分。同时x的概率密度函数是已知的,记为f(x|θ),表示x的pdf跟θ有关,也表示条件概率密度函数,一石二鸟。

既然在θ给定的条件下,x的条件pdf是f(x|θ)(此时已经将θ当成随机变量看待了),而且θ的分布又是π(θ),那么根据条件概率的定义,可以求出x的边缘概率密度函数:

f(x)=f(x|θ)π(θ) dθ  ()

所以有:

R(θ,a)π(θ)dθ=θ[xL(θ,a(x)) f(x|θ) dx]π(θ) dθ=θxL(θ,a(x))f(x|θ)π(θ)f(x)f(x) dx dθ=θxL(θ,a(x))π(θ|x) f(x) dx dθ=x[θL(θ,a(x))π(θ|x) dθ]f(x) dx () (f(x)f(x)) () ()

到这里再也无法化简了,那就来分析上式中最后一项。

通过贝叶斯定理,我们求出了π(θ|x). 观察中括号中的式子,π(θ|x)是一个pdf,会发现中括号中的这一项很像期望的定义。实际上中括号这一项就是π(θ|x)上求损失函数L(θ,a(x))的期望。

要记得贝叶斯估计的目的:求出θ̂ (在这里就是a(x)),使得贝叶斯风险最小(即R(θ,a)π(θ)dθ最小)

中括号中的那一项是对θ积分,积分后不会有θ,从而整个式子只剩下x. 而回想一下贝叶斯估计的目的,x并不是我们要关心的。所以贝叶斯估计就是要计算中括号一项,使得中括号内的积分最小,最终还是回到了损失函数上。

刚才说到中括号一项看起来像是期望的定义,其实这一项就叫posterior expected risk. 记作:

θL(θ,a(x))π(θ|x) dθ=EπL(θ,a(x))

Eπ表示在π(θ|x)上求期望。π(θ|x)就叫做θ的后验分布,即在知道数据xθ的分布。所以贝叶斯估计就是:θ̂ ,使得损失函数在θ的后验分布上的期望最小。

这样我们发现,L(θ,a(x))是自己设计的,比如前面提到的那三种,如果知道π(θ),根据贝叶斯定理,容易求出π(θ|x);而π(θ)又是我们自己定义的(先验知识嘛,肯定是事先就知道了的),所以这个posterior expected risk不难求得。至于如何计算后验分布,后面有讲解。

结论

贝叶斯参数估计的步骤:
- 拿到数据,知道数据的分布,记为f(x|θ),要估计的参数记为θ
- 定义损失函数L(θ,θ̂ )
- 定义θ的先验知识或先验分布π(θ)
- 根据贝叶斯定理求出后验分布π(θ|x)=f(x|θ)π(θ)f(x)
- 最小化如下式子:argminL(θ,θ̂ )π(θ|x) dθ=EπL(θ,θ̂ )

上面最后一步,涉及积分以及最小值求解,看起来十分麻烦。所幸,在特定的损失函数形式下,上面最后一步可以化简,并不需要完全用到积分。下面一部分的讲解就是在三种特定损失函数形式下贝叶斯估计的计算方法。

理论总是简单的,上述的求解过程后面附有例子,可以温习一下。

三种常用损失函数的贝叶斯估计计算

Square Error

square error就是

L(θ,a)=(θa)2

下面这直接给出结论:
若损失函数是square error,那么当a等于θπ(θ|x)上的期望时,贝叶斯风险最小。

上述结论证明涉及到其它知识,略过。

上述结论说明,如果知道π(θ|x)的形式,那么只需求θπ(θ|x) dθ就可以了,实际上就是期望。例如,如果π(θ|x)是正态分布,π(θ|x)N(η,τ),那么a=ηη就是参数θ的估计。

Absolute Error

Absolute error就是

L(θ̂ ,θ)=|θ̂ θ|

下面直接给出结论:
若损失函数是square error,那么当a等于数据X的中位数时,贝叶斯风险最小。

这个结论说明:如果使用square error作为损失函数,连θ的后验分布都不用求了。

Uniform Error

uniform error的形式为:

L(θ̂ ,θ)={01if |θθ̂ |Δif |θθ̂ |>Δ

下面直接给出结论:
若损失函数是uniform error且Δ很小,当a=argmaxπ(θ|x)时,即a等于θ后验分布的最大值时,贝叶斯风险最小。

上述结论说明,在uniform error的情况下,如果知道π(θ)的形式,那么求它的最大值即可。如果π(θ|x)是正态分布,π(θ|x)N(η,τ),正态分布的最大值在均值处取得,所以θ的估计值为η,与square error一样。

如何确定先验分布(先验知识)与后验分布

前面一直提到先验知识或者先验分布,偶尔混用。这是因为θ的先验知识π(θ)可以有很多种形式,可以是一个数,可以是离散的几个数,也可以是个概率分布函数,此时就叫后验分布。

但是对于后验分布,它只能是一个概率分布形式,即π(θ|x)必须满足概率密度函数的定义,而π(θ)却不一定。原因是因为最后求贝叶斯风险最小值的函数形式只涉及到π(θ|x),没有涉及到π(θ),所以π(θ)取什么值在数学上无所谓,但是会对结果造成影响。

很多应用中π(θ)会取一个概率密度函数。下面介绍一种π(θ)的取法:共轭先验

共轭先验(Conjugate Prior)

共轭先验这四个字指的不是一个分布,而是指一大类分布,比如指数族分布。下面给出共轭分布不太严谨的数学定义:

设资料X有概率密度函数FXF(x|θ). θ的先验分布π(θ)属于某个分布族Pπ(θ)P. 如果对任意θθ的后验分布 π(θ|x)也属于分布族P,那么P就叫做F的共轭先验。

白话解释:
如果找到一个π(θ),它是F的共轭先验,那么θ的后验分布π(θ|x)和先验分布π(θ)会有一样的形式,即同属于分布族P。注意共轭是指π(θ)f(x|θ)共轭。

前面说到贝叶斯估计最终需要计算出θ的后验分布,θ的先验分布π(θ)分布是已知的。如果π(θ)f(x)共轭,那么π(θ)π(θ|x)会有一样的形式,这样不就会很方便求解π(θ|x)?事实上就是这样的,因此在设计先验分布的时候常常会设计成与f(x)共轭,后面计算会方便。

但是看定义凭空想出一个共轭先验蛮难的。幸运的是我们可以证明,所有属于指数族分布的f(x),都可以求出它的共轭先验分布π(θ)的具体形式。而大部分常见的分布都属于指数族分布(Exponential Family),比如正态分布,指数分布,二项分布,泊松分布,Beta分布,Gamma分布等等。

下面给出常见的共轭先验:

中文名称 f(x|θ) π(θ) 正态分布 N(μ,σ2) π(μ)N(η,τ) 正态分布 N(μ,σ2) π(σ2)inverse Gamma 指数分布 Exp(θ) π(θ)inverse Gamma 二项分布 Bin(n,p) π(p)Beta(α,β) 泊松分布 Poi(λ) π(λ)Γ(α,β)

如果你的样本的分布是上面表中第二列中的一项,那么就可以将先验分布设计成第三列中对应的分布。所以在才会在那么多算法或实际问题中将某个参数的分布定义成Gamma或Beta这种“奇怪”的形式,原因就是为了求解方便。

后验分布的计算

贝叶斯估计的落脚点之一是求解参数的后验分布π(θ|x). 本部分讲解求解π(θ|x)的步骤。

先给出公式:

π(θ|x)=f(x|θ)π(θ)f(x)

贝叶斯理论中是将参数作为随机变量看待的,因此样本的概率密度函数通常写成f(x|θ)的形式,表示θ是已知的,而f(x)就是x的边缘密度概率函数,这个需要计算,而且的确是可以计算出来的。

泊松分布的例子

这个例子很理论,但胜于比较典型。

问题:已知X1,X2,...,Xn是iid的,服从泊松分布,XiPoi(λ). λ是要估计的参数。
(1) 利用λ的共轭先验求λ的后验分布
(2) 求在square error下λ的贝叶斯估计λ̂ bayes

求解(1)
依题意,我们可以写出Xi的概率密度函数:

f(x|λ)=eλλxx!

因为Xi是独立同分布,所以它的联合概率密度函数是:

f(x|λ)=enλλni=1xini=1(xi!) ()

由之前的表格可知,泊松分布的共轭先验分布是Gamma分布,Gamma分布的参数是αβ,这两个参数可以当成是已知的。所以先验分布可以写成:

π(λ)=βαλα1eλβΓ(α)

求解X的边缘概率密度函数f(x) (下面积分过程其实很简单,但也实在太碍眼了,可以略过不看)

f(x)=0f(x|λ)π(λ)dλ =0enλλni=1xini=1(xi!)βαλα1eλβΓ(α)dλ=βαni=1(xi!)Γ(α)0λni=1xi+α1e(n+β)λdλ=(1n+β)ni=1xi+αβαni=1(xi!)Γ(α)0((n+β)λ)(ni=1xi+α)1e(n+β)λd(n+β)λ=βαni=1(xi!)Γ(α)Γ(i=1nxi+α)(1n+β)ni=1xi+α

根据贝叶斯定理求解λ的后验分布:

π(λ|x)=f(x|λ)π(λ)f(x)=enλλni=1xini=1(xi!)βαλα1eλβΓ(α)ni=1(xi!)Γ(α)(n+β)ixi+αβαΓ(ni=1xi+α)=e(n+β)λλixi+α1(n+β)ixi+αΓ(ni=1xi+α)

上面的式子很复杂,但其实它是一个Gamma分布:

π(λ|x)Γ(i=1nxi+α,n+β)

上面的求解过程还是太复杂,其实有更简便的方法。因为共轭先验分布是Gamma分布,所以后验分布肯定也是Gamma,我们可以直接凑出后验分布的形式,但不是很直观,略过。

求解(2)
Square error下的贝叶斯估计就是后验分布的期望。对于XΓ(α,β)EX=αβ. 所以对于本问题:

λ̂ bayes=ni=1xi+αn+β

可以看到先验分布中λ服从参数为αβ的Gamma分布,在观察到一些数据后,λ仍然是服从Gamma分布的,只不过参数得到了修正,变成了ni=1xi+αn+β. 这就是贝叶斯估计的思想,先假设参数服从某个分布,可能会有偏差。有偏差不要紧,我们将观察到的数据(样本)带入贝叶斯估计的过程便可以修正这些偏差。

0 0
原创粉丝点击