Andrew Ng机器学习笔记(四)

一、简介


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

二、主要内容


The problem of overfitting:


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


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


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

yr y r
,即使下式目标函数
Jp J p
为最小:
Jp=i=1p[yp(k+i)yr(k+i)]2wi J p = ∑ i = 1 p [ y p ( k + i ) − y r ( k + i ) ] w i 2

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


Cost Function:


让较高阶次数的参数趋于0,就会使高阶项趋于0,然后得到一个比较平缓的图像,这个图像也能较好地拟合训练数据,有更强的泛化能力。

在线性回归和逻辑回归中增加了正则化的代价函数如上,λ是正则化参数,它在两个目标之间做平衡(第一个目标是使假设更好地拟合训练数据,第二个目标是保持参数值较小),当λ大时,惩罚加重,能够更好地实现第二个目标,使假设的形式保持简单,当λ小时,能够更好地实现第一个目标,但拟合的风险更大,当λ很大时,所有的惩罚项都趋于0(相当于去掉了这些惩罚项),这时候假设就会欠拟合。

在线性回归正则化中,我们改变θ的值来得到代价函数的最小值,当除

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

Regularized Linear Regression:

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

J(θ)=12m[i=1m(hθ(xi)yi)2+λj=1nθ2j] J ( θ ) = 1 2 m [ ∑ i = 1 m ( h θ ( x i ) − y i ) 2 + λ ∑ j = 1 n θ j 2 ]

梯度下降变为:

因为在正则化中没有
θ0 θ 0
这一项,所以把
θ0 θ 0
单独拿出来,在实际操作中也可以加入对
θ0 θ 0
的惩罚,但是对最后的结果不会有太大的影响。
θj=θj(1αλm)αλmi=1m(hθ(xiyi)xij) θ j = θ j ( 1 − α λ m ) − α λ m ∑ i = 1 m ( h θ ( x i − y i ) x j i )
分为两个部分,前一个部分是θ乘以一个小于1的数,把θ压缩了,后面的部分是执行和之前一样的更新。

加入正则化之后,相当于在原来的方程中多加了一项λ乘以一个单位矩阵。

加入正则化项之后可以不要求
xTx x T x
必须可逆了。
利用正则化可以避免过度拟合,即使在很小的训练集有很多的变量的时候。


Regularized Logistic Regression:


逻辑回归的正则化梯度下降为上图,但是h_θ和之前的线性回归里面的梯度下降的公式不一样,这里

hθ(x) h θ ( x )
是sigmoid函数。

以上是一些代码,总之我们需要的就是这个自定义函数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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值