误差与过拟合
误差
假设m个样本中有a个样本分类错误
- 错误率(error rate):分类错误的样本数占样本总数的比例,E=a/m
- 精度(accuracy):分类正确的样本数占样本总数的比例,1-a/m
- 精度=1-错误率
- 误差(error):学习器的实际预测输出与样本的真实输出之间的差异
- 学习器在训练集上的误差称为训练误差(training error)/经验误差(empirical error)
- 学习器在新样本上的误差称为泛化误差(generalization error)
- 机器学习的目标是得到泛化误差小的学习器,但是实际能做的是努力使经验误差最小化
过拟合与欠拟合
当学习器把训练样本学得太好的时候,很可能已经把训练样本自身的一些特点当作了所有潜在样本都会具有的一般性质,这样就会导致泛化性能下降。这种现象在机器学习中称为过拟合(overfitting)。与过拟合相对的是欠拟合(underfitting),这是指对训练样本的一般性质尚未学好。
- 过拟合是机器学习中的关键障碍
评估方法
通常,通过实验测试来对学习器的泛化误差进行评估。为此,需使用一个测试集(testing set)来测试学习器对新样本的判别能力,然后以测试集上的测试误差(testing error)作为泛化误差的近似。
- 通常我们假设测试样本也是从样本真实分布中独立同分布采样而得
- 测试集应该尽可能与训练集互斥
- 验证集(validation set)指用于评估模型的不包含在训练样本与测试样本的其他真实数据
评估方法即通过适当的处理,从包含m个样例的数据集D中产生出训练集S和测试集T
留出法(hold-out)
留出法(hold-out)直接将数据集D划分为两个互斥的集合,其中一个集合作为训练集S,另一个作为测试集T,即 D=SUT,S∩T=。在S上训练出模型后,用T来评估其测试误差,作为对泛化误差的估计。
- 划分过程中需要采取均匀的分层取样(stratified sampling)
- 一般单次留出法往往不可靠,需要反复多次进行留出法产生不同的训练集与测试集,对评估结果取均值
- 常见的分法是训练集占总数据集的2/3~4/5
交叉验证法(cross validation)
交叉验证法(cross validation)先将数据集D划分为k个大小相似的互斥子集,即 D=D1 U D2 U … U Dn,Di ∩ Dj = (i≠j)。每个子集都尽可能保持数据分布的一致性,即通过分层采样得到。每次用 k-1 个子集的并集作为训练集,余下的那个子集作为测试集。这样就可获得 k 组训练测试集,从而可进行 k 次训练和测试,最终返回的是这 k 个测试结果的均值。
- 通常把交叉验证法称为k****折交叉验证(k-fold cross validation)。k最常用的取值是10,此时称为10折交叉验证
- k折交叉验证通常也要随机使用不同的划分重复p次,最终会得到p×k次结果并取均值