基于MDL的决策树剪枝

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
i
i
SLIQ算法中的 SLIQ算法中的MDL剪枝(续) 算法中的MDL剪枝( 剪枝
剪枝算法
MDL剪枝算法在决策树每个内节点上评估编码的长度, MDL剪枝算法在决策树每个内节点上评估编码的长度, 从而决定是否将该节点转换为叶结点,或者删除其左(右) 子树,还是保持结点不变。为了进行选择,编码长度C(n) 子树,还是保持结点不变。为了进行选择,编码长度C(n) 用 下式计算:
Overcast Humidity
Rain
N Normal P
7 8
Cool N
图1
图2
由上图可以看出,仅仅一条噪声数据导致了决策树很大不同。
♦我们对图1 的决策树直接编码。如果采用深度优先遍历对其 我们对图1 的决策树直接编码 直接编码。如果采用深度优先遍历对其
进行存储,可以表示为: 1 Outlook 0 P 1 Humidity 0 N 0 P 1 Windy 0 N 0 N 1 Temperature 0 N 0 N 1 P 用1表示下一个节点是内节点,然后记下节点的相应属性; 用0表示下一个节点是叶节点,并用N或P记下节点的类属性。 表示下一个节点是叶节点,并用N 表示根节点上的Outlook需要两个比特( 表示根节点上的Outlook需要两个比特( 有四种可能 );表示下 一层的属性Humidity需要log 个比特( Outlook已被选出) 一层的属性Humidity需要log23个比特( Outlook已被选出);表 示属性Windy需要1个比特;表示Temperature需要1个比特( 示属性Windy需要1个比特;表示Temperature需要1个比特( 其 实一个都不需要 )。这样总共需要25.585个比特。 。这样总共需要25.585个比特。
SLIQ算法中的 SLIQ算法中的MDL剪枝(续) 算法中的MDL剪枝 剪枝(
编码代价规则
数据编码:代价定义为错误的分类个数。 数据编码: 模型编码:包括编码树本身和编码内节点上的判断标准。 模型编码: 树编码有三种方案: Code 1 节点或者有两个子树或者没有子树。需要一比特; Code 2 节点可以有两个子树、没有子树、只有左子树或右 子树。需要两个比特; Code 3 仅仅编码内节点,此时节点可能有两个子树、左 或右子树。需要Log 或右子树。需要Log2 3个比特。 分裂属性编码: 数值属性:只需要编码值V 数值属性:只需要编码值V,代价为常数 1;(参见MDL论文图2) 参见MDL论文图 论文图2) 分类属性:对每个分类属性A 分类属性:对每个分类属性Ai 计算在树中用到其分裂的次 数 nA ,代价为 ln nA。 (参见MDL论文) 参见MDL论文 论文)
我们应该寻求这样一种合理且较小的树,使得训练样本的 大多数数据符合这棵树,把样本中不符合的数据作为例外 编码,使得下面两项最小: ♦编码决策树所需的比特,它代表了猜想; ♦编码例外实例所需要的比特。
最小描述长度(MDL)基本概念( 最小描述长度(MDL)基本概念(续)
决策树中的最小描述长度准则( 决策树中的最小描述长度准则(续) 最小描述长度准则
MDLMDL-based Decision Tree Pruning ——基于MDL的决策树剪枝 基于MDL MDL的决策树剪枝
报告人: 报告人:黄超
决策树基本概念
决策树构建的两个阶段
♦决策树生成:利用训练样本生成决策树模型; ♦决策树剪枝:通过删除部分节点和子树以避免 “过度适合”。 过度适合” 过度适合: ※ 过度适合:也称过学习,指推出过多的假设与训练数据 集相一致。过学习将导致我们所作出的假设 泛化能力过差。
♦假设经过剪枝后的决策树如图2所示,此时最右边的叶节点 假设经过剪枝后的决策树如图2
的 8 条数据中有一条是被错误分类的。按照“树+例外”编码 条数据中有一条是被错误分类的。按照“ 例外” 时,首先要对图2 编码,需要13.585个比特。接下来对仅有的 时,首先要对图2 编码,需要13.585个比特。接下来对仅有的 一个例外编码,我们就指定它在54 一个例外编码,我们就指定它在54 (3*3*2*3 ) 种可能性中的 位置,这需要log 54=5.75个比特。因此总共需要19.335比特。 位置,这需要log254=5.75个比特。因此总共需要19.335比特。 明显可以发现该编码方案优于对整棵树编码。 总结: 总结:我们可以选择最小描述长度准则用于树生成时的测试属 性 ( 如同jini系数、信息熵),使得每次树扩展时总的“树+例外” 如同jini系数、信息熵),使得每次树扩展时总的“树+ 描述长度( 描述长度( total description length, TDL) 增加最小。待树生成 后,进行自下而上的剪枝,直到继续剪枝不能减少TDL为止。 后,进行自下而上的剪枝,直到继续剪枝不能减少TDL为止。
3个属性值
类 N P … … P … … N
… … … …
表 1
… … … …
High High … …
2个属性值 3个属性值 2个类
… …
ห้องสมุดไป่ตู้
Medium Very … …
… …
由表1 由表1生成的决策树
将记录8的类标签改为N 将记录8的类标签改为N 的决策树
Outlook
Outlook Sunny Overcast P Humidity High N Normal P Not Medium Very N P Temp Mild N Hot P High N Rain Windy Sunny P
( 注: 关于L (t) 的含义参见MDL论文) 关于L 的含义参见MDL论文 论文)
SLIQ算法中的 SLIQ算法中的MDL剪枝(续) 算法中的MDL剪枝 剪枝(
剪枝算法(续) 剪枝算法(
我们有三种剪枝策略: 完全剪枝:如果 Cleaf ( t )< Cboth( t ) ,则删去左右结点,使 )< 完全剪枝: 得成为叶结点。此时编码采用 Code 1 ; 部分剪枝: 部分剪枝:计算上述四种结果,选择具有最短编码长度的 方案。此时编码采用 Code 2 ; 混合剪枝: 混合剪枝:将剪枝分成两个步骤:首先使用完全剪枝选择 出较小的树,然后仅仅考虑(2)、(3)和(4 出较小的树,然后仅仅考虑(2)、(3)和(4)作进一步 的剪枝。 算法过程描述: 剪枝算法是一种自底向上的剪枝算法,选定一种剪枝策 略,由下而上的根据所得到新树的总代价是否变小来决定 是否进行剪枝,直到根节点为止。
SLIQ算法中的 SLIQ算法中的MDL剪枝 算法中的MDL剪枝
编码代价模型: 编码代价模型:
Cost ( M, D)= Cost ( D|M ) + Cost ( M ) 其中:Cost 其中:Cost ( M, D)表示编码的总代价; D)表示编码的总代价; Cost (M) 表示编码模型M的代价; 表示编码模型M的代价; Cost (D|M) 表示用模型M编码数据D的代价; 表示用模型M编码数据D的代价; 在决策树语境中, 在决策树语境中,模型指的是剪枝初始决策树时 得到的一系列子树;数据是训练集。MDL剪枝就是要 得到的一系列子树;数据是训练集。MDL剪枝就是要 寻找能最好描述训练集的子树。 早期基于MDL剪枝算法的缺点: MDL剪枝算法的缺点 早期基于MDL剪枝算法的缺点: ♦容易导致过度剪枝,降低精确度; 不能只剪枝节点的左(或右) ♦不能只剪枝节点的左(或右)子树;
(1) (2) (3) (4)
Cleaf ( t ) = L( t ) + Errorst
如果t 如果t 是树叶
Cboth( t ) = L( t ) + Ltest + C ( t1 ) + C ( t2 ) t 有t1 和t2 两个孩子 Cleft ( t ) = L( t ) + Ltest + C ( t1 ) + C ’( t2 ) t 有t1 一个孩子 Cright ( t ) = L( t ) + Ltest + C ’( t1 ) + C ( t2 ) t 有t2 一个孩子
由于要生成多棵树,代价复杂性算法剪枝效率较低。
决策树基本概念(续) 决策树基本概念(
剪枝数据集的选择(续) 剪枝数据集的选择(
♦选择与生成决策树数据集相同的数据进行剪枝 虽然计算复杂性不高,但容易导致生成过大的树,并且 有时侯错误率较高,如悲观算法。
决策数剪枝的动机
♦奥卡姆剃刀原则——如无必要,勿增实体。即“在与观 奥卡姆剃刀原则——如无必要,勿增实体。即“在与观 察 相容的理论中,我们应当选择最简单的一个”。 相容的理论中,我们应当选择最简单的一个”。 ♦决策树越小就越容易被理解,其存储与传输的代价也就 越小。 ♦决策树越复杂,节点就越多,每个节点所包含的训练实 例个数就越少,则支持每个节点的假设的实例个数就越 少,可能导致随后错误率较大。但也不是节点越小错误 率就越低。我们要在树的大小与正确率之间平衡。
两类剪枝算法
♦ 预先剪枝:在树生成的过程中根据一定的准则(如树已 达到某高度,节点中最大的样本的比例达到 设定阈值)来决定是否继续扩张树。 ♦ 后剪枝: 待决策树完全生成以后再进行剪枝。
决策树基本概念(续) 决策树基本概念(
剪枝数据集的选择
♦选择与生成决策树数据集不同的数据进行剪枝 例如使用训练集2/3的数据生成树,另外1/3的数据用 例如使用训练集2/3的数据生成树,另外1/3的数据用 于剪枝(代价复杂性算法)。但是当训练数据集比较小时, 于剪枝(代价复杂性算法)。但是当训练数据集比较小时, 这样很容易导致过学习。当缺乏独立剪枝数据集时可以采 用交叉有效性来判断决策树的有效性。 交叉有效性:将训练集T分成互不相交且大小相等的k ※交叉有效性:将训练集T分成互不相交且大小相等的k个 子集T 子集T1, T2,… Tk。对任意子集Ti ,用T- Ti训练决策树, 。对任意子集T ,用T 用Ti测试决策树的错误率ei,然后估计整个算法的错误率: 测试决策树的错误率e ,然后估计整个算法的错误率:
最小描述长度(MDL) 最小描述长度(MDL)基本概念
最小描述长度准则
解释一组数据的最好理论,应该使得下面两项之和最小: ♦描述理论所需要的比特长度; ♦在理论的协助下,对数据编码所需要的比特长度。 最小描述长度也称为给定数据的随机复杂性) (最小描述长度也称为给定数据的随机复杂性)
决策树中的最小描述长度准则 决策树中的最小描述长度准则
SLIQ算法中的 SLIQ算法中的MDL剪枝(续) 算法中的MDL剪枝 剪枝(
三种剪枝策略比较
结论
由上图可以看出,与完全剪枝相比, 由上图可以看出,与完全剪枝相比,部分剪枝生成的树更 小,但准确率较低;混合剪枝的准确率与完全剪枝相近,但是 但准确率较低;混合剪枝的准确率与完全剪枝相近, 生成的树平均要小22%,因此是一种较好的剪枝算法. 生成的树平均要小22%,因此是一种较好的剪枝算法.
在决策树学习中,最小化决策树编码对应于简化决策 树,而最小化编码例外对应于增加决策树的正确率。 MDL决策树编码示例 决策树编码示例: MDL决策树编码示例: 属性 1 2 … … 8 … … 24
24条记录 24条记录
Outlook Overcast Sunny Rain Rain
3个属性值
Temperature Humidity Windy Hot High Not Mild Normal Very Hot Mild
相关文档
最新文档