MLAPP————第七章 线性回归

 

第七章 线性回归模型

7.1 简介

线性回归模型可以说是统计和监督学习里面非常重要的一块内容了。并且当我们考虑到核方法或者说是我们改变基函数的形式(拓展),该模型也可以用来拟合非线性的关系。并且虽然在线性回归模型中我们输出的是连续的变量,但是我们可以通过一些限制条件变成能够进行分类的。下面我们就来详细的学习线性回归模型。

7.2 模型设定

如在1.4.5中提到二点那样,线性回归模型具有如下的形式:,通过用输入的非线性函数\phi(\mathbf x)替换\mathbf x,可以对非线性关系进行线性回归。所以模型就变成了:,这个就叫做基函数拓展(值得注意的是,这个模型关于变量\mathbf w仍然是线性的,所以我们还是叫它线性回归,关于这个的重要性我们下面将会详细的描述)。一个简单的拓展的例子就是:,随着d的增大,模型将会越来越复杂。当然也可以输入是多个变量的,例如考虑温度于位置信息的关系,我们可以有:,这个如下面的左图所示。如果是如下面的右图,也可以这样:

7.3 最大似然估计(最小二乘)

再统计模型中,比较常见的估计参数的方法是MLE估计,定义如下:。通常我们会假设训练样本是独立同分布的(iid),所以说这意味着log-likelyhood可以写成这样:。因为在很多的框架中我们喜欢求一个函数的最小值(凸优化理论),所以最大化log-likelyhood等价于最小化负的log-likelyhood,即NLL,即:,现在我们把线性回归的具体形式带入,那么可以得到:

其中RSS表示残差平方和,被定义为。RSS也称作平方误差和(SSE),而SSE/N称作均方误差或者MSE。也可以被写成如下的形式,其中

所以我们发现,关于变量\mathbf w的MLE其实就是最小化RSS。所以这个方法又称之为最小二乘。

7.3.1 MLE的推导

首先,我们重写NLL(\mathbf w),将常数项都忽略掉。那么就可以得到:,那么我们最终的目的就是要使得这个最小,其中\mathbf X的每一行是\mathbf x^T_i,所以有:

,同时

我们对NLL(\mathbf w)求梯度,那么可以得到:。所以根据梯度为0,所以我们有:,因此。因此我们就可以得到关于线性回归问题的最大似然估计的结果。

7.3.2 几何解释

关于这个式子其实有非常好的几何解释,下面我们就来仔细的看一看。首先我们假设数据的个数N是大于变量的个数D的,然后\mathbf X\in\mathbb R^{N\times D},那么\mathbf X的所有的列就构成了N维空间里面的一个D维子空间。我们假设\mathbf X的第j列为\tilde{\mathbf x}_j,这个和上面的{\mathbf x}_i是完全不一样的。我们现在举一个简单的例子,其中N=3,D=2:

具体如下图:

所以本质是我们想要找一个向量\hat{\mathbf y}\in\mathbb R^N,使得这个向量和\mathbf y之间的距离最短,而这个向量在这个例子中是由\mathbf X的第一列和第二列张成的空间,即:。如上图所示就是在x1和x2所组成的平面中。那么最短的是什么呢,我们很容易想到就是\hat{\mathbf y}就是\mathbf y在张成的D维空间的投影,这个在D=2的情况下是很容易想象的。所以我们有:,因此,这样,所以我们也称叫做投影矩阵。

7.3.3 凸性(convexity)

当我们讨论最小二乘时,我们注意到NLL关于参数\mathbf w的形状就好像一个碗一样,只有一个最小值。这个函数其实就叫做凸函数,这在机器学习领域是非常重要的一个概念。因为我们只要知道函数是凸的,我们就能够找到全局的最优解。

下面我们更加精确的去做定义:我们定义一个集合\mathcal S,如果对于在改集合中的任意两个元素,我们有,那么我们就称这个集合为凸集。简单来说,就是对于任意点,这两点之间的连线还在这个集合中,下图左边就是一个凸集,右边就是一个非凸的集合:

那么什么样的函数是凸函数呢,首先这个函数定义再凸集上,其次对于任何的,以及任何的,我们都有:,如果是严格的小于,那么我们就说是严格凸的。我们看下图:

左边就是一个凸函数,而且是严格凸的,右边就是一个非凸的函数。

对于一个严格凸的函数,那么我们就能够找到它的唯一的全局最优解。而如果一个函数是严格凸的,那么它的二阶导是必然大于0的,针对多个变量而言,它的汉森矩阵是正定的。再机器学习的背景下,我们所研究的函数很多都是NLL,所以我们很多时候都希望NLL是凸的,但是并不是所有情况下NLL都是凸的,这个时候我们就很难找到全局最优解,取而代之是局部的最优解。

7.4 健壮的线性回归*

将我们的噪声设为高斯的其实是比较的常见的,,其中,在这种情况下呢,最大似然就等价于最小这个残差的平方和。但是这个就会产生一个问题,就是对于异常值的处理。如下图左边:

有几个异常值在下面,那么其实由于在高斯的噪声模型下,算的是平方,这些异常值的影响是非常大的。所以模型的拟合就会出现很大的偏差。这个时候怎么办,我们需要换一种噪声模型,使得这个分布具有重尾,这样异常值的出现就显得不那么突然,这样惩罚也就会小(这里说两句,如果说一个概率极低的数据点出现了,那么惩罚肯定是很大的,如果概率极高的点出现了,那么就没有惩罚,所以这里选用重尾的分布,就是为了让这些异常值的出现的概率是让人还可以接受的,所以自然惩罚就会少,我们可以看见后面的推导)。那么什么分布是重尾的分布呢。我们选用拉普拉斯分布,,具体如下:,其实很好理解,就是原来的平方变成了取绝对值,这样NLL就是,其中,这样就很明显了,相比于平方,绝对值对于异常数据的处理要平缓的多。

但是很不幸的是,这是一个绝对值函数,不是线性的函数,不像之前的一样,这个我们不好求它的最优值。幸运的是,我们可以使用下面的分割变量技巧将NLL转换为线性目标,并受线性约束。首先我们定义(这里我觉得书上写的有问题,并且书的前后是对应不起来的):r_i \triangleq r_i^++r^-_i,并且有r_i^+\geqslant 0,r_i^-\geqslant 0。因此问题转化为:r_i^+\geqslant 0,r_i^-\geqslant 0\mathbf w^T\mathbf x_i + r_i^+-r_i^- = y_i。这个就有D+2N个未知变量,加上3N个限制。(为什么可以这么转化,首先我们来看现在这个问题,这个问题的最优解必然有r_i^+,r_i^-中有一个为0,首先假设如果最优解中如果某一个r_i^+,r_i^-都不为0,那么我们可以使这两个值减去它们中最小的那个,那么这个解仍旧是可行解,但是这个解比原来那个更优,所以最优解中肯定是有一个为0。这么一看这个问题与原问题是完全等价的)。

对于线性规划问题,其实有一个标准的形式:。在我们这个具体的例子当中,,对于线性规划问题有直接求解的包。

在拉普拉斯似然的情况下,我们可以不去最小化NLL,可以用另一个损失函数,叫做Huber loss function。具体的定义如下:

。用这个和跟直接用1范数的有什么区别呢,首先在绝对值小于一个阈值时,和二范数一样,而大于这个阈值就和1范数一样了。这个loss function 是处处可微的,所以我们就可以用更加快速的优化方法,比如梯度下降,牛顿法,这样收敛的速度就会快很多。

7.5 Ridge 回归

在机器学习领域中,过拟合是一个很严重的问题,在这一章中,我们考虑使用一种方法来缓解过拟合问题,就是加了高斯先验的MAP,为了简单起见,我们就使用高斯的似然,而不去使用健壮的似然函数。

7.5.1 基本的思想

使用MLE的时候,参数的估计过分的依赖于数据,但是如果我们的数据中加入了很多的噪声,那么就会导致拟合出来的函数非常的复杂,会有分常多的抖动,因为噪声数据是没有什么规律的,随机的,所以没有办法拟合,每个情况是非常复杂的,如下图:

左边就是MLE的结果,抖动非常明显,估计出来的参数为:

里面有一些系数是非常的大的,这就导致,如果我们的数据稍微改动一点,那么整个模型的改动也会很大,这样的系统是非常的不稳定的。

所以我们加入均值为0的高斯先验:是控制先验的强度的,为的就是限制参数的大小,使得估计出来的函数更加的光滑和稳定。那么这样我们就可以得到相应的MAP估计问题:,这个问题就等价于最下化:,其中,因此最终的结果就是:。这个结果是很容易推导的。根据前面7.11,7.16很容易就可以得到。

这个就叫做ridge regression。其实简单点说就是加了高斯先验先验,从优化的角度,也就等价于加了正则项,通过这个来限制数据的大小,从而实现去减少过拟合带来的影响。但是这个正则化参数,或者说先验的强度不能太大,否则就会出现欠拟合的状态。所以从概率论的角度,正则项其实是与先验对应起来的。

7.5.2 数值稳定计算*

我们在使用ridge回归的时候,需要计算这个矩阵的逆,虽然相比于MLE的直接求这个的逆(特别是N<D的时候,这个矩阵是不可逆的),其实是数值计算上是更好的。因为这个条件数要更小一点,求逆运算也更加的简单,至少如果\lambda很大的话肯定是这样的。

但是矩阵求逆运算在数值运算中最好是避免的,因为这个很容易数值不稳定的现象(事实上,如果你在matlab中输入,系统会显示警告)。那么接下来我们就要提供一个更加健壮的数值实验的方法来解决这个模型。

首先我们假设先验为:。其中\boldsymbol\Lambda是精度矩阵,在ridge回归中就是。为了避免有w_0的出现,我们需要根据练习7.5把数据中心话。其实为了避免w_0,我们可以在数据\mathbf x的最前面加一项1,然后\mathbf w的前面加一项w_0,这样也是可以把问题变成没有w_0的情况。或者是使用将数据中心化。下面是对练习7.5的解释说明

首先,让我们用先前的一些“虚拟数据”来扩充原始数据(这一步操作有点启发式,但是后面的解释会让你明白):,其中,这个叫做Cholesky decomposition(我也是第一次见,Cholesky 分解是把一个对称正定的矩阵表示成一个下三角矩阵L和其转置的乘积的分解。它要求矩阵的所有特征值必须大于零,故分解的下三角的对角元也是大于零的。),经过这个之后,我们可以得到\tilde{\mathbf X}\in\mathbb R^{(N+D)\times D},额外的那些行是由先验构成的伪数据。我们发现由新的这样的数据对应的NLL和原来的数据加了惩罚项是一样的,即:

这样新的构成的数据的MLE和原来数据的在高斯先验下的MAP是一样的,即:。那么经过QR分解:,其中\mathbf Q是列正价的矩阵即\mathbf Q^T\mathbf Q=\mathbf I\mathbf R是一个上三角的矩阵(QR分解是矩阵分析里面的知识)

在这里用的是结论a,\mathbf Q是一个列正交的矩阵,另外非方阵的上三角阵有两种形式,分别是,其中R是方阵形式的上三角矩阵,当然对于a而言是方阵,具体的QR证明太数学化了,就不证明了。所以经过QR分解之后,我们可以得到:

,因此我们有:。而这个问题就转化为了关于一个上三角矩阵的求逆。因为这个是一个上三角矩阵,所以相比而言,这个求逆操作是更容易的。具体的关于上三角矩阵求逆的一些东西在下面网站上有更详细的说明:https://math.stackexchange.com/questions/1003801/inverse-of-an-invertible-upper-triangular-matrix-of-order-3

如果D\gg N,那么我们可以先使用奇异值分解,即,其中奇异值分解相关知识可以自行谷歌。那么我们的式子就可以简化为:,其中\mathbf Z = \mathbf {US}。证明过程如下(应该有简单的方法,但是我不会):

这样,原来是求D维的逆变成了求N维的逆,大大减少了计算复杂度。

7.5.3 与PCA(主成分分析法)的关系

在这一小节中,我们会讲到就是ridge回归和PCA的关系,PCA主要会在12.2讲到。通过这个,我们能够更深入的了解到为什么ridge回归会work的很好。这一块由于主成分没讲到,我说一下重点的思想。

首先关于先前的推导我们换一种表达方式。同样有是奇异值分解,与7.5.2一样的,那么我们就会得到:,进一步的,我们可以得到y的估计值:。其中,而\sigma_j就是奇异值。因此我们有。而在最小二乘方法中,我们有:。这两者的区别在于前者由于\lambda的存在,对于不同的方向的分量是有一个权重的,后者则没有。我们定义一个叫做模型自由度的量,当\lambda很大时,那么自由度就是0,也就是几乎没有一个分量起作用,而\lambda为0时,就是最小二乘的方法,每一个分量起相同的作用。而这一点和PCA很像。PCA是对数据进行特征值分解,取前K个奇异值很大的分量,剩下的就扔掉,利用这个也可以做回归,叫做主成分回归。但是这个没有ridge好,因为ridge是一个软的方法,对于奇异值很小的量并不是完全丢掉,而是给一个比较小的权重,而PCA则是完全丢掉这一块的信息,所以往往ridge回归的效果更好。

7.5.4 正则化对于大数据的影响

正则化是最常见的避免过度拟合的方法。然而,另一种并不总是可用的有效方法是使用大量数据。很明显,我们拥有的训练数据越多,我们就能学得越好。因此,我们期望随着N的增加,测试集的误差会降低到一个平稳的水平。

看上面的四幅图,这是关于多项式拟合的一个例子,我们看到真实的模型是2次的,如果我们用1次的模型去拟合,那么无论数据怎么多都是没用的,会欠拟合。但是看第二幅图,这个用2次的去拟合,一开始就很好,随着数据增加到30就很好了。如果用10次去拟合,那么就需要更多的数据才能平稳,同样如果是25次的化,数据量到了200都还不行,随着数据越来越大,还是会平稳的。

这一块,总的来说就是在具有大量数据的问题背景下,往往有些简单的模型也能工作的很好,但是我们还是要学习一些复杂的模型,因为在大部分的情况下,我们都是不能够获得大量的数据的。

7.6 贝叶斯线性回归

尽管ridge回归是一个进行点估计的非常好的方法,但是有时候我们需要计算关于\mathbf w\sigma^2的后验分布。为了简单起见,首先我们考虑的是假设\sigma^2是已知的,那么我们就关注于p(\mathbf w|\mathcal D,\sigma^2),其实在前面的估计\mathbf w中,我们都是假设\sigma^2是已知的。在模块7.6.3我们考虑一个更加普遍的模型p(\mathbf w,\sigma^2|\mathcal D)

7.6.1 计算后验

我们还是使用的是高斯模型,所以后验可以写成:,这里的这个偏移项\mu可以暂时先不考虑,因为之前也讲过这个问题,可以通过将数据中心化,然后估计出\mathbf w之后,再去估计这个偏移项。我们假设\mathbf w具有如下的先验:。那么根据公式4.125,我们很容易得到后验:

书中给了一个例子,首先给出一个先验,然后每观察一个数据,\mathbf w的分布就会改变,随着观测数目越来越多,\mathbf w就会收敛到一个比较好的状态。

7.6.2 计算后验估计

之前在ridge回归中,都是使用的点估计,这里有了后验分布的具体形式以后,我们就可以采用后验分布估计:

这个的计算同样可以由4.126得到,在计算中,这里的后验相当于4.124的先验。当然我们也可以使用点估计去计算\mathbf w,然后得到:

7.6.3 方差\sigma^2未知情况下的贝叶斯推断

接下来我们就要考虑方差未知情况下的贝叶斯推断了。

7.6.3.1 共轭先验

我们的似然函数是这样的:,根据4.6.3的结论,针对高斯分布均值和方差的联合的共轭先验是NIG(这里因为方差是\sigma^2\mathbf I_{N},对于一般的方差怎是NIW),NIG的具体形式如下:

根据先验和似然,我们可以得到后验分布为:

这个推导过程不是很难,就是硬算,匹配相关的一次项,二次项以及常数项就可以得到最终的参数。

那么边缘分布就是:,后面会给出这两个公式的具体应用的例子。

通过对于4.6.3.6的类推,后验估计分布很可能是学生分布。事实上分布具有如下的形式(这个不太会推),当我们有了新的m个测试输入\widetilde{\mathbf X},我们有:。预测的方差由两个部分组成,分别是,前者是由于测量的噪声(线性模型后面叠加的高斯噪声),后者是由于\mathbf w本身具有的不确定性导致的。

我们经常设置:,这个对应于\sigma^2的无信息的先验。对于\mathbf w我们设置:,g是任意的一个正数。这个就叫做Zellner's g-prior。这里的先验的方差是正比于而不是\mathbf I,这个确保了后验不会随着输入尺度的变化而变化。

7.6.3.2 无信息的先验

无信息先验对应于:,即,这是一个improper的先验,但是没关系,只要后验是proper的就行。当然我们也可以使用半共轭的先验,对于每一个使用无信息先验,那么,这个就对应于NIG:。相应的后验分布我们也可以得到:

关于权重参数\mathbf w的边缘分布是:,其中是最大似然估计的结果。

7.6.3.3 一个贝叶斯和频率推断重合的例子*

这一小节比较偏就先不写了

7.6.4 线性回归的经验贝叶斯

刚才我们假设先验参数是已知的,但是有时候也有可能先验参数是未知的,但是我们知道先验参数服从的分布。这就是前面提到的多层贝叶斯。在这一章当中,我么用经验贝叶斯的方法去选择合适的超参数,在这里就是\boldsymbol\eta

书中举了一个例子,主要表明就是通过CV选取的参数和通过边缘似然选取的参数,其实是一样的。

下面我们来看书中给出的一个式子:

 

上面是求边缘似然(关于模型的),然后选区合适的模型,下面是用点估计的方法带入进去,然后进行模型选择。上面的方法更加符合贝叶斯的观念,下面的方法计算更加的简单。

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值