C4.5决策树算法概念学习
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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数据集,我们来处理温度属性,来选择合适的阈值。
⾸先按照温度⼤⼩对对应样本进⾏排序如下:
•那么可以看到有13个可能的候选阈值点,⽐如middle[64,65], middle[65,68]….,middle[83,85]。
那么最优的阈值该选多少呢?应该是middle[71,72],如上图中红线所⽰。
为什么呢?如下计算:
•通过上述计算⽅式,0.939是最⼤的,因此测试的增益是最⼩的。
(测试的增益和测试后的熵是成反⽐的,这个从后⾯的公式可以很清楚的
看到)。
根据上⾯的描述,我们需要对每个候选分割阈值进⾏增益或熵的计算才能得到最优的阈值,我们需要算N-1次增益或熵(对应温度这个变量⽽⾔就是13次计算)。
能否有所改进呢?少算⼏次,加快速度。
如何终⽌树的增长?
•前⾯提到树的增长实际上是⼀个递归过程,那么这个递归什么时候到达终⽌条件退出递归呢?有两种⽅式,第⼀种⽅式是如果某⼀节点的分⽀所覆盖的样本都属于同⼀类的时候,那么递归就可以终⽌,该分⽀就会产⽣⼀个叶⼦节点.还有⼀种⽅式就是,如果某⼀分⽀覆盖的样本的个数如果⼩于⼀个阈值,那么也可产⽣叶⼦节点,从⽽终⽌树的增长。
如何确定叶⼦节点的类?
•Tree-Growth终⽌的⽅式有2种,对于第⼀种⽅式,叶⼦节点覆盖的样本都属于同⼀类,那么这种情况下叶⼦节点的类⾃然不必多⾔。
对于第⼆种⽅式,叶⼦节点覆盖的样本未必属于同⼀类,直接⼀点的⽅法就是,该叶⼦节点所覆盖的样本哪个类占⼤多数,那么该叶⼦节点的类别就是那个占⼤多数的类。
借鉴于:⼤数据经典算法c4.5讲解。