贝叶斯线性回归(Bayesian Linear Regression)
关于参数估计
在很多机器学习或数据挖掘问题中,我们所面对的只有数据,但数据中潜在的概率密度函数是不知道的,概率密度分布需要我们从数据中估计出来。想要确定数据对应的概率分布,就需要确定两个东西:概率密度函数的形式和概率密度函数的参数。
有时可能知道的是概率密度函数的形式(高斯、瑞利等等),但是不知道具体的参数,例如均值或者方差;还有的时候可能不知道概率密度的类型,但是知道一些估计的参数,比如均值和方差。
关于上面提到的需要确定的两个东西:概率密度函数的形式和参数,至少在机器学习的教课书上,我所看到的情况都是:给了一堆数据,然后假设其概率密度函数的形式为 高斯分布 ,或者是混合高斯分布,那么,剩下的事情就是对高斯分布的参数,μ 和 σ2 进行估计。所以,参数估计,便成了极其最重要的问题。
其实,常用的参数估计方法有:极大似然估计、最大后验估计、贝叶斯估计、最大熵估计、混合模型估计。
极大似然估计
这里先以一个分类问题来说明一般参数估计面对的数据形式。考虑一个M类的问题,特征向量服从p(x|),i=1,2...,M 分布。这是现实情况中最常见的一种数据存在形式,数据集合X是由M个类别的数据子集,m=1,2...,M 组成的,第m类别的数据子集对应的概率密度函数是p(x|)。
前面已经介绍过了,想要确定数据的概率分布,需要知道概率密度函数的 形式 和 参数,这里首先做一个基本假设:概率分布的形式已知,比如假设每个类别的数据都满足高斯分布,那么,似然函数就可以以参数 θi 的形式表示,如果是高斯分布,则参数为μi和,即θi=(μi)。
为了强调概率分布p(x|ωi)和θi有关,将对应的概率密度函数记为p(x|ωi;θi),这种记法属于频率概率学派的记法。这里的极大似然估计对应于一个类条件概率密度函数。
在概率论中一直有两大学派,分别是频率学派和贝叶斯学派。简单点说,频率学派认为,概率是频率的极限,比如投硬币,当实验次数足够大时,正面朝上的频率可以认为是这枚硬币正面朝上的概率,这个是频率学派。但是,如果要预测一些未发生过的事情,比如,北极的冰山在2050年完全融化的概率,由于这个事情完全没有发生过,所以无法用频率来代替概率表示,只能研究过去几十年,北极冰山融化的速率,并将其作为先验条件,来预测北极的冰山在2050年完全融化的概率,这就是概率的贝叶斯学派。上面的问题,如果用贝叶斯学派的记法的话,是:p(x|ωi,θi)。这两个学派适用的情况不太一样,但是,在我目前所用到的概率论的知识中,貌似这两个学派并没有什么太大的区别,只是记法略有不同,稍微注意下即可。
从上面的描述中可以知道,利用每一个类Xi中已知的特征向量集合,可以估计出其对应的参数θi。进一步假设每一类中的数据不影响其他类别数据的参数估计,那么上面的M个类别的参数估计就可以用下面这个统一的模型,独立的解决:
设x1,x2,...,xN 是从概率密度函数p(x;θ)中随机抽取的样本,那么就可以得到联合概率密度函数 p(X;θ), 其中X={x1,x2,...,xN} 是样本集合。假设不同的样本之间具有统计独立性,那么:
注意:这里的p(xk;θ) 本来的写法是 p(x|ωi;θi) , 是一个类条件概率密度函数,只是因为这里是一个统一的模型,所以可以将wi省略。
需要重申一下,想要得到上面这个公式,是做了几个基本的假设的,第一:假设M个类别的数据子集的概率密度函数形式一样,只是参数的取值不同;第二:假设类别i中的数据和类别j中的数据是相互独立抽样的,即类别j的参数仅仅根据类别j的数据就可以估计出来,类别i的数据并不能影响类别j的参数估计,反之亦然;第三:每个类别内的样本之间具有统计独立性,即每个类别内的样本之间是独立同分布 (iid) 的。
此时,就可以使用最大似然估计(Maximum Likelihood,ML)来估计参数θ了:
为了得到最大值,必须满足的必要条件是,似然函数对θ的梯度必须为0,即:
一般取对数形式:
需要注意:极大似然估计对应于似然函数的峰值
极大似然函数有两个非常重要的性质:渐进无偏和渐进一致性,有了这两个性质,使得极大似然估计成为了非常简单而且实用的参数估计方法。这里假设θ0是密度函数p(x; θ)中未知参数的准确值。
渐进无偏
极大似然估计是渐进无偏的,即:
也就是说,这里认为估计值本身是一个随机变量(因为不同的样本集合X会得到不同的),那么其均值就是未知参数的真实值,这就是渐进无偏。
渐进一致
极大似然估计是渐进一致的,即:
这个公司还可以表示为:
对于一个估计器而言,一致性是非常重要的,因为存在满足无偏性,但是不满足一致性的情况,比如,在 θ0周围震荡。如果不满足一致性,那么就会出现很大的方差。
注意:以上两个性质,都是在渐进的前提下(N→∞)才能讨论的,即只有N足够大时,上面两个性质才能成立
贝叶斯估计
先验概率,后验概率
先验概率(prior)与后验概率(posterior)简称为先验和后验。一个先一个后,我们肯定是针对同一事物才有先后之分,如果针对两个事物,先后就没有意义了。这个共同的对象,就是我们的参数θ。后验概率是指掌握了一定量的数据后我们的参数分布是怎么样的,表位为p(θ|D);那先验就是在没有掌握数据后我们的参数怎么分布。
贝叶斯估计最重要的就是那个先验的获得。虽然这次的一组数据,比如说仍三次硬币产生的序列(110)这样分布的,但是其实我们根据我们的历史来看,一枚硬币正反面其实很有可能按照均匀分布来的,只不过试验的次数太少了,所以要将以往的经验考虑在里面。先验很过时候完全是假设,然后去验证有的数据是否吻合先验猜想,所以这里的猜想很重要。
模型推导
根据条件概率公式有:
此时,这里面处理分母可以看作是一个归一化因子外,其余均是概率分布的函数。也就是说,无法再像极大似然估计那样将先验概率(p(θ))看作一个常量。这时候就需要考虑用到我们的先验概率了。我们这次把分母展开,根据全概率公式:
我们可以得到分布的展示式为:
当θ已知的情况下,p(D|θ)就是极大似然估计的联合密度函数,即
将上述这两个公式代入到条件概率公式可以得到
贝叶斯估计的增量学习
为了明确的表示样本集合D中有n个样本,这里采用记号:Dn={x1,x2,……,xn}。根据前一个公式,在n>1的情况下有:
可以很容易得到:
当没有观测样本时,定义:
为参数θ的初始估计。然后让样本集合依次进入上述公式,就可以得到一系列的概率密度函数:
这一过程称为参数估计贝叶斯递归法,也叫贝叶斯估计的增量学习。这是一个在线学习算法,它和随机梯度下降法有很多相似之处。
其实做到这一步,我们会发现虽然解决了问题,但是又会带来新的问题,因为在解决这一类贝叶斯估计的问题的时候,我们让参数以某种概率密度函数分布,就会导致在计算过程中不可避免的高复杂度,人们为了计算上的方便,就提出不再是把所有的后验概率p(θ|D)都找出来,而是仍然采用类似于极大似然估计的思想,来极大后验概率(Maximum A Posterior),得到这种简单有效的叫做MAP(前面英文的首字母)的算法。下面我们再一步步介绍一下MAP。
极大后验概率(MAP)
虽然本节独自成为一节,但是其实是隶属于贝叶斯估计的,属于贝叶斯估计里面的一个trick,放弃一点的准确性,来极大提升算法性能。所以,这个部分不能算是模型,只能算是算法。
MAP(Maximum A Posterior)的理论依据是绝大部分情况下,参数值最有可能出现在概率最大点附近。为了说清楚MAP的来龙去脉,本节将首先介绍如何利用贝叶斯估计的参数进行预测,然后分析直接使用之前得到的后验概率有什么不好,最后介绍MAP算法做的工作。
使用贝叶斯估计的参数做预测
前一节中,我们通过贝叶斯估计得到了后验概率p(θ|D)。那么这个后验概率能用来做什么呢?当然,就比如掷硬币,得到了数据D=(1,1,0),还想预测第四次得到的结果什么是什么怎么办?我们当然就需要计算p(1|D)和p(0|D)看看谁大谁小,哪个更有可能发生。这里,为了泛化,我们将问题再次形式化一下为
已知数据D=(x1,x2,...,xn),预测新的数据x的值。
这个问题还有很多细节,比如先验概率,后验概率,数据分布等一些细节,因为前面已经介绍过了,这里为了突出重点,不再重复。在此需要关注的是,所谓预测新的数据的值,其实就是能够在已知数据D的情况下,找到数据的数学期望。即求
也就是我们需要求p(x|D),这该怎么办?其实这个式子比较迷惑人的点就在于,它内藏了一个参数,也就是x的分布其实与参数是有关的,但是又参数θ是服从某种概率分布的,要对参数所有可能的情况都考虑就得到了
这一式子。
接下来还时运用基本的条件概率公式:
对这一句公式的解释就是,x和θ在已知数据D的条件下的概率,等于x在已知θ和数据D的条件下的概率乘θ在已知数据D的条件下的概率。为什么我要费这个心来说这个,一方面是我为了方便大家理解这个多维条件概率符号的含义,另一方面更重要的是右边式子的第一项p(x|θ,D)可这样
化简。为什么?因为我们从数据里面得到的东西对一个新的数据来说,其实只是那些参数,所以对x而言,θ就是D,两者是同一条件。
那么上式就变成了
p(x|θ)是已知的(例如在我们的问题里面可以是p(1|ρ)或者p(0|ρ));p(θ|D)也是已知的,我们在贝叶斯估计中已经求出来了。所以这个式子完全就是一个只含有x的函数,带入期望公式完全可以计算出来数学期望。但是!这里面我忽略了一个事实,这里面存在什么困难呢?下面会帮助大家分析
贝叶斯估计中的一个困难
这里面的困难是参数是随机分布的,我们需要考虑到每一个可能的参数情况然后积分,这种数学上的简单形式,其实想要计算出来需要大量的运算。那我们不妨退而求其次,我找一个跟你差不多效果的后验概率,然后就只计算这个后验带入计算。那么什么样的后验概率和对所有可能的θ积分情况差不多呢?想法就是,找一个θ能够最大化后验概率,怎么才能最大化后验概率呢?
MAP算法
其实最大化后验概率还是老一套,最大化式子
对式子进行观察,其实分母只是一个归一化的因子,并不是θ的函数。真正有效地其实就是最大化分子,于是使用:
这其实与极大似然估计形式上很相似,但是主要区别在于运用了一个先验概率在这个极大化里面。参数都已经计算出来了,其他过程,其实还是按照极大似然来做就行了,不用再按照贝叶斯一样对所有可能的参数情况都考虑在求积分了。
这里需要说明,虽然从公式上来看MAP=ML*p(θ),但是这两种算法有本质的区别,ML将θ视为一个确定未知的值,而MAP将θ视为一个随机变量。
在MAP中,p(θ)称为θ的先验,假设其服从均匀分布,即对于所有θ取值,p(θ)都是同一常量,则MAP和ML会得到同样的结果。当然了,如果p(θ)的方差非常的小,也就是说,p(θ)是近似均匀分布的话,MAP和ML的结果自然也会非常的相似。
基于基函数的线性回归
线性回归模型的基本特征就是,模型是参数向量ω={w0,w1,w2,...,wn}的线性函数,这极大地限制了模型的适用性。这里使用基函数(basis function)对上面的线性模型进行拓展,即:线性回归模型是一组输入变量x的非线性基函数的线性组合,在数学上其形式如下:
这里ϕj(x)就是前面提到的基函数,总共的基函数的数目为M个,如果定义ϕ0(x)=1的话,那个上面的式子就可以简单的表示为:
在"特征选择和评估"中,实际拿到手的数据,由于各种原因,往往不能直接应用到机器学习算法中,需要对原始数据做一些预处理或者是特征提取的操作,而那些从原始输入向量x中提取出来的特征, 就是这一个个的ϕj(x).
通过使用非线性的基函数,我们可以使得线性模型y(x,w)成为输入向量x的非线性函数。
下面举一些基于不同基函数的线性模型y(x,w)的例子:
-
ϕj(x)=xj
这里取M=n,那么就可以很容易的得到:
-
ϕj(x)=xj
这里就是典型的多项式曲线拟合(Polynomial Curve Fitting),其中M是输入变量x的最高次数,同时也是模型的复杂度。多项式曲线拟合的一个缺陷就是这个模型是一个输入变量的全局函数,这使得对输入空间的一个区间的改动会影响到其他的区间,这个问题可以通过将输入空间切分成不同的区域,对不同的区域各自在各自的区域中做曲线拟合来解决,这个方法就是经典的样条函数(spline function)。
-
ϕj(x)=exp{−(x−μj)2/2s2}
这里μj表示的是该基函数在输入空间中的位置,参数s控制的是基函数的空间尺度,这个基函数往往会被称为高斯基函数(Gaussian basis function)。需要强调一点,这里的高斯函数并不是输入空间的概率分布,其并没有概率意义。由于每个基函数前面都有一个比例系数ωj,所以,对参数的归一化(coefficient normalization)并不是必需的。
-
ϕj(x)=σ(x−μj/s)
这个基函数叫做sigmoid函数,其定义为:
与这个函数拥有相同效果的一个函数叫做tach函数,其定义为:
在神经网络中,这两个基函数有着非常广泛的应用。其实从根本上来讲,神经网络的每一层,也是一些基函数的线性组合,神经网络之所以能处理非线性问题,其根本也是由于采用了合适的非线性基函数。
线性回归模型的概率解释
关于线性模型可以通过其概率意义进行解释,我个人也是最信服这种解释方式。即:真实值tn,是输入xn在模型y(x,w)上加入了一个噪声产生的,其数学表达式如下:
而我们一般可以定义噪声ϵ为高斯分布N(0,σ2),那么可以很容易得到,t是以y(x,w)为均值的高斯分布:
那么对于训练数据{X,t}而言,可以使用极大似然估计来计算参数w和σ2:
取对数似然估计:
首先估计参数w,那么就可以略去和w无关的所有项。最后就是剩下下面这个式子:
这个就是一开始使用的平方误差和(sum of the squares of the errors),这也解释为什么用平方误差和作为损失函数了,w的解在线性回归那一节中已经有说明。
在估计出wML后,再来估计参数σ2,这里取β−1=σ2,则对数似然估计就变成了:
对其关于β求导,就可以得到:
所以可以得到:
现在参数wML和都已经估计出来了,那么我么就有了t关于x的概率分布模型:
有了这个模型,对于输入x就可以很容易的得到对应的t,及其概率。
贝叶斯线性回归
从普通最小二乘线性回归问题说起
从更为宏观的角度看,普通的线性回归问题,从本质上来说就是以"残差平方和"为统计量的一次多项式模型拟合问题,即
又称为最小二乘法。非常简单直接,甚至简单粗暴的思路,在各类工程问题得到了广泛地应用。数学上可以证明,最小二乘法的结果和均一正态误差(即每一个y的测量值yi的的分布是以"真实的"为期望,统一地误差为标准差的正态分布)情况下的极大似然拟合是一致的。在很多情况下,对于yi分布的假设往往是隐含的,不被显示指出的。
然而,当上述对于yi的正态分布性质的隐含假设不再成立时,最小二乘尽管仍然可能是对于真实结果的一个足够良好的逼近,但其可解释性将会受到显著的损害。同时,当实际情况中
yi显著偏离正态分布,而在数据分析中又强加这一假定时,很可能会发现出现显著偏离模型的野值(野值是相对于给定的yi的分布而言的,例如,如果yi服从的实际上是t分布,而强行假定它符合正态分布,就可能观察到出现概率极小的测量值,因为t分布相对于正态分布有两个很长的尾巴)。
对于这些显著偏离模型的所谓野值,我们当然可以修正统计量,使得拟合结果更为稳健(即所谓稳健拟合),然而很多情况下这只是权宜之计。
此外,对于自变量和因变量都存在弥散的情况下,普通的最小二乘线性拟合尽管能稍作修改应用在此类问题上,但这种修改的可推广性很差,难以应用到更复杂的非线性模型中。
贝叶斯线性回归模型
贝叶斯线性回归不仅可以解决极大似然估计中存在的过拟合的问题,而且,它对数据样本的利用率是100%,仅仅使用训练样本就可以有效而准确的确定模型的复杂度。
线性回归模型是一组输入变量x的基函数的线性组合,在数学上其形式如下:
这里ϕj(x)就是前面提到的基函数,总共的基函数的数目为M个,如果定义ϕ0(x)=1的话,那个上面的式子就可以简单的表示为:
则线性模型的概率表示如下:
假设参数w满足高斯分布,这是一个先验分布:
一般来说,我们称p(w)为共轭先验(conjugate prior)。这里t是x对应的目标输出,β−1和α−1分别对应于样本集合和w的高斯分布的方差,w是参数,
那么,线性模型的对数后验概率函数:
式子的推导过程:
这里M+1是模型的复杂度,即多项式回归的次数。那么根据贝叶斯规则:
这个叫做MAP极大后验概率(maximum posterior)。对这个式子做对数似然,去除无关项之后,可以很容易得到下面这个结果:
这里可以看出,先验概率对应的就是正则项,其正则参数为
可以假设,复杂的模型有较小的先验概率,而相对简单的模型有较大的先验概率。
贝叶斯线性回归的学习过程
根据前面关于贝叶斯估计的增量学习可以很容易得到下面这个式子,这个就是贝叶斯学习过程:在前一个训练集合Dn−1的后验概率p(θ|Dn−1)上,乘以新的测试样本点xn的似然估计,得到新的集合Dn的后验概率p(θ|Dn),这样,相当于p(θ|Dn−1)成为了p(θ|Dn)的先验概率分布:
有了上面的基础知识,这里就着重的讲下面这幅图,这个图是从RMPL第155页截取下来的,这幅图清晰的描述了贝叶斯线性回归的学习过程,下面结合这幅图,详细的说明一下贝叶斯学习过程。
首先,说一下这里的模型:
第一行:
第一行是初始状态,此时只有关于w的先验信息,即:p(θ|D0)=p(θ)=N(w|0,α−1I)。先看中间这幅图,这幅图是关于w的先验分布,由于我们假设w初始为高斯分布N(w|0,α−1I),故其图形是以(0,0)为中心的圆组成的。由于此时还没有样本点进入,所以没有关于样本的似然估计,故第一行中左边likelihood没有图。第一行右边data space的那幅图显示的是从第二幅图prior/posterior中随机抽取一些点(w0,w1),并以(w0,w1)为参数,画出来的直线,此时这些直线是随机的。
第二行:
此时有了第一个样本点x1,那么根据x1就可以得到第二行中,关于x1的似然估计,由于y=w0+w1x,似然估计的结果其实是这个式子的对偶式,即w1=1/x*y−1/x*w0。从第二行的最右边data space中的图中可以估计出,第一个样本点的坐标大概为:(0.9,0.1),所以其第一幅图中,似然估计的中心线的方程为:
近似为左边那幅图的画法。由于第二行的先验分布是第一行的后验分布,也就是第一行的中间那幅图。则,第二行的后验分布的求法就是:将第二行的第左边那幅图和第一行的中间那幅图相乘,就可以得到第二行中间那幅图。第二行最右边那幅图就是从第二行中间那幅图中随机抽取一些点(w0,w1),并以(w0,w1)为参数,画出来的直线。
第三行之后,就可以一次类推了。
上面就是贝叶斯学习过程的完整描述。
贝叶斯线性回归的优缺点
优点:
1. 贝叶斯回归对数据有自适应能力,可以重复的利用实验数据,并防止过拟合
2. 贝叶斯回归可以在估计过程中引入正则项
缺点:
1. 贝叶斯回归的学习过程开销太大