线性回归正则化 regularized linear regression
来源:互联网 发布:win10美化mac 编辑:程序博客网 时间:2024/06/05 05:00
线性回归正则化regularized linear regression
在前几篇博客中介绍了一元线性回归http://blog.csdn.net/u012328159/article/details/50994095和多元线性回归http://blog.csdn.net/u012328159/article/details/51029695等线性回归的知识,具体请参见本人其他博客。但是线性回归存在一个很重要的问题就是过拟合(overfitting)问题,所谓过拟合简单直白的说就是模型的训练误差极小,而检验误差很大。一个好的学习器不仅能够很好的拟合训练数据,而且能够对未知样本有很强的泛化能力,即低泛化误差。先来看看线性回归中的过拟合现象(自己不想画图了,直接盗用Andrew Ng大神的图吧):
图中左边的图表示的线性回归模型存在欠拟合现象(underfitting),欠拟合顾名思义就是对训练数据的拟合程度不够好,训练误差大。中间的线性回归模型是个拟合程度很好的模型。右边图表示的就是过拟合现象,能够看出它对训练数据拟合的非常好,但是预测能力很差,泛化能力很差。
因此,处理过拟合问题常用的方法有:
- 减少特征数量 主要方法有:人工的挑选重要的特征,去除不重要的特征。采用模型选择算法(在后面的博客中会介绍,在这不细说了) 但是这个方法在去除特征的同时,也去除了这部分特征所提供的信息。
- 正则化(regularization) 保留所有特征,但是减少参数的值。
线性回归正则化通过缩小参数的值,可以使多项式模型更加简单,直接举个例子吧(图片来源:ng machine learning课)
上图左边的线性回归模型显然是过拟合的,但是如果在代价函数后面添加两项和 如果想让最小,那么和的值几乎要接近0,因此,右边的多项式几乎等价于左边的,又能够得到一个正确的线性回归模型。
因此,正则化线性回归(regularized linear regression)的代价函数(cost function)为:
其中成为正则项,为正则系数。如果设置的非常大,会使 将会产生欠拟合问题。因此应该选择合适的正则系数。
我们的目标是即求得使最小的参数。因此对正则化线性回归使用梯度下降(gradient descent),为:
之所以把单独写出来,是因为我们正则化的时候,不对进行惩罚。因为 始终为正,因此 一般来说其值比1小一点点。
对于线性回归来说,除了通过梯度下降来求解参数,还可以通过正规方程(normal equation)用矩阵运算来直接求解参数。那么正则化线性回归的正规方程为:
其中,上式中的对角矩阵维度是(n+1)*(n+1)。在以前的博客讲正规方程的时候也讲过当时,不存在,但是在正则化线性回归中,若果,
是存在的。
0 0
- 线性回归正则化 regularized linear regression
- 逻辑回归正则化 regularized logistic regression
- Linear Regression 线性回归
- linear regression 线性回归
- 线性回归 Linear Regression
- Linear regression(线性回归)
- 线性回归Linear Regression
- 线性回归 linear regression
- 线性回归(Linear Regression)
- 线性回归(linear regression)
- 线性回归(Linear Regression)
- 线性回归(Linear Regression)
- 线性回归(linear regression)
- 线性回归(linear regression)
- 线性回归(Linear Regression)
- 线性回归(Linear Regression)
- Linear Regression 线性回归算法
- 3. 线性回归 Linear Regression
- C++对象模型浅析
- iOS使用NSMutableAttributedString 实现富文本(不同颜色字体、下划线等)
- 希尔排序
- openwrt支持pl2303usb转串口设备
- 笔记本安装虚拟机
- 线性回归正则化 regularized linear regression
- angularjs How to set focus on input field?
- mysql反转pojo实体类 (注解)
- Java IO文件流
- 构建之法 2
- [HDU 5029] Relief grain (树链剖分+线段树)
- 思想动态
- Failed to compile cuda_ndarray.cu: libcublas.so.7.5: cannot open shared object file
- Angularjs Controller 间通信机制