第9卷第9期 软件导刊 Vo1.9 NO.9 2010年9月 Software Guide SeD.201O 基于决策树方法的数据挖掘分析 郭亚宁,冯莎莎 (山东大学威海分校,山东威海264209) 摘要:介绍了数据挖掘与决策树算法的一些基本概念,然后对最经典也得到最广泛应用的ID3算法及其改进算法 作了详细介绍.在最后给出了该算法的一些数据结构和实现代码。 关键词:数据挖掘,决策树,分类,103,信息增益 ’ 中图分类号:TP301 文献标识码:A 文章编号:1672—7800(2010)09—0103—02 节点根据某种算法从该节点包含的若干测试属性中选择其中 0引言 一个,然后由该节点伸出若干分支,不同分支对应所选测试属 近年来,数据挖掘越来越引起IT领域的关注。数据挖掘技 性的不同取值.如此做下去,直到当前决策树可以正确地分出 术的出现解决了目前数据爆炸而信息匮乏的问题。它通过分 各类训练实例。 1.1.3具体步骤 析,从大量的、不完全的、有噪声的、模糊的、随机的实际应用数 据中提取出有效的、潜在有用的信息,这些信息可用于解决如 (1)构造第一棵决策树 {JR},R为树 的根节点,也是该 医疗诊断、风险评估等决策问题。作为数据挖掘中的重要课题, 树目前的唯一节点。记 =(D,A),D代表训练集(原始数据全 分类模式的获取和知识表达在数据挖掘领域中占有着重要地 体).A代表测试属性全体。 位。目前分类技术有很多种,如决策树、神经网络、遗传算法等, (2)判断当前决策树的叶子节点,若所有叶子节点都满足 而决策树是分类技术中的很重要的一种。决策树算法有多种 下列条件①节点中的所有训练实例都属于同一类;②节点中的 形式,其中心思想是输入已知数据(通常称为训练集),通过决 测试属性集为空之一,则算法停止。 策树算法对其进行训练,产生一棵决策树,对其进行分析,从而 (3)若步骤2不对所有的叶子节点成立,则选择其中一个 得到研究者想要的预测结果。产生决策树的过程如图1所示: 叶子节点R =(D ,A ),根据某种规则从A 中选择一个测试属性 a.根据a的n个不同取值将D 划分为互不相交的n个子集 Jf( 训练集)fl[ I———’,, 算法r fI D ,1≤ ≤n。从节点风发出n个分支,不同分支代表属性a的 不同取值,从而得到n个新的叶子节点R =(D ,Al\{a}),I≤ 图1决策树产生示意图 i≤/'t。 其中决策树的中间节点代表训练集的某一测试属性,节点 (4)转回步骤2,再对新决策树的每个叶子节点调用CLS 的后续分支代表该属性可能的取值.叶子节点代表训练实例的 算法。 分类。 1.1.4算法缺点 CIS算法的缺点是明显的.它没有给出对叶子节点选取测 1典型决策树算法 试属性的具体规则,使得在算法执行过程对测试属性的选择是 1.1 CLS算法 随机的,从而无法得到精简有效的决策树。在之后出现的决策 1.1.1 简述 树算法中,都提出了对测试属性的选择标准,对CLS算法进行 用于构造决策树的概念学习系统CLS于1966年由Hunt 了改进。 等人提出,它的提出是具有指导意义的,后来的许多决策树算 1.2 ID3算法 法的核心思想都是基于CLS的。 1.2.1 简述 1.1.2主要思想 ID3算法是在CLs的基础上提出的最有影响力的决策树 先构造只有一个根节点决策树,这个根节点里包含全部训 算法。ID3算法中将信息增益作为了选择测试属性的标准。另 练实例和全部测试属性,之后,对于当前决策树的每一个叶子 外,ID3算法采取了增量式学习的技术,解决了训练集过大以 作者简介:郭亚宁(1990-),男,山东济宁人,山东大学威海分校学生,研究方向为数据挖掘;冯莎莎(1990一),女,山东滨州人,山东大学威海分校学 生,研究方向为数据挖掘。 ・104・ 软件导刊 2010焦 至无法一次性装入内存的问题。 1.2.2信息增益与测试属性的选择标准 2 II)3算法的实现 (1)建立树的数据结构(这里用孩子兄弟表示法) #define N 100 首先介绍信息论中信息熵的概念及计算方法。 分布p=(P ,Pz,...,p )传递的信息量称为该分布的熵,记为 ,(p),计算公式为: , )-_ pi*log ̄pi typedef struct CSNode{ NodeType data; struct CSNode*Lchild, Rsibling; 假设有穷向量空间E中有m个例子集Si,1≤ ≤m,例子集 }CSNode,*CSTree;//决策树的数据结构 typedef struct NodeType{ Si的大小为s ,并设s=E 即s表示向量空间E的大小,则该 向量的信息熵为: I(S ,Sz,…,Js )=一 争f0g2争 若所选属性为A,A有 个不同的取值啦,1≤ ≤ ,根据A 的不同取值将向量空间E分为 个不相交的子空间{E , ,..., 鼠},用 表示子空间历中包含的例子集S的个数,则以 为 测试属性所得分类的期望信息熵为: E(A)一∑ ,s … ) 1 u 其中,(5v … f0g2 于是得到信息增益为: gain(A):,(S1,Sz,...,Sm)-E(A) 选取测试属性时,要选取各属性中gain(A)最大的,因为在 J(s ,S ,...,S )固定的情况下,此时E(A)值最小,即以A为被选 测试属性所得分类的信息熵最小,此时对向量空间E分类的 稳定性最好。以A为根节点,对以后的各节点不断调用上述过 程.从而构成一棵决策树。 1.2.3算法缺点 ID3算法仍有许多不足,主要有以下几个方面:①测试属 性选择过程中偏向选择属性值多的,但现实中其不一定是最优 的;②只能处理离散型的属性值,无法处理连续型的属性值;③ 无法处理属性值缺失样本的情况。 1.2.4 ID3算法的改进 鉴于ID3算法存在的上述缺点,有人对其进行了改进: (1)加权简化信息熵算法。主要在以下两个方向进行了改 进:①提高了决策树的生成效率。通过泰勒公式与麦克劳林公 式与信息熵计算公式的结合,减少了计算量,节省了计算时间; ②缓和TN试属性选择中的偏向性。通过对各属性赋予不同的 权值。使取值较多的属性与取值较少的属性拥有同样的被选择 几率。 (2)选取优值法。这一方法主要是针对ID3算法倾向选 取值较多属性这一缺点而提出的,这里引进了选取优值的概 念。 (3)属性相关性度量法。这也是针对ID3算法选属性具有 偏向性的缺点提出的改进算法,在这一方法里用属性相关性度 量代替信息熵来选取测试属性。 int attrnum://每个节点包含的属性个数 TAttr attr[N];//每个节点包含的属性 datatype*data;//每个节点包含的训练集 }; typedef struet TAttr{ int attrvaluenum://每个属性的值的个数 AttrType attrvalue[N];//每个属性的值 f; (2)建立ID3决策树的伪代码 函数简介:@InitCSTree(T):初始化决策树,指明当前决策 树(或其子树)根节点包含的属性和训练集;@Calgain(T):计算 当前决策树(或其子树)根节点所有属性的信息增益;( ̄)Selec— tAttr():选择信息增益最大的属性,返回该属性,在数组attr [N]中的位置;④CreateLeaf(T):生成T的一个叶子节点,该叶 子节点中属性集少了上一步选择的属性,训练集为拥有该属性 值的所有训练实例组成的集合。 void CreateID3Tree(CSTree&T)t InitCSTree(T); Calgain(T); LocAttrmax=SelectAttr(); for(i=0;i<T.data.attr[LocAttrmax].attrvaluenum;++i) CreateLeaf(T); CreatelD3Tree(T->Lchild); CreateID3Tree(T->Rsibling); } 3结束语 本文用尽可能通俗的语言尽可能详细地描述了决策树算 法中最经典的ID3算法,以求读者对其有深入的了解。算法的 软件实现是未来的一个发展方向,文章最后给出的是最基础的 实现思想。 参考文献 [1] 续蕾,刘玉江。基于经营决策为主题的数据挖掘的应用——决策 树算法实例研究[J].电脑知识与技术,2007(3). [2]HAN J.W,KAMBER M.Data Mining Concepts and Techniques [M].Morgan Kaufmann,2001. [3] 史忠植.知识发现[M].北京:清华大学出版社,2002. 第9卷第9期 软件导刊 VO1.9 NO.9 2010年9月 Software Guide … Seo.2Ol0 软件工程在软件开发中的应用 王 巍.周 沫 (上海政治学院,上海200435) 摘要:通过分析软件开发过程中存在的问题,引入软件工程的概念,并概括了利用软件工程进行软件开发中最重 要的3个方面。传统的软件工程方法将被面向对象的方法所取代,组件技术必将越来越倍受重视,同时更加新颖、更 加先进的方法也必将会出现。 关键词:软件工程;需求 中图分类号:TP311.5 文献标识码:A 文章编号:1672—7800(2010)09—0105—02 软件的可靠性、可维护性较差,而且往往超出开发时间的要求; f r【 【 1软件工程的起源 软件生产率、软件质量远远满足不了社会发展的需要,出现了 m ¨ “软件危机”现象。软件工程这一术语首次出现在1968年由 上世纪60年代以来,随着计算机的广泛应用,软件开发所 NATO组织的一次计算机学术会议上,其目的是倡导以工程的 面临的问题域的复杂性急剧膨胀。系统的规模和复杂度空前扩 原理、原则和方法进行软件开发,以期解决当时发生的“软件危 大。但当时软件开发基本上还是依赖开发人员的个人技能,没 机”。 有可以遵循的原理、原则和方法,同时也缺乏有效的管理;软件 从软件工程的角度去指导软件开发,系统地将软件工程知 的复杂性和其中包含的错误达到了开发人员难以控制的程度, 识应用于实际问题.按软件工程思想展开工作,是解决“软件危 林杰斌,刘明德,陈湘.数据挖掘与OLAP理论与实务[M].北京: 施蕾,唐艳琴,张欣星.数据挖掘中决策树方法的研究[J].计算 清华大学出版社.2003. 机与现代化.2009(1O). 杨静,张楠男,李建,等.决策树算法的研究与应用[J].计算机技 邵峰晶,于忠清,王金龙,等.数据挖掘原理与算法(第二版) 术与发展.2010(2). [M].北京:科学出版社,2009. PORTER B W,BARESS E R,HOLTE R.Concept learning and 但小容,陈轩恕,刘飞,等.数据挖掘中决策树分类算法的研究 heuristic classification in weak theory domains[J].Artiifcial Intelli— 与改进[J].软件导刊,2009(2). gence,1990(2). 王静红,王熙照,邵艳华.决策树算法的研究及优化[J].微机发 陈晶,肖丁.决策树算法在数据挖掘中的应用研究[J].软件导刊, 展.2004(9). 2008(3). 韩家新,王家华.一种以相关性确定条件属性的决策树[J].微机 陈京民.数据仓库原理、设计与应用[M].北京:中国水利水电出 发展,2003(5). 版社.2004. (责任编辑:卓光) 路红梅.基于决策树的经典算法综述[J].宿州学院学报,2007(2). Analysis of data mining based on decision tree algorithm Abstract:The article introduced some basic conception of data mining and decision tree algorithm at first.And then an algorithm called ID3 which is the most classical and most widely used is introduced detailed,as well its improvement.Some data structures and codes are given at the end of the article. Key Words:Data Mining,Decision Tree,Classing,Id3,Information Gain 作者简介:王巍(1982一),男,山西晋中人,上海政治学院训练部助教,研究方向为信息系统开发;周沫(1986一),女,河南南阳人,上海政治 学院训练部助教,研究方向为多媒体教学。