偏差/方差与欠拟合/过拟合

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_27668313/article/details/79038656

参考博客:http://blog.csdn.net/mingtian715/article/details/53789487

1)偏差和方差

评价数据拟合程度好坏,通常用代价函数J(平方差函数)。如果只关注Jtrain(训练集误差)的话,通常会导致过拟合,因此还需要关注Jcv(交叉验证集误差)

高偏差:JtrainJcv都很大,并且Jtrain≈Jcv。对应欠拟合。

高方差:Jtrain较小,Jcv远大于Jtrain。对应过拟合。

下图d代表多项式拟合的阶数,d越高,拟合函数越复杂,越可能发生过拟合。

2)如何理解高偏差和高方差

1、高偏差对应着欠拟合,此时Jtrain也较大,可以理解为对任何新数据(不论其是否属于训练集),都有着较大的Jcv误差,偏离真实预测较大。

2、高方差对应着过拟合,此时Jtrain很小,对于新数据来说,如果其属性与训练集类似,它的Jcv就会小些,如果属性与训练集不同,Jcv就会很大,因此有一个比较大的波动,因此说是高方差。

实际优化过程中,更多的是调整防止过拟合参数λ,λ对应正则化系数(越大,对过拟合的限制越强)。下图为λ和JtrainJcv理想曲线。

3)学习曲线

学习曲线是描述JtrainJcv和数据样本规模的关系曲线。参见下图。

上图对应高偏差(欠拟合),下图对应高方差(过拟合)。可以看出当模型属于高偏差时,随着样本数据规模增大,性能不会有什么改善,过拟合中的误差则在持续减小。这个很好理解,欠拟合一般是模型比较简单,不能准确的描述数据特征,因此盲目增大数据量是没用的;而过拟合是模型比较复杂,描述数据过于准确了,因此增加一些数据量可以减小过拟合。

4)模型修改策略

过拟合:增大数据规模、减小数据特征数(维数)、增大正则化系数λ

欠拟合:增多数据特征数、添加高次多项式特征、减小正则化系数λ

实际优化过程中,我们的目标就是使模型处于欠拟合和过拟合之间一个平衡的位置。

5)一点点思考

其实所谓的偏差/方差,欠拟合/过拟合,都是根据JtrainJcv来判断的。

JtrainJcv都很大时,意味着模型过于简单,简单的模型无法对数据有很好的预测,所以预测值与真实值相距较远,预测值与真实值偏差大,但是预测值分布集中,方差小。模型简单是因为模型的参数少,而数据的特征很多,例如数据有100个特征,其中有20个特征是主要成分,如果模型用20次多项式来描述这20个特征,这就是最佳模型。如果模型只有3个参数,这样模型就只使用了数据的小部分特征,舍去了大部分的特征,如果很多数据恰好在这三个特征上相似,而在其它特征上相差甚远,但上述模型会认为这些数据是相同的,所以给它们的预测值也相同,实际上这些数据的真实标签是相差很大的,这就简单模型即使在训练集上也无法准确预测的原因。简单模型的预测值与标签真实值相差较远,即偏差大,如下图,红色表示数据集的标签,蓝色表示模型的预测值,每个点表示一个样本的预测值。图中蓝色点非常集中,说明了简单模型的方差小,这很好理解,因为模型舍去了很多特征,很多原本不同的样本在模型看来都一样,这样预测值就非常集中。

Jtrain很小和Jcv很大时,意味着模型过于复杂,模型对训练数据预测很好,而对测试数据预测很差,预测值与真实值偏差小,但预测值分布散乱,方差大。模型复杂是因为参数太多,参数越多,模型就越不通用,而是针对了某一特定数据集,比较有偏见,这种模型对训练集预测效果很好,当用验证集验证时,因为验证集中的有些数据可能很符合模型,也有可能很不符合,数据方差就大了。但是偏差小,这是为什么呢?因为模型参数多,把所有主要特征都包含了,所以预测值与真实值不会差的太远。例如数据有100个特征,其中20个特征是主要成分,如果模型采用50个参数,那么就有30个次要成分被考虑了,这些次要成分可以看成是噪声。在训练集上训练时,由于采用参数很多,我们可以把每个参数看成是分辨不同样本的角度,使用的参数越多,训练集上的样本拟合的就越好,Jtrain越小(有一群动物:鸡,猫,老虎。我们从翅膀角度来分辨,这是一个参数,可以把鸡分为一类,猫和老虎分为一类,如果我们增加一个参数:爬树,这样就把猫和老虎分开了。我们使用的参数越多,就越能把动物分的清楚。这个例子是分类问题,同样适用于回归问题)。在测试集上,模型考虑了数据的主要20个特征,所以预测值不会与真实值差的太远,但是其余30个参数会造成预测值偏离真实值。在上面分类问题中,若测试集包含一只熊猫,用一个参数可以将猫、老虎和熊猫分在一起,它们都是猫科动物,所以这种分类时正确的,但是用两个参数时,熊猫就被当作是猫了,显然分类出现了错误,熊猫被分为猫,仍是猫科动物,离它真实值相差不会很大,所以偏差小。

复杂模型的预测值与标签真实值用如下图说明,红色表示数据集的标签,蓝色表示模型的预测值,每个点表示一个样本的预测值。图中蓝色点分散,说明了简单模型的方差大,蓝色点分布在红色点附近,说明偏差小。

下面这张图不要和开始的那张图混淆,这张图说明了,模型简单时(欠拟合)偏差大,方差小;模型复杂时(过拟合)偏差小,方差大。需要注意的是Jcv大并不表示模型在测试集上的偏差大,Jcv大是因为方差大导致的(不知道这样理解是否正确?)。

猜你喜欢

转载自blog.csdn.net/qq_27668313/article/details/79038656