当咱们运用训练好了的模型来预测未知数据时候发现有较大偏差,那么咱们下一步能够作什么呢?算法
通常来讲能够选择如下几种方法:网络
可是要选择什么方法来改进咱们的算法,咱们须要运用一些机器学习诊断法来协助咱们判断。机器学习
1、评估h(x) ---- Evaluating a Hypothesis函数
一个好的Hypothesis:有小的训练偏差同时没有过拟合性能
咱们的训练是经过最小化训练偏差来获得h(x), 可是有小的训练偏差并不表明它必定就是一个好的Hypothesis,极可能会发生过拟合致使泛化能力差。学习
过拟合检验:测试
把数据集分红训练集(70%)和测试集(30%)lua
用训练集训练出一个模型以后,咱们经过测试集来评估这个模型spa
2、模型选择和交叉验证集 ---- Model Selection and Train_Validation_Test set3d
当咱们不肯定多项式模型最高该几回或者正则化参数应该取多大的时候,咱们可使用交叉验证集来帮助选择模型。(微调模型的超参数:多项式最高次,正则化参数)
交叉验证(cross validation):
数据集:训练集(60%),交叉验证集(20%), 测试集(20%)
模型选择过程(model selection):
不少人仅仅把数据集分红了训练集和交叉验证集,使用交叉验证集选择模型同时测出偏差做为预测效果。当数据集很大时也许能够获得比较好的泛化偏差,可是通常来讲这样并很差。
3、诊断误差和方差 ---- Diagnosing Bias and Variance
当一个模型表现不是很好时,通常来讲是两种状况:误差比较大(欠拟合),方差比较大(过拟合)。
泛化性能用指望泛化偏差表示,而指望泛化偏差能够分解为误差,方差和噪声。
Bias:描述的是预测值与真实值之间的差距。
Variance:描述的是预测值的变化范围,离散程度,也就是离其真实值的距离。
误差度量了学习算法的指望预测与真实结果的偏离程度,即刻画了学习算法自己的拟合能力;(准确性)
方差度量了一样大小的训练集的变更所致使的学习性能的变化,即刻画了数据扰动所形成的影响;(稳定性)
判断误差和方差(多项式次数及λ的值):
咱们经过将训练集和交叉验证集的代价函数偏差与多项式的次数绘制在同一张图表上来分析
如表所示,当Jcv(Θ)和Jtrain(Θ)都比较大并且近似时,属于高误差问题。(欠拟合)
当Jtrain(Θ)比较小,并且Jcv(Θ)远大于Jtrain(Θ)时,属于高方差问题。(过拟合)
一样的,咱们将训练集和交叉验证集的代价函数偏差与λ的值绘制在同一张图表上来分析(在选择模型时,λ的值通常取两倍步长)
注意:这里咱们在计算训练集偏差、验证集偏差和测试集偏差时都不考虑正则化项(只包含数据的平方偏差)。
能够看出,当λ比较小时,可能出现过拟合问题(高方差),此时训练集偏差比较小,验证集偏差比较大。
当λ比较大时,对每一个参数的惩罚因子都很大,可能出现欠拟合问题(高误差),此时训练集偏差和验证集偏差都比较大。
4、学习曲线 ---- Learning Curves
训练集大小的影响:
对于高误差的状况,增长训练集并无用
对于高方差的状况,增长训练集也许是有用的;
6、针对高方差和高误差的状况能够采起的措施
对于神经网络,越简单的神经网络计算量小可是容易欠拟合。相反的,越复杂的神经网络容易过拟合,但咱们可使用正则化项来克服过拟合,通常来讲用复杂的神经网络比简单的神经网络效果好,固然计算量比较大。对于隐藏层数量的选择,通常来讲一层是比较合理的选择,可是你想要从一层、两层、三层...里面作最合理的选择,能够用交叉验证集作模型选择。