机器学习(十五) - Bias vs. Variance

Diagnosing Bias vs. Variance

讲完模型选择,我们接下来讲讲如何去诊断我们算法出现的问题到底是一个high bias(underfitting)的问题还是一个high variance(overfitting)的问题又或者同时两个问题同时存在,因为几乎所有的导致test error不理想的原因都来自于这三种情况中的一种。
我们还是从我们最熟悉的一张图引入(线性拟合):
机器学习(十五) - Bias vs. Variance
左图欠拟合,右图过拟合,中间刚刚好。
那么现在我们换一张图来看看这三种情况的呈现形式
机器学习(十五) - Bias vs. Variance
其实线性回归中,次方代表的就是参数个数,次方低表示参数少,次方高代表参数多。那么上图就是参数个数-error曲线图。

  • 欠拟合
    Jtrain(Θ)Jcv(Θ),并且它们都很大,即验证集和训练集的error都很高(这里cv代表的是验证集)
  • 过拟合
    Jtrain(Θ) 很小,同时Jcv(Θ) 很大。

Regularization and Bias/Variance

我们知道加入正则项是可以处理过拟合问题的,但是同时也引入了一个新的问题,正则系数的选取,如果正则系数太大,确实解决了过拟合的问题,但是却导致欠拟合,如下图左,如果取的太小,没办法解决过拟合的问题,如下图右,只有取得恰当,才能达到下图中间的效果。
机器学习(十五) - Bias vs. Variance
那么如何选择恰当的 λ 呢?这个可以参考上一篇的模型选择部分。
1. 建立一个 λ 的列表。
(比如 λ0,0.01,0.02,0.04,0.08,0.16,0.32,0.64,1.28,2.56,5.12,10.24
2. 然后再建立一系列的模型(对于线性回归来说,就是不同的次方)。
3. 对于不同的模型,我们依次代入不同的 λ 进行参数训练。
4. 然后对于不同的模型(这里相当于有 λ×d 个模型),我们分别计算Jcv(Θ).
5. 从得到的所有 Jcv(Θ) 中选取最低的一组作为我最终选定的模型以及λ
6. 最后计算 Jtest(Θ)

Learning Curve

学习曲线是一种非常有效检测机器学习算法问题所在的手段(到底是一个high bias还是一个high variance又或者两者兼有的情况)

  • Experiencing high bias
    机器学习(十五) - Bias vs. Variance
    训练集小Jtrain(Θ)小,Jcv(Θ)
    训练集大Jtrain(Θ)Jcv(Θ),都大。并且随着数据集增大,error很快趋于平稳。
    说明high bias的情况增大训练集意义不大。

  • Experiencing high variance
    机器学习(十五) - Bias vs. Variance
    训练集小Jtrain(Θ)小,Jcv(Θ)
    训练集大Jtrain(Θ)随数据集增大而增大,Jcv(Θ)随着训练集增大而减小,但是并未趋于平稳,两者存在比较明显的gap。
    high variance的情况增大训练集是可行的。

Deciding What to Do Next Revisited

那么现在我们反观上一篇的Deciding What to Do Next部分,我们给出对应方法所解决的问题:

  • 获取更多的训练集 - 解决 high variance
  • 减少特征数量 - 解决 high variance
  • 选择更多的特征 - 解决
  • 增加高次项的特征
  • 减少λ
  • 增加λ
方法 解决的问题
获取更多的训练集 high variance
减少特征数量 high variance
选择更多的特征 high bias
增加高次项的特征 high bias
减少λ high bias
增加λ high variance

Diagnosing Neural Networks

机器学习(十五) - Bias vs. Variance
单一隐藏层的神经网络一般是一个不错的默认选择。如果要使用多个隐藏层的神经网络,我们可以通过验证集去验证选取一个效果最好的层数。


小广告

淘宝choker、耳饰小店 物理禁止
女程序员编码时和编码之余 都需要一些美美的choker、耳饰来装扮自己
男程序员更是需要常备一些来送给自己心仪的人
淘宝小店开店不易 希望有缘人多多支持 (O ^ ~ ^ O)
本号是本人 只是发则小广告 没有被盗 会持续更新深度学习相关博文和一些翻译
感谢大家 不要拉黑我 ⊙﹏⊙|||°
机器学习(十五) - Bias vs. Variance