您的位置:首页 > 其它

线性回归的欠拟合、过拟合问题总结

2017-03-09 19:46 316 查看
针对最近在《机器学习实战》的线性回归中遇到的问题,做一个学习小结。
一、欠拟合
局部加权线性回归(LWLR):
1、在线性回归发生欠拟合的时候,在估计中引入一些偏差,降低预测的均方误差。
2、我们给待预测的点附近的点一定的权重,而使得远离它的点权重较低
3、非参数学习方法:
(1)有参数学习方法是啥?eg:LR。在训练完所有数据之后得到一系列训练参数,然后根据训练参数来预测样本的值这时不再依赖之前的训练数据,参数是确定的。
(2)非参数学习方法:eg:LWLR。在预测新样本值时每次都会重新训练新的参数,也就是每次预测新的样本值都会依赖训练数据集合,所以每次的参数是不确定的。
4、局部加权线性回归的缺点:
对每个点做预测时都必须使用整个数据集,因此当训练容量过大时,非参数学习算法需要占用更多的存储容量,计算速度较慢。
 
个人的理解:
1、局部加权线性回归,对于样本的预测,其实就是对每个点的预测(或者说拟合),样本点有m个点,则预测出来的也是m个点,而这m个点不在一条直线上,而是离散的点,因此最终拟合的'线性'(实为非线性)曲线则是m个点的(m-1条线段)组成的估计曲线。
2、在对测试集上的样本点进行预测时,需要依赖于训练集数据集合,因为它需要计算该点与所有点的'距离',来给出不同的权值。
3、而对训练集进行拟合时,也是同上述相同的过程,重复了m遍(假设m个样本),得到m个结果。
4、简单回顾一下局部加权线性回归来拟合一下模型过程:           
(1)用高斯核函数计算出第i个样本处,其它所有样本点的权重W 
         
(2)用权重w对第i个样本作加权线性回归,得到回归方程,即拟合的直线方程 
         
(3)用刚才得到的经验回归直线计算出xi处的估计值y^i 
         

4000
(4)重复一至三步,得到每个样本点的估计值
 
二、过拟合

1、岭回归(在回归分析中也被称作为'正则化',L2正则化):
  从《机器学习实战》中可以看到,如果特征比样本点还多(n
> m)时,也就是说输入数据的矩阵X不是满秩矩阵(满秩矩阵是求逆矩阵的充分必要条件,一般的回归问题中X通常是列满秩,而当n > m时,不可能是列满秩。当不能满足列满秩时,也就不能对(X^T * X)^ I求逆。)
通俗的理解上来说,当n > m时,没有过多的数据(训练集)去约束变量,因此容易出现过拟合的现象。从这个意义上讲岭回归的出现是为了解决过拟合的现象。

那么在线性回归的拟合过程中,局部加权线性回归是为了解决欠拟合,而岭回归则是为了解决过拟合。

2、正则化的分类:

正则化分为L0正则、L1正则(eg:lasso)、L2正则(eg:岭回归)

(1)L0正则:
      L0正则化对应于0向量范数,向量的0范数是指向量中非零元素的个数,L0正则化的值是模型中非零参数的个数,L0正则化可以实现模型参数的的稀疏化。模型参数稀疏化使得模型能自动的选择比较重要的特征属性进行y(i)的预测,去掉没用的信息项。但是由于LO正则化是个NP问题,很难求解,这才引出L1正则化和L2正则化。

(2)L1正则:
L1范数是指向量各元素绝对值之和,美称为'稀疏规则算子'。L1正则化中通过稀疏模型参数来降低模型复杂度,可以从两个方面做解读:
1、L1正则是L0正则'最优凸近似',而L0正则化是选择比较重要的特征,而丢掉没有信息的项;
      2、参考L1正则和L2正则的区别。
(3)L2正则:
1、《机器学习实战》一书中用缩减系数来描述L2正则,L2正则通过减少模型参数(w)来控制过拟合的效果,在损失函数中加入lambda * (系数平方和)。
NG的课程中提到,在正则化里我们要做的事情,就是减小我们的代价函数所有的参数值(w)以达到能够减小不重要的参数,并且让代价函数最优化的函数来选择这些惩罚的程度,因为我们并不知道是哪一个或哪几个要去缩小。因此,我们需要修改写代价函数,当我们添加一个额外的正则化项的时候,我们收缩了每个参数。
那么为什么减小了参数就能避免过拟合呢?实际上,这些参数的值越小,通常对应于越光滑的函数,也就是更加简单的函数。因此就不易发生过拟合的问题,从而提高模型的返回能力。
2、现在讨论lambda取值的作用:要做的就是控制在两个不同的目标中的平衡关系。第一个目标就是我们想要训练,使假设更好地拟合训练数据。我们希望假设能够很好的适应训练集。而第二个目标是我们想要保持参数值较小。而lambda这个正则化参数需要控制的是这两者之间的平衡,即平衡拟合训练的目标和保持参数值较小的目标。从而来保持假设的形式相对简单,来避免过度的拟合。
3、接着讨论L2正则化中lambda的取值的影响,首先明确方差指的是模型之间的差异(也即用不同的样本集针对同一个模型训练),而偏差指的是模型预测值与数据之间的差距。
根据岭迹图的观察,可以发现当lambda在很小的时候,也即正则化项不起较大作用的时候,参数和线性回归相同。而当lambda非常大的时候,为了最小化代价函数,则参数值都趋向0。这提示我们需要在这个变化过程中某处找到使得预测的结果最好的lambda的值。
对应着看,当lambda很小的时候,模型的复杂度还是较高的,这个时候是低偏差高方差。而当lambda很大的时候,模型的复杂度降低,过拟合的现象缓解,此时是高方差低偏差。

(4)L1正则化和L2正则化的差别:

1、直观上的解释。想象y1 = a|x|和 y2 = ax^2,对这两个函数求导的时候,在相同的a的情况下,y1会比y2在趋向于0的时候下降的更快,因此会更快的下降到0。

2、通俗的解释是:L1会趋向于产生少量的特征,而其他的特征都是0;而L2会选择更多的特征,这些特征都会接近于0。Lasso在特征选择时候非常有用,而Ridge就只是一种规则化而已。
 
代码部分:由于作者是参考《机器学习实战》一书进行学习练习,所以代码参考《机器学习实战》线性回归部分。
参考文献:http://blog.csdn.net/zouxy09/article/details/24971995 http://www.cnblogs.com/jianxinzhou/p/4083921.html
                           
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐