模型评估与选择
经验误差与过拟合
(1)错误率:分类错误的样本数占样本总数的比例
精度:1\(-\)错误率
(2)误差:学习器的实际输出与样本真实值之间的差异
误差有训练误差和泛化误差两种。训练误差指的是学习器在训练集上的误差,也称为经验误差;泛化误差指的是在新样本上的误差。
(但是,对于训练样本,其分类精度即使是100%,也并不一定代表这个学习器就很好。我们希望得到的是泛化误差小的学习器)
(3)过拟合:承接第2点括号内的内容,我们希望得到的学习器,是在新样本上表现很好的学习器,也就是泛化误差尽可能小。为此,应该尽量从训练集上尽可能学出适用于所有潜在样本的普遍规律。然而,学习器把训练样本学得太好了的时候,往往可能会将训练样本自身的特点当作所有潜在样本都会有的性质,这就是过拟合现象。
而与过拟合现象对应的,是欠拟合现象。欠拟合现象指的是学习器对训练样本的一般性质还没学好。
例如,对于一个判断是否是树叶的学习器,如果训练集中的树叶的边缘大多呈锯齿状,那么学习器很可能将边缘不是锯齿状的树叶错当成不是树叶,这就是过拟合的表现,因为学习器误以为所有的树叶都有锯齿边缘。另一方面,如果学习器对于训练集学习底不够好,那么它很可能将绿树当作树叶,因为树叶是绿的,树也是绿色的,学习器并没有进一步的学得树叶的特征,这就是欠拟合现象。
(但是有必要指出,欠拟合可以通过改进学习方法来克服;而过拟合,则无法避免,只能说是缓解)
选取训练集和测试集的几种方法
引言: 对于学习器的泛化误差的评估,可以通过实验来测试。那么,除了训练集之外,还需要一个测试集,训练完成后,需要用测试集来测试学习器对于新样本的判别能力,然后以测试集上的误差作为泛化误差的近似。但是会面临一个问题,那就是我们有的只是一个数据集D=\({(x_1,y_1),(x_2,y_2)\cdots(x_m,y_m) }\)。因此需要用一些技巧来对数据集进行一个划分,得到一个训练集S和一个测试集T。
1.留出法:直接将数据集D划分为两个互斥的集合,其中一个作为训练集S,另一个作为测试集T,D,S,T三者应满足的关系是:
\(\begin{cases} D=S\cup T\\S\cap T=\varnothing\end{cases}\)
在训练集S上训练出模型后,用T来评估其测试误差,作为对泛化误差的估计
2.交叉验证法:先将数据集D划分为k个大小相似的互斥子集,即\(D=D_1\cup D_1\cup \cdots \cup D_k,\)对i\(\ne\)j 有\(D_i\cap D_J=\varnothing\) 每次用k-1个子集的并集作为训练集,余下的那个子集作为测试集,这样就可以获得k组训练/测试集,从而可以进行k次训练和测试,最终返回的是这k个测试结果的均值。
3.自助法,又称Bootstrap法:直接以自助采样法为基础,给定包含m个样本的数据集D,我们对它进行采样产生数据集D‘,具体的做法是:每次随机从D中挑选一个样本,将其拷贝放入D’,然后再将该样本放回初始数据集D中,使得该样本在下次采样仍能被采到;这个过程重复m次后,我们就得到了包含m个样本的数据集D‘。
显然,会有一部分样本会在D'中多次出现,而也有一部分始终不出现。而一个样本在一次采样中不被采到的概率时\(1-\frac{1}{m}\) ,m次采样始终不被采到的概率就是\((1-\frac{1}{m})^m\)。
\[\lim_{m\to\infty}(1-\frac{1}{m})^m=\frac{1}{e}=0.368\]
也就是说,当数据集D足够大的时候,其中约有36.8%的样本未出现在D'中。于是我们可将D'用作训练集,D-D'用作测试集;这样,实际评估的模型与期望评估的模型都使用m个训练样本,而我们仍有数据总量约1/3的没在训练集中出现的数据作为测试集。
关于调参
机器学习通常涉及两类参数,一类时算法参数,这一类参数数目常在10以内;另一类是模型参数,数量一般较大。 不论是算法参数还是模型参数,均是产生多个模型之后基于某种评估方法来进行选择;而两种不相同的地方在于,算法参数通常是由人工设定多个参数候选值后产生模型,而模型参数则是通过学习来产生多个候选模型。
参数的配置不同,学得的模型性能往往由差异,因此在进行模型评估与选择时候,除了要对适用学习算法进行选择,还要对学习算法参数进行设定,这就是调参。
个人小结
本次的整理主要是基于对一个学习算法得出的模型好坏的判断准则,后续还会整理更多相关内容。除此之外,就是学会了一些利用已有数据集来划分训练集和测试集的方法,这和数理统计的抽样方法有点类似,比如在留出法和交叉验证法中,选出的训练集一定要考虑到样本的代表性,因此要以分层抽样的方法来减小因为数据类别分布差异引入的误差;另外就是都要通过多次实验求平均值的方法来进一步减小误差。总而言之,这一部分和数理统计靠的很近。