决策树分类与预测主要内容分类与决策树概述ID3、C4.5与C5.0CART分类VS.预测分类和预测是两种数据分析形式,用于提取描述重要数据类或预测未来的数据趋势的模型分类:预测类对象的分类标号(或离散值)根据训练数据集和类标号属性,构建模型来分类现有数据,并用来分类新数据预测:建立连续函数值模型比如预测空缺值,或者预测顾客在计算机设备上的花费典型应用欺诈检测、市场定位、性能预测、医疗诊断分类是一种应用非常广泛的数据挖掘技术分类与预测的区别:当估计的属性值是离散值时,这就是分类;当估计的属性值是连续值时,这就是预测。分类和预测---示例分类银行贷款员需要分析数据,来弄清哪些贷款申请者是安全的,哪些是有风险的(将贷款申请者分为“安全”和“有风险”两类)我们需要构造一个分类器来预测类属编号,比如预测顾客属类预测银行贷款员需要预测贷给某个顾客多少钱是安全的构造一个预测器,预测一个连续值函数或有序值,常用方法是回归分析数据分类——一个两步过程(1)第一步,也成为学习步,目标是建立描述预先定义的数据类或概念集的分类器分类算法通过分析或从训练集“学习”来构造分类器。训练集由数据库元组(用n维属性向量表示)和他们相对应的类编号组成;假定每个元组属于一个预定义的类训练元组:训练数据集中的单个元组学习模型可以用分类规则、决策树或数学公式的形式提供数据分类——一个两步过程(2)第二步,使用模型,对将来的或未知的对象进行分类首先评估模型的预测准确率对每个测试样本,将已知的类标号和该样本的学习模型类预测比较模型在给定测试集上的准确率是正确被模型分类的测试样本的百分比测试集要独立于训练样本集,否则会出现“过分拟合”的情况第一步——建立模型训练数据集NAMERANKYEARSTENUREDMikeAssistantProf3noMaryAssistantProf7yesBillProfessor2yesJimAssociateProf7yesDaveAssistantProf6noAnneAssociateProf3no分类算法IFrank=‘professor’ORyears6THENtenured=‘yes’分类规则第二步——用模型进行分类分类规则测试集NAMERANKYEARSTENUREDTomAssistantProf2noMerlisaAssociateProf7noGeorgeProfessor5yesJosephAssistantProf7yes未知数据(Jeff,Professor,4)Tenured?监督学习VS.无监督学习监督学习(用于分类)模型的学习在被告知每个训练样本属于哪个类的“指导”下进行新数据使用训练数据集中得到的规则进行分类无监督学习(用于聚类)每个训练样本的类编号是未知的,要学习的类集合或数量也可能是事先未知的通过一系列的度量、观察来建立数据中的类编号或进行聚类数据预测的两步过程数据预测也是一个两步的过程,类似于前面描述的数据分类对于预测,没有“类标号属性”要预测的属性是连续值,而不是离散值,该属性可简称“预测属性”E.g.银行贷款员需要预测贷给某个顾客多少钱是安全的预测器可以看作一个映射或函数y=f(X)其中X是输入;y是输出,是一个连续或有序的值与分类类似,准确率的预测,也要使用单独的测试集3.1决策树概述决策树(DecisionTree)一种描述概念空间的有效的归纳推理办法。基于决策树的学习方法可以进行不相关的多概念学习,具有简单快捷的优势,已经在各个领域取得广泛应用。决策树是一种树型结构,其中每个内部结点表示在一个属性上的测试,每个分支代表一个测试输出,每个叶结点代表一种类别。决策树学习是以实例为基础的归纳学习。从一类无序、无规则的事物(概念)中推理出决策树表示的分类规则。概念分类学习算法:来源于Hunt,Marin和Stone于1966年研制的CLS学习系统,用于学习单个概念。1979年,J.R.Quinlan给出ID3算法,并在1983年和1986年对ID3进行了总结和简化,使其成为决策树学习算法的典型。Schlimmer和Fisher于1986年对ID3进行改造,在每个可能的决策树节点创建缓冲区,使决策树可以递增式生成,得到ID4算法。1988年,Utgoff在ID4基础上提出了ID5学习算法,进一步提高了效率。1993年,Quinlan进一步发展了ID3算法,改进成C4.5算法。另一类决策树算法为CART,与C4.5不同的是,CART的决策树由二元逻辑问题生成,每个树节点只有两个分枝,分别包括学习实例的正例与反例。其基本思想是以信息熵为度量构造一棵熵值下降最快的树,到叶子节点处的熵值为零,此时每个叶节点中的实例都属于同一类。决策树学习采用的是自顶向下的递归方法。决策树的每一层节点依照某一属性值向下分为子节点,待分类的实例在每一节点处与该节点相关的属性值进行比较,根据不同的比较结果向相应的子节点扩展,这一过程在到达决策树的叶节点时结束,此时得到结论。从根节点到叶节点的每一条路经都对应着一条合理的规则,规则间各个部分(各个层的条件)的关系是合取关系。整个决策树就对应着一组析取的规则。决策树学习算法的最大优点是,它可以自学习。在学习的过程中,不需要使用者了解过多背景知识,只需要对训练例子进行较好的标注,就能够进行学习。如果在应用中发现不符合规则的实例,程序会询问用户该实例的正确分类,从而生成新的分枝和叶子,并添加到树中。树是由节点和分枝组成的层次数据结构。节点用于存贮信息或知识,分枝用于连接各个节点。树是图的一个特例,图是更一般的数学结构,如贝叶斯网络。决策树是描述分类过程的一种数据结构,从上端的根节点开始,各种分类原则被引用进来,并依这些分类原则将根节点的数据集划分为子集,这一划分过程直到某种约束条件满足而结束。根结点个子大可能是松鼠可能是老鼠可能是大象在水里会吱吱叫鼻子长脖子长个子小不会吱吱叫鼻子短脖子短可能是长颈鹿在陆地上可能是犀牛可能是河马可以看到,一个决策树的内部结点包含学习的实例,每层分枝代表了实例的一个属性的可能取值,叶节点是最终划分成的类。如果判定是二元的,那么构造的将是一棵二叉树,在树中每回答一个问题就降到树的下一层,这类树一般称为CART(ClassificationAndRegressionTree)。判定结构可以机械的转变成产生式规则。可以通过对结构进行广度优先搜索,并在每个节点生成“IF…THEN”规则来实现。如图6-13的决策树可以转换成下规则:IF“个子大”THENIF“脖子短”THENIF“鼻子长”THEN可能是大象形式化表示成可能是大象鼻子长脖子短个子大根结点个子大可能是松鼠可能是老鼠可能是大象在水里会吱吱叫鼻子长脖子长个子小不会吱吱叫鼻子短脖子短可能是长颈鹿在陆地上可能是犀牛可能是河马构造一棵决策树要解决四个问题:收集待分类的数据,这些数据的所有属性应该是完全标注的。设计分类原则,即数据的哪些属性可以被用来分类,以及如何将该属性量化。分类原则的选择,即在众多分类准则中,每一步选择哪一准则使最终的树更令人满意。设计分类停止条件,实际应用中数据的属性很多,真正有分类意义的属性往往是有限几个,因此在必要的时候应该停止数据集分裂:该节点包含的数据太少不足以分裂,继续分裂数据集对树生成的目标(例如ID3中的熵下降准则)没有贡献,树的深度过大不宜再分。通用的决策树分裂目标是整棵树的熵总量最小,每一步分裂时,选择使熵减小最大的准则,这种方案使最具有分类潜力的准则最先被提取出来预测变量目标变量记录样本类标号属性类别集合:Class={“优”,“良”,“差”}决策树的基本原理根节点叶子节点分裂属性分裂谓词每一个叶子节点都被确定一个类标号每一个节点都代表了一个数据集。根节点1代表了初始数据集D其它节点都是数据集D的子集。例如,节点2代表数据集D中年龄小于40岁的那部分样本组成的数据集。子节点是父节点的子集。If(年龄40)and(职业=“学生”or职业=“教师”)Then信用等级=“优”If(年龄40)and(职业!=“学生”and职业!=“教师”)Then信用等级=“良”If(年龄≥40)and(月薪1000)Then信用等级=“差”If(年龄≥40)and(月薪≥1000and月薪≤3000)Then信用等级=“良”If(年龄≥40)and(月薪3000)Then信用等级=“优”决策树是指具有下列三个性质的树:每个非叶子节点都被标记一个分裂属性Ai;每个分支都被标记一个分裂谓词,这个分裂谓词是分裂父节点的具体依据;每个叶子节点都被标记一个类标号Cj∈C。任何一个决策树算法,其核心步骤都是为每一次分裂确定一个分裂属性,即究竟按照哪一个属性来把当前数据集划分为若干个子集,从而形成若干个“树枝”。熵,是数据集中的不确定性、突发性或随机性的程度的度量。当一个数据集中的记录全部都属于同一类的时候,则没有不确定性,这种情况下的熵就为0。决策树分裂的基本原则是,数据集被分裂为若干个子集后,要使每个子集中的数据尽可能的“纯”,也就是说子集中的记录要尽可能属于同一个类别。如果套用熵的概念,即要使分裂后各子集的熵尽可能的小。3.2ID3、C4.5与C5.0数据集D被按照分裂属性“年龄”分裂为两个子集D1和D2信息增益:Gain(D,年龄)=H(D)–[P(D1)×H(D1)+P(D2)×H(D2)]显然,如果D1和D2中的数据越“纯”,H(D1)和H(D2)就越小,信息增益就越大,或者说熵下降得越多。按照这个方法,测试每一个属性的信息增益,选择增益值最大的属性作为分裂属性。信息熵计算举例令C1对应“是”,C2对应“否”。那么C1有9个样本,C2有5个样本,所以数据集D的熵为:9406.0)145(log145)149(log149)5,9(),(2221IssI决策树归纳策略(1)输入数据划分D是训练元组和对应类标号的集合attribute_list,候选属性的集合Attribute_selection_method,指定选择属性的启发性过程算法步骤1.树以代表训练样本的单个节点(N)开始2.如果样本都在同一个类,则该节点成为树叶,并用该类标记3.否则,算法调用Attribute_selection_method,选择能够最好的将样本分类的属性;确定“分裂准则”,指出“分裂点”或“分裂子集”。决策树归纳策略(2)4.对测试属性每个已知的值,创建一个分支,并以此划分元组5.算法使用同样的过程,递归的形成每个划分上的元组决策树。一旦一个属性出现在一个节点上,就不在该节点的任何子节点上出现6.递归划分步骤停止的条件划分D(在N节点提供)的所有元组属于同一类没有剩余属性可以用来进一步划分元组——使用多数表决没有剩余的样本给定分支没有元组,则以D中多数类创建一个树叶属性选择度量属性选择度量是一种选择分裂准则,将给定类标号的训练元组最好的进行划分的方法理想情况,每个划分都是“纯”的,即落在给定划分内的元组都属于相同的类属性选择度量又称为分裂准则常用的属性选择度量信息增益增益率Gini指标信息增益(1)S是一个训练样本的集合,该样本中每个集合的类编号已知。每个样本为一个元组。有个属性用来判定某个训练样本的类编号假设S中有m个类,总共s个训练样本,每个类Ci有si个样本(i=1,2,3...m),那么任意一个样本属于类Ci的概率是si/s,那么用来分类一个给定样本的期望信息是:sssssssInfoimiim2121log),...,,(信息增益(2)一个有v个值的属性A{a1,a2,...,av}可以将S分成v个子集{S1,S2,...,Sv},其中Sj包含S中属性A上的值为aj的样本。假设Sj包含类Ci的sij个样本。根据A的这种划分的期望信息称为A的熵