Andrew Ng机器学习笔记(四)

一、简介


正则化项即罚函数,该项对模型向量进行“惩罚”,从而避免单纯最小二乘问题的过拟合问题。正则化项本质上是一种先验信息,整个最优化问题从贝叶斯观点来看是一种贝叶斯最大后验估计,其中正则化项对应后验估计中的先验信息,损失函数对应后验估计中的似然函数,两者的乘积即对应贝叶斯最大后验估计的形式,如果你将这个贝叶斯最大后验估计的形式取对数,即进行极大似然估计,你就会发现问题立马变成了损失函数+正则化项的最优化问题形式。

二、主要内容


The problem of overfitting:

Andrew Ng机器学习笔记(四)
最左边的图并没有把样本点很好地拟合在直线上面,所以左图叫做欠拟合,中间的图刚好能将样本数据很好地拟合,而且波动不是很大,最右边的图能拟合所有的样本点,但是波动非常大,所以,最右边的图片称为过度拟合。由图下面函数可以知道:如果我们拟合一个高阶多项式,那么这个函数几乎能拟合所有的训练样本。
过拟合是指为了得到一致假设而使假设变得过度严格。避免过拟合是分类器设计中的一个核心任务。通常采用增大数据量和测试样本集的方法对分类器性能进行评价。给定一个假设空间H,一个假设h属于H,如果存在其他的假设h’属于H,使得在训练样例上h的错误率比h’小,但在整个实例分布上h’比h的错误率小,那么就说假设h过度拟合训练数据。
弹幕上面的NFL定理:NFL(No Free Lunch)定理,翻译过来就是“没有免费午餐”定理,收的是在机器学习中,没有给定具体问题的情况下,或者说面对的是所有问题的情况下,没有一种算法能说得上比另一种算法好。换成我们的俗话讲,就是“不存在放之四海而皆准的方法”。只有在给定某一问题,比如说给“用特定的数据集给西瓜进行分类”,才能分析并指出某一算法比另一算法好。这就要求我们具体问题具体分析,而不能指望找到某个算法后,就一直指望着这个“万能”的算法。这大概也是no free lunch名字的由来吧。

Andrew Ng机器学习笔记(四)
最左边的图是欠拟合,中间的有一个决策边界,将两类数据很好地分割开了,是训练集的很好的拟合样本,第三个则为过拟合,逻辑回归自身扭曲,它将两类数据完全分割开来,但是同一个横坐标对应多个纵坐标的值,即无法使它泛化到新的数据样本中。
在变量过多的时候,同时如果我们没有足够的数据集去约束这个变量过多的模型,那么就会发生过拟合。

Andrew Ng机器学习笔记(四)
解决过拟合的方法如上图,即:
**1. 尽量减少选取变量的数量:保留更为重要的一些变量。有种算法叫模型算法,这种算法可以自动选择采用那些特征变量,自动舍弃不需要的变量,缺点是:当我们舍弃一部分特征变量时,我们也舍弃了一些信息。
模型算法控制(Model Algorithm Control,简称MAC),由内部模型、参考轨迹和控制算法三部分内容所组成。MAC的最优准则是:选择未来某一时域(p)内的控制量(u)序列,使相应的预测输出yp尽可能接近期望输出(即参考轨迹)

yr
,即使下式目标函数
Jp
为最小:
Jp=i=1p[yp(k+i)yr(k+i)]wi2

式中,
wi
为非负加权系数,它代表各采样时刻的偏差在目标函数
Jp
中所占比重。
根据公式可解出一组控制量
[u(k),u(k+1),......,u(k+p1)]
使
Jp
为最小。
2. 正则化:正则化中我们将保留所有的特征变量,但是会减小特征变量的数量级(参数数值的大小)。
θ(j)
当我们有很多特征变量时,其中每一个变量都能对预测产生一点影响,也就是说每一个变量都是有用的,因此我们不希望把它们删掉,这就导致了正则化概念的发生。


Cost Function:

Andrew Ng机器学习笔记(四)
让较高阶次数的参数趋于0,就会使高阶项趋于0,然后得到一个比较平缓的图像,这个图像也能较好地拟合训练数据,有更强的泛化能力。
Andrew Ng机器学习笔记(四)Andrew Ng机器学习笔记(四)
在线性回归和逻辑回归中增加了正则化的代价函数如上,λ是正则化参数,它在两个目标之间做平衡(第一个目标是使假设更好地拟合训练数据,第二个目标是保持参数值较小),当λ大时,惩罚加重,能够更好地实现第二个目标,使假设的形式保持简单,当λ小时,能够更好地实现第一个目标,但拟合的风险更大,当λ很大时,所有的惩罚项都趋于0(相当于去掉了这些惩罚项),这时候假设就会欠拟合。
Andrew Ng机器学习笔记(四)
在线性回归正则化中,我们改变θ的值来得到代价函数的最小值,当除

θ0
外的θ的值都趋于0的时候,只剩下
θ0
这时,假设函数是一个常数函数,这个函数欠拟合。

Regularized Linear Regression:

线性回归有两种方法求拟合曲线的参数:第一种是梯度下降法,第二种是正规方程法。
用正则化优化后的代价函数为:

J(θ)=12m[i=1m(hθ(xi)yi)2+λj=1nθj2]

梯度下降变为:
Andrew Ng机器学习笔记(四)
因为在正则化中没有
θ0
这一项,所以把
θ0
单独拿出来,在实际操作中也可以加入对
θ0
的惩罚,但是对最后的结果不会有太大的影响。
θj=θj(1αλm)αλmi=1m(hθ(xiyi)xji)
分为两个部分,前一个部分是θ乘以一个小于1的数,把θ压缩了,后面的部分是执行和之前一样的更新。
Andrew Ng机器学习笔记(四)
加入正则化之后,相当于在原来的方程中多加了一项λ乘以一个单位矩阵。
Andrew Ng机器学习笔记(四)
加入正则化项之后可以不要求
xTx
必须可逆了。
利用正则化可以避免过度拟合,即使在很小的训练集有很多的变量的时候。


Regularized Logistic Regression:

Andrew Ng机器学习笔记(四)
逻辑回归的正则化梯度下降为上图,但是h_θ和之前的线性回归里面的梯度下降的公式不一样,这里

hθ(x)
是sigmoid函数。
Andrew Ng机器学习笔记(四)
以上是一些代码,总之我们需要的就是这个自定义函数costFunction,我们可以将这个函数作为参数传入到 fminunc 系统函数中(fminunc 用来求函数的最小值,将@costFunction作为参数代进去,注意 @costFunction 类似于C语言中的函数指针),fminunc返回的是函数 costFunction 在无约束条件下的最小值,即我们提供的代价函数 jVal 的最小值,当然也会返回向量 θ 的解。

三、参考链接


https://baike.baidu.com/item/%E8%BF%87%E6%8B%9F%E5%90%88/3359778?fr=aladdin
https://www.zhihu.com/question/20924039
http://www.jianshu.com/p/cbe8e0fe7b2c
http://www.cnblogs.com/jianxinzhou/p/4083921.html
https://baike.baidu.com/item/%E6%A8%A1%E5%9E%8B%E7%AE%97%E6%B3%95%E6%8E%A7%E5%88%B6/19173182