机器学习(十五) - Bias vs. Variance
Diagnosing Bias vs. Variance
讲完模型选择,我们接下来讲讲如何去诊断我们算法出现的问题到底是一个high bias(underfitting)的问题还是一个high variance(overfitting)的问题又或者同时两个问题同时存在,因为几乎所有的导致test error不理想的原因都来自于这三种情况中的一种。
我们还是从我们最熟悉的一张图引入(线性拟合):
左图欠拟合,右图过拟合,中间刚刚好。
那么现在我们换一张图来看看这三种情况的呈现形式
其实线性回归中,次方代表的就是参数个数,次方低表示参数少,次方高代表参数多。那么上图就是参数个数-error曲线图。
-
欠拟合
,并且它们都很大,即验证集和训练集的error都很高(这里cv代表的是验证集) -
过拟合
很小,同时 很大。
Regularization and Bias/Variance
我们知道加入正则项是可以处理过拟合问题的,但是同时也引入了一个新的问题,正则系数的选取,如果正则系数太大,确实解决了过拟合的问题,但是却导致欠拟合,如下图左,如果取的太小,没办法解决过拟合的问题,如下图右,只有取得恰当,才能达到下图中间的效果。
那么如何选择恰当的 呢?这个可以参考上一篇的模型选择部分。
1. 建立一个 的列表。
(比如 )
2. 然后再建立一系列的模型(对于线性回归来说,就是不同的次方)。
3. 对于不同的模型,我们依次代入不同的 进行参数训练。
4. 然后对于不同的模型(这里相当于有 个模型),我们分别计算.
5. 从得到的所有 中选取最低的一组作为我最终选定的模型以及。
6. 最后计算
Learning Curve
学习曲线是一种非常有效检测机器学习算法问题所在的手段(到底是一个high bias还是一个high variance又或者两者兼有的情况)
Experiencing high bias
训练集小:小,。
训练集大:,都大。并且随着数据集增大,error很快趋于平稳。
说明high bias的情况增大训练集意义不大。Experiencing high variance
训练集小:小,。
训练集大:随数据集增大而增大,随着训练集增大而减小,但是并未趋于平稳,两者存在比较明显的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
单一隐藏层的神经网络一般是一个不错的默认选择。如果要使用多个隐藏层的神经网络,我们可以通过验证集去验证选取一个效果最好的层数。
小广告
淘宝choker、耳饰小店 物理禁止
女程序员编码时和编码之余 都需要一些美美的choker、耳饰来装扮自己
男程序员更是需要常备一些来送给自己心仪的人
淘宝小店开店不易 希望有缘人多多支持 (O ^ ~ ^ O)
本号是本人 只是发则小广告 没有被盗 会持续更新深度学习相关博文和一些翻译
感谢大家 不要拉黑我 ⊙﹏⊙|||°