分类模型的误差分为两种:训练误差(training error)和泛化误差(generalization error)。
训练误差也称为再代入误差(resubstitution error)或表现误差(apparent error),**是在训练记录上误分类样本比例。
而泛化误差是模型在未知记录上的期望误差。** ==定义一定要明确==
一个好的分类模型不仅要能够很好的拟合训练数据而且对未知样本也要能准确的分类。
- 模型拟合不足:当决策树很小时,训练和检验误差都很大,这种情况称作模型不足(model underfitting),出现拟合不足的的原因是模型尚未学习到数据的真实结构,因此,模型在训练集和检验集上的性能都很差。
- 模型过分拟合: 随着决策树中结点树的增加,模型的训练误差和检验误差都会减小,而随着树的规模变的过大,即使训练误差在继续降低,但是检验误差会增大。
就像我们的学习一样,一开始懂得既不多又不深,后来到了高中我们懂了很多,也接触到了一部分较高深的知识,但是等我们上了大学,虽然我们懂的东西更专业,更深入,但也更加狭窄,很多我们应该知道的生物、化学、地理等知识都忘记了。(这个比喻有些不恰当,意思是,随着不断的学习更多的样本并且想要降低训练测试的误差,不可避免的丧失了广泛性,变得对训练集有些针对性了,再想将这个模型推给训练集之外的测试集等,那么它就不太认识了,因为它平常接触的都是训练集)
深入分析为什么会过分拟合?
- 噪声:
因为如果一棵复杂的决策树的训练误差为 0 时,它的检验误差可能会很大,因为该树可能包含这样的结点,它们偶然地拟合训练数据中某些噪声。但这些结点降低了决策树的性能,因为它们不能很好的泛化到检验样本。
为什么受噪声影响?
从上图最右边可以看出,它是过拟合的状态,它产生的原因是在分类的过程中有两个样本数据存在噪声(即图中在圆圈包围内的红叉),如果我们要让检验误差最小,噪声的影响使得决策树模型变得只认识训练数据了,就像一拳超人里的大菠萝开始就遇到了埼玉,这样的结果就是他不知道地球人是有头发的。即训练集噪声影响使得它变得特殊,并且我们还要求模型要很好的拟合它,导致模型不能由它来举一反三推导其他检验集了。
- 缺乏代表性样本
还是说埼玉君,因为他没有头发,又很强,很没有代表性,大菠萝会不会觉得地球人都是没有头发而且很强的人,那他如果到地狱的话,会对其他的人说,地球人都是很强且没有头发的,那么按照他的这个模型对我们分类的话,就没人是地球人了,那就错了。因为埼玉君,他对大多数地球人来讲,很没有代表性啊!
3. 多重比较算法的问题
如果不知道生日悖论可以再去了解一下。算法看似可以从多重比较中选到一个好的分割点,但是这个分割点表现并不一定有那么好,它会把噪声加入,即加入一些欺骗性的结点,从而导致过分拟合。
泛化误差估计——如何确定正确的复杂度(能产生低泛化误差模型的复杂度)
问题:在建立模型的过程中,学习算法只能访问训练数据集,对检验数据集,sorry,不在工作范围内,未知,那只能估计了。
估计误差有助于学习算法进行模型选择(model selection),即找到一种具有合适复杂度、不易发生过分拟合的模型,模型一旦建立,就可以应用到检验数据集中,预测未知的类标号。
- 使用再代入估计
前提: 假设训练数据集可以很好地代表整体数据,因而,可以使用训练误差(这时候也叫再代入误差)提供对泛化误差的乐观估计(重点要考,下面还有悲观估计呢),但是,训练误差通常是泛化误差的一种很差的估计。
例4.1 考虑图4-27中的二叉决策树,假设两棵决策树都由相同的训练数据产生,并且都根据每个叶结点多数类做出分类决策。注意,左边的树TL复杂一些,它扩展了右边决策树TR的某些叶结点。左决策树的训练误差是e(TL)=4/24=0.167,而右决策树的训练误差是e(TR)=6/24=0.25。根据再代入估计,左决策树要优于右决策树。
- 结合模型复杂度
如前所述,模型越是复杂,出现过分拟合的几率就越高,因此,我们更喜欢采用较为简单的模型,与众所周知的奥卡姆剃刀原理或节俭原则。给定两个具有相同泛化误差的模型,较简单的模型比较复杂的模型更可取。
悲观误差估计: 第一种方法明确使用训练误差与模型复杂度罚项的和计算泛化误差,结果泛化误差可以看做模型的悲观误差估计,例如,设n(t)是结点t分类的训练数据记录,e(t)是被误分类的记录数。决策树T的悲观误差估计eg(T)可以用下式计算:
其中, k 是决策树的叶结点数, e(T)决策树的总训练误差,Nt是训练记录数,Ω(ti)是每个结点ti对应的罚项。有几个结点(下图方框) 总罚项 = 罚项 * 结点数。
考虑上图,如果罚项等于0.5,左边的决策树的悲观误差估计为:
右边的决策树的悲观误差估计为:
这样,左边的决策树比右边的决策树具有更好的悲观误差估计,对二叉树来说,0.5 的罚项意味着只要至少能够改善一个训练记录的分类,结点就应当扩展,因为扩展一个结点等价于总误差增加 0.5 ,代价比犯一个训练错误小。
最小描述长度原则(minimum description length, MDL)感觉有些难
扩展阅读:http://blog.sciencenet.cn/blog-3389532-1144952.html
在给定表达集合的前提下,产生最大压缩效果而又不丢失信息或知识的表达式最好的,如《三字经》,言简意赅。
为了解释该原则,考虑下图的例子,在该例中, A 和 B 都是已知属性 x 值的给定记录集。另外,A知道每个记录的确切类标号,而 B 却不知道这些信息, B 可以通过要求 A 顺序传送类标号而获得每个记录的分类。一条消息需要 Θ(n)比特的信息,其中 n 是记录数。
另一种可能是,A决定建立一个分类模型,概括x和y之间的关系。在传送给B前,模型用压缩形式编码。如果模型的准确率是100%,那么传输的代价就等于模型编码的代价。否则,A还必须**传输哪些记录被模型错误分类信息。**传输的总代价是:其中,等式右边的第一项是模型编码的开销,而第二项是五分类记录编码的开销。根据MDL原则,我们寻找最小化开销函数的模型。
考虑图4-28中的例子。在该例子中,A和B都是已知属性x值的给定记录集。另外,A知道每个记录的确切类标号,而B却不知道这些信息。B可以通过要求A顺序传送类标号而获得每个记录的分类。一条消息需要θ(n)比特的信息,其中n是记录的总数。
模型编码代价包括内结点和叶结点两部分。
为每个内部结点编码的代价: 【log 2 (16) 】 #16 个属性
为每个叶结点编码的代价: 【log 2 (3) 】 = 2 #3个类
为每个错误编码的代价: log2 n # n 是训练实例总数
决策树(a)总代价: 2 × 4 + 3 × 2 + 7 × log2 n = 14 + 7 log2 n
决策树(b)总代价: 4 × 4 + 5 × 2 + 4 × log2 n = 26 + 4 log2 n
因此当 n > 16 是决策树(a)更好,当 n < 16 时决策树 (b)更好。当 n =16 时,二者一样、
- 估计统计上界
泛化误差也可以用训练误差的统计修正来估计,因为泛化误差倾向于比训练误差大,所以统计修正通常是计算训练误差的上界,考虑到达决策树一个特定叶结点的训练记录数。 - 使用确认集
在该方法中,不是用训练集估计泛化误差,而是把原始的训练数据集分为两个较小的子集,一个子集用于训练,而另一个称作确认集,用于估计泛化误差,该方法常常用于通过参数控制获得具有不同复杂度模型的分类技术,通过调整学习算法中的参数(如决策树中的剪枝程度)较常见,直到学习算法产生的模型在确认集上达到最低的错误率,可以估计最佳模型的复杂度。但是用于训练的样本数减少了。
处理决策树归纳中的过分拟合
- 先剪枝(提前终止规则),树增长算法在产生完全拟合整个训练数据集的完全增长的决策树之前就停止决策树的生长。为了做到这一点,需要采用更具限制性的结束条件。
优点:避免产生过分拟合训练数据的过于复杂的子树。
缺点:很难提前为终止选取正确的阈值。阈值太高会导致拟合不足的模型,而阈值太低就不能充分地解决过分拟合的问题。
- 后剪枝: 初始决策树按照最大规模生长,然后进行剪枝的步骤,按照自底向上修剪完全增长的决策树。修剪有两种做法:(1) 用新的叶结点替换子树,该叶结点的类标号由子树下记录中的多数类确定:(2)用子树中最常使用的分支替代子树,当模型不能再改进时终止剪枝步骤。
优点:与先剪枝相比,后剪枝技术倾向于产生更好的结果。因为不像先剪枝,后剪枝是根据完全增长的决策树作出的剪枝决策,先剪枝可能过早终止决策树的生长。
缺点:当子树被剪掉后,之前,生长完全决策树的额外的计算就被浪费了。
评估分类器的性能
测试模型在检验集上的性能是有用的,因为这样的测量给出模型泛化误差的无偏估计,在检验集上计算出的准确率或错误率可以用来比较不同分类器在相同领域的性能,为了达到这一点,检验记录的类标号必须是已知的。
常见评估分类器性能的方法:
- 保持方法-Holdout方法:将被标记的原始数据划分成两个不相交的集合,分别称为训练集和检验集。在训练集中归纳分类模型,在检验集上评估模型的性能。,分类器的准确率根据模型在检验集上的准确率估计。
局限性:一、用于训练的被标记样本较少,因为要保留一部分用于检验。 二、模型可能高度依赖于训练集和检验集的构成,一方面,训练集越小,模型的方差越大,另一方面,如果训练集太大,根据用较小的检验集估计的准确率又不太可靠。这样的估计具有很宽的置信区间,最终训练集和检验集不再是互相独立的了。
- 随机二次抽样: 可以多次重复保持方法来改进对分类器性能的估计,这种方法称为二次随机抽样(random subsampling),即将取 i 次迭代的模型准确率取平均值。
局限性:随机二次抽样也会遇到与保持方法同样的问题,并且,由于它没有控制到每个记录用于训练和检验的次数,因此,有些用于训练的记录使用的频率可能比其他记录高得多。
- 交叉验证 : 在该方法中,每个记录用于训练的次数相同,并且恰好检验一次。为了解释该方法,假设把数据分为相同大小的两个子集,首先,我们选择一个子集作为训练集,而另一个作为检验集,然后交换两个集合的角色。总误差通过对两次运行的误差求和得到。 k 折交叉验证是对该方法的推广,把数据分为大小相同的 k 份,在每次运行时,选择其中一份作为检验集,其他作为训练集,重复 k 次,使得每份数据都用于检验恰好一次。总误差是 k 次运行的误差之和。
优点:使用了尽可能多的训练记录,此外,检验集之间是互斥的,并且有效地覆盖了整个数据集;
缺点:整个过程重复 N 次,计算上开销很大,此外,当每个检验集只留下一个记录时,性能估计度量的方差偏高。
- 自助法: 上面的方法都是假设训练记录采用不放回抽样,因此,训练集和检验集都不包含重复记录,在自助(bootstrap)方法中,训练记录采用有放回抽样。即已经选作训练的记录将放回原来的记录集中,使得它等几率地被重新抽取。没有抽中的记录就成为检验集的一部分,将训练集建立的模型应用到检验集上。
比较分类器的方法
比较不同分类器的性能,以确定在给定的数据集上哪个分类器效果更好是有用的,但是,依据数据集的大小,两个分类器准确率上的差异可能不是统计显著的。
两个关键问题: (1)尽管 MA 比 MB高,但是它是在较小的检验集上检验的, MA 的准确率的置信程度有多高? (1)可以把准确率的差解释无检验集的复合的变差吗?
遇到实际问题再详细总结。