经验误差、测试误差、泛化误差及其偏差-方差分解
作者:互联网
目录
引言
- 在构建机器学习模型时,通常需要先采集数据,然后将数据分为训练集、验证集、测试集。训练集用于训练模型,验证集(如果数据量比较少可以采用交叉验证的方式)用于调整超参数,测试集则用于最后评估模型的性能。通常假设所有的样本都是独立同分布采样的。
经验误差、测试误差、泛化误差定义
- 经验误差指模型在训练集上的误差,即训练误差
- 测试误差指模型在测试集上的误差
- 泛化误差指模型在所有数据上的误差(也有人说是在学习器没见过的数据上的误差),泛化误差一般是求不出来的。因此,一般训练集和测试集不交叉,以测试误差来近似代替泛化误差。
泛化误差的偏差-方差分解
- 偏差-方差分解用于衡量学习算法的泛化能力,将学习算法的期望泛化误差进行分解。
泛化误差 = 偏差 + 方差 + 噪声 - 噪声表示在当前任务上任何学习算法所能达到的期望泛化误差的下界,噪声的存在意味着当前学习任务有固有的任何学习算法都无法解决的问题,即定下了上限。即噪声刻画学习问题本身的难度。
- 偏差刻画模型本身的拟合能力,当模型欠拟合时,偏差较大,此时偏差主导了泛化误差。Bias是所有可能的训练数据集训练出的所有模型输出的平均值与真实模型的输出值之间的差异。
- 方差表示使用同样大小的不同训练集训练所导致的模型的性能变化,刻画了数据扰动造成的影响。方差主导泛化误差时说明模型过拟合了,需要正则化。
- 通常偏差和方差之间是矛盾的,需要做平衡。偏差-方差tradeoff可以让我们更好地了解模型的复杂度,但实用价值比较有限,因为没办法真的算出来方差和偏差。
偏差-方差图解
- 如图靶心是完美预测结果,即噪声所代表的任何学习算法在当前任务上能达到的上界。每一个数据集点都是在相同规模的不同数据集上的预测结果。
- 当所有数据点都距离靶心很远时偏差较大,数据点之间距离较大时偏差较大。
- 数据点之间距离小,但是整体距离靶心很远,此时发生了欠拟合。数据点之间距离大,但是整体都环绕在靶心周围时发生了过拟合。数据点相互之间距离大,且都距离靶心很远,那这种解决简直糟透了,说明模型严重无法拟合数据,像是随即乱猜吧。
偏差-方差tradeoff
- 给定学习任务,控制学习算法的训练程度:
- 当训练不足时,学习器拟合能力不够强,泛化误差很大。此时训练数据的扰动不足以使得学习器发生显著变化(毕竟都很差),此时偏差主导了泛化误差。
- 随着训练程度的加深,学习器的拟合能力不断加强,可以更敏锐地感知训练数据的变化,训练数据的扰动也会被学习器学习到,此时方差主导了泛化误差。当某个训练集本身的非全局特征被学习器学到了以后就将发生过拟合。
模型复杂度
- 通常来说模型复杂度越高,对训练数据有更强的拟合能力,容易导致过拟合,方差过大。模型复杂度越低,则不能很好地拟合模型,容易导致欠拟合,因为目前算法大部分都是数据驱动的,因此要根据数据的特点正确调整模型的复杂度。
bagging和boosting
- bagging通过采样生成多个不同的训练子集,训练生成多个分类器,然后对分类器求平均,目的是降低模型的方差。bagging和random类的并行算法都是这种效果。
- boosting则是迭代算法,每一轮迭代对上一轮迭代难以解决的问题进行处理,随迭代进行误差越来越小,不断降低模型的偏差。
解决偏差-方差问题
- 无法避免偏差与方差,只能减弱影响。
针对偏差:避免欠拟合
- 寻找更好更有代表性的特征
- 用更多的特征(增加模型复杂度)
针对方差:避免过拟合
- 增大数据集,减少数据扰动的影响
- 减少数据维度,降低模型复杂度
- 正则化方法
- 交叉验证。K折交叉验证中K越小方差越小,因为k小时每个子训练集数据越多,就越难发生过拟合。意思是交叉验证时分的子数据集越多偏差就越小,方差越大,此时是过拟合,原因是因为子数据集越多则每个数据集中数据量越少,可能导致相对而言模型复杂度越高。
标签:误差,泛化,偏差,模型,方差,拟合 来源: https://www.cnblogs.com/chkplusplus/p/16137479.html