5

验证集、偏差与方差、学习曲线

 3 years ago
source link: https://arminli.com/cross-validation-bias-variance/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
Armin's Blog

验证集、偏差与方差、学习曲线

June 01, 2016

机器学习的数据分为三类:训练集、验证集和测试集,刚开始看tensorflow时一直没搞懂验证集是做什么的。

图1

假如要在10个不同次数的多项式间选择,那么训练集就是训练参数每个式子的参数θ,验证集就是用来选择这十个式子哪个误差最小的,因为参数是用训练集训练出的,所以如果再用训练集数据去比较哪个式子误差小会不准确。

一般训练集数据占60%,验证集和测试集各20%。

误差与多项式次数

图2

如图是训练集代价误差和验证集代价误差与多项式次数的关系。

对于训练集来说,d较小时,模型拟合程度低,误差大,随着d的增长误差越来越小,拟合程度越来越高。(最后会过拟合,但是对于训练集的代价函数误差一直是变小)。

对于交叉验证集来说,d较小时,拟合程度低,误差大,随着d的增大,误差变小,之后由于过拟合,误差又会变大。

图3

训练集误差和验证集误差近似时:偏差(欠拟合)
验证集误差远大于训练集误差时:方差(过拟合)

正则化与偏差/方差

常用正则化方法来防止过拟合,因此参数的选择也要思考类似的问题。

λ越大,就会越减少过拟合现象的出现。

λ的选择通常是 0-10 之间的呈现 2 倍关系的值(如:0,0.01,0.02,0.04,0.08,0.15,0.32,0.64,1.28,2.56,5.12,10 共 12 个)

图4

  • λ 较小时,训练集误差较小(过拟合)而交叉验证集误差较大
  • 随着 λ 的增加,训练集误差不断增加(欠拟合),而交叉验证集误差则是先减小后增加

学习曲线就是一种很好的工具,我们经常使用学习曲线来判断某一个学习算法是否处于偏差、方差问题。学习曲线是学习算法的一个很好的 合理检验(sanity check)。

学习曲线是将训练集误差和交叉验证集误差作为训练集实例数量(m)的函数绘制的图表。

如何利用学习曲线识别高偏差(欠拟合)、高方差(过拟合)?

作为例子,我们尝试用一条直线来适应下面的数据,可以看出,无论训练集有多么大误差都不会有太大改观。

图5

如图所示,高偏差(欠拟合)的情况下,增加数据到训练集不一定能有帮助。

图6

假设我们使用一个非常高次的多项式模型,并且正则化非常小,可以看出,当交叉验证集误差远大于训练集误差时,往训练集增加更多数据可以提高模型的效果。

也就是说在高方差(过拟合)的情况下,增加更多数据到训练集可能可以提高算法效果。

让我们来看一看我们在什么情况下应该怎样选择:

  • 获得更多的训练实例——解决高方差
  • 尝试减少特征的数量——解决高方差
  • 尝试获得更多的特征——解决高偏差
  • 尝试增加多项式特征——解决高偏差
  • 尝试减少正则化程度 λ——解决高偏差
  • 尝试增加正则化程度 λ——解决高方差

Profile picture

Written by Armin Li , a venture capitalist. [Weibo] [Subscribe]


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK