数据挖掘十大算法之C4.5
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(如果选择的阈值导致实例被基本平均分配,那么信息增
益率就会趋于极小)。因此,Quinlan建议使用常规的信息 增益选取阈值,但是首先使用信息增益率选择属性。 第二种处理连续变量的方法基于Risannen的最小描述长度 (MDL)原理。这种方法把树看成理论, Quinlan提出应该 寻找树的复杂度和分类性能之间的平衡,特别是计算树的 复杂度时要总和考虑树的编码成本和树的例外情况
利用 C4.5 算法获得的决策树
从数据中诱导出这样的树所面临的 各种选择
有哪些可能测试类型?
如何对测试进行选择?
如何选取测试的阈值? 如何决定停止树生长? 如何确定叶节点类别?
有哪些可能测试类型?
如何对测试进行选择?
C4.5算法使用增益(gain)、增益率(gain ratio)等信
缺失值处理
生成树分支是要比较多个属性,有些属性在有些实 例上没有值,那我们如何选出用于分裂树的合适属
性呢?
在为测试选定属性之后,在该属性上没有值的那些 训练实例不能放入该测试的任何输出中。但是为了 让树的生长能持续进行,又必须这些实例参与进去。 应该怎么处理这部分属性值缺失的实例?
当用树分类新实例是可能会在树中遇到某个测试, 如果该实例没有对应属性值,如何继续推进测试过 程?
悲观剪枝
C4.5算法创造性的提出了被称为悲观剪枝的方法,该
方法不在需要一个单独的测试数据集,而是通过在训
练数据集上的错误分类数量来估算未知实例上的错误 率。悲观剪枝方法通过递归计算目标结点的分支的错
误率来获得该目标结点的错误率。
基于理想置信区间剪枝
连续型属性
一种处理连续变量的方法是使用信息增益率代替信息增益。 但是因为信息增益率会收到连续属性所采用的阈值的影响。
决策树剪枝
为了避免生成的树过度拟合训练数据,必须对树进行剪枝处理。 剪枝过程通常是在树全部生成后进行,而且采用自下而上的方 式。
几种剪枝方法:
基于成本复杂度的剪枝(cost-complexity pruning)
错误消减剪枝(Reduced error pruning)
悲观剪枝(Pessimistic pruning) 基于理想置信区间剪枝(confidence intervals, CI)
一方面,ID3算法和 Original Tree算法各自独立发展的,而Original
Tree算法最初由Friedman发明,后来在Breiman、Olshen 和 Stone等人 的参与下发展成CART算法。
另一方面,C4.5算法也大量引用了CART算法的纹线,其设计理念很
大程度上也受到CART算法的影响。此外, Quinlan还肯定了CLS (概念学习系统)框架对于发展ID3算法和C4.5 算法的重理:
所有的树诱导方法都大体上遵循一种统一的递归
模式,即: 用根节点表示一个给定的数据集; 从根节点开始在每个节点上测试一个特定的属性, 把节点数据集划分成更小的子集,并用子树表示;
重复前面两个步骤,直到子集成为“纯”的,就是
说直到子集中的所有实例都属于同一个类别,树才 停止增长。
实现这个熵值的下降。熵值的下降幅度就成为信息增益。
信息增益和信息增益率
观察Day列,由于每天都是唯一的,所以Day实际上对分类没有任何作用, 所以没必要将其算作属性。如果我们应邀将它当成可用属性的话就会产 生一个不合理的结果:该数据集中Day有14个不同的值,每个值都诱导 出一个“纯”的数据集,这样Day就会被选为树生成分支的最佳属性! 这是因为信息增益Gain偏向于取值多的属性。 于是,Quinlan提出了用信息增益率来校正这一负面效应。
如何确定叶节点类别?
叶节点包含的实例中,占据最大比例的那个类别将被 作为该分支的类别。
信息增益和信息增益率
用信息论的原理讲,为了能确定随机变量PlayGolf? 的取值,平均需要 获得关于该随机变量的0.940位的信息。
信息增益和信息增益率
在树诱导过程中,C4.5算法的目标就通过合适的提问来获得信息,
所有的树,根据它们在测试数据集上的分类性能选出
“最佳”的树。
错误消减剪枝
错误消减剪枝是以上方法的一个简化,和先前的方法 一样的地方是该方法也是使用一个单独的测试数据集, 不同指出在于它直接使用完全诱导树对测试机中的实 例进行分类。对于诱导树中的每一个非叶子树,该策 略要求评估用一个最佳叶节点去替代这棵子树的是否 友谊。如果树在剪枝后与在剪枝钱相比,其错误率是 保持或下降的,而且被剪掉的子树也不包含具有相同 性质的其他子树,则这棵子树就可以被替换掉。这个 过程一直持续到在测试数据集上树的分类错误率出现 上升为止。
处理分类问题的算法。该算法是有监督学习类型的,
即:给定一个数据集,所有实例都由一组属性来描述, 每个实例仅属于一个类别,在给定数据集上运行C4.5
算法可以学习得到一个从属性值到类别的映射,进而
可使用该映射去分类新的未知实例。
C4.5算法所用数据集的一个示例
引言
J.Ross Quinlan设计的C4.5算法源于名为ID3的一种决策树诱导算法, ID3是“迭代分解器(iterative dichotomizers)”系列算法的第3代。 决策树相当于将一系列问题组织成树,具体说,每个问题对应一个属 性(比如Outlook),根据属性值来生成判断分支,一直到决策树的 叶节点就产生了类别(PlayGolf?)的预测结果。 C4.5算法的发展历史非常生动的展现了不同的学术社区在分类问题 研究上的殊途同归的情形。
不一定能被还原为一棵紧凑的树,C4.5规则集生成方法的一个缺点是
数据集规模的增大会导致学习时间的迅速增长。
Thank you!
第一章
C4.5
参考书:C4.5 :Programs for Machine Learning
主要内容
引言 算法描述 算法特性 决策树剪枝 连续型属性 缺失值处理 规则集诱导 软件实现 示例 高级主题 二级存储 斜决策树 特征选择 集成方法 分类规则 模型重述
引言
C4.5算法是机器学习和数据挖掘领域中的一整套用于
信息增益和信息增益率
说明
决策树建模并不是对所有类型的决策边界都适用。以布尔 函数为例,虽然原则上决策树可以建模任意布尔函数,但 是最终得到的树会变得非常复杂。进步一再考虑一个更具 体的情形,就是对大量布尔属性的XOR操作建模。这种情 况下,每个属性都会出现在树的所有路径上,最终导致树 的规模成指数级增大。决策树难以处理的另一个问题就是 所谓的“m-of-n”函数。该问题是说要用n个属性中的m个 进行类别预测,但是我们并不确切知道是哪m个属性对决策 有贡献。
基于成本复杂度的剪枝
在CART中采用这种方法。这种方法会生成一系列树, 每棵树都是通过将前面的树的某个或某些子树替换成 一个叶节点而得到的,系列中最后一棵树仅含一个用
来预测类别的叶节点。成本复杂度是一种度量准则,
用来判断哪棵子树应该被一个预测类别值的叶节点所 代替。这种方法要使用一个单独的测试数据集来评估
息论准则来测试进行选择。增益被定义为“执行一个
测试所导致的类别分布的熵的减少量”,增益准则的 一个缺陷在于它过于偏向选择具有更多输出结果的测
试,而增益率具有克服这一偏差的优点,所以C4.5算
法默认的测试选择准则是增益率。在树增长的每一步 中,C4.5算法都要选择具有最符合准则的那个测试。
如何选取测试的阈值?
第一个问题:
第二个问题:
第三个问题:
规则集诱导
C4.5算法的一个非常突出的特性是其剪枝能力,它建立在诱导树所生 成的规则上。我们可以将一棵树看成是多项规则的合成,而每条规则
对应着树中从根节点到叶节点的一条路径。规则的前件是该路径上
的决策条件,而后件是被预测的类别标签。对于数据集中的每一个类 别,C4.5算法首先依据(未剪枝的)树建立规则集然后对每条规则执 行—个爬山搜索看是否有规则前件可以被去掉。由于规则前件的移 除相当于“敲掉”诱导决策树的些节点,所以C4.5的悲观剪枝方法 其实就是用在这里,剪枝会为每一个类别选择―个简化的规则子集, 这里用最短描述长度原则(MDL)来刻画编码和排序规则的理论所需 成本。生成的规则的数量一般比原始树中的叶节点(或路径)的数量少 很多。另外还可以观察到一个现象就是,由于所有的规则前件都有被 可移除的可能,这样当靠近树的顶端的节点被移除后,所产生的规则
对于布尔型和类别型的属性,测试所用的值就是该 属性的可能取值。
对于数值型属性,相应测试就需要确定阈值,就是
要对该属性的取值进行排列进而求出合适的切分点 以最大化上述测试选择准则
如何决定停止树生长?
如果某节点的一个分支所辖的全部实例都是“纯”的, 则这个分支就被确定为一个叶节点; 如果该分支覆盖的实例总数已经低于预定的阈值。