偏差与方差理论

前言
本次学习内容为优化基础模型 。
在线性回归中,我们总可以找到一条线来连接所有的训练集数据,如下图:
但往往通过上面这种方式得到的曲线不能很好地反馈在测试集上,原因是产生过拟合等等 。
接下来让我们举例说明 。
一、训练均方误差与测试均方误差
均方误差(mean- error, MSE)是反映估计量与被估计量之间差异程度的一种度量:
M S E = 1 N ∑ i = 1 N ( y i ? f ^ ( x i ) ) 2 MSE = \frac{1}{N}\sum_{i=1}^{N}(y_{i}-\hat{f}(x_{i}))^2 MSE=N1?i=1∑N?(yi??f^?(xi?))2
如果通过最小化测试集的MSE来生成预测模型,得到的结果可能是如下这种:
如右图所示,模型在训练误差很小,但是测试均方误差很大 。我们称这种情况叫模型的过拟合 。
接下来让我们尝试解决这些问题 。
二、偏差-方差的权衡
泛化误差可以分为三个部分,偏差(bias) , 方差() 和 噪声(noise) 。
其中可控的是偏差(bias), 方差() 。
方差:,指模型预测值的离散程度,比如两条数量等特征几乎相同的样本,但是预测值可能差很多;
偏差: Bias,指的是模型预测值偏离真实值的程度;
可以这样理解上图:
一般而言,增加模型的复杂度,会增加模型的方差,但是会减少模型的偏差,我们要找到一个方差—偏差的权衡,使得测试均方误差最小,如下图的虚线:
三、特征提取
我们要找到一个方差—偏差的权衡,使得测试均方误差最小,但是实际上我们很难对实际的测试误差做精确的计算,因此我们要对测试误差进行估计 。
估计的方式有两种:训练误差修正与交叉验证 。

偏差与方差理论

文章插图
1、训练误差修正
训练误差修正是对测试误差的简介估计,思路在于:
模型越复杂,训练误差越小,测试误差先减后增 。先构造一个特征较多的模型使其过拟合,此时训练误差很小而测试误差很大,那这时我们加入关于特征个数的 惩罚 。因此,当我们的训练误差随着特征个数的增加而减少时,惩罚项因为特征数量的增加而增大,抑制了训练误差随着特征个数的增加而无休止地减小 。
C p = 1 N ( R S S + 2 σ ^ 2 ) R S S = ∑ i = 1 N ( y i ? f ^ ( x i ) ) 2 C_{p} = \frac{1}{N}(RSS + 2\hat{\sigma}^2)\\ RSS = \sum_{i=1}^{N}(y_{i}-\hat{f}(x_i) )^2 Cp?=N1?(RSS+2σ^2)RSS=i=1∑N?(yi??f^?(xi?))2
d为模型特征个数 σ ^ 2 \hat{\sigma}^2 σ^2为模型预测误差的方差的估计值,即残差的方差 。
AIC赤池信息量准则:
A I C = 1 d σ ^ 2 ( R S S + 2 d σ ^ 2 ) AIC = \frac{1}{d\hat{\sigma }^2} (RSS+2d\hat{\sigma }^2) AIC=dσ^21?(RSS+2dσ^2)
BIC贝叶斯信息量准则:
B I C = 1 n ( R S S + l o g ( n ) d σ ^ 2 ) BIC = \frac{1}{n} (RSS+log(n)d\hat{\sigma }^2) BIC=n1?(RSS+log(n)dσ^2)
2、交叉验证
交叉验证则是对测试误差的直接估计 。
1)Leave-one-out cross-
只用一个数据作为测试集,其他的数据都作为训练集,并将此步骤重复N次(N为数据集的数据数量) 。
如上图所示,假设我们现在有n个数据组成的数据集,那么LOOCV的方法就是每次取出一个数据作为测试集的唯一元素,而其他n-1个数据都作为训练集用于训练模型和调参 。结果就是我们最终训练了n个模型,每次都能得到一个MSE 。而计算最终test MSE则就是将这n个MSE取平均:
C V ( n ) = 1 n ∑ i = 1 n M S E i CV_{(n)} = \frac{1}{n} \sum_{i=1}^{n}MSE_{i} CV(n)?=n1?i=1∑n?MSEi?
2)K-fold Cross
另外一种折中的办法叫做K折交叉验证,每次的测试集将不再只包含一个数据,而是多个,具体数目将根据K的选取决定: