数据挖掘十大算法翻译——1决策树

一方面翻译一下,毕竟中文看起来快很多。
另一方面做个笔记,也包括自己的理解,主要内容还是按照原论文的内容。

有什么错误希望能够指正

论文: Top 10 algorithms in data mining
作者: XindongWu · Vipin Kumar · J. Ross Quinlan · Joydeep Ghosh · Qiang Yang ·Hiroshi Motoda · Geoffrey J. McLachlan · Angus Ng · Bing Liu · Philip S. Yu ·
Zhi-Hua Zhou · Michael Steinbach · David J. Hand · Dan Steinberg

摘要:这篇论文呈现了由IEEE国际数据挖掘会议在2006年12月份定义的十大算法:

1、C4.5, 2、k-Means, 3、SVM, 4、Apriori,5、EM,6、PageRank,7、AdaBoost,8、KNN,9、Naive Bayes,10、CART
对于每个算法都会对其进行描述,理论它的影响,并且回复目前和将来的对于该算法的研究。这是个算法覆盖了分类,聚类,数据学习,关联分析和连接挖掘。

0 介绍

在ICDM’06香港的会议上十大在机器学习中最具影响和最广泛的算法被提出了。
论文中介绍了一下这十大算法是这么评选和得出的。这里不详细介绍了,有兴趣的可以去看原文。

1 C4.5 and beyond

1.1介绍

构造分类器的系统是在数据挖掘中普遍使用的工具之一。这样的系统使用一系列的事件作为输入,每个事件属于一个类,并且通过他们固定的一系列属性的值进行描述。最后产生一个能够准确预测新的case属于哪个类别的分类器。

C4.5是CLS和ID3的后裔。正如CLS和ID3一样,C4.5产生使用决策树表示的分类器。然而它也能够以更加容易理解的形式构造分类器。论文中会大概描述C4.5的算法,并且介绍它的“后继者”See5/C5.0,并且利用一些公开的研究进行总结。

1.2决策树

给定一些系列的事件,C4.5首先利用分治算法构建初始的树,分治算法如下:

  • 如果S中的事件都属于同一个类,或者S很小,树是一个叶子,这个叶子使用S中最常见的类定义。
  • 否则,选择一个测试(Test),这个测试基于相同的属性有两个或者更多的结果。让这个测试成为树的根,并且让每个结果成为一个分支。根据每个事件的结果将S分为S1、S2…,并且对他们的子集递归的使用这个方法。

通常在最后一步会有很多可以被选择的测试.C4.5使用两个启发式的方法对这些测试进行排序:信息增益,它使得子集{Si}的熵最小(但是对于数值的输出的测试会有严重的偏差),和默认增益比,它通过测试结果提供的信息将信息增益进行分类。

属性可以是数值也可以是名词,这也决定了测试结果的格式。对于数值型的属性A,它们是{A<=h,A>h},这里的临界值h是通过将S按照A的数值进行排序然后在通过在连续的数值中选取能够使得上述范围最大化的划分得到的。每个属性A的不同值默认对应一个结果,但是选项允许数值被两个或者多个有各自结果的的子类所划分。

接下来会通过修剪,防止初始的树过度拟合。修剪算法是基于一个包含N个实践的集合的错误的的悲观估计的,其中有E不属于频率最高的类。相比较于E/N,C4.5使用默认值为0.25的由用户定义的信心,决定了当E个事件在N词尝试中的二项式概率的上界。

修剪是从叶子到根部进行的。对于N个事件,E次错误的叶子的估计错误,是N乘以上述的悲观错误率。对于子树,C4.5增加分支的期望错误,并且把这个期望错误与如果使用叶子替换分支的期望错误相比较,如果后者概率不必前者高,子树就被修剪。类似的,C4.5检查子树被分支替代的期望错误,也可能进行相应的修改。修改的过程是在书中的一条路径上完成的。

C4.5的树构造算法与CART的算法有以下不同:
- CART中的测试是二元的,但是C4.5允许两个或者多个测试
- CART使用由交叉验证评估的参数的成本复杂度模型修剪树。C4.5使用由二项信心限制驱动的单一路径算法
- 除此之外,对位未知的值得考虑也是不同的CART寻找具有类似的结果的替代测试,而C4.5将事件概率的分布到结果之中。

1.3 规则集分类

复杂的决策树理解起来是十分困难的,因为有可能关于一个类的分类信息是分布在树的各个地方的。C4.5引入了由一些列诸如“if A 和 B 和 C 则 类X”的集合在一起的规则。一个事件被第一个满足实践的条件的规则分类。如果没有规则能够对其进行分类,那么将它分给默认的类。

C4.5规则集是由未修剪的决策树生成的。每个从根到叶子的路径都会变成条件是验证路劲的输出,结果是叶子节点的类型的原型规则。最后这个规则会通过评价每个条件的重要新来进行简化。减掉一些条件可能增加N(规则覆盖的事件)和E(不属于规则管辖的时间),因此可以降低悲观错误率。爬山算法是用来减少条件直到达到最低的悲观错误率的算法。

为了完成这个过程,简化的规则的子集轮流被每个类选中。这些类子集被排序从而最小化训练时间的错误和默认被选择的类。最后的规则子集有比决策树叶子节点更少的数量。

C4.5规则子集最主要的缺点是CPU和内存的消耗。在一个试验中,数量从10,000到100,000的样本从大数据集合中提取。对于决策树而言,从10到100k的事件消耗的cpu事件从1.4增长到64s,系数为44.然而计算规则子集的时间从32增长到了9715s,系数为300。

1.4 See/C5.0

  • C4.5在1997年被商业系统See5.0(简称为C5.0)取代。变化带来了一些新的能力同时也提高了性能:

  • 推进(boosting)的多样性,它构建之后简要选出最后的分类器的分类器的总体。推进常常会导致预测性戏剧性的提高。

  • 新的数据类型,“不适用”数值,变量误分损耗和提前过滤属性的机制。
  • 无序的规则集,当一个事件被分类,所有可用的规则都被找到并且投票。这既可以太高规则集的预测能力,也能提高它的预测准确性。
  • 极大的提高了决策树和规则集的规模。这个提高是通过多线程的方式得到的。C5.0能够高效的利用CPU的多核心。

http://rulequest.com/see5-comparison.html.中有更多的详细信息

1.5 进一步的研究

我们经常听到学院发表决策树已经是一个“解决的问题”的观点。我们对此表不同意。
稳定树。众所周知,利用决策树的经验风险常常小于它的结构风险。举例而言,一个很有名的字母识别的数据集有20000个事件,C4.5的重构错误率为4%,然而它的交叉验证(20,000)的错误率却为11.7%。如上所示,不考虑其中的某一个点对树的结果有很大的影响。

假设我们现在可以发张出几乎不受利群点影响的非琐碎树结构算法。对于这样稳定的树,重构错误率应该和除去其中一个点的交叉验证率非常接近,这表明树是一个“正确的”结构。

分解负责的树。启动分类器,无论是通过推进,分袋,权重正则化或者其他的技术,通常都会表现出提高的准确性。现在,给定少量的决策树,这是否可以产生一个单独的(复杂)的树,来表示这些其他的树呢?也就是说一个复杂的树能够分解成为一些列简单的树的集合,并且当投票的时候给出相同的结果?这样的分解会极大的提高树的可理解性。

C4.5可以免费用于研究和教学,它的源码可以从这里下载:m
http://rulequest.com/Personal/c4.5r8.tar.gz.

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值