前言
大部分都是按照周志华老师的西瓜书来敲的,也记录下自己学习的步伐,加深自己对这部分知识的理解,提高语言组织能力。
一 经验误差与过拟合
通常我们把分类错误的样本占全部样本的比例称为“错误率”,即如果m个样本中有a个样本是被错误分类的,那错误率就是E = a/m;相应的,我们把1-a/m称为精度。更一般来说,我们把学习器的实际预测输出与样本的真实输出之间的差异称为“误差”,学习器在训练数据集上的误差称为“训练误差”或“经验误差”,在新样本上的误差称为“泛化误差”。
显然,我们需要的就是泛化误差小的学习器,但我们已知的的数据只有训练数据集,无法得知新样本,所以我们只能从训练集上学习。我们应该从训练样本中尽可能学出适用于所有潜在样本的“普遍规律”,这样才能在遇到新样本时做出正确的判别。然而,当学习器把训练样本学得“太好了”,很有可能把自身的一些特点也当作了所有潜在样本也具有的性质,这样就会导致泛化性能下降,这种现象就是我们所说的“过拟合”。与过拟合相对的就是“欠拟合”。
过拟合出现的最常见的情况是学习能力过于强大,以至于把训练样本所包含的不太一般的特性都学到了。过拟合是无法彻底避免的。
欠拟合通常是由学习能力低下造成的。欠拟合很容易解决,例如:决策树学习中扩展分支、神经网络学习中增加训练轮数等。
举一个栗子:一颗树上有很多绿色的带锯齿树叶,我们用树叶作为训练样本进行拟合。学习器过拟合就会以为必须带锯齿的才是树叶,没有锯齿的树叶就不是树叶。欠拟合就会以为只要是绿色的就是树叶,这就是学习器学习能力低下,只学到一部分特征。
二 评估方法
对于一个数据集,我们有很多种学习算法选择,甚至对同一个学习算法使用不同的参数配置时,也会产生不同的模型,那么我们该如何选择哪一个学习算法,哪一种参数配置呢?
通常,我们可通过实验测试来对学习器的泛化误差进行评估并进而选择。因此,需使用一个“测试集”来测试学习器对新样本的判别能力,然后以“测试误差”作为泛化误差的近似。
测试集要和训练集互斥,为什么呢?就好比老师出十道题给同学们练习,然后再用同样的十道题给同学们考试,那这样会比出一个高下吗,可能同学只会这十道题,你再出其他题目他就不会了。所以测试集尽量不要出现在训练集中。
那我们如何分出训练集和测试集呢,有下面几种做法。
1.留出法
见名知意,留出法就是