模型评估与选择

1、经验误差与过拟合

错误率:分类错误的样本数占样本总体的比例。即如果m个赝本中存在a个样本分类错误,则错误率为E=a/m;精度=1-错误率=1-a/m

误差:学习器的实际预测输出与样本的真实输出之间的差异。学习器在训练集上的误差称为“训练误差”或“经验误差”,在新样本上的误差称为“泛化误差”。

过拟合(overfitting):学习器把训练样本学得太好了,很可能已经把·训练样本自身的一些特点当作了所有潜在样本都会具有的一些性质,这样会导致泛化性能下降。

欠拟合(underfitting):指对训练样本的一般性质尚未学好。

问题:有很多种因素可能导致过拟合,其中最常见的情况是由于学习能力过于强大,以至于把训练样本所包含的不太一般的特性都学到了,而欠拟合则通常是由学习能力低下而造成的。欠拟合比较容易克服,例如在决策树学习中扩展分支、在神经网络学习中增加训练轮数等,而过拟合则会比较麻烦,过拟合是机器学习面临的关键障碍,各类机器学习算法都必然带有针对过拟合的措施;然而必须认识到,过拟合是无法完全避免的。我们所能做的就是“缓解”,或者说减小其风险。

2、评估方法

通常,我们可通过实验测试来对学习器的泛化误差进行评估并进而做出选择。为此,需使用一个“测试集”来测试学习期对新样本的判别能力,然后以“测试集”上的测试误差作为泛化误差的近似。但需注意的是,测试集应该尽可能与训练集互斥,即测试样本尽量不在训练集中出现、未在训练过程中使用过。

2.1 留出法

它是直接将数据集D划分为两个互斥的集合,其中一个集合作为训练集S,另一个作为测试集T,即D=ST,ST=。在S上训练出模型后,用T来评估其测试误差,作为对泛化误差的估计。

需要注意的是,训练/测试集的划分要尽可能保持数据分布的一致性,避免因数据划分过程引入额外的偏差而对最终结果产生影响。如果从采样的角度的来看数据集的划分过程,则保留类别比例的采样方式称为“分层采样”。单次使用留出法得到的估计结果往往不够稳定可靠,在使用留出法时,一般采用随机若干次随机划分、重复进行实验评估后取平均值作为留出法的评估结果。常见的做法是将大约2/3~4/5的样本用于训练,剩余样本用于测试。

2.2 交叉验证法

‘交叉验证法’(cross validation)先将数据集D划分为k个大小相似的互斥子集,即D=...,=(ij).每个子集都尽可能保持数据分布的一致性,即从D中通过分层采样得到。然后每次使用k-1个子集的并集作为训练集,余下的那个子集作为测试集;这样就k组训练/测试集,从而可以进行k次训练和测试,最终返回的是这k个测试结果的均值。显然,交叉验证法评估结果的稳定性和保真性在很大程度上取决于k的取值,为了强调这一点,通常把交叉验证法称为k折交叉验证。

与留出法相似,将数据集D划分为k个子集同样存在多种划分方式。为了减少因样本划分不同而引入的差别,k折交叉验证通常要随机使用不同的划分重复p次,最终的评估结果是这p次k折交叉验证结果的均值。

假定数据集D中包含m个样本,若令k=m,则得到了交叉验证法的一个特例:留一法不受随机样本划分方式的影响,因为m个样本只有唯一的方式进行为m个子集-------每个子集包含一个样本。

2.3 自助法

我们想评估的是用D训练出的模型,但在留出法和交叉验证法中,由于保留了一部分样本用于测试,因此实际评估的模型所使用的训练集比D小,这必然会引入一些因训练样本规模不同而导致的估计偏差。留一法受训练样本规模变化的影响较小,但计算复杂度又太高。有没有什么办法可以减少训练样本规模不同造成的影响,同时还能比较高效地进行实验估计呢?

自助法是一个比较好的解决方案,它直接以自主采样法为基础。它的过程是这样的:给定包含m个样本的数据集D,我们对它进行采样产生数据集D1:每次随机从D中挑选一个样本,将其拷贝放入D1,然后再将该样本放回初始数据集D中,使得该样本在下次采样时仍可能被采到;这个过程重复m次后,我们得到了包含m个样本的数据集D1,这就是自助采样的结果。可以做一个比较简单的估计,样本在m次采样中始终不被采到的概率是(1-1/m)^m,取极限可得到0.368,即通过自助采样,初始数据集中有约36.8%的样本未出现在采样数据集D1中。于是,我们可将D1用作训练集,D\D1(\表示集合减法)用作测试集;这样,实际评估的模型与期望评估的模型m个训练样本,而我们仍有数据总量约1/3的、没在训练集中出现的样本用于测试。这样的测试结果,亦称‘包外估计’。

自助法在数据集较小、难以有效划分训练/测试集时有用;此外,自助法能从初始数据集中产生多个不同的训练集,这对集成学习等方法有很大的好处。然而,自助法在产生的数据集改变了初始数据集的分布,这回引入估计偏差,因此,在初始数据量足够时,留出法和交叉验证法更常用一些。

你可能感兴趣的:(模型评估与选择)