1、过拟合的问题(The Problem of Overfitting)
目前为止,已经学习了几种不同的学习算法,包括线性回归和逻辑回归,可以有效地解决许多问题。但是当应用到某些特定的机器学习应用时,会遇到过拟合(over-fitting)的问题,可能会效果很差。
本节主要了解什么是过度拟合问题,及可以改善或者减少过度拟合问题的正则化(regularization)的技术。
- 回归问题的例子: 线性回归
第一种称为欠拟合,也是高偏差;
第二种刚好拟合了数据;第三种称为过拟合,也是高方差。
在过拟合中,假设函数很好的匹配了训练集,但并不能很好的匹配测试集。 - 分类问题的例子:逻辑回归
- 过度拟合的问题将会在变量过多的时候,发生这种时候训练出的方程总能很好的拟合训练数据,所以代价函数实际上可能非常接近于0,或者就是0,但是这样的曲线拟合于训练数据,却无法泛化到新的数据样本中。
- 术语"泛化"指的是一个假设模型能够应用到新样本的能力。
- 新样本数据是没有出现在训练集中的房子。
- 变量过多,训练数据非常少时,就会出现过度拟合的问题。
- 过拟合问题应该如何处理?
1)丢弃一些不能帮助我们正确预测的特征。可以是手工选择保留哪些特征,或者使用一些模型算法自动选择要保留的变量(例如 PCA)。
2)正则化。保留所有的特征,但是减少参数的θj大小(magnitude)。当有很多特征时,其中每个变量都能对预测的y值产生一点影响。
2、代价函数(Cost Function)
在上文中,可以看到通过二项式去拟合数据可以达到不错的效果,而用阶数过高的多项式去拟合数据会出现了过拟合问题。
正则化的思想: 参数值越小,通常对应于越光滑,更加简单的函数,不易发生过拟合的问题。但是很难提前选出那些关联度更小的特征的,所以添加一个额外的正则化项收缩每个参数(惩罚),使所有的参数θ1,θ2,θ3……值变小,注意没有惩罚θ0,在实践中,是否包括这项差异非常小。
修改后的代价函数如下:
- λ被称为正则化参数(Regularization Parameter),作用就是控制在两个不同的目标中的一个平衡关系。
第一个目标更好地去拟合训练集。
第二个目标是使参数尽可能的小。 - 如果λ的取值过小,则抑制的效果越弱,而λ的取值过大,则会导致欠拟合现象。
3、正则化线性回归(Regularized Linear Regression)
对于线性回归的求解,之前推导了两种学习算法:一种基于梯度下降,一种基于正规方程。
梯度下降:
- 正则化线性回归的代价函数为:
- 对上面的算法中? = 1,2,…,? 时的更新式子进行调整可得:
, - 如果学习速率小,而m很大的话 (1 - αλ/m) 这一项通常是很小的,且为正数,所以一般来说将是一个比1小一点点的值,类似于0.99一样的数字。
- 从直观理解,需要做的就是每一个被正则化的参数 θj 上乘以了一个比1小一点点的数字,即把参数压缩了一点,然后执行与以前一样的更新。
正规方程:
- X是一个m*(n+1)维矩阵,y是一个m维向量,样本总数m,特征数量 n。
- 利用正规方程来求解正则化线性回归模型,方法如下所示:
矩阵维度为 (? + 1) ∗ (? + 1)。
- 正规方程中,当m<n时,XT X 是不可逆或奇异的(singluar) ,另一种说法是这个矩阵是退化(degenerate)的。
- 而在正则化的正规方程中,只要正则参数λ是严格大于0的,可以证明矩阵 XT X+ λ*~这个矩阵将不是奇异的,即该矩阵将是可逆的。
4、正则化的逻辑回归模型(Regularized Logistic Regression)
针对逻辑回归问题,在之前的课程已经学习过两种优化算法:首先是使用梯度下降法来优化代价函数?(?),接下来是更高级的优化算法,这些高级优化算法需要自己设计代价函数?(?)。
通常情况下如果逻辑回归问题中,有很多参数并且又用了过多的多项式项,这些项大部分都是没有必要的,最终都可能出现过拟合的现象。
正则化梯度下降算法:
注:正则化后,拟合边界由蓝色过拟合曲线变成了品红色合理曲线。
- 正则化的代价函数如下:
要最小化该代价函数,通过求导,得出梯度下降算法为:
注:看上去同线性回归一样,但是这里ℎ?(?) = ?(???),所以与线性回归不同。
高级优化算法:
建议添加括号防止求和符号的作用域扩大。