PRML学习笔记-线性回归 Linear Regression


例子:多项式曲线拟合

   机器学习的目标是:假设我们观察到一个实值输入变量x,我们想使用这个观察来预测实值目标变量t的值。那么我们怎么得到目标变量的值呢?

   现在假设给定一个训练集。这个训练集由 x⃗  的N次观测组成,写作 x⃗ (x1,...,xN)T ,对应的 t⃗  的观测值,记作 t⃗ (t1,...,tN)T 。怎么理解这个训练集 (x⃗  t⃗  ),可以举一个例子来说明,假设房子的价格与面积是成正比关系的,简单的假设它们之间的关系为 t=kx (这只是为了说明简单举的一个例子请不要当真)那么我们现在就可以采集一系列已知的房子的面积和价格从而利用这些数据来求解k,那么这里的房子的面积就是上面的输入变量x,价格就是上面的t值。图1.2展示了由N = 10个数据点组成的图像。
这里写图片描述
图 1.2: 由N = 10个数据点组成的训练集的图像,用蓝色圆圈标记。每个数据点由输入变量x的观测以及 对应的目标变量t组成。绿色曲线给出了用来生成数据的sin(2πx)函数(之所以生成的点不全在绿色的曲线上面,是因为生成数据的时候本身就存在一定的噪音的干扰)。我们的目标是对于某些新的x值, 预测t的值,而无需知道绿色曲线。

   由于我们并不知道图中的绿色的曲线,而仅仅有图中的蓝色的一些离散的点,那么我们的目标是尽可能的找出一条曲线来拟合这些蓝色的点,观察这些点我们可以猜测曲线具有下面的多项式曲线一些关系(当然你也可以猜测具有一些其它的关系,这里只是为了说明的简单)

y(x,w⃗ )=w0+w1x+w2x2+...+wMxM=j=0mwjxj

    其中M是多项式的阶数, xj 表示x的j次幂。多项式系数 w0,...,wM 整体记作向量 w⃗  。 注意,虽然多项式函数y(x, w⃗  )是x的一个非线性函数,但是它是系数 w⃗  的一个线性函数。多项式函数的这种关于未知参数满足线性关系的函数被叫做线性模型。

  那么现在的问题就是如何求解适当的 w⃗  ,能使所有的训练集合上的点拟合到我所求得的曲线能有比较好的效果,这里采用最小误差函数的方法来实现。误差函数衡量了对于任意给定的 w⃗  值,函数y(x, w⃗  )与训练集数据的差别(也就是说我们所求的结果,与已知的结果之间的差别)。一个简单的应用并且广泛使用的误差函数是每个数据点 xn 的预测值 y( xn , w⃗  )与目标值 tn 的平方和。

E(w⃗ )=12n=1N{y(xn,w⃗ )tn}2

其中,因子 12 是为了后续运算方便而加入的。当且仅当函数y(x, w)对所有的训练数据点均做出正确预测时,误差函数为零。平方和误差函数的几何表示见图1.3。
这里写图片描述
图 1.3: 误差函数E( w⃗  )对应于每个数据点与函数y(x, w⃗  )之间位移(绿色垂直线)的平方和(的一半)。

我们剩下来需要做的就是优化目标函数min E( w⃗  ),也就是找到 w⃗  使得 w⃗  = argw⃗  min E( w⃗  )
为了方便计算我们设

j=0mwjxj=w⃗ TΦ(x⃗ )

其中 Φ(x⃗ ) ={ 1,x,x2,...,xM }
Ew⃗ w⃗ =n=1N(tnw⃗ TΦ(x⃗ ))Φ(x)

令导数为0,得到
w⃗ =(Φ(x)TΦ(x))1Φ(x)Tt⃗ 

  为了求解上面的 t⃗  现在我们还需要做的一步工作是确定M也就是阶数的取值,很明显不同的阶数取得的结果是不同的,结果可以看下图
这里写图片描述
图 1.4: 用红色曲线表示,不同阶数的多项式曲线拟合图1.2中的数据集。

图中可以看到上边的两幅图拟合的效果并不好,而当M=9的时候拟合的情况又太好了(这里要说明一下,我们最多也就能取到M=9,因为我们只有10个数据,最多也就可以求10个未知数),你可能会说这难道不好吗?这样确实不好,这样会出现一种情况叫做过拟合,什么是过拟合?过拟合时指在训练集上表现的比较好,而在测试集上面表现的效果很差。什么又是测试集?测试集是指训练的时候没有使用的那部分数据集,一般我们会把的到的已知的数据分为两个部分,一个是训练集,一个测试集,训练集用来训练我们的到的模型,训练集来观察我们训练的模型到底好不好。下图是M取不同的值对应的测试误差与训练误差的图形。

这里写图片描述

图中我们可以看到当M<3的时候训练集的测试误差与训练误差都很大,M=3-8的时候,训练误差与测试误差相对来说都比较小,当M=9的时候训练误差为0,而测试误差非常大。

现在这里给了我们一个选择比较合适的M的一个方法,就是作出测试误差与训练误差的折线图,然后根据折线图选择一个比较合适的M值,从而求出对应的 w⃗  。你可能会觉得这种求解 w⃗  比较麻烦,有没有简单一点的呢?答案是有,我们可以增加输入数据集来求解模型。具体的做法就是,令M=9,但是我增加许多的输入数据集。如下图就是增加数据集以后得到的拟合曲线图形
这里写图片描述

图 1.6: 使用M = 9的多项式对M = 15个数据点(左图)和N = 100个数据点(右图)通过最小化平方和误差函数的方法得到的解。我们看到增大输入数据集的规模会减小过拟合问题。

但是现实生活中我们可能得不到许多的数据,同时使用比较小的M的时候限制了模型的灵活性。为了解决上面两个限制带来的约束,我们可以采用正则化的方法。这种技术涉及到给误差函数 E(w⃗ ) 增加一个惩罚项,使得系数 w⃗  不会达到很大的值。这种惩罚项最简单的形式采用所有系数的平方和的形式(这也叫做L2范数惩罚项,当然也有其它形式的惩罚项比如L1范数、L0范数等)。这推导出了误差函数的修改后的形式:

E(w⃗ )=12n=1N{y(xn,w⃗ )tn}2+λ2||w⃗ ||2

这里面的 λ 是一个超参数需要我们自己调节,目前好像没有特别好的指导性方法来选择这个超参数,仅仅通过启发式方法来选择(说白了就是靠经验),加入了这个正则化项以后会带来哪些变化呢?请看下图
这里写图片描述

图 1.7: 使用正则化的误差函数 E(w⃗ ) ,用M = 9的多项式拟合图1.2中的数据集。其中正则化参数λ选择 了两个值,分别对应于ln λ = −18和ln λ = 0。

从图中可以看到即使没有增加数据,也没有使用较小的M有图我们依然得到了一个比较不错的模型来拟合原始的曲线。为什么正则化会有这样的效果这设计到了一个权重衰减的概念。什么意思呢?请看下图在没有添加正则化化以及数据的情况下当M取不同值的时候的权重的取值
这里写图片描述

表 1.1: 不同阶数的多项式的系数 w⃗  的值。观察随着多项式阶数的增加,系数的大小是如何剧烈增大的。

当加入了正则化项以后的权重系数取值如下:
这里写图片描述

表 1.2: 不同的正则化参数λ下,M = 9的多项式的系数 w⃗  的值。注意,ln λ = −∞对应于没有正则化的模 型,即图1.4右下角的模型。我们看到,随着λ的增大,系数的大小逐渐变小

为什么 w⃗  取较大的值的时候就过拟合了,而取较小的值的时候就能防止过拟合呢?我认为(个人理解不知道正不正确)当 w⃗  取的值比较大的时候,曲线表现的形式是非常陡峭的,也就是拟合出来的曲线斜率非常的大就如图1.4的右下角的图形。而当 w⃗  取的值比较小的时候曲线的斜率就趋于比较平缓,就如图1.7的左图。
现在来说明一下为什么加入正则化项以后会有权重的衰减。可以看下边的图
这里写图片描述

图 3.4: 未正则化的误差函数的轮廓线(蓝色)以及黄色的正则化限制区域。左图是使用L2范数惩罚项限制区域,右图是使用L1范数惩罚项的套索正则化项的限制区域。

首先解释一下图中的蓝色一圈圈的东西是什么,其实它是一个三维图的俯视图形,比如看下面的图形
这里写图片描述
其实就是我们从右边的图形从上向下看就得到了左边的图形。圈与圈之间的间隔代表陡峭的程度,间隔越小越陡峭,反之越平缓。中心点代表的是取极大值或极小值。让我们回到图3.4可以看到当不加正则化项的时候图形就是一圈圈蓝色的园,而最优的解就是园的中心。当加了正则化项的时候有就是图中的黄色的圆,那么解就必须同时满足这两个限制,也就是解的取值必须在这两个图形相交的地方,可以看到最优的解就为图中的 w⃗  ,而明显的 w⃗  无论横轴还是纵轴取得的值都要比原先的最优点要小,这样就使权重衰减了。
最后说明一点,我们上面的基向量的取值为 Φ(x⃗ ) ={ 1,x,x2,...,xM },当然也可以把中括号里面的东西换成其它的比如sigmoid基函数,傅立叶基函数等等。具体在实验的过程中看你的选择。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值