C4.5 分类决策树
C4.5决策树算法概念学习
C4.5决策树算法概念学习
数据挖掘⼀般是指从⼤量的数据中⾃动搜索隐藏于其中的有着特殊关系性的信息的过程。
•分类和聚类
•分类(Classification)就是按照某种标准给对象贴标签,再根据标签来区分归类,类别数不变。
•聚类(clustering)是指根据“物以类聚”的原理,将本⾝没有类别的样本聚集成不同的组,这样的⼀组数据对象的集合叫做簇,并且对每⼀个这样的簇进⾏描述的过程。
C4.5算法应该解决的问题有哪些呢?
⼀、如何选择测试属性构造决策树?
⼆、对于连续变量决策树中的测试是怎样的呢?
三、如何选择处理连续变量(阈值)?
四、如何终⽌树的增长?
五、如何确定叶⼦节点的类?
决策树:
如何选择测试属性构造决策树?
•⽤信息增益率来选择属性
•这个指标实际上就等于增益/熵,之所以采⽤这个指标是为了克服采⽤增益作为衡量标准的缺点,采⽤增益作为衡量标准会导致分类树倾向于优先选择那些具有⽐较多的分⽀的测试,也就是选择取值较多的属性,这种倾向需要被抑制。
•其中,S1到Sc是c个不同值的属性A分割S⽽形成的c个样本⼦集。如按照属性A把S集(含30个⽤例)分成了10个⽤例和20个⽤例两个集合则SplitInfo(S,A)=-1/3*log(1/3)-2/3*log(2/3)
•很明显,我们看到这个例⼦中对于连续变量,所有连续变量的测试分⽀都是2条,因此在C4.5算法中,连续变量的分⽀总是两条,分⽀其测试分⽀分别对应着{<=θ,>θ},θ对应着分⽀阈值,但是这个θ怎么确定呢?
•很简单,把需要处理的样本(对应根节点)或样本⼦集(对应⼦树)按照连续变量的⼤⼩从⼩到⼤进⾏排序,假设该属性对应的不同的属性值⼀共有N个,那么总共有N-1个可能的候选分割阈值点,每个候选的分割阈值点的值为上述排序后的属性值链表中两两前后连续元素的中点,那么我们的任务就是从这个N-1个候选分割阈值点中选出⼀个,使得前⾯提到的信息论标准最⼤。举个例⼦,对于Golf数据集,我们来处理温度属性,来选择合适的阈值。⾸先按照温度⼤⼩对对应样本进⾏排序如下:
数据挖掘中的数据分类算法综述
分析
Technology Analysis
I G I T C W 技术
136DIGITCW
2021.02
1 决策树分类算法
1.1 C 4.5分类算法的简介及分析
C4.5分类算法在我国是应用相对较早的分类算法之一,并且应用非常广泛,所以为了确保其能够满足在对规模相对较大的数据集进行处理的过程中有更好的实用性能,对C4.5分类算法也进行了相应的改进。C4.5分类算法是假如设一个训练集为T ,在对这个训练集建造相应的决策树的过程中,则可以根据In-formation Gain 值选择合理的分裂节点,并且根据分裂节点的具体属性和标准,可以将训练集分为多个子级,然后分别用不同的字母代替,每一个字母中所含有的元组的类别一致。而分裂节点就成为了整个决策树的叶子节点,因而将会停止再进行分裂过程,对于不满足训练集中要求条件的其他子集来说,仍然需要按照以上方法继续进行分裂,直到子集所有的元组都属于一个类别,停止分裂流程。
决策树分类算法与统计方法和神经网络分类算法相比较具备以下优点:首先,通过决策树分类算法进行分类,出现的分类规则相对较容易理解,并且在决策树中由于每一个分支都对应不同的分类规则,所以在最终进
行分类的过程中,能够说出一个更加便于了解的规则集。其次,在使用决策树分类算法对数据挖掘中的数据进行相应的分类过程中,与其他分类方法相比,速率更快,效率更高。最后,决策树分类算法还具有较高的准确度,从而确保在分类的过程中能够提高工作效率和工作质量。决策树分类算法与其他分类算法相比,虽然具备很多优点,但是也存在一定的缺点,其缺点主要体现在以下几个方面:首先,在进行决策树的构造过程中,由于需要对数据集进行多次的排序和扫描,因此导致在实际工作过程中工作量相对较大,从而可能会使分类算法出现较低能效的问题。其次,在使用C4.5进行数据集分类的过程中,由于只是用于驻留于内存的数据集进行使用,所以当出现规模相对较大或者不在内存的程序及数据即时无法进行运行和使用,因此,C4.5决策树分类算法具备一定的局限性。通过对C4.5分类算法的简介和分析可知,在使用C4.5分类算法的过程中,一定要明确数据集的具体使用特征,然后再选择相应的分类算法,防止由于分类算法选择不正确,而导致在后期对数据进行分类使用的过程中,出现工作效率低,工作质量差的问
常见决策树分类算法都有哪些?
在机器学习中,有一个体系叫做决策树,决策树能够解决很多问题。在决策树中,也有很多需要我们去学习的算法,要知道,在决策树中,每一个算法都是实用的算法,所以了解决策树中的算法对我们是有很大的帮助的。在这篇文章中我们就给大家介绍一下关于决策树分类的算法,希望能够帮助大家更好地去理解决策树。
1.C4.5算法
C4.5算法就是基于ID3算法的改进,这种算法主要包括的内容就是使用信息增益率替换了信息增益下降度作为属性选择的标准;在决策树构造的同时进行剪枝操作;避免了树的过度拟合情况;可以对不完整属性和连续型数据进行处理;使用k交叉验证降低了计算复杂度;针对数据构成形式,提升了算法的普适性等内容,这种算法是一个十分使用的算法。
2.CLS算法
CLS算法就是最原始的决策树分类算法,基本流程是,从一棵空数出发,不断的从决策表选取属性加入数的生长过程中,直到决策树可以满足分类要求为止。CLS算法存在的主要问题是在新增属性选取时有很大的随机性。
3.ID3算法
ID3算法就是对CLS算法的最大改进是摒弃了属性选择的随机性,利用信息熵的下降速度作为属性选择的度量。ID3是一种基于信息熵的决策树分类学习算法,以信息增益和信息熵,作为对象分类的衡量标准。ID3算法结构简单、学习能力强、分类速度快适合大规模数据分类。但同时由于信息增益的不稳定性,容易倾向于众数属性导致过度拟合,算法抗干扰能力差。
3.1.ID3算法的优缺点
ID3算法的优点就是方法简单、计算量小、理论清晰、学习能力较强、比较适用于处理规模较大的学习问题。缺点就是倾向于选择那些属性取值比较多的属性,在实际的应用中往往取值比较多的属性对分类没有太大价值、不能对连续属性进行处理、对噪声数据比较敏感、需计算每一个属性的信息增益值、计算代价较高。
c4.5算法典型应用场景
c4.5算法典型应用场景
C4.5算法是一种常用的分类算法,主要用于基于特征的离散决策树的学习。它可以用来处理大多数的数据挖掘问题,如:信用评估,决策支持,工程控制等。C4.5算法可以有效避免欠拟合和过拟合的问题,使用它来预测新数据,准确率更高。
C4.5算法有非常多的应用场景,下面我们通过一些简单的示例来看看C4.5算法的典型运用:
1、调查分析:为了更清晰地了解某种现象,常常使用C4.5算法对已经有的数据做分析,以便更快地搞懂这种现象的根源所在及其特征。
2、投资决策:在实际投资决策中,使用C4.5算法研究投资各变量之间的关系,从而把握投资风险。
3、医学诊断:C4.5算法在医学上的应用,可以从特征中建立医学特征继电器及决策树,以帮助医生更加快捷准确的诊断病症。
4、金融信贷:金融机构在发放信贷时,C 4.5算法可以用来评估申请者的信用档案,从而保证信贷的安全性。
5、控制系统:C4.5算法可以用于控制系统,它可以建立一系列事先定义好的规则,帮助控制调节目标参数。
6、产品分类:C4.5算法可以用来计算数据集中不同产品分类的得分,来判断出给定的样本数据应该属于哪个分类,从而帮助企业快速准确地分类它的产品数据。
7、自然语言处理:C4.5算法也可以应用于自然语言处理领域。通过识别句子中特定单词,我们可以用该方法计算出一句话属于什么类别,例如销售、客服或者咨询。
综上所述,可以看出C4.5算法有着广泛的应用场景,不仅可以应用于投资决策、调查分析和金融信贷,还可以应用于医学诊断、控制系统、产品分类以及自然语言处理等诸多领域,可谓是功能强大。
机器学习10大经典算法详解
机器学习10⼤经典算法详解
本⽂为⼤家分享了机器学习10⼤经典算法,供⼤家参考,具体内容如下
1、C4.5
C4.5算法是机器学习算法中的⼀种分类决策树算法,其核⼼算法是ID3算法. C4.5算法继承了ID3算法的优点,并在以下⼏⽅⾯对ID3算法进⾏了改进:
1)⽤信息增益率来选择属性,克服了⽤信息增益选择属性时偏向选择取值多的属性的不⾜;
2)在树构造过程中进⾏剪枝;
3)能够完成对连续属性的离散化处理;
4)能够对不完整数据进⾏处理。
C4.5算法有如下优点:产⽣的分类规则易于理解,准确率较⾼。其缺点是:在构造树的过程中,需要对数据集进⾏多次的顺序扫描和排序,因⽽导致算法的低效。
2、The k-means algorithm即K-Means算法
k-means algorithm算法是⼀个聚类算法,把n的对象根据他们的属性分为k个分割,k < n。它与处理混合正态分布的最⼤期望算法很相似,因为他们都试图找到数据中⾃然聚类的中⼼。它假设对象属性来⾃于空间向量,并且⽬标是使各个群组内部的均⽅误差总和最⼩。
3、Support vector machines⽀持向量机
⽀持向量机(Support Vector Machine),简称SV机(论⽂中⼀般简称SVM)。它是⼀种监督式学习的⽅法,它⼴泛的应⽤于统计分类以及回归分析中。⽀持向量机将向量映射到⼀个更⾼维的空间⾥,在这个空间⾥建⽴有⼀个最⼤间隔超平⾯。在分开数据的超平⾯的两边建有两个互相平⾏的超平⾯。分隔超平⾯使两个平⾏超平⾯的距离最⼤化。假定平⾏超平⾯间的距离或差距越⼤,分类器的总误差越⼩。⼀个极好的指南是C.J.C Burges的《模式识别⽀持向量机指南》。van der Walt和Barnard 将⽀持向量机和其他分类器进⾏了⽐较。
决策树C4.5算法总结
outlook sunny sunny overcast rainy rainy rainy overcast sunny sunny rainy sunny overcast overcast rainy
temperature hot hot hot mild cool cool cool mild cool mild mild mild hot mild
temperature yes no
hot mild cool 2 4 3 2 2 1 high
humidity yes no
3 6 4 1 FALS E TRUE
windy yes no
6 3 2 3
play yes no
9 5
norm al
如果选outlook作为决策树的根节点,(7)式中的Y为集合{sunny、overcast、 rainy},此时的条件熵为
C4.5算法简介
C4.5比ID3的改进: 1) 用信息增益率来选择属性,克服了用信息增 益选择属性时偏向选择取值多的属性的不足; 2) 在树构造过程中进行剪枝; 3) 能够完成对连续属性的离散化处理; 4) 能够对不完整数据进行处理。 C4.5算法优点:产生的分类规则易于理解,准 确率较高。 C4.5算法缺点:在构造树的过程中,需要对数 据集进行多次的顺序扫描和排序,因而导致算 法的低效。
humidity high high high high normal normal normal high normal normal normal high normal high FALSE TRUE FALSE FALSE FALSE TRUE TRUE FALSE FALSE FALSE TRUE TRUE FALSE TRUE
决策树C4.5算法
大小从小到大进行排序
假设该属性对应的不同的属性值一共有N个,那么总共有N-1个可能的候选
分割阈值点,每个候选的分割阈值点的值为上述排序后的属性值中两两前后 连续元素的中点
用信息增益率选择最佳划分
C4.5算法
属性值缺失
• 缺缺失值:在某些情况下,可供使用的数据可能缺少某些属性的值。例如(X, y)是样
C4.5算法
• 与ID3不同,C4.5采用基于信息增益率(information Gain Ratio)的方法选择测试
属性,信息增益率等于信息增益对分割信息量的比值。
• GainRatio(S,F)=Gain(S,F)/SplitInformation(S,F)
• 设样本集S按离散属性F的V个不同的取值划分为,共V个子集 • 定义分割信息量Split(S, F):
• 优点: 实际应用中有效
• 缺点:数据量大时,计算代价较大。
• 常见的后剪枝方法有: Reduced-Error Pruning(REP, 错误率降低剪枝 )、 Pessimistic Error Pruning(PEP,悲观剪枝)和Cost-Complexity Pruning(CCP、代价复杂度)
Thanks
简单处理策略就是丢弃这些样本
C4.5算法
过拟合问题
决策树算法C4.5
《数据仓库与数据挖掘》决策树算法C4.5
本组成员:
07103218王维光 07103224 郑辰
07103229刘倩 07103230宋琛
一.背景
最早的决策时算法是由Hunt等人于1966年提出的CLS。当前最有影响的决策树算法是Quinlan于1986年提出的ID3和1993年提出的C4.5。ID3只能处理离散型描述属性,它选择信息增益最大的属性划分训练样本,其目的是进行分枝时系统的熵最小,从而提高算法的运算速度和精确度。ID3算法的主要缺陷是,用信息增益作为选择分枝属性的标准时,偏向于取值较多的属性,而在某些情况下,这类属性可能不会提供太多有价值的信息。C4.5是ID3算法的改进算法,不仅可以处理离散型描述属性,还能处理连续性描述属性。C4.5采用了信息增益比作为选择分枝属性的标准,弥补了ID3算法的不足。
决策树算法的优点如下:(1)分类精度高;(2)成的模式简单;(3)对噪声数据有很好的健壮性。因而是目前应用最为广泛的归纳推理算法之一,在数据挖掘中受到研究者的广泛关注。
二.C4.5改进的具体方面
1.ID3算法存在的缺点
(1)ID3算法在选择根节点和各内部节点中的分支属性时,采用信息增益作为评价标准。信息增益的缺点是倾向于选择取值较多的属性,在有些情况下这类属性可能不会提供太多有价值的信息。
(2)ID3算法只能对描述属性为离散型属性的数据集构造决策树。
2. C4.5算法做出的改进
(1)用信息增益率来选择属性
克服了用信息增益来选择属性时偏向选择值多的属性的不足。信息增益率定义为:
C45算法
• 将这四个属性作为决策属性,定义成绩大于等于85分为“优”;大
于等于80,小于85分为“良”;大于等于70,小于80为“中”。将
四个属性的和作为智育成绩,并按智育测评的标准,将训练样本中
智育成绩由高到低按比例分类: 10%为优、30%为良、40%为中
等、剩余为及格四个标准,并将这四个标准作为分类属性(如表1所
整理ppt
12
(2)能够完成对连续属性的离散化处理
离散化处理过程中,C4.5算法是对节点上的每个 属性都要计算其信息增益率,然后从中选择信息增益率 最大的属性断点。由于在信息增益率计算过程中涉及 到对数函数的计算,在计算程序中就得调用库函数,同 时随着数据量的增大,计算量也随之增大。这样就增 加了计算量时间。因此,在改进的C4.5算法中采用了 “Fayyad 边界点判定定理”
智育成绩 336. 14 345. 97 352. 15 345. 36 326. 29 330. 14 337. 15 335. 66 324. 63 335. 23
整理ppt
18
三、C4.5算法应用举例
表1 决策树训练样本集
编号 政治 英语 核心专业课 一般专业课
11 77. 33 80. 5 85. 14 86. 53
I( u11 , u21 , u31 , u41 ) = I(1, 0, 0, 0) =0.225; (2) 当“ 政治成绩 ” 为良时 ,
C4.5决策树
C4.5决策树
C4.5决策树在ID3决策树的基础之上稍作改进,请先阅读。
C4.5克服了ID3的2个缺点:
1.⽤信息增益选择属性时偏向于选择分枝⽐较多的属性值,即取值多的属性
2.不能处理连贯属性
Outlook Temperature Humidity Windy PlayGolf?
sunny8585FALSE no
sunny8090TRUE no
overcast8386FALSE yes
rainy7096FALSE yes
rainy6880FALSE yes
rainy6570TRUE no
overcast6465TRUE yes
sunny7295FALSE no
sunny6970FALSE yes
rainy7580FALSE yes
sunny7570TRUE yes
overcast7290TRUE yes
overcast8175FALSE yes
rainy7191TRUE no
Outlook和Windy取离散值,Temperature和Humidity则取连续值。
对于离散属性V,ID3中计算的是“信息增益”,C4.5中则计算“信息增益率”:
$IG\_ratio=\frac{IG(V)}{H(V)}$
$H(V)=-\sum_j{p(v_j)logp(v_j)}$
v j表⽰属性V的各种取值,在ID3中⽤信息增益选择属性时偏向于选择分枝⽐较多的属性值,即取值多的属性,在C4.5中由于除以了H(V),可以削弱这种作⽤。
C4.5是如何处理连续属性的呢?实际上它先把连续属性转换为离散属性再进⾏处理。虽然本质上属性的取值是连续的,但对于有限的采样数据它是离散的,如果有N条样本,那么我们有N-1种离散化的⽅法:<=v j的分到左⼦树,>v j的分到右⼦树。计算这N-1种情况下最⼤的信息增益率。
c4.5决策树原理
c4.5决策树原理
C4.5(也称为C5.0)是一种经典的决策树算法,由Ross Quinlan于1993年提出。它是一种用于机器学习和数据挖掘的强大工具,主要用于分类问题。以下是C4.5决策树算法的原理概述:
1. 信息熵和信息增益:
C4.5使用信息熵和信息增益来构建决策树。信息熵是对数据集的纯度度量,信息增益表示通过某个属性对数据集进行划分所带来的纯度提升。C4.5的目标是选择信息增益最大的属性作为划分依据。
2. 决策树构建过程:
2.1 选择最佳属性:
•对每个属性计算信息增益。
•选择信息增益最大的属性作为当前节点的划分属性。
2.2 划分数据集:
•使用选定的属性对数据集进行划分,生成子节点。
•对于每个子节点,递归执行上述过程,直到满足停止条件。2.3 停止条件:
•数据集已经纯净(属于同一类别)。
•到达树的最大深度。
•不再有可用属性进行划分。
3. 剪枝:
C4.5在决策树构建完成后执行剪枝,以避免过度拟合。剪枝的目标是去除一些不必要的叶子节点,提高模型的泛化性能。
4. 缺失值处理:
C4.5能够处理缺失值,当在某个节点上某个属性的值缺失时,它会考虑所有可能的取值,并按照缺失值所占比例计算信息增益。
5. 数值型属性处理:
对于数值型属性,C4.5采用二分法进行处理。它通过在属性上选择一个阈值,将数据集分为两个子集,然后选择信息增益最大的阈值进行划分。
6. 实例加权:
在C4.5中,每个样本都有一个权重,这个权重可以用于调整每个样本在信息增益计算中的贡献度。
7. 优缺点:
7.1 优点:
•生成的决策树易于理解和解释。
c4.5决策树例题
c4.5决策树例题
决策树是一种常见的机器学习算法,用于分类和预测任务。C4.5是决策树算法的一种改进版本,可以处理具有多个特征和多个类别的数据集。下面是一个关于购买电子产品的例题,展示C4.5决策树的具体步骤:
假设我们要根据以下属性来预测一个人是否会购买电子产品:
1.年龄:青年、中年、老年
2.收入:低、中、高
3.学历:中学、大学、研究生
4.信用等级:差、一般、良好、优秀
我们有一个包含以下训练数据的数据集:
以下是C4.5决策树的具体步骤:
步骤1:计算初始熵计算每个可能的类别的初始熵。在这个例子中,购买电子产品的可能类别是是和否,因此初始熵为:H(D) = -((6/10) * log2(6/10) + (4/10) * log2(4/10)) ≈ 0.971
步骤2:计算每个属性的信息增益计算每个属性的信息增益(即使用该属性进行划分后的熵的减少量)。对于每个属性,计算其每个可能值的条件熵,并将其与初始熵进行比较来计算信息增益。具体步骤如下:
a) 对于属性"年龄",计算其各个值的条件熵:
•年龄=青年:购买(2是, 2否),条件熵=-((2/4) * log2(2/4) + (2/4) * log2(2/4)) = 1.0
•年龄=中年:购买(3是, 1否),条件熵=-((3/4) * log2(3/4) + (1/4) * log2(1/4)) ≈ 0.811
•年龄=老年:购买(1是, 1否),条件熵=-((1/2) * log2(1/2) + (1/2) * log2(1/2)) = 1.0
c4.5决策树算法原理 -回复
c4.5决策树算法原理-回复
C4.5决策树算法原理
C4.5决策树算法是一种常用的机器学习算法,可以用于分类和预测任务。它是ID3算法的改进版本,对于连续属性和缺失数据有更好的处理能力。本文将从C4.5决策树算法的基本概念、构建过程和剪枝方法等几个方面进行详细介绍。
一、基本概念
1. 决策树
决策树是一种用于分类和预测的有监督学习模型。它由根节点、内部节点和叶子节点组成,每个节点表示一个属性或属性集合,用于判断样本的特征,根据属性的取值将样本分到不同的类别或取值。叶子节点表示最终的分类结果或预测标签。
2. 熵和信息增益
熵是信息论中用于度量系统不确定性的指标。在决策树算法中,我们使用熵来衡量样本集合的纯度。熵的定义如下:
H(D)=-∑p(x)log₂p(x)
其中,D是样本集合,p(x)是样本属于类别x的概率。
信息增益表示在已知某一属性的取值的情况下,使得样本集合纯度提高的程度。信息增益的计算公式为:
Gain(A)=H(D)-∑(D_v/D)H(D_v)
其中,A是属性,D_v是取值为v的样本子集,D是原始样本集合。
3. 剪枝
剪枝是决策树算法中的一个重要步骤,用于防止过拟合。过拟合是指决策树过于复杂,过度匹配训练数据,导致在未知数据上的泛化性能变差。剪枝通过删除一些决策树的分支或节点来简化决策树,提高其泛化能力。
二、构建过程
1. 特征选择
特征选择是C4.5算法中最关键的步骤之一。在每次选择特征时,我们计算每个属性的信息增益比,选择信息增益比最高的属性作为划分属性。信息增益比的计算公式为:
GainRatio(A)=Gain(A)/SplitInfo(A)
用于分类的决策树(DecisionTree)-ID3C4.5
⽤于分类的决策树(DecisionTree)-ID3C4.5
决策树(Decision Tree)是⼀种基本的分类与回归⽅法(ID3、C4.5和基于 Gini 的 CART 可⽤于分类,CART还可⽤于回归)。决策树在分类过程中,表⽰的是基于特征对实例进⾏划分,将其归到不同的类别。决策树的主要优点是模型可读、易于理解、分类速度快、建模与预测速度快。本⽂主要介绍 Quinlan 在 1986 年提出的 ID3 算法与 1993 年提出的 C4.5 算法。下⾯⾸先对决策树模型进⾏简单介绍。
决策树模型
决策树是由树节点与边组成的,其节点有两种类型,内部节点和叶节点,内部节点表⽰⼀个特征或者属性,叶节点代表类别,如下如所⽰:
图中可见根节点开始到叶节点的每条路径构建⼀条规则,内部节点的特征对应着规则的条件。整棵树满⾜⼀个重要性质:每⼀个训练数据实例都被⼀条唯⼀的路径覆盖。
决策树的学习算法是做⼀个递归选择最优特征的过程,⽤最优特征对训练数据集进⾏分割,对分割后的两个⼦数据集,选择各⾃⼦数据集的最优特征继续进⾏分割,如果某个⼦数据集已经能够正确分类,则将该节点改为叶节点。否则⼀直递归寻找最优特征知道没有合适特征为⽌。决策树可能对训练数据有很好的分类能⼒,对测试数据却未必,这时可能是由于过度拟合训练数据,⽽降低了其泛化性,可以通过剪枝操作合并过分细分的叶⼦节点,将数据归并到⽗节点来增加其泛化性。所以可以看到决策树⽣成过程对应着局部最优的特征选择,⽽剪枝对应着对模型进⾏全局调优。
对决策树模型有了初步认识之后,接下来将介绍决策树的建模与剪枝过程,这⾥重点介绍 ID3 与 C4.5 ,这两种形式的决策树学习均包括三个步骤:1)特征选择;2)决策树的⽣成;3)减枝。接下来的段落围绕这三部分展开。
决策树之python实现C4.5算法
决策树之python实现C4.5算法
原理
C4.5算法是在ID3算法上的⼀种改进,它与ID3算法最⼤的区别就是特征选择上有所不同,⼀个是基于信息增益⽐,⼀个是基于信息增益。
之所以这样做是因为信息增益倾向于选择取值⽐较多的特征(特征越多,条件熵(特征划分后的类别变量的熵)越⼩,信息增益就越⼤);因此在信息增益下⾯加⼀个分母,该分母是当前所选特征的熵,注意:这⾥⽽不是类别变量的熵了。
这样就构成了新的特征选择准则,叫做信息增益⽐。为什么加了这样⼀个分母就会消除ID3算法倾向于选择取值较多的特征呢?
因为特征取值越多,该特征的熵就越⼤,分母也就越⼤,所以信息增益⽐就会减⼩,⽽不是像信息增益那样增⼤了,⼀定程度消除了算法对特征取值范围的影响。
实现
在算法实现上,C4.5算法只是修改了信息增益计算的函数calcShannonEntOfFeature和最优特征选择函数chooseBestFeatureToSplit。
calcShannonEntOfFeature在ID3的calcShannonEnt函数上加了个参数feat,ID3中该函数只⽤计算类别变量的熵,⽽calcShannonEntOfFeature可以计算指定特征或者类别变量的熵。
chooseBestFeatureToSplit函数在计算好信息增益后,同时计算了当前特征的熵IV,然后相除得到信息增益⽐,以最⼤信息增益⽐作为最优特征。
在划分数据的时候,有可能出现特征取同⼀个值,那么该特征的熵为0,同时信息增益也为0(类别变量划分前后⼀样,因为特征只有⼀个取值),0/0没有意义,可以跳过该特征。
决策树C4.5分类算法的C++实现
决策树C4.5分类算法的C++实现
公司布置了⼀个任务让写⼀个决策树,以前并未接触数据挖掘的东西,但作为⼀个数据挖掘最基本的知识点,还是应该有所理解的。
程序的源码可以点击进⾏下载,下⾯简要介绍⼀下决策树以及相关算法概念。
决策树是⼀个预测模型;他代表的是对象属性与对象值之间的⼀种映射关系。树中每个节点表⽰某个对象,⽽每个分叉路径则代表的某个可能的属性值,⽽每个叶结点则对应从根节点到该叶节点所经历的路径所表⽰的对象的值。决策树仅有单⼀输出,若欲有复数输出,可以建⽴独⽴的决策树以处理不同输出。数据挖掘中决策树是⼀种经常要⽤到的技术,可以⽤于分析数据,同样也可以⽤来作预测(就像上⾯的银⾏官员⽤他来预测贷款风险)。从数据产⽣决策树的机器学习技术叫做决策树学习, 通俗说就是决策树。(来⾃维基百科)
1986年Quinlan提出了著名的ID3算法。在ID3算法的基础上,1993年Quinlan⼜提出了C4.5算法。为了适应处理⼤规模数据集的需要,后来⼜提出了若⼲改进的算法,其中SLIQ (super-vised learning in quest)和SPRINT (scalable parallelizableinduction of decision trees)是⽐较有代表性的两个算法,此处暂且略过。
本⽂实现了C4.5的算法,在ID3的基础上计算信息增益,从⽽更加准确的反应信息量。其实通俗的说就是构建⼀棵加权的最短路径Haffman树,让权值最⼤的节点为⽗节点。
下⾯简要介绍⼀下ID3算法:
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C4.5是一系列用在机器学习和数据挖掘的分类问题中的算法。它的目标是监督学习:给定一个数据集,其中的每一个元组都能用一组属性值来描述,每一个元组属于一个互斥的类别中的某一类。C4.5的目标是通过学习,找到一个从属性值到类别的映射关系,并且这个映射能用于对新的类别未知的实体进行分类。
C4.5由J.Ross Quinlan在ID3的基础上提出的。ID3算法用来构造决策树。决策树是一种类似流程图的树结构,其中每个内部节点(非树叶节点)表示在一个属性上的测试,每个分枝代表一个测试输出,而每个树叶节点存放一个类标号。一旦建立好了决策树,对于一个未给定类标号的元组,跟踪一条有根节点到叶节点的路径,该叶节点就存放着该元组的预测。决策树的优势在于不需要任何领域知识或参数设置,适合于探测性的知识发现。
从ID3算法中衍生出了C4.5和CART两种算法,这两种算法在数据挖掘中都非常重要。下图就是一棵典型的C4.5算法对数据集产生的决策树。
数据集如图1所示,它表示的是天气情况与去不去打高尔夫球之间的关系。
图1 数据集
图2 在数据集上通过C4.5生成的决策树
算法描述
C4.5并不一个算法,而是一组算法—C4.5,非剪枝C4.5和C4.5规则。下图中的算法将给出C4.5的基本工作流程:
图3 C4.5算法流程
我们可能有疑问,一个元组本身有很多属性,我们怎么知道首先要对哪个属性进行判断,接下来要对哪个属性进行判断?换句话说,在图2中,我们怎么知道第一个要测试的属性是Outlook,而不是Windy?其实,能回答这些问题的一个概念就是属性选择度量。
属性选择度量
属性选择度量又称分裂规则,因为它们决定给定节点上的元组如何分裂。属性选择度量提供了每个属性描述给定训练元组的秩评定,具有最好度量得分的属性被选作给定元组的分裂属性。目前比较流行的属性选择度量有--信息增益、增益率和Gini指标。
先做一些假设,设D是类标记元组训练集,类标号属性具有m个不同值,m个不同类Ci(i=1,2,…,m),CiD是D中Ci类的元组的集合,|D|和|CiD|分别是D和CiD中的元组个数。
(1)信息增益
信息增益实际上是ID3算法中用来进行属性选择度量的。它选择具有最高信息增益的属性来作为节点N的分裂属性。该属性使结果划分中的元组分类所需信息量最小。对D中的元组分类所需的期望信息为下式:
(1)
Info(D)又称为熵。
现在假定按照属性A划分D中的元组,且属性A将D划分成v个不同的类。在该划分之后,为了得到准确的分类还需要的信息由下面的式子度量:
(2)
信息增益定义为原来的信息需求(即仅基于类比例)与新需求(即对A划分之后得到的)之间的差,即
(3)
我想很多人看到这个地方都觉得不是很好理解,所以我自己的研究了文献中关于这一块的描述,也对比了上面的三个公式,下面说说我自己的理解。
一般说来,对于一个具有多个属性的元组,用一个属性就将它们完全分开几乎不可能,否则的话,决策树的深度就只能是2了。从这里可以看出,一旦我们选择一个属性A,假设将元组分成了两个部分A1和A2,由于A1和A2还可以用其它属性接着再分,所以又引出一个新的问题:接下来我们要选择哪个属性来分类?对D中元组分类所需的期望信息是Info(D) ,那么同理,当我们通过A将D划分成v个子集
Dj(j=1,2,…,v)之后,我们要对Dj的元组进行分类,需要的期望信息就是Info(Dj),而一共有v个类,所以对v个集合再分类,需要的信息就是公式(2)了。由此可知,如果公式(2)越小,是不是意味着我们接下来对A分出来的几个集合再进行分类所需要的信息就越小?而对于给定的训练集,实际上Info(D)已经固定了,所以选择信息增益最大的属性作为分裂点。
但是,使用信息增益的话其实是有一个缺点,那就是它偏向于具有大量值的属性。什么意思呢?就是说在训练集中,某个属性所取的不同值的个数越多,那么越有可能拿它来作为分裂属性。例如一个训练集中有10个元组,对于某一个属相A,它分别取1-10这十个数,如果对A 进行分裂将会分成10个类,那么对于每一个类Info(Dj)=0,从而式(2)为0,该属性划分所得到的信息增益(3)最大,但是很显然,这种划分没有意义。
(2)信息增益率
正是基于此,ID3后面的C4.5采用了信息增益率这样一个概念。信息增益率使用“分裂信息”值将信息增益规范化。分类信息类似于
Info(D),定义如下:
(4)
这个值表示通过将训练数据集D划分成对应于属性A测试的v个输出的v个划分产生的信息。信息增益率定义:
(5)
选择具有最大增益率的属性作为分裂属性。
(3)Gini指标
Gini指标在CART中使用。Gini指标度量数据划分或训练元组集D 的不纯度,定义为:
(6)
其它特征
树剪枝
在决策树的创建时,由于数据中的噪声和离群点,许多分枝反映的是训练数据中的异常。剪枝方法是用来处理这种过分拟合数据的问题。通常剪枝方法都是使用统计度量,剪去最不可靠的分枝。
剪枝一般分两种方法:先剪枝和后剪枝。
先剪枝方法中通过提前停止树的构造(比如决定在某个节点不再分裂或划分训练元组的子集)而对树剪枝。一旦停止,这个节点就变成树
叶,该树叶可能取它持有的子集最频繁的类作为自己的类。先剪枝有很多方法,比如(1)当决策树达到一定的高度就停止决策树的生长;(2)到达此节点的实例具有相同的特征向量,而不必一定属于同一类,也可以停止生长(3)到达此节点的实例个数小于某个阈值的时候也可以停
止树的生长,不足之处是不能处理那些数据量比较小的特殊情况(4)
计算每次扩展对系统性能的增益,如果小于某个阈值就可以让它停止生长。先剪枝有个缺点就是视野效果问题,也就是说在相同的标准下,也许当前扩展不能满足要求,但更进一步扩展又能满足要求。这样会过早停止决策树的生长。
另一种更常用的方法是后剪枝,它由完全成长的树剪去子树而形成。通过删除节点的分枝并用树叶来替换它。树叶一般用子树中最频繁的类别来标记。
C4.5采用悲观剪枝法,它使用训练集生成决策树又用它来进行剪枝,不需要独立的剪枝集。
悲观剪枝法的基本思路是:设训练集生成的决策树是T,用T来分类训练集中的N的元组,设K为到达某个叶子节点的元组个数,其中分类错误地个数为J。由于树T是由训练集生成的,是适合训练集的,因此J/K不能可信地估计错误率。所以用(J+0.5)/K来表示。设S为T的子树,其叶节点个数为L(s),为到达此子树的叶节点的元组个数总和,为此子树中被错误分类的元组个数之和。在分类新的元组时,则其错误分类个数为,其标准错误表示为: