机器学习模型优化 ---- Model Optimization

  当咱们运用训练好了的模型来预测未知数据时候发现有较大偏差,那么咱们下一步能够作什么呢?算法

  通常来讲能够选择如下几种方法:网络

    1. 增长训练集(一般是有效的,可是代价太大)
    2. 减小特征的数量
    3. 获取更多的特征
    4. 增长多项式特征
    5. 减少正则化参数lambda
    6. 增大正则化参数lambda

  可是要选择什么方法来改进咱们的算法,咱们须要运用一些机器学习诊断法来协助咱们判断。机器学习

1、评估h(x) ---- Evaluating a Hypothesis函数

  一个好的Hypothesis:有小的训练偏差同时没有过拟合性能

  咱们的训练是经过最小化训练偏差来获得h(x), 可是有小的训练偏差并不表明它必定就是一个好的Hypothesis,极可能会发生过拟合致使泛化能力差。学习

   过拟合检验:测试

  把数据集分红训练集(70%)和测试集(30%)lua

  用训练集训练出一个模型以后,咱们经过测试集来评估这个模型spa

  1. 对于回归模型:利用测试集计算代价函数J
  2. 对于分类模型:利用测试集计算代价函数J,并计算误分类比率err(h(x), y) / mtest

2、模型选择和交叉验证集 ---- Model Selection and Train_Validation_Test set3d

  当咱们不肯定多项式模型最高该几回或者正则化参数应该取多大的时候,咱们可使用交叉验证集来帮助选择模型。(微调模型的超参数:多项式最高次,正则化参数)

  交叉验证(cross validation):

  数据集:训练集(60%),交叉验证集(20%), 测试集(20%)

  模型选择过程(model selection):

  1. 使用训练集训练出多个模型
  2. 用这些模型分别对交叉验证集计算交叉验证偏差J
  3. 选取代价函数最小的模型
  4. 用选出的模型对测试集计算推广偏差J

   不少人仅仅把数据集分红了训练集和交叉验证集,使用交叉验证集选择模型同时测出偏差做为预测效果。当数据集很大时也许能够获得比较好的泛化偏差,可是通常来讲这样并很差。

3、诊断误差和方差 ---- Diagnosing Bias and Variance

  当一个模型表现不是很好时,通常来讲是两种状况:误差比较大(欠拟合),方差比较大(过拟合)。

  泛化性能用指望泛化偏差表示,而指望泛化偏差能够分解为误差,方差和噪声。

  Bias:描述的是预测值与真实值之间的差距
  Variance:描述的是预测值的变化范围,离散程度,也就是离其真实值的距离。

  误差度量了学习算法的指望预测与真实结果的偏离程度,即刻画了学习算法自己的拟合能力;(准确性)

  方差度量了一样大小的训练集的变更所致使的学习性能的变化,即刻画了数据扰动所形成的影响;(稳定性)

   判断误差和方差(多项式次数及λ的值):

  咱们经过将训练集和交叉验证集的代价函数偏差与多项式的次数绘制在同一张图表上来分析

如表所示,当Jcv(Θ)和Jtrain(Θ)都比较大并且近似时,属于高误差问题。(欠拟合)

  当Jtrain(Θ)比较小,并且Jcv(Θ)远大于Jtrain(Θ)时,属于高方差问题。(过拟合)

 

   一样的,咱们将训练集和交叉验证集的代价函数偏差与λ的值绘制在同一张图表上来分析(在选择模型时,λ的值通常取两倍步长)

   

  注意:这里咱们在计算训练集偏差、验证集偏差和测试集偏差时都不考虑正则化项(只包含数据的平方偏差)。

   

  能够看出,当λ比较小时,可能出现过拟合问题(高方差),此时训练集偏差比较小,验证集偏差比较大。

  当λ比较大时,对每一个参数的惩罚因子都很大,可能出现欠拟合问题(高误差),此时训练集偏差和验证集偏差都比较大。

 4、学习曲线 ---- Learning Curves

  训练集大小的影响:

                    对于高误差的状况,增长训练集并无用

     对于高方差的状况,增长训练集也许是有用的; 

 

 6、针对高方差和高误差的状况能够采起的措施

  1. 增长训练集:高方差
  2. 减小特征的数量:高方差
  3. 获取更多的特征:高误差
  4. 增长多项式特征:高误差
  5. 减少正则化参数lambda:高误差
  6. 增大正则化参数lambda:高方差

   对于神经网络,越简单的神经网络计算量小可是容易欠拟合。相反的,越复杂的神经网络容易过拟合,但咱们可使用正则化项来克服过拟合,通常来讲用复杂的神经网络比简单的神经网络效果好,固然计算量比较大。对于隐藏层数量的选择,通常来讲一层是比较合理的选择,可是你想要从一层、两层、三层...里面作最合理的选择,能够用交叉验证集作模型选择。

相关文章
相关标签/搜索