之前我们讨论了几个机器学习的模型,线性回归模型(Linear Regression)和逻辑回归模型(Logistic Regression),这一次我们讨论一下关于模型数据拟合的问题以及归一化方法(Regularization)。
过拟合问题(The Problem of Overfitting)
如果我们有非常非常多的特征,我们通过学习得到的假设可能会非常适应训练集(代价函数的值可能几乎为0),但是这样的假设能不能推广使用到新的数据呢?下面有一些例子:
从左至右来看,第一个模型是一个线性模型,拟合度很低,也称作低度拟合(Underfitting),不能很好地适应我们的训练集;第三个模型,是一个四次方的模型,属于过度拟合,虽然能够很好地适应我们的训练集数据,但是在新输入变量进行预测的时候,可能效果会很差;而第二个模型,似乎是最合适的模型。
在分类问题(Classification)中,也存在这样的问题:
最后一个模型就是过度拟合的情况。
那么问题出现了,如果我们发现了这样过度拟合的情况,如何处理?
思考后,有两种方式:
1,丢弃一些不能帮助我们正确预测的特征。
- 可能是手工选择保留哪些特征
- 或者使用一些模型选择的算法来帮忙(例如 PCA)
- 保留所有的特征,但是减少参数的大小(Magnitude)
归一化代价函数(Regularization Cost Function)
上面的回归问题中,如果我们使用的模型是:
我们决定要减小ø3和ø4的大小,我们需要做的就是修改代价函数,在其中ø3和ø4的身上,设置一些惩罚(Punishment)。这样做的话,我们在尝试最小化代价时,也需要将这个惩罚代入考虑中,并最终导致选择小一些的ø3和ø4 。 修改之后的代价函数如下:
这样,通过代价函数选择出的ø3和ø4对整个预测结果的影响就比之前小了很多。
加入我们有非常多的特征,我们并不知道其中哪些特征是我们要惩罚的,我们将对所有特征进行惩罚,并且让代价函数最优化的方法来选择惩罚的程度。这样的结果,就得到了一个较为简单的能够防止过度拟合问题的假设:
其中λ又称为归一化参数(Regularization Parameter)。
这里注意:根据惯例,我们不会对ø0进行惩罚。
经过归一化处理的模型与原模型的对比可能如下图:
如果选择的归一化参数λ过大,就会把所有参数都最小化了,这样导致模型hø(x)=ø0也就是上图中的红色直线的情况,数据就属于低度拟合。
下回我们讨论,线性逻辑模型的归一化和逻辑回归模型的归一化。