1、决策树基本算法综述作者: 专业:软件工程学号:2012110日期:2013.2.4摘要:不同算法产生的决策树,在测试数据上的准确率、树的繁简程度等方面都有所不同。本文针对几种决策树算法,从分类准确率、树的复杂程度等方面进行了描述和比较。关键词:决策树 ID3 C4.5 统计算法 并行决策树算法1.概述1.1 决策树算法简介数据挖掘的研究方向有很多:数据的分类、聚类、分析与预测、关联规则挖掘、序列模式挖掘等。决策树、神经网络、人工智能、贝叶斯网络、关联分析和统计方法等是数据挖掘中常用的算法。在数据分类中,决策树是一种使用广泛的分类方法,它可以对已知的历史数据进行学习和训练,从而得到一颗具有高信息
2、价值、揭示数据内部信息和关联规则的树,实现数据的分类。1.2 决策树算法的优点(1 ) 对于相同数据集的分类准确率高、速度快;(2 ) 生成的树形象清晰、简单直观,从根节点向树的叶子节点,每一条分支能够唯一确定一条分类的规则;(3 ) 可伸缩性强,既可以用于小数据集,也可以用于海量数据集;(4 ) 应用领域广泛:目前决策树已应用于金融分析预测、网络金融交易、医疗诊断、天气预测、零售业务及反恐等多个领域。因此,不难看出,通过决策树提取出内部潜在的规则信息,对于整个市场的控制、公司的运营和个人的投资都有着良好的决策辅助作用,所以基于决策树算法的数据挖掘技术有很高的研究价值。由于不同的决策树算法应用
3、于不同的数据集后,生成树的繁简程度、叶子节点的个数及分类准确率都大不相同,因此我们有必要对不同决策树分类进行归纳与比较,了解各种算法的特点和特性,针对不同规模的数据集选择适当的决策树算法,进而得到高的准确率及较好的可理解性。1.3 决策树的表示决策树通过把实例从根节点排列(sort)到某个叶子节点来分类实例,叶子节点即为实例所属的分类。树上的每一个节点指定了对实例的某个属性(attribute)的测试,并且该节点的每一个后继分支对应于该属性的一个可能值。分类实例的方法是从这棵树的根节点开始,测试这个节点指定的属性,然后按照给定实例的属性值对应的树枝向下移动。然后这个过程在以新节点为根的子树上重
4、复。图 1.3.1 画出了一颗典型的学习到的决策树。这颗决策树根据天气情况分类“星期六上午是否适合打网球” 。例如,下面的实例将被沿着这颗决策树的最左分支向下排列,因而被判定为反例(也就是这棵树预测这个实例 PlayTenis=No) 。实例:H u m i d i t y W i n dO u t l o o kN oY e sY e sN oY e sS u n n yO v e r c a s tR a i nH i g h N o r m a lS t r o n gW e a k(图 1.3.1 概念 PlayTennis 的决策树)通常决策树代表实例属性值约束的合取(conjunc
5、tion)的析取式( disjunction) 。从树根到树叶的每一条路径对应一组属性测试的合取,树本身对应这些合取的吸取。图 1.3.1 表示的决策树对应于一下表达式:(Outlook=Sunny Humidity=Normal) (Outlook=Overcast) (Outlook=Rain Wind=Weak)1.4 决策树的剪枝在决策树学习过程中,如果决策树过于复杂,则存储所要花费的代价也就越大;而如果节点个数过多,则每个节点所包含的实例个数就越小,支持每个叶节点假设的实例个数也越小,学习之后的错误概率就会随之增加;同时对用户来说又难于理解,所以在决策树学习中应该对决策树进行简化。可
6、以通过剪枝方法简化决策树。有预剪枝和后剪枝两种剪枝方法。(1 ) 预剪枝。 预剪枝算法不要求决策树的每个叶节点都属于同一个类,而是在这之前就停止决策树的扩张,例如可以规定决策树的高度,达到一定高度即停止扩张。(2 ) 后剪枝。 它由“完全生长”的树剪去分枝。通过删除节点的分枝,剪掉树节点。2.基本的决策树算法决策树算法最早产生于 20 世纪 60 年代,是一种机器学习系统 CLS:Concept Learning System,该系统首次使用树的概念进行概念学习,是决策树学习系统的先驱,它为今后决策树算法的改进提供了帮助。2.1 ID3 算法ID3 算法是由 J.R.Quinlan 提出的,即
7、迭代分类器。 ID3 算法可称为最为经典的决策树算法。此算法理论清晰、学习简单、学习能力较强,且构造的决策树平均深度较小,分类速度快,特别适合处理大规模的学习问题。其目的在于减少树的深度,即树的复杂度,从而大大减少了分类的规则个数。ID3 算法以信息熵和信息增益作为属性选择标准,使得在每一非叶子节点进行测试时,能获得关于被测试例子最大的类别信息,使用该属性将样本集划分成子集后,系统的信息熵值最小。设 C 是样本中类的数目,S 是样本数,P(s,j) 表示样本 S 中样本属于第 j 类的概率,也即 p(i,j) ,是样本 S 中属于类 j 的样本数。因此,对于一个给定的样本分类所 /js需的期望
8、信息增益是: 21ln()(,)log(,)cjfopSjj具有值 的属性 T 可以将 S 划分为子集 ,其中 包括类12,.ka 12,.kSjs的 个样本,根据 T 的这种划分的期望信息称作 T 的熵。其加权平均为:iCijSE(T) 21|logkiiiST 上划分获得的信息增益定义为: (,)ln()GaiSTfoET假设 S 为初始样本集,当前的候选属性集用 S_attributes 表示,候选属性集中的所有属性皆为离散型。ID3 算法的主要步骤如下:(1 ) 创建根节点 B;(2 ) 如果 B 都属于同一类 C,则返回 B 为叶子节点,标记为类 C;(3 ) 如果 S_attrib
9、utes 为空,则返回 B 为叶子节点,标记 B 为 S 中出现最多的类;(4 ) 对每个 S_attribute 中的属性,循环计算信息增益值 G;(5 ) B 的测试属性 test_attribute=S_arrtibutes 中具有最高 G 值得属性;(6 ) 对每个 test_attribute 的取值,做如下操作:| .由节点 B 长出一个新叶子节点|.如果新叶节点对应的样本子集 T 为空,则不再分裂此叶子节点,将其标记为S 中出现最多的类;否则,在该叶节点上重复上述(1 )(6 )步操作,继续对它分裂。ID3 算法的优化:通过加权和增加属性重要度,加强属性的标注,降低了非重要属性的
10、标注,把“加权和”转换为权与属性重要度相加的“新加权和” 。生成决策树时,数据少的数据元组不会被淹没,最终使决策树减少“大数据掩盖小数据”现象的发生。利用属性重要度 5,类别条件熵: 2(|)()(|)log(|)i jijiHCVPsCVP信息增益的公式变为: (,)(|)inf()if()()I Tvainv属性重要度取值在0,1之间,其大小由训练数据集数据计算给出。2.2 C4.5 算法在 ID3 算法中,具有最大信息增益的属性被选为分裂属性。显然,ID3 算法偏袒具有较多值的属性,因而可能导致过度拟合。因此,在 C4.5 算法中采用信息增益比率来代替信息增益。增益比率为: , 12(,
11、)(,)|ln.KGaiSTGainRtoSTf为了达到最佳分裂的目的,C4.5 先计算每个属性的增益,然后仅对那些高于信息增益平均值的属性应用增益比率进行测试。增益比率最大的属性应当首选为分裂属性。2.3 统计算法统计算法是 Hart 和 Mingers 设计的另外一种属性区分度量方法。这是一种传统的统计方法,在一个可能性表中,它度量任意两个变量之间的联系。通过比较变量的观察频数和期望频数来确定两个变量之间是否有联系,其结果近似服从 分布,值越大则表明联系越强。基本的方程如下: ,22()ijijxE在上面的方程中, ,即可能性表中每一项的期望值。/ijiEN2.4 并行决策树算法并行决策树
12、将一个数据集随机分成几个部分,各部分数据分别用不同的处理器学习,选出各自最好的属性,然后通过比较,综合得出最好的属性,以它为基准建树。对每个新节点,递归地重复上述过程,直到所有的节点都展开成树叶。图 2.4.1 是将一个数据集分成3 个子数据集时的学习流程图。数据集属性 2子数据集 3子数据集 2子数据集 1属性 3属性 1处理器 3处理器 2处理器 1选择最好的属性(图 2.4.1 一分三学习流程)并行决策树构建的主要步骤如下:(1 ) 根据决策树扩展策略,随机选择一节点作为当前的节点,并将开始时当前的节点选为根节点;(2 ) 当前节点的数据集分成几个子集,各个数据子集分别用一个处理器(学习
13、器)学习;(3 ) 各处理器分别用 ID3,C4.5, 统计等方法生成各自最好的属性;(4 ) 选择一个最好的属性作为分裂属性;(5 ) 依靠期望树分枝因子,创建本节点的孩子节点;(6 ) 对每个子节点,重复(1) (5) ,直到没有节点能被用来扩展树;(7 ) 用 EBP 方法修剪最终的树。3.结语决策树算法已经有了广泛的应用,并且已经有了许多成熟的系统。决策树各类算法各有优缺点,在实际工作中,必须根据数据类型的特点及数据集的大小,选择合适的算法,才能更好的实现分类。参考文献1Tom M.Mitchell 著.曾华军等译.机器学习.机械工业出版社.2012.62张学工. 模式识别.清华大学出版社.2010.83王莉.ID3 算法的研究与应用.福建电脑.2010 (01 )4杨清. 基于决策树的学习算法.湘潭师范学院学报.1999.65张学兵. 决策树算法及其核心技术.计算机技术与发展.2007.16张琳. 决策树分类算法研究.软件技术与数据库.2011.7