决定下一步做什么
训练完成后,测试产出巨大误差的解决方法:
①使用更多的训练样本
②尝试选用更少的特征
③尝试选用更多的特征
④增加多项式特征
⑤减小正则参数λ
⑥增加正则参数λ
机器学习诊断法:通过测试知晓选择怎样的改进方法。
在后面讲述一些诊断法。
评估假设
得到一个很小的训练误差不一定是一个好的模型,可能存在过拟合问题。
怎样判断一个假设过拟合呢?
因为有的特征量很多,所以不能画出建设函数来观察,只能用其他的方法。
一种假设评估的标准方法:
将样本随机抽取70%作为训练样本,30%作为测试样本(这是一个典型的选择比例)。
对于线性回归:
首先用训练集最小化代价函数J(θ)
然后计算测试误差
对于逻辑回归:
对于逻辑回归训练和线性回归相似
误差:
一种是Jtest(θ)
另一种是错误分类(0/1分类错误),即将测试样本中分类错误的个数除于测试样本总数。
模型的选择和训练、验证、测试集
过拟合问题:
模型选择问题:
下面有十个模型选择
从训练好的模型中选择一个测试误差最小的,但是此方法仍然不能说明选择的模型具有良好的泛化能力;其原因是我们拟合了一个额外参数d(d为多项式最高次数),我们用测试集去选择了一个效果最好的模型,再用测试集评估假设就不公平了(不能说明该模型对测试集以外的新样本就较好的拟合效果)。
为了解决该问题,我们通常把数据集分成三类,训练集(60%)、交叉验证集(验证集)(20%)和测试集(20%)。
误差:
用训练集训练模型,交叉验证集选择模型,测试集评估模型对新样本的泛化能力。
该方法比之前的方法效果要好。
诊断偏差与方差
下面是3个假设:
第一个欠拟合,第二个刚好,第三个过拟合
d:多项式次数
误差随d的变化图像如下:
红色:验证集的代价函数误差
紫色:训练集的代价函数误差
高偏差(欠拟合):左边红色方框,训练集和验证集的代价函数误差都较大。
高方差(过拟合):右边红色方框,训练集的误差较小,验证集的误差较大,验证集的误差远远大于训练集的误差。
正则化和偏差、方差
正则化λ与偏差和方差的关系:
λ越大对参数θ的惩罚越大,反之越小。
λ太大,通常会引起欠拟合问题,使参数约等于0。
λ太小或等于0,相当于没有正则化项,通常会引起过拟合问题。
只有选择合适的λ,才会很好的拟合数据。
如何选择一个合适的λ?
选择一系列想要尝试λ的值,通常首先λ = 0,然后一系列其他的值,通常将步长设置为2倍速度增长,直到一个比较大的值。
用训练集训练不同λ的模型,然后用交叉验证集选择一个误差最小的模型,最后用测试集来观察模型对新样本的泛化能力。
误差与λ的变化曲线:
过拟合:左边部分
欠拟合:右边部分
真实的图像会更加的凌乱,会有噪音,可以通过观察趋势选择合适的λ值。
学习曲线
训练误差和交叉验证误差随 m(样本数量)变化的曲线:
训练误差随样本的增加而增加,验证误差随样本的增加而减小。
高偏差时的曲线图:
当m较小时,验证误差较大,训练误差较小;当m较大时,训练误差和验证误差会接近(因为参数少,样本多)。
高偏差问题可以由很高的训练误差和交叉验证误差反映出来。
当处于高偏差时,选用更多的数据集对模型的拟合效果改善是无益的。
高方差时的曲线图:
算法处于高方差时,明显特点是在训练误差和交叉验证误差之间有一段很大的距离。
处于高方差时,增加训练样本数量会改善算法。
决定接下来做什么
提高学习算法效果的方法:
①增加训练集,解决高方差问题有帮助
②减少特征(保留关键特征),解决高方差问题有帮助
③增加特征,解决高偏差问题有帮助
④增加多项式特征(x12,x22,x1x2,…),解决高偏差问题有帮助
⑤减小正则参数λ,解决高偏差问题有帮助
⑥增加正则参数λ,解决高方差问题有帮助
简单的神经网络模型:容易出现欠拟合问题(参数较少导致),但是计算量较小。
复杂的神经网络模型:容易出现过拟合问题(参数较多导致),而且计算量也比较大。
对于复杂的神经网络出现的过拟合问题可以通过引入正则化的方法来解决。
正则化修正过的复杂神经网络效果通常比简单的神经网络效果更好,但是可能出现的问题就是计算量较大。
对于复杂神经网络隐藏层的层数的选择也可以通过将数据集划分成三部分(训练集,交叉验证集,测试集)来选择。