1、mlchap03第3章决策树学习决策树学习是应用最广的归纳推理算法之一。它是一种逼近离散函数的方法,且对噪声数据有很好的鲁棒性,能够学习析取表达式。本章描述了一系列决策树学习算法,包括象ID3、ASSISTANT和C4.5这样广为应用的算法。这些决策树学习方法搜索完整表示的假设空间,从而避免了受限假设空间的不足。决策树学习的归纳偏置是优先选择较小的树。3.1 简介决策树学习是一种逼近离散值目标函数的方法,在这种方法中学习到的函数被表示为一棵决策树。学习得到的决策树也能再被表示为多个if-then的规则,以提高可读性。这种学习算法是最流行的归纳推理算法之一,已经被成功地应用到从学习医疗诊断到学习
2、评估贷款申请的信用风险的广阔领域。3.2 决策树表示法决策树通过把实例从根结点排列(sort)到某个叶子结点来分类实例,叶子结点即为实例所属的分类。树上的每一个结点指定了对实例的某个属性(attribute)的测试,并且该结点的每一个后继分支对应于该属性的一个可能值。分类实例的方法是从这棵树的根结点开始,测试这个结点指定的属性,然后按照给定实例的该属性值对应的树枝向下移动。这个过程再在以新结点为根的子树上重复。插图原书页码: 53图3-1 概念PlayTennis的决策树分类一个样例的方法是,将其沿根结点排列到合适的叶子结点,然后返回与这个叶子结点关联的分类(本例中为Yes或No)。这棵决策树
3、根据天气分类“星期六上午是否适合打网球”。图3-1画出了一棵典型的学习到的决策树。这棵决策树根据天气情况分类“星期六上午是否适合打网球”。例如,下面的实例: 将被沿着这棵决策树的最左分支向下排列,因而被评定为反例(也就是这棵树预测这个实例PlayTennis=No)。这棵树以及表3-2中用来演示ID3学习算法的例子摘自(Quinlan 1986)。通常决策树代表实例属性值约束的合取(conjunction)的析取式(disjunction)。从树根到树叶的每一条路径对应一组属性测试的合取,树本身对应这些合取的析取。例如,图3-1表示的决策树对应于以下表达式: (Outlook=Sunny Hu
4、midity=Normal) (Outlook=Overcast) (Outlook=Rain Wind=Weak)3.3 决策树学习的适用问题尽管已经开发的种种决策树学习算法有这样或那样不太一致的能力和要求,通常决策树学习最适合具有以下特征的问题: 实例是由“属性-值”对(pair)表示的。实例是用一系列固定的属性(例如,Temperature)和它们的值(例如,Hot)来描述的。最简单的决策树学习中,每一个属性取少数的分离的值(例如,Hot、Mild、Cold)。然而,扩展的算法(在3.7.2节中讨论)也允许处理值域为实数的属性(例如,数字表示的温度)。 目标函数具有离散的输出值。图3-1
5、的决策树给每个实例赋予一个布尔型的分类(例如,yes或no)。决策树方法很容易扩展到学习有两个以上输出值的函数。一种更强有力的扩展算法允许学习具有实数值输出的函数,尽管决策树在这种情况下的应用不太常见。 可能需要析取的描述(disjunctive description)。如上面指出的,决策树很自然地代表了析取表达式。 训练数据可以包含错误。决策树学习对错误有很好的鲁棒性,无论是训练样例所属的分类错误还是描述这些样例的属性值错误。 训练数据可以包含缺少属性值的实例。决策树学习甚至可以在有未知属性值的训练样例中使用(例如,仅有一部分训练样例知道当天的湿度)。这个问题将在第3.7.4小节中讨论。已
6、经发现很多实际的问题符合这些特征,所以决策树学习已经被应用到很多问题中。例如根据疾病分类患者;根据起因分类设备故障;根据拖欠支付的可能性分类贷款申请。对于这些问题,核心任务都是要把样例分类到各可能的离散值对应的类别(category)中,因此经常被称为分类问题(Classification Problem)。这一章的其余部分是这样安排的。3.4节给出学习决策树的基本ID3算法并演示它的具体操作。3.5节分析使用这种学习算法进行的假设空间搜索,并与第2章的算法进行了比较。3.6节刻画了决策树学习算法的归纳偏置,并更一般化的探索了一种被称为奥坎姆剃刀的归纳偏置,该偏置优先选择最简单的假设。3.7节
7、讨论了训练数据的过度拟合(overfitting),以及解决这种问题的策略,比如规则后修剪(post-pruning)。这一节还讨论了一些更深入的话题,比如将算法扩展以适应实数值属性、带有未观测到属性的训练数据、以及有不同代价的属性。3.4 基本的决策树学习算法大多数已开发的决策树学习算法是一种核心算法的变体。该算法采用自顶向下的贪婪搜索遍历可能的决策树空间。这种方法是ID3算法(Quinlan 1986)和后继的C4.5算法(Quinlan 1993)的基础,也是这里讨论的重点。这一节将给出决策树学习的基本算法,大致相当于ID3算法。在3.7节我们考虑该基本算法的一些扩展,包括被合并到C4.
8、5的扩展和其他一些较新的决策树学习算法。基本的ID3算法通过自顶向下构造决策树来进行学习。构造过程是从“哪一个属性将在树的根结点被测试?”这个问题开始的。为了回答这个问题,使用统计测试来确定每一个实例属性单独分类训练样例的能力。分类能力最好的属性被选作树的根结点的测试。然后为根结点属性的每个可能值产生一个分支,并把训练样例排列到适当的分支(也就是,样例的该属性值对应的分支)之下。然后重复整个过程,用每个分支结点关联的训练样例来选取在该点被测试的最佳属性。这形成了对合格决策树的贪婪搜索(greedy search),也就是算法从不回溯重新考虑以前的选择。表3-1描述了该算法的一个简化版本专门用来
9、学习布尔值函数(即概念学习)。表3-1 专用于学习布尔函数的ID3算法概要ID3是一种自顶向下增长树的贪婪算法,在每个结点选取能最好地分类样例的属性。继续这个过程直到这棵树能完美分类训练样例,或所有的属性都使用过了。ID3(Examples,Target_attribute,Attributes)Examples即训练样例集。Target_attribute是这棵树要预测的目标属性。Attributes是除目标属性外供学习到的决策树测试的属性列表。返回能正确分类给定Examples的决策树。 创建树的Root结点 如果Examples都为正,那么返回label =+ 的单结点树Root 如果E
10、xamples都为反,那么返回label =- 的单结点树Root 如果Attributes为空,那么返回单结点树Root,label=Examples中最普遍的Target_attribute值 否则 AAttributes中分类Examples能力最好*的属性 Root的决策属性A 对于A的每个可能值vi 在Root下加一个新的分支对应测试A= vi 令为Examples中满足A属性值为vi的子集 如果为空 在这个新分支下加一个叶子结点,结点的label=Examples中最普遍的Target_attribute值 否则在这个新分支下加一个子树ID3(, Target_attribute,
11、 Attributes-A) 结束 返回Root*根据公式3.4的定义,具有最高信息增益(information gain)的属性是最好的属性。3.4.1 哪个属性是最佳的分类属性?ID3算法的核心问题是选取在树的每个结点要测试的属性。我们希望选择的是最有助于分类实例的属性。那么衡量属性价值的一个好的定量标准是什么呢?这里将定义一个统计属性,称为“信息增益(information gain)”,用来衡量给定的属性区分训练样例的能力。ID3算法在增长树的每一步使用这个信息增益标准从候选属性中选择属性。3.4.1.1 用熵度量样例的均一性为了精确地定义信息增益,我们先定义信息论中广泛使用的一个度量
12、标准,称为熵(entropy),它刻画了任意样例集的纯度(purity)。给定包含关于某个目标概念的正反样例的样例集S,那么S相对这个布尔型分类的熵为:Entropy(S) -plog2p-plog2p (3.1)其中p是在S中正例的比例,p是在S中负例的比例。在有关熵的所有计算中我们定义0log0为0。举例说明,假设S是一个关于某布尔概念的有14个样例的集合,它包括9个正例和5个反例(我们采用记号9+,5-来概括这样的数据样例)。那么S相对于这个布尔分类的熵(Entropy)为: =0.940 (3.2)注意,如果S的所有成员属于同一类,那么S的熵为0。例如,如果所有的成员是正的(p=1),
13、那么p就是0,于是Entropy(S) =。另外,当集合中正反样例的数量相等时熵为1。如果集合中正反例的数量不等时,熵介于0和1之间。图3-2显示了关于某布尔分类的熵函数随着p从0到1变化的曲线。插图原书页码: 57图3-2 关于某布尔分类的的熵函数图中画出了随着正例所占比例p从0到1,熵函数变化的曲线。信息论中熵的一种解释是,熵确定了要编码集合S中任意成员(即以均匀的概率随机抽出的一个成员)的分类所需要的最少二进制位数。举例来说,如果是1,接收者知道抽出的样例必为正,所以不必发任何消息,此时的熵为0。另一方面,如果是0.5,必须用一个二进制位来说明抽出的样例是正还是负。如果是0.8,那么对所
14、需的消息编码方法是赋给正例集合较短的编码,可能性较小的反例集合较长的编码,平均每条消息的编码少于1个二进制位。至此我们讨论了目标分类是布尔型的情况下的熵。更一般的,如果目标属性具有c个不同的值,那么S相对于c个状态(c-wise)的分类的熵定义为: (3.3)其中pi是S中属于类别i的比例。请注意对数的底数仍然为2,原因是熵是以二进制位的个数来度量编码长度的。同时注意如果目标属性具有c个可能值,那么熵最大可能到log2c。3.4.1.2 用信息增益度量期望的熵降低已经有了熵作为衡量训练样例集合纯度的标准,现在可以定义属性分类训练数据的效力的度量标准。这个标准被称为“信息增益(informati
15、on gain)”。简单的说,一个属性的信息增益就是由于使用这个属性分割样例而导致的期望熵降低。更精确地讲,一个属性A相对样例集合S的信息增益Gain(S,A)被定义为 (3.4)其中 Values(A)是属性A所有可能值的集合,是S中属性A的值为v的子集(也就是, =sS|A(s)=v)。请注意,等式(3.4)的第一项就是原来集合S的熵,第二项是用A分类S后熵的期望值。这个第二项描述的期望熵就是每个子集的熵的加权和,权值为属于Sv的样例占原始样例S的比例。所以Gain(S,A)是由于知道属性A的值而导致的期望熵减少。换句话来讲,Gain(S,A)是由于给定属性A的值而得到的关于目标函数值的信
16、息。当对S的一个任意成员的目标值编码时,Gain(S,A)的值是在知道属性A的值后可以节省的二进制位数。例如,假定S是一套有关天气的训练样例,描述它的属性包括可能是具有Weak和Strong两个值的Wind。像前面一样,假定S包含14个样例,9+,5-。在这14个样例中,假定正例中的6个和反例中的2个有Wind =Weak,其他的有Wind=Strong。由于按照属性Wind分类14个样例得到的信息增益可以计算如下。信息增益正是ID3算法增长树的每一步中选取最佳属性的度量标准。图3-3概述了如何使用信息增益来评估属性的分类能力。在这个图中,计算了两个不同属性:湿度(Humidity)和风力(W
17、ind)的信息增益,以便决定对于分类表3-2的训练样例哪一个属性更好。插图原书页码: 59Which attribute is the best classifier? 哪一个属性是最佳的分类属性?图3-3 计算属性的信息增益相对于目标分类(即星期六上午是否适合打网球),Humidity比Wind有更大的信息增益。这里,E代表熵,S代表原始样例集合。已知初始集合S有9个正例和5个负例,即9+,5-。用Humidity分类这些样例产生了子集3+,4-(Humidity=High)和6+,1-(Humidity=Normal)。这种分类的信息增益为0.151,而对于属性Wind增益仅为0.048。
18、3.4.2 示例为了演示ID3算法的具体操作,考虑表3-2的训练数据所代表的学习任务。这里,目标属性PlayTennis对于不同的星期六上午具有yes和no两个值,我们将根据其他属性来预测这个目标属性值。先考虑这个算法的第一步,创建决策树的最顶端结点。哪一个属性该在树上第一个被测试呢?ID3算法计算每一个候选属性(也就是Outlook,Temperature,Humidity,和Wind)的信息增益,然后选择信息增益最高的一个。其中两个属性的信息增益的计算显示在图3-3中。所有四个属性的信息增益为 Gain(S,Outlook)=0.246 Gain(S,Humidity)=0.151 Gai
19、n(S,Wind)=0.048 Gain(S,Temperature)=0.029其中S表示来自表3-2的训练样例的集合。表3-2 目标概念PlayTennis的训练样例DayOutlookTemperatureHumidityWindPlayTennisD1SunnyHotHighWeakNoD2SunnyHotHighStrongNoD3OvercastHotHighWeakYesD4RainMildHighWeakYesD5RainCoolNormalWeakYesD6RainCoolNormalStrongNoD7OvercastCoolNormalStrongYesD8SunnyMi
20、ldHighWeakNoD9SunnyCoolNormalWeakYesD10RainMildNormalWeakYesD11SunnyMildNormalStrongYesD12OvercastMildHighStrongYesD13OvercastHotNormalWeakYesD14RainMildHighStrongNo根据信息增益标准,属性Outlook在训练样例上提供了对目标属性PlayTennis的最好预测。所以,Outlook被选作根结点的决策属性,并为它的每一个可能值(也就是Sunny,Overcast和Rain)在根结点下创建分支。部分决策树的结果显示在图3-4中,同时画出
21、的还有被排列到每个新的后继结点的训练样例。注意到每一个Outlook=Overcast的样例也都是PlayTennis的正例。所以,树的这个结点成为一个叶子结点,它对目标属性的分类是PlayTennis=Yes。相反,对应Outlook=Sunny 和Outlook=Rain 的后继结点还有非0的熵,所以决策树会在这些结点下进一步展开。对于非终端的后继结点,再重复前面的过程选择一个新的属性来分割训练样例,这一次仅使用与这个结点关联的训练样例。已经被收编入树的较高结点的属性被排除在外,以便任何给定的属性在树的任意路径上最多仅出现一次。对于每一个新的叶子结点继续这个过程,直到满足以下两个条件中的任
22、一个:(1)所有的属性已经被这条路径包括,或(2)与这个结点关联的所有训练样例都具有同样的目标属性值(也就是它们的熵为0)。图3-4列出了下一步增长树要计算的信息增益。从表3-2的14个训练样例通过ID3算法得到的最终决策树被画在图3-1中。插图原书页码: 61Which attribute should be test here? 哪一个属性应在这里被测试?图3-4 ID3算法第一步后形成的部分决策树训练样例被排列到对应的分支结点。分支Overcast的所有样例都是正例,所以成为目标分类为Yes的叶结点。另两个结点将被进一步展开,方法是按照新的样例子集选取信息增益最高的属性。3.5 决策树学
23、习中的假设空间搜索与其他的归纳学习算法一样,ID3算法可以被描述为从一个假设空间中搜索一个拟合训练样例的假设。被ID3算法搜索的假设空间就是可能的决策树的集合。ID3算法以一种从简单到复杂的爬山算法遍历这个假设空间,从空的树开始,然后逐步考虑更加复杂的假设,目的是搜索到一个正确分类训练数据的决策树。引导这种爬山搜索的评估函数是信息增益度量。图3-5描述了这种搜索。插图原书页码: 62图3-5 ID3搜索的假设空间ID3遍历可能决策树的空间,从最简单的树到逐渐复杂的树。其搜索由信息增益启发式规则引导。通过观察ID3算法的搜索空间和搜索策略,我们可以深入认识这个算法的优势和不足。 ID3算法中的假
24、设空间包含所有的决策树,它是相对于现有属性的有限离散值函数的一个完整空间。因为每个有限离散值函数可被表示为某个决策树,所以ID3算法避免了搜索不完整假设空间(例如那些仅考虑合取假设的方法)的一个主要风险:假设空间可能不包含目标函数。 当遍历决策树空间时,ID3仅维护单一的当前假设。这与第2章讨论的变型空间候选消除方法不同,后者维护了与当前的训练样例一致的所有假设的集合。因为仅考虑单一的假设,ID3算法失去了表示所有一致假设所带来的优势。例如,它不能判断有多少个其他的决策树也是与现有的训练数据一致的,或者使用新的实例查询来最优地区分这些竞争假设。 基本的ID3算法在搜索中不进行回溯。每当在树的某
25、一层次选择了一个属性进行测试,它不会再回溯重新考虑这个选择。所以,它易受无回溯的爬山搜索中常见风险影响:收敛到局部最优的答案,但不是全局最优的。对于ID3算法,一个局部最优的答案对应着它在一条搜索路径上探索时选择的决策树。然而,这个局部最优的答案可能不如沿着另一条分支搜索到的更令人满意。后面我们讨论一个扩展,增加一种形式的回溯(后修剪决策树)。 ID3算法在搜索的每一步都使用当前的所有训练样例,以统计为基础决定怎样精化当前的假设。这与那些基于单独的训练样例递增作出决定的方法(例如,Find-S或候选消除法)不同。使用所有样例的统计属性(例如,信息增益)的一个优点是大大减小了对个别训练样例错误的
26、敏感性。因此,通过修改ID3算法的终止准则以接受不完全拟合训练数据的假设,它可以被很容易地扩展到处理含有噪声的训练数据。3.6 决策树学习的归纳偏置ID3算法从观测到的训练数据泛化以分类未见实例的策略是什么呢?换句话说,它的归纳偏置是什么?回忆第2章中,归纳偏置是一系列前提,这些前提与训练数据一起演绎论证未来实例的分类。如果给定一个训练样例的集合,那么通常有很多决策树与这些样例一致。所以,要描述ID3算法的归纳偏置,应找到它从所有一致的假设中选择一个的根据。ID3从这些决策树中选择哪一个呢?它选择在使用简单到复杂的爬山算法遍历可能的树空间时遇到的第一个可接受的树。概略地讲,ID3的搜索策略为(
27、a)优先选择较短的树而不是较长的,和(b)选择那些信息增益高的属性离根结点较近的树。在ID3中使用的选择属性的启发式规则和它遇到的特定训练样例之间存在着微妙的相互作用,由于这一点,很难准确地刻划出ID3的归纳偏置。然而我们可以近似地把它的归纳偏置描述为一种对短的决策树的偏好。近似的ID3算法归纳偏置:较短的树比较长的优先事实上,我们可以想象一个类似于ID3的算法,它精确地具有这种归纳偏置。考虑一种算法,它从一个空的树开始广度优先(breadth first)搜索逐渐复杂的树,先考虑所有深度为1的树,然后所有深度为2的,。一旦它找到了一个与训练数据一致的决策树,它返回搜索深度的最小的一致树(例如
28、,具有最少结点的树)。让我们称这种广度优先搜索(breadth first search)算法为BFS-ID3。BFS-ID3寻找最短的决策树,因此精确地具有“较短的树比较长的得到优先”的偏置。ID3可被看作BFS-ID3的一个有效近似,它使用一种贪婪的启发式搜索企图发现最短的树,而不用进行完整的广度优先搜索来遍历假设空间。因为ID3使用信息增益启发式规则和“爬山”策略,它包含比BFS-ID3更复杂的偏置。尤其是,它并非总是找最短的一致树,而是倾向于那些信息增益高的属性更靠近根结点的树。ID3归纳偏置的更贴切近似:较短的树比较长的得到优先。那些信息增益高的属性更靠近根结点的树得到优先。3.6.
29、1 限定偏置和优选偏置在ID3算法和第2章讨论的候选消除算法显示出的归纳偏置之间有一个有趣的不同。下面考虑一下这两种方法中对假设空间搜索的差异: ID3的搜索范围是一个完整的假设空间(例如,能表示任何有限的离散值函数的空间)。但它不彻底地搜索这个空间,从简单的假设到复杂的假设,直到遇到终止条件(例如,它发现了一个与数据一致的假设)。它的归纳偏置完全是搜索策略排序假设的结果。它的假设空间没有引入额外的偏置。 变型空间候选消除算法的搜索范围是不完整的假设空间(即一个仅能表示潜在可教授概念子集的空间)。但它彻底地搜索这个空间,查找所有与训练数据一致的假设。它的归纳偏置完全是假设表示的表达能力的结果。
30、它的搜索策略没有引入额外的偏置。简单地讲,ID3的归纳偏置来自它的搜索策略,而候选消除算法的归纳偏置来自它对搜索空间的定义。ID3的归纳偏置是对某种假设(例如,对于较短的假设)胜过其他假设的一种优选(preference),它对最终可列举的假设没有硬性限制。这种类型的偏置通常被称为优选偏置(preference bias)(或叫搜索偏置(search bias)。相反,候选消除算法的偏置是对待考虑假设的一种限定(restriction)。这种形式的偏置通常被称为限定偏置(或者叫语言偏置(language bias)。如果需要某种形式的归纳偏置来从训练数据中泛化(见第2章),那么我们该优先考虑哪
31、种形式的归纳偏置呢:是优选偏置还是限定偏置?通常,优选偏置比限定偏置更合乎需要,因为它允许学习器工作在完整的假设空间上,这保证了未知的目标函数被包含在内。相反的,限定偏置严格地限制了假设集合的潜在空间,通常不是我们希望的,因为它同时引入了把未知的目标函数排除在外的可能性。鉴于ID3采用纯粹的优选偏置而候选消除算法采用纯粹的限定偏置,一些学习系统综合了这两者。例如,考虑第1章描述的下棋程序的例子。其中,学习到的评估函数被表示为一些固定的棋盘特征的线性组合,学习算法调整这个线性组合的参数来最好地拟合现有的训练数据。这里,使用线性函数来表示评估函数的决定就引入了限定偏置(非线性的评估函数不可能被表示成这种形式)。同时,选择特定参数的调整方法(LMS算法)引入了一个优选偏置,它源自所有可能参数值空间上的顺序搜索。3.6.2 为什么优先短的假设?ID3算法中优选较短决策树的归纳偏置,是不是从训练数据中泛化的可靠基础?哲学
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1