继续是机器学习课程的笔记,这节课会介绍归一化的内容。
过拟合问题
这节课会介绍一个在机器学习过程中经常会遇到的问题–过拟合。通常,当我们有非常多的特征,我们可以学习得到的假设可能非常好地适应训练集,即代价函数可能几乎是0,但是可能会不能推广到新的数据,即泛化能力差,对于新的数据预测结果不理想。这就是过拟合问题。而特征非常多也是发生过拟合问题的一个原因之一。
下面是一个回归问题,分别有3个模型,如下所示:
第一个模型是一个线性模型,低度拟合,不能很好地适应我们的训练集;第三个模型是一个四次方的模型,过度拟合,虽然能非常好地适应我们的训练集,但在新输入变量进行预测时可能会效果不好;而中间的模型则是相对最合适的模型。
在回归问题中会有过拟合问题,同样在分类问题也是有过拟合的问题,例子如下所示:
同样是第一个模型是线性模型,只能低度拟合,而第三个模型是一个过渡拟合的模型,对新输入变量进行预测时效果会不好,只有中间的模型是最合适的模型。
那么,当发生过拟合的问题时,我们可以采取下面的措施来避免过拟合:
1. 丢弃一些不能帮助我们正确预测的特征:可以是手工选择保留哪些特征或者使用一些模型选择的算法来帮忙(例如PCA);
2. 归一化。保留所有的特征,但是减小参数的大小。
归一化代价函数
在上述回归问题的例子中,对于过拟合的模型是hθ(x)=θ0+θ1x1+θ2x22+θ3x33+θ4x44。
我们决定要减少θ3和θ4的大小,我们要做的是修改代价函数,在其中对θ3和θ4设置一点惩罚。这样做的话,我们在尝试最小化代价时也需要将这个惩罚纳入考虑中,并最终导致选择较小的θ3和θ4。修改后的代价函数如下:
通过这样的代价函数选择出来的θ3和θ4对预测结果的影响就会比之前小许多。
那么假如我们有许多的特征,我们并不知道其中哪些特征需要惩罚,我们将对所有的特征进行惩罚,并且让代价函数最优化的软件来选择这些惩罚的程度。那么代价函数如下所示:
其中λ又称为归一化参数。
注意:根据惯例,我们不对 θ0进行惩罚。
经过归一化处理的模型与原模型的可能对比如下图所示:
这里如果选择的归一化参数λ过大,则会把所有的参数都最小化,导致模型变成hθ(x)=θ0,也就是上图中红色直线所示的情况,造成低度拟合。
归一化线性回归
梯度下降算法
归一化线性回归的代价函数是:
此时如要使用梯度下降法来令代价函数最小化,由于我们没有对 θ0进行归一化,所以梯度下降法将会分两种情形:
Repeat until convergence{
θ0:=θ0−α1m∑i=1m(hθ(x(i))−y(i))⋅x(i)0θj:=θj−α[1m∑i=1m(hθ(x(i))−y(i))⋅x(i)j+λmθj](forj=1,2,3,…,n)
}
其中,对第二个更新的式子进行调整可得:
由该式子可以看出归一化线性回归的梯度下降算法的变化在于, 每次都在原有算法更新规则的基础上令θ值减少了一个额外的值,这是因为 1−αλm<1,而后面第二项式子跟没有使用归一化时候是一样的。
正规方程
同样,也可以使用正规方程来求解线性回归模型。这里做如下假设:
这里的 X是训练集的矩阵,是一个
这里要求解归一化线性回归模型的方法如下:
这里的矩阵是一个 (n+1)∗(n+1)大小,并且是一个对角线上除了第一行外是1,例如当n=2时,这个矩阵就是 [000 010 001]
这个矩阵的得到是通过令∂∂θjJ(θ)=0所得到的,不过视频中并没有给出详细的推导过程。
归一化逻辑回归
对于逻辑回归,我们也可以得到一个归一化的代价函数表达式:
使用的梯度下降算法如下所示:
Repeat until convergence{
θ0:=θ0−α1m∑i=1m(hθ(x(i))−y(i))⋅x(i)0θj:=θj−α[1m∑i=1m(hθ(x(i))−y(i))⋅x(i)j+λmθj](forj=1,2,3,…,n)
}
同样,看上去也是与线性回归的公式一样,但是由于hθ(x)=g(θTX),因此是与线性回归不同的。
小结
本节主要是介绍了过拟合的问题,这是由于特征过多导致学习得到的模型非常拟合训练集的数据,但是对于新的输入数据却得到不理想的预测结果,解决这个问题的方法,一个是减少特征的数量,第二个就是使用归一化来减小参数的大小。
因此后面分别介绍了归一化代价函数,以及线性回归和逻辑回归中梯度下降算法对于归一化代价函数的计算公式。