一、常规线性回归及其求解方法

贝叶斯线性回归 python 贝叶斯线性回归spss_基函数

贝叶斯线性回归 python 贝叶斯线性回归spss_基函数_02

核心提炼

1、普通最小二乘法(OLS)的解析解可以用 Gaussian 分布以及极大似然估计解释;

2、Ridge 回归可以用 Gaussian 分布和最大后验估计解释 ;

3、LASSO 回归可以用 Laplace 分布和最大后验估计解释。

 

 


二、贝叶斯线性回归

定义

贝叶斯线性回归(Bayesian linear regression)是使用统计学中贝叶斯推断(Bayesian inference)方法求解的线性回归模型 。贝叶斯线性回归将线性模型的参数视为随机变量,并通过模型参数(权重系数)的先验(prior)计算其后验(posterior)。

模型

给定相互

贝叶斯线性回归 python 贝叶斯线性回归spss_基函数_03

组学习样本

, 

 ,贝叶斯线性回归使用如下的多元线性回归模型 

:

这里 为权重系数,  为残差。由于学习样本间相互独立,因此  为独立同分布(independent and identically distributed, iid)。贝叶斯线性回归假设残差服从高斯分布,其方差服从逆Gamma分布(Inverse-Gamma distribution):

正态分布的均值  和逆Gamma分布的系数 

 要求预先指定。通常设定均值 

 ,对应白噪声(white noise)残差,因此贝叶斯线性回归的模型本身至少包含2个超参数(hyperparameter)。以上的贝叶斯线性回归也可推广至广义线性模型(Generalized Linear Model, GLM),得到贝叶斯广义线性模型(Bayesian GLM) 。

求解方法

根据线性模型的定义,权重系数 与观测数据  相互独立,也与残差的方差 相互独立,由贝叶斯定理(Bayes' theorem)可推出,贝叶斯线性回归中权重系数的后验有如下表示 :

式中

 

 称为似然(likelihood),由线性回归模型完全决定,以模型残差服从iid的0均值正态分布为例,这里似然也服从iid的正态分布 [2]  :

 

(*)式中的

 是  的边缘似然(marginal likelihood),在贝叶斯推断中也被称为模型证据(model evidence),仅与观测数据有关,与权重系数相互独立。求解  式要求预先给定权重系数的先验 

 ,即一个连续概率分布(continuous probability distribution),通常的选择为0均值的正态分布:

式中  为预先给定的超参数。

可用于求解贝叶斯线性回归的方法有三类,即极大后验估计(Maximum A Posteriori estimation, MAP)、共轭先验(conjugate prior)求解和数值方法,前两者要求似然或先验满足特定条件,数值方法没有特定要求,可以通过迭代逼近任意形式的后验分布。

 

那为什么还要使用贝叶斯线性回归?

如果要将极大似然估计应用到线性回归模型中,如普通的最小二乘法模型,模型的复杂度会被两个因素所控制:基函数的数目(w 的维数)样本的数目。尽管为对数极大似然估计加上一个正则项(或者是参数的先验分布),在一定程度上可以限制模型的复杂度,防止过拟合,但基函数的选择对模型的性能仍然起着决定性的作用。


关于参数估计

    在很多机器学习或数据挖掘问题中,我们所面对的只有数据,但数据中潜在的概率密度函数是不知道的,概率密度分布需要我们从数据中估计出来。想要确定数据对应的概率分布,就需要确定两个东西:概率密度函数的形式概率密度函数的参数。

    有时可能知道的是概率密度函数的形式(高斯、瑞利等等),但是不知道具体的参数,例如均值或者方差;还有的时候可能不知道概率密度的类型,但是知道一些估计的参数,比如均值和方差。

关于上面提到的需要确定的两个东西:概率密度函数的形式参数,至少在机器学习的教课书上,我所看到的情况都是:给了一堆数据,然后假设其概率密度函数的形式为高斯分布,或者是混合高斯分布,那么,剩下的事情就是对高斯分布的参数,μ 和 σ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} 是样本集合。假设不同的样本之间具有统计独立性,那么:

贝叶斯线性回归 python 贝叶斯线性回归spss_线性回归_04

注意:这里的p(xk;θ) 本来的写法是 p(x|ωi;θi) , 是一个类条件概率密度函数,只是因为这里是一个统一的模型,所以可以将wi省略。

需要重申一下,想要得到上面这个公式,是做了几个基本的假设的,第一:假设M个类别的数据子集的概率密度函数形式一样,只是参数的取值不同;第二:假设类别i中的数据和类别j中的数据是相互独立抽样的,即类别j的参数仅仅根据类别j的数据就可以估计出来,类别i的数据并不能影响类别j的参数估计,反之亦然;第三:每个类别内的样本之间具有统计独立性,即每个类别内的样本之间是独立同分布 (iid) 的。

此时,就可以使用最大似然估计(Maximum Likelihood,ML)来估计参数θ了:

贝叶斯线性回归 python 贝叶斯线性回归spss_数据_05

为了得到最大值,必须满足的必要条件是,似然函数对θ的梯度必须为0,即:

贝叶斯线性回归 python 贝叶斯线性回归spss_基函数_06

一般取对数形式:

贝叶斯线性回归 python 贝叶斯线性回归spss_数据_07

需要注意:极大似然估计对应于似然函数的峰值

极大似然函数有两个非常重要的性质:渐进无偏渐进一致性,有了这两个性质,使得极大似然估计成为了非常简单而且实用的参数估计方法。这里假设θ0是密度函数p(x; θ)中未知参数的准确值。

渐进无偏

极大似然估计是渐进无偏的,即:

贝叶斯线性回归 python 贝叶斯线性回归spss_基函数_08

也就是说,这里认为估计值本身是一个随机变量(因为不同的样本集合X会得到不同的),那么其均值就是未知参数的真实值,这就是渐进无偏。

渐进一致

极大似然估计是渐进一致的,即:

贝叶斯线性回归 python 贝叶斯线性回归spss_数据_09

这个公司还可以表示为:

贝叶斯线性回归 python 贝叶斯线性回归spss_线性回归_10

对于一个估计器而言,一致性是非常重要的,因为存在满足无偏性,但是不满足一致性的情况,比如,在 θ0周围震荡。如果不满足一致性,那么就会出现很大的方差。

注意:以上两个性质,都是在渐进的前提下(N→∞)才能讨论的,即只有N足够大时,上面两个性质才能成立

贝叶斯估计

    先验概率,后验概率

    先验概率(prior)与后验概率(posterior)简称为先验后验。一个先一个后,我们肯定是针对同一事物才有先后之分,如果针对两个事物,先后就没有意义了。这个共同的对象,就是我们的参数θ。后验概率是指掌握了一定量的数据后我们的参数分布是怎么样的,表位为p(θ|D);那先验就是在没有掌握数据后我们的参数怎么分布。

    贝叶斯估计最重要的就是那个先验的获得。虽然这次的一组数据,比如说仍三次硬币产生的序列(110)这样分布的,但是其实我们根据我们的历史来看,一枚硬币正反面其实很有可能按照均匀分布来的,只不过试验的次数太少了,所以要将以往的经验考虑在里面。先验很过时候完全是假设,然后去验证有的数据是否吻合先验猜想,所以这里的猜想很重要。

    模型推导

    根据条件概率公式有:

贝叶斯线性回归 python 贝叶斯线性回归spss_基函数_11

    此时,这里面处理分母可以看作是一个归一化因子外,其余均是概率分布的函数。也就是说,无法再像极大似然估计那样将先验概率(p(θ))看作一个常量。这时候就需要考虑用到我们的先验概率了。我们这次把分母展开,根据全概率公式:

贝叶斯线性回归 python 贝叶斯线性回归spss_基函数_12

    

    我们可以得到分布的展示式为:

贝叶斯线性回归 python 贝叶斯线性回归spss_线性回归_13

    当θ已知的情况下,p(D|θ)就是极大似然估计的联合密度函数,即

贝叶斯线性回归 python 贝叶斯线性回归spss_数据_14

    将上述这两个公式代入到条件概率公式可以得到

贝叶斯线性回归 python 贝叶斯线性回归spss_数据_15

    贝叶斯估计的增量学习

    为了明确的表示样本集合D中有n个样本,这里采用记号:Dn={x1,x2,……,xn}。根据前一个公式,在n>1的情况下有:

贝叶斯线性回归 python 贝叶斯线性回归spss_数据_16

    可以很容易得到:

贝叶斯线性回归 python 贝叶斯线性回归spss_基函数_17

    当没有观测样本时,定义:

贝叶斯线性回归 python 贝叶斯线性回归spss_贝叶斯线性回归 python_18

    为参数θ的初始估计。然后让样本集合依次进入上述公式,就可以得到一系列的概率密度函数:

贝叶斯线性回归 python 贝叶斯线性回归spss_基函数_19

    这一过程称为参数估计贝叶斯递归法,也叫贝叶斯估计的增量学习。这是一个在线学习算法,它和随机梯度下降法有很多相似之处。

    其实做到这一步,我们会发现虽然解决了问题,但是又会带来新的问题,因为在解决这一类贝叶斯估计的问题的时候,我们让参数以某种概率密度函数分布,就会导致在计算过程中不可避免的高复杂度,人们为了计算上的方便,就提出不再是把所有的后验概率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的情况下,找到数据的数学期望。即求

贝叶斯线性回归 python 贝叶斯线性回归spss_线性回归_20

    也就是我们需要求p(x|D),这该怎么办?其实这个式子比较迷惑人的点就在于,它内藏了一个参数,也就是x的分布其实与参数是有关的,但是又参数θ是服从某种概率分布的,要对参数所有可能的情况都考虑就得到了

贝叶斯线性回归 python 贝叶斯线性回归spss_基函数_21

    这一式子。

    接下来还时运用基本的条件概率公式:

贝叶斯线性回归 python 贝叶斯线性回归spss_数据_22

    对这一句公式的解释就是,x和θ在已知数据D的条件下的概率,等于x在已知θ和数据D的条件下的概率乘θ在已知数据D的条件下的概率。为什么我要费这个心来说这个,一方面是我为了方便大家理解这个多维条件概率符号的含义,另一方面更重要的是右边式子的第一项p(x|θ,D)可这样

贝叶斯线性回归 python 贝叶斯线性回归spss_基函数_23

    化简。为什么?因为我们从数据里面得到的东西对一个新的数据来说,其实只是那些参数,所以对x而言,θ就是D,两者是同一条件。 
那么上式就变成了

贝叶斯线性回归 python 贝叶斯线性回归spss_基函数_24

    p(x|θ)是已知的(例如在我们的问题里面可以是p(1|ρ)或者p(0|ρ));p(θ|D)也是已知的,我们在贝叶斯估计中已经求出来了。所以这个式子完全就是一个只含有x的函数,带入期望公式完全可以计算出来数学期望。但是!这里面我忽略了一个事实,这里面存在什么困难呢?下面会帮助大家分析

贝叶斯估计中的一个困难

这里面的困难是参数是随机分布的,我们需要考虑到每一个可能的参数情况然后积分,这种数学上的简单形式,其实想要计算出来需要大量的运算。那我们不妨退而求其次,我找一个跟你差不多效果的后验概率,然后就只计算这个后验带入计算。那么什么样的后验概率和对所有可能的θ积分情况差不多呢?想法就是,找一个θ能够最大化后验概率,怎么才能最大化后验概率呢?

MAP算法

其实最大化后验概率还是老一套,最大化式子

贝叶斯线性回归 python 贝叶斯线性回归spss_贝叶斯线性回归 python_25

对式子进行观察,其实分母只是一个归一化的因子,并不是θ的函数。真正有效地其实就是最大化分子,于是使用:

贝叶斯线性回归 python 贝叶斯线性回归spss_线性回归_26

这其实与极大似然估计形式上很相似,但是主要区别在于运用了一个先验概率在这个极大化里面。参数都已经计算出来了,其他过程,其实还是按照极大似然来做就行了,不用再按照贝叶斯一样对所有可能的参数情况都考虑在求积分了。

这里需要说明,虽然从公式上来看MAP=ML*p(θ),但是这两种算法有本质的区别,ML将θ视为一个确定未知的值,而MAP将θ视为一个随机变量。

    在MAP中,p(θ)称为θ的先验,假设其服从均匀分布,即对于所有θ取值,p(θ)都是同一常量,则MAP和ML会得到同样的结果。当然了,如果p(θ)的方差非常的小,也就是说,p(θ)是近似均匀分布的话,MAP和ML的结果自然也会非常的相似。

基于基函数的线性回归

线性回归模型的基本特征就是,模型是参数向量ω={w0,w1,w2,...,wn}的线性函数,这极大地限制了模型的适用性。这里使用基函数(basis function)对上面的线性模型进行拓展,即:线性回归模型是一组输入变量x的非线性基函数的线性组合,在数学上其形式如下:

贝叶斯线性回归 python 贝叶斯线性回归spss_基函数_27

这里ϕj(x)就是前面提到的基函数,总共的基函数的数目为M个,如果定义ϕ0(x)=1的话,那个上面的式子就可以简单的表示为:

贝叶斯线性回归 python 贝叶斯线性回归spss_基函数_28

在"特征选择和评估"中,实际拿到手的数据,由于各种原因,往往不能直接应用到机器学习算法中,需要对原始数据做一些预处理或者是特征提取的操作,而那些从原始输入向量x中提取出来的特征, 就是这一个个的ϕj(x).

通过使用非线性的基函数,我们可以使得线性模型y(x,w)成为输入向量x的非线性函数。

下面举一些基于不同基函数的线性模型y(x,w)的例子:

  • ϕj(x)=xj

这里取M=n,那么就可以很容易的得到:

贝叶斯线性回归 python 贝叶斯线性回归spss_贝叶斯线性回归 python_29

  • ϕj(x)=xj

这里就是典型的多项式曲线拟合(Polynomial Curve Fitting),其中M是输入变量x的最高次数,同时也是模型的复杂度。多项式曲线拟合的一个缺陷就是这个模型是一个输入变量的全局函数,这使得对输入空间的一个区间的改动会影响到其他的区间,这个问题可以通过将输入空间切分成不同的区域,对不同的区域各自在各自的区域中做曲线拟合来解决,这个方法就是经典的样条函数(spline function)。

贝叶斯线性回归 python 贝叶斯线性回归spss_数据_30

  • ϕj(x)=exp{−(xμj)2/2s2}

这里μj表示的是该基函数在输入空间中的位置,参数s控制的是基函数的空间尺度,这个基函数往往会被称为高斯基函数(Gaussian basis function)。需要强调一点,这里的高斯函数并不是输入空间的概率分布,其并没有概率意义。由于每个基函数前面都有一个比例系数ωj,所以,对参数的归一化(coefficient normalization)并不是必需的。

贝叶斯线性回归 python 贝叶斯线性回归spss_基函数_31

  • ϕj(x)=σ(xμj/s)

这个基函数叫做sigmoid函数,其定义为:

贝叶斯线性回归 python 贝叶斯线性回归spss_数据_32

与这个函数拥有相同效果的一个函数叫做tach函数,其定义为:

贝叶斯线性回归 python 贝叶斯线性回归spss_基函数_33

在神经网络中,这两个基函数有着非常广泛的应用。其实从根本上来讲,神经网络的每一层,也是一些基函数的线性组合,神经网络之所以能处理非线性问题,其根本也是由于采用了合适的非线性基函数。

贝叶斯线性回归 python 贝叶斯线性回归spss_数据_34

线性回归模型的概率解释

关于线性模型可以通过其概率意义进行解释,我个人也是最信服这种解释方式。即:真实值tn,是输入xn在模型y(x,w)上加入了一个噪声产生的,其数学表达式如下:

贝叶斯线性回归 python 贝叶斯线性回归spss_数据_35

而我们一般可以定义噪声ϵ为高斯分布N(0,σ2),那么可以很容易得到,t是以y(x,w)为均值的高斯分布:

贝叶斯线性回归 python 贝叶斯线性回归spss_基函数_36

那么对于训练数据{X,t}而言,可以使用极大似然估计来计算参数wσ2:

贝叶斯线性回归 python 贝叶斯线性回归spss_贝叶斯线性回归 python_37

取对数似然估计:

贝叶斯线性回归 python 贝叶斯线性回归spss_贝叶斯线性回归 python_38

首先估计参数w,那么就可以略去和w无关的所有项。最后就是剩下下面这个式子:

贝叶斯线性回归 python 贝叶斯线性回归spss_贝叶斯线性回归 python_39

这个就是一开始使用的平方误差和(sum of the squares of the errors),这也解释为什么用平方误差和作为损失函数了,w的解在线性回归那一节中已经有说明。

在估计出wML后,再来估计参数σ2,这里取β−1=σ2,则对数似然估计就变成了:

贝叶斯线性回归 python 贝叶斯线性回归spss_线性回归_40

对其关于β求导,就可以得到:

贝叶斯线性回归 python 贝叶斯线性回归spss_贝叶斯线性回归 python_41

所以可以得到:

贝叶斯线性回归 python 贝叶斯线性回归spss_线性回归_42

现在参数wML和都已经估计出来了,那么我么就有了t关于x的概率分布模型:

贝叶斯线性回归 python 贝叶斯线性回归spss_贝叶斯线性回归 python_43

有了这个模型,对于输入x就可以很容易的得到对应的t,及其概率。



贝叶斯线性回归

    从普通最小二乘线性回归问题说起

    从更为宏观的角度看,普通的线性回归问题,从本质上来说就是以"残差平方和"为统计量的一次多项式模型拟合问题,即

    

贝叶斯线性回归 python 贝叶斯线性回归spss_基函数_44

    又称为最小二乘法。非常简单直接,甚至简单粗暴的思路,在各类工程问题得到了广泛地应用。数学上可以证明,最小二乘法的结果和均一正态误差(即每一个y的测量值yi的的分布是以"真实的"为期望,统一地误差为标准差的正态分布)情况下的极大似然拟合是一致的。在很多情况下,对于yi分布的假设往往是隐含的,不被显示指出的。

然而,当上述对于yi的正态分布性质的隐含假设不再成立时,最小二乘尽管仍然可能是对于真实结果的一个足够良好的逼近,但其可解释性将会受到显著的损害。同时,当实际情况中

yi显著偏离正态分布,而在数据分析中又强加这一假定时,很可能会发现出现显著偏离模型的野值(野值是相对于给定的yi的分布而言的,例如,如果yi服从的实际上是t分布,而强行假定它符合正态分布,就可能观察到出现概率极小的测量值,因为t分布相对于正态分布有两个很长的尾巴)。

对于这些显著偏离模型的所谓野值,我们当然可以修正统计量,使得拟合结果更为稳健(即所谓稳健拟合),然而很多情况下这只是权宜之计。

此外,对于自变量和因变量都存在弥散的情况下,普通的最小二乘线性拟合尽管能稍作修改应用在此类问题上,但这种修改的可推广性很差,难以应用到更复杂的非线性模型中。

贝叶斯线性回归模型

贝叶斯线性回归不仅可以解决极大似然估计中存在的过拟合的问题,而且,它对数据样本的利用率是100%,仅仅使用训练样本就可以有效而准确的确定模型的复杂度。

线性回归模型是一组输入变量x的基函数的线性组合,在数学上其形式如下:

贝叶斯线性回归 python 贝叶斯线性回归spss_贝叶斯线性回归 python_45

这里ϕj(x)就是前面提到的基函数,总共的基函数的数目为M个,如果定义ϕ0(x)=1的话,那个上面的式子就可以简单的表示为:

贝叶斯线性回归 python 贝叶斯线性回归spss_基函数_46

    则线性模型的概率表示如下:

贝叶斯线性回归 python 贝叶斯线性回归spss_基函数_47

    假设参数w满足高斯分布,这是一个先验分布:

贝叶斯线性回归 python 贝叶斯线性回归spss_贝叶斯线性回归 python_48

    一般来说,我们称p(w)为共轭先验(conjugate prior)。这里t是x对应的目标输出,β−1和α−1分别对应于样本集合和w的高斯分布的方差,w是参数,

那么,线性模型的对数后验概率函数:

贝叶斯线性回归 python 贝叶斯线性回归spss_数据_49

式子的推导过程:

贝叶斯线性回归 python 贝叶斯线性回归spss_基函数_50

这里M+1是模型的复杂度,即多项式回归的次数。那么根据贝叶斯规则:

贝叶斯线性回归 python 贝叶斯线性回归spss_数据_51

这个叫做MAP极大后验概率(maximum posterior)。对这个式子做对数似然,去除无关项之后,可以很容易得到下面这个结果:

贝叶斯线性回归 python 贝叶斯线性回归spss_数据_52

这里可以看出,先验概率对应的就是正则项,其正则参数为

贝叶斯线性回归 python 贝叶斯线性回归spss_基函数_53

可以假设,复杂的模型有较小的先验概率,而相对简单的模型有较大的先验概率。

贝叶斯线性回归的学习过程

根据前面关于贝叶斯估计的增量学习可以很容易得到下面这个式子,这个就是贝叶斯学习过程:在前一个训练集合Dn−1的后验概率p(θ|Dn−1)上,乘以新的测试样本点xn的似然估计,得到新的集合Dn的后验概率p(θ|Dn),这样,相当于p(θ|Dn−1)成为了p(θ|Dn)的先验概率分布:

贝叶斯线性回归 python 贝叶斯线性回归spss_线性回归_54

有了上面的基础知识,这里就着重的讲下面这幅图,这个图是从RMPL第155页截取下来的,这幅图清晰的描述了贝叶斯线性回归的学习过程,下面结合这幅图,详细的说明一下贝叶斯学习过程。

贝叶斯线性回归 python 贝叶斯线性回归spss_线性回归_55

    首先,说一下这里的模型:

贝叶斯线性回归 python 贝叶斯线性回归spss_数据_56

第一行:

第一行是初始状态,此时只有关于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),所以其第一幅图中,似然估计的中心线的方程为:

贝叶斯线性回归 python 贝叶斯线性回归spss_数据_57

近似为左边那幅图的画法。由于第二行的先验分布是第一行的后验分布,也就是第一行的中间那幅图。则,第二行的后验分布的求法就是:将第二行的第左边那幅图和第一行的中间那幅图相乘,就可以得到第二行中间那幅图。第二行最右边那幅图就是从第二行中间那幅图中随机抽取一些点(w0,w1),并以(w0,w1)为参数,画出来的直线。

第三行之后,就可以一次类推了。

上面就是贝叶斯学习过程的完整描述。

贝叶斯线性回归的优缺点

优点: 
1. 贝叶斯回归对数据有自适应能力,可以重复的利用实验数据,并防止过拟合 
2. 贝叶斯回归可以在估计过程中引入正则项 
缺点: 
1. 贝叶斯回归的学习过程开销太大