过拟合问题
什么是过拟合问题
线性回归、逻辑回归等应用到某些特定的机器学习应用时会遇到过度拟合问题
没有很好的拟合数据(图一):欠拟合undefitting或高偏差high bias
很好的拟合数据(图二):just right
过度拟合数据(图三):过拟合overfitting或高方差 high variance 在训练集表现的很好但在测试集表现很烂
过拟合可能会在变量features过多的时候出现,这时训练出的假设能很好的拟合训练集
J
(
θ
)
J(\theta)
J(θ)可能接近于0,但是不能泛化到新的数据集上
如何解决过拟合问题
有两个办法解决过拟合问题:
- 尽量减少选取变量features的数量
①人工检查变量清单,并以此决定哪些变量更为重要
②模型选择算法 model selection algorithm,这种算法可以自动选择哪些
特征可以保留
减少features的缺点就是舍弃了特征变量就也舍弃了关于问题的一些信息 - 正则化 regularization
①保留所有特征,但是减少量级magnitude或参数 θ j \theta_j θj的大小
代价函数
正则化的思想就是给参数惩罚,使参数的值很小,这样就会得到更简单的假设函数,也就更不容易出现过拟合的问题。
如上图给
θ
3
\theta3
θ3和
θ
4
\theta4
θ4前面加一个很大的系数,那么优化的时候为了得到更小的值,那只能让
θ
3
\theta3
θ3和
θ
4
\theta4
θ4更小,接近于0。
下面就是加入了正则化后的代价函数
J
(
θ
)
J(\theta)
J(θ),其中
λ
\lambda
λ就是正则化参数,它的作用就是控制两个不同目标之间的取舍,第一个目标也就是式子的第一项就是我们想更好的拟合数据,第二个目标也就是正则化项就是保持参数尽量的小。
如果
λ
\lambda
λ设置的过大,对参数的惩罚过多的时候,那就会使每个参数都接近于0,这样就又会欠拟合
线性回归的正则化
线性回归有两种算法,一种基于梯度下降一种基于正规方程。
基于梯度下降的线性回归正则化
对上式进行变形我们可以得到
可见加了正则化以后和之前的区别就是让
θ
j
\theta_j
θj乘了个
1
−
α
λ
m
1-\alpha\frac{\lambda}{m}
1−αmλ,这个值只比1小一点点,因为
α
\alpha
α很小而m很大,所以正则化就是每次迭代的时候把参数缩小一点点
基于正规方程的线性回归正则化
就是在原来的基础上加了蓝色这一项
原来我们知道当m<=n的时候
X
T
X
X^TX
XTX是不可逆的,但是我们这里加了正则化项后,就永远都是可逆的了,所以正则化项还解决了当m<=n时
X
T
X
X^TX
XTX不可逆的问题
逻辑回归的正则化
对逻辑回归问题有两种优化算法:梯度下降和更高级的优化算法。
梯度下降
损失函数这样定义:
从
θ
1
\theta_1
θ1开始加入正则化
梯度下降这样定义:
更高级的优化算法
更高级的优化算法需要我们自己写costFunction,costFunction有两个返回值jVal和gradient,jVal是用来计算
J
(
θ
)
J(\theta)
J(θ),那我们在写的时候就要加上正则化项
要注意的是octave的下标是从1开始的,所以我们要换一下写法如下图:
B、增加一些特征量可能导致拟合在训练集原本没有被拟合到的数据,正确,这就是过拟合。
AD正则化的引入是解决过拟合的问题,而过拟合正是过度拟合数据但无法泛化到新的数据样本中。