对应吴恩达机器学习网易云课程第11章的内容。
改进方案的设计
对于在新样本测试下拟合结果和实际偏差较大的情况,应该如何改进呢?
- 搜集更多的训练样本,多渠道多种类,但实际上很多情况下是于事无补的。
- 尝试使用更少的特征,防止过拟合。
- 获取更多特征。
- 增加多项式特征,如
。
- 修改
的值,上下浮动。
评估假设
- 通常训练集70%,测试集30%,最好采用随机顺序构造你的数据。
- 线性回归的测试误差
(
是测试集的样本数目)
- 逻辑回归/分类的测试误差
- 还有一种度量分类问题的效果的方式:(0/1)错误分类,在每次测试时以0.5为阈值定义err,继而定义错误分类error。
模型选择与训练集、验证集、测试集的划分
主要围绕选择多项式次数、特征的选择、正则化参数 。因为过拟合问题,训练集误差不能用于判断模型的好坏。
为了得到具有更好的泛化效果的模型,我们可以将样本分为训练集、(交叉)验证集(简记为,样本数记为
)、测试集,比例最常见的是6、2、2,对应不同的代价函数值。对于不同次数的多项式得到的模型,我们选取在交叉验证集上代价函数值也即交叉验证误差低的模型确定次数degree。然后使用测试集上得到的
评估泛化的能力。
诊断方差与偏差
我们可以画出一个随着degree增大,训练误差和验证误差关系的图。
由图可以看出,以验证误差的拐点为界,左边表现的是欠拟合,也即高偏差。而右边表现的是过拟合,也即高方差。
总结得,欠拟合情况下,两个误差都很大且接近,也许比训练误差稍大。而过拟合的训练误差很小、验证误差远远大于训练误差。
正则化与偏差、方差
我们如何确定一个合适的正则化参数,对各个特征进行合适程度的惩罚?
引入正则化后,我们的代价函数和训练误差不再一致,代价函数增加了惩罚项。选择最优惩罚参数的过程如图。
也即,我们分多组尝试不同的正则化参数(通常以2倍增长),计算出使得代价函数最小时,对应的不同
向量,之后我们采用模型选择的方式,对这些不同
下的模型进行验证误差的评估,选择验证误差最小的
和
。之后再使用测试误差衡量泛化能力。
在不同的正则化参数下,从其较小到很大,会出现过拟合到欠拟合的过渡。所以得到的图像如图所示。
学习曲线
- 正常拟合情况下,随着训练样本增加误差曲线的情况:
- 高偏差情况下,拟合程度不够,如拟合函数次数较低,当样本数目增大到一定程度后,函数基本不变了,所以偏差曲线基本持平。且两者最终都处于一个较高的水平。也即,此时增多样本对提高模型的拟合水平无益。
- 高方差情况下,样本数目少时,还是更容易的进行拟合,所以训练偏差会逐渐增大但始终还是相对比较小。高方差情形下,当样本数较少时,训练偏差低而验证偏差高,随着样本数增加,两者逐渐靠近,但在开始gap还是很大。但随着样本数增加,验证偏差会降低。所以此时增加训练样本是可以提高模型的水平的。
- 在有噪声的情况下,曲线可能会更杂乱,但曲线的趋势不变。
因此,了解当前处于高方差还是高偏差是非常有必要的,通过绘制学习曲线可以实现。
方法的选择
- 搜集更多的训练样本,多渠道多种类。——适用于高方差
- 尝试使用更少的特征,防止过拟合。——适用于高方差
- 获取更多特征。——适用于高偏差
- 增加多项式特征,如
。——适用于高偏差
- 修改
的值,上下浮动。——减少,适用于高偏差。增大适用于高方差。
结构的选择
- 隐藏层和隐藏单元较少:计算量小,不容易出现过拟合。
- 隐藏层和隐藏单元较多:参数多,容易出现过拟合。使用正则化修正后,大型神经网络通常比小型效果好,虽然计算量也更大一些。
- 隐含层的层数:不同模型通过交叉验证误差比较大小。