ID3的基本思想和算法分析
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第1章决策树方法
在数据仓库和数据挖掘的应用中,分类是一种非常重要的方法.分类的概念是在已有数据的基础上学会一个分类函数或构造出一个分类模型(即我们通常所说的分类器(Classifier).该函数或模型能够把数据库中的数据纪录映射到给定类别中的某一个,从而可以应用于数据预测.分类的主要算法有:贝叶斯算法、决策树算法(如ID3、C4.5等)、规则推导、人工神经网络、最近邻算法、支持向量机等等.这些算法在许多现实数据集合上可以做比较精确的数据预测,为人们的生活、生产、学习、研究提供了有效的途径.其中决策树算法具有良好的可解释性,在实践中的应用最为广泛.决策树分类算法的一个典型代表就是ID3算法.
1.1 概述
1.1.1 学习的相关概念
分类是在一个作为输入的训练集合上学会一个分类函数或构造出一个分类模型,即我们通常所说的分类器(Classifier),然后利用它对数据集合中没有类标的实例指派最适合的类标.分类用于预测数据对象的类别.如可以构造一个分类模型来对银行贷款进行风险评估(安全或危险).机器学习、专家系统、统计学和神经生物学等领域的研究人员已经提出了许多具体的分类方法,如贝叶斯方法、决策树、规则推导、人工神经网络、支持向量机、基于实例的方法等.
训练集合是由一组数据实例构成,每个实例是一个由有关字段组成的特征向量,这些字段被称为属性(Attribute),用于分类的属性被叫做类标,类标属性也就是训练集合的类别标记.一个具体的实例形式可以表示为(a1,a2, … , a n, c), 其中a i (i=1, 2, … , n) 表示属性字段值,c 表示类标.给定训练数据集合D={x1, x2 , … , x n}, 分类任务的目标是对数据集合D 进行分析,确定一个映射函数f: (A1, A2, … , A n)→C ,使得对任意的未知类别的实例x i=(a1, a2 , … , a n)可标以适当的类标C*.
训练集合是构造分类器的基础.训练集合是包含一些属性的一个数据库表格,其中的一个属性被制定为分类标签.标签属性的类型一般要求是离散的,且标签属性的可能值的数目越少越好(最好是两或三个值).标签值的数目越少,构造出来的分类器的错误率越低.
机器学习方法分为有监督的学习和无监督的学习.有监督的学习需要给出不同类别的实例作为训练实例,由这些训练实例得到类的描述,然后给新的测试实例匹配类标.无监督的学习是在给定实例集合上,根据其内容,在无先验知识的条件下,将实例分成有意义的类.其中有监督的学习从学习过程的任务实施方式上可以分成两种极端的情况,即急切式学习策略和懒惰式学习策略.急切式学习策略在分类器训练阶段就建立将待分类实例映射到其预测类标上的一个有清晰假设的分类器.学习的过程是在训练数据集合上建立分类器的过程,它同分类过程是相分离的.一般的决策树算法就是典型的代表.而懒惰式学习算法没有建立清晰的假设,分类过程就是利用训练集合将给定实例与其类标匹配起来的过程,学习过程和学习结果的应用过程是同时进行的.
采用急切式学习策略的分类器,即对于给定的训练实例集合,在训练阶段就建立好一个分类器,在分类阶段直接地使用该分类器来给一个待分类实例分类.Fridman等的TAN分类器就是一种采用急切式学习策略的分类器.
采用懒惰式学习策略的分类器,在训练阶段不建立一个清晰的假设,而在分类阶段使用训练集合来将给定实例与其类标匹配起来,即在分类时利用训练集合和测试实例建立分类规则为该测试实例来分类.LBR分类器就是采用了一种完全懒惰的学习方法;基于实例的分类也采用了懒惰式学习策略.
一般来讲,对于同一种模型技术,急切式学习策略在效率上大大优于懒惰式学习策略,而懒惰式学习策略在分类精确度上优于急切式学习策略.
为了使分类器在能够在效率和分类精确度上都达到令人满意的水平,可以对上述两种学习策略进行研究,对同一种分类模型找到一个采用急切式学习策略和懒惰式学习策略的平衡点.这是分类器研究的一个突破点,也是本文的研究点之一.
1.1.3 学习问题实例介绍
在金融方面,银行和金融机构往往持有大量的关于客户的,各种服务的以及交易事务的数据,并且这些数据通常比较完整,可靠和高质量,这大大方便了系统化的数据分析和数据挖掘.在银行中,数据挖掘被用来建模,预测,识别伪造信用卡,估计风险,进行趋势分析,效益分析,顾客分析等.在此领域运用数据挖掘,可以进行贷款偿付预测和客户信用政策分析,以调整贷款发放政策,降低经营风险.信用卡公司可以应用数据挖掘中的关联规则来识别欺诈.
比如银行想知道顾客源在什么样的优惠后可以来开新账户,什么条件下顾客可能会注销已有的账户.例如,我们想预测信用卡欺诈行为,可以通过计算机算法分析信用卡用户的购买习惯,从而认识客户的模式,并分辨出偏离模式的信用卡盗用行为.
使用上面的模型和方法,该学习的过程首先需要有一个训练阶段,提供正反两面方面的偏离例子用挖掘程序来训练.训练之后,算法应能推导出合法交易的定义,并能预测一个新
的交易是合法的还是非法的.智能数据挖掘利用了广泛的高质量的机器学习算法,它能够在应付大量数据的同时,又保证理想的响应时间,使得市场分析,风险预测,欺诈管理,客户关系管理和竞争优势分析等应用成为可以.
在医疗领域中,成堆的电子数据可能已放在那儿很多年了,比如病人,症状,发病时间,发病频率以及当时的用药种类,剂量,住院时间等.在药物实验中,可能有很多种不同的组合,每种若加以实验,则成本太大,决策树方法可以被用来大减少实验次数.这种方法已被许多大的制药公司所采用.生物医学的大量研究大都集中在DNA 数据的分析上.人类大约有105个基因,几乎是不计其数.因此,数据挖掘成为DNA 分析中的强力工具,如:对DNA 序列间的相似搜索和比较;应用关联分析对同时出现的基因序列的识别;应用路径分析发现在疾病不同阶段的致病基因等.
电信业已经迅速从单纯的提供市话和长途服务变为综合电信服务,如语音,传真,移动电话,电子邮件,互联网接入服务.电信市场的竞争也变得越来越激烈和全方位化.利用数据挖掘来帮助理解商业行为,对电信数据的多维分析,检测非典型的使用模式以寻找潜在的盗用者,分析用户一系列的电信服务使用模式来改进服务,根据地域分布疏密性找出最急需建立网点的位置,确定电信模式,捕捉盗用待业,更好的利用资源和提高服务质量是非常必要的.借助数据挖掘,可以减少很多损失,保住顾客.
1.2 信息论基础
为了寻找对样本进行分类的最优方法,我们要做的工作就是使对一个样本分类时需要问的问题最少(即树的深度最小).因此,我们需要某种函数据来衡量哪些问题将提供最为平衡的划分,信息增益就是这样的函数之一.
1.2.1信息熵的概念
那么信息熵的定义为:设P是训练样本集,它包含n 个类别的样本,这些类别分别用C 1, C 2, …,C n , 表示,若给定的概率分布P i =(P 1, P 2, …P n )表示C i 的概率,则由该分布传递的信息量称为P 的信息熵,记为:
1.2.2 信息增益的概念
信息增益用来衡量熵的期望减少值,因此使用属性A 相对实例集合S 进行的划分获得的信息增益gain(S, A)定义为:
)
(inf ||||)(inf ),()(v A Varies v v S o S S S o A S gain ∑∈-=
gain(S, A)是指因为知道属性A 的值后导致的熵的期望压缩.gain(S, A)越大,说明选择
∑-
=)(2log *)(inf Pi Pi P o
测试属性A 对分类提供的信息越多.因为熵越小代表节点越纯,按照信息增益的定义,信息增益越大,熵的减小量也越大,节点就趋向于更纯.因此,可以对每个属性按照它们的信息增益大小排序,获得最大信息增益的属性被选择为分支属性.
1.3 决策树算法
1.3.1 决策树基本算法概述
决策树算法是一种常用的数据挖掘算法,它是从机器学习领域中逐渐发展起来的一种分类函数逼近方法.决策树学习的基本算法是贪心算法,采用自顶向下的递归方式构造决策树.目前利用决策树进行数据分类的方法已经被深入地研究,并且形成了许多决策树算法.
决策树算法的分类模型是一棵有向无环树,除了根节点以外,决策树的每个节点有且仅有一个父节点.
每个叶节点对应一个类标号,它的值就是使用决策树对未知样本分类的类标号的值.每个内部节点都对应一个分支方案,它包括用于节点分裂的属性A和分支的判断规则q .训练样本的属性分为数值属性和分类属性,数值属性的取值范围是一个连续的区间,比如实数集R;而分类属性的取值范围则是离散值的集合,比如属性性别的取值范围就是集合{男,女}.如果属性A是数值属性,那么q 的形式是A∈S '是A的取值范围S(A)的子集.
在数学上可以对决策树分类器作如下表述:给定样本集X,其中的样本属性c 个类别,用Xi 表示X中属于第i 类的样本集.定义一个指标集I={1, 2, …, c }和一个I的非空子集的集合τ={I1, I2…, Ib }.
我们可以令当i ≠i ’时,Ii ⋂Ii ’=Φ.一个广义决策规则f 就是X到τ的一个映射(记为f :X→τ).若f 把第i 类的某个样本映射到包含i 的那个子集I k 中,则识别正确.
设Q (X, I)是由样本集X和指标集I所形成的所有可能的映射的集合,则Q (X, I)可表示为由(a i , τi )所组成的集合,元素(a i , τi )称为一个节点,a i 是该节点上表征这种映射的参数,τi ={Ii1, Ii2…, i ip I }是该节点上指标集Ii 的非空子集的集合.令n i 和n j 是T (X, I)的两个元素,其中
(){},i ib i i i i i i I ,I I a n ⋅⋅⋅==,21,,,ττ
(){},j jb j j j j j j I ,I I a n ⋅⋅⋅==,21,,,ττ
若
则称n i 为n j 的父节点,或称n j 为n i 的子节点.
设B⊂Q (X, I)是节点的有限集,且n ∈B 中没有一个元素是n 的父节点,则称n
bj
l bi k Iik Ijl 1
,,1,=⋅⋅⋅==
是B的根节点.当B⊂Q (X, I)满足下列条件时,它就是一个决策树分类器.
(1)B中有一个并且只有一个根节点 (2)设n i 和n j 是B中的两个不同元素,则
(3)对于每一个i ⊂I ,B中存在一个节点(){},
b I ,
I I a n '','',,',21''⋅⋅⋅==ττ且τ'中有一个元素是i (与它对应的n ’的子节点叫叶节点,又称终止节点)
1.3.2 决策树生成算法
通用的自顶向下构建决策树的算法. 决策树的深度优先构建算法
输入:节点N,训练数据集D,分支指标SI
输出:以节点N为根节点的基于数据集D,分支指标SI的决策树 Procedure make_tree(N, D, SI) 初始化根节点
在D中计算SI,求解节点N的分支方案; If(节点N满足分支条件)
选择最好的分支方案将D分为D1,D2; 创建N的子节点N1,N2; make_tree(N1, D1, SI) make_tree(N 2, D 2, SI) endif end
1.3.3 修剪算法介绍
在树的构建阶级生成的决策树依赖于训练样本,因此它可能存在对训练样本的过度适应问题.例如,训练样本中的噪声数据和统计波动可能会使决策树产生不必要的分支,从而导致在使用决策树模型对观察样本实施分类时出错.为了避免这种错误,需要对决策树进行修剪,除去不必要的分支.
给定一个假设空间H ,假设h ∈H ,如果存在假设h '∈H ,在训练样本集上h 的分类错误率比h '小,但在整个样本空间上h '的分类错误率比h 小,则称假设h 过度适应训练样本集.
剪枝用于解决过度适应的问题.剪枝的原则包括:(1)奥卡姆剃刀原则――"如无必
bj
l bj
l Iji
Iil
1
1
==≠
要,勿增实体".即在与观察相容的情况下,就当选择最简单的一个;(2)决策树越小就越容易理解,其存储与传输的代价也就越小;(3)决策树越复杂,节点越多,每个节点包含的训练样本个数越少,则支持每个节点的假设的样本个数就越少,可能导致决策树在测试集上的分类错误率越大.但决策树过小也会导致错误率较大,因此,需要在树的大小与正确之间寻找均衡点.
常用的剪枝技术有预剪枝(pre-pruning)和后剪枝(post-pruning)两种.预剪枝技术限制决策树的过度生长(如CHAID ID3家族的ID3 C4.5T算法等),后剪枝技术则是待决策树生成后再进行剪枝(如CART算法等).
预剪枝:最直接的预剪枝方法是事先限定决策树的最大生长高度,使决策树不能过度生长.这种停止标准一般能够取得比较好的效果.不过指定树高度的方法要求用户对数据的取值分布有较为清晰的把握,而且需对参数值进行反复尝试,否则无法给出一个较为合理的树高度阈值.更普遍的作法是采用统计意义下的 2检验,信息增益等度量,评价每次节点分裂对系统性能的增益.如果节点分裂的增益值小于预先给定的阈值,则不对该节点进行扩展.如果在最好的扩展增益都小于阈值,即使有些节点的样本不属于同一类,算法也可以终止.选取阈值是困难的,阈值较高可能导致决策树过于简化,而阈值较低可能对决策树的化简不够充分.
预剪枝存在的视野效果的问题.在相同的标准下,当前的扩展不满足标准,但进一步的扩展有可能满足标准.采用预剪枝的算法有可能过早地停止决策树的构造,但由于不必生成完整的决策树,算法的效率很高,适合应用于大规模问题.
后剪枝:后剪枝技术允许决策树过度生长,然后根据一定的规则,剪去决策树中那些不具有一般代表性的叶节点或分支.
后剪枝算法有自上而下的和自下而上的两种剪枝策略.自下而上的算法首先从最底层的内节点开始剪枝,剪去满足一定条件的内节点,在生成的新决策上递归调用这个算法,直到没有要可以剪枝的节点为止.自上而下的算法是从根节点开始向下逐个考虑节点的剪枝问题,只要节点满足剪枝的条件就进行剪枝.
决策树修剪的基本算法:
Prune_tee(节点N)
If(节点N为叶节点)
返回C(t)+1
minCost1=prune_tree(N1)
minCost2=prune_tree(N2)
minCostN=min{C(t)+1,C split(N)+1+minCost1+minCost2};
if(minCostN= =C(t)+1)
将N的子节点N1和N2从决策树中修剪掉;
返回minCostN
在算法中,t为属于节点N的所有训练样本,C(t)和C split(N)分别为将N作为叶节点和内部节点本构建决策树的代价,算法的基本思想就是要使构建决策树的总代价最小.计算C(t)的公式为
其中,n 为t 中样本的个数,k 为t 中样本的类别数,n i为t 中属于类i 的样本数.计算C split(N)要分为两种情况:
(1)当节点N的分支属性为连续属性时,C split(N)=log2a+log2(v-1)
(2)当节点N的分支属性为离散属性时,C split(N)=log2a+log2(2 v-2)
其中,a 为决策树中用于节点分裂的属性的个数,v是分支属性可能取值的个数.目前,决策树修剪策略主要有三种:代价复杂度修剪(cost-complexity pruning),悲观修剪(pressimistic pruning)和基于最小描述长度(minimum description length, MDL)原理的修剪.悲观修剪是非曲直Quinlan在1987年提出的,该方法将所有的样本用于树的构建和修剪,但是这种方法产生的树太大,并且有时候精度不高.代价复杂修剪使用了独立的样本用于修剪,这种策略适用于训练样本比较多的情况.在训练样本数目较少的情况下,需要将所有的样本既用于树的构建,又用于树的修剪,基于MDL原理的修剪是使用较多并且效果较好的方法.
基于MDL原理的决策树算法有两个部分:一是决定数据编码代价和模型编码代价的编码模式,包括数据编码和模型编码;二是比较各个子树,确定是否剪枝的算法.MDL修剪过程是一个自底向上的递归过程.
修剪算法:
Pruning_the_tree(t)
If t is a leaf node then
Return cleaf=1; //cleaf is the cost of a leaf node
Else
Let cleaf be errors plus 1; //see option(1)
If the split attribute is a numeric attribute
Ltest=1
Else
Count the number of such tests used in the tree (say n);
Ltest=log2(n);
Cboth=1+ltest+pruning_the_tree(t.leftchild)+pruning_the_tree(t.rightchild);
If cleaf<cboth
Prune cboth children of t’s, and convert t into a leaf;
Return cleaf;
Else
Return cboth
1.4 决策树ID3
1.4.1 ID3的基本概念和相关信息论定义
在数据仓库和数据挖掘的应用中,分类是一种非常重要的方法.分类的概念是在已有数据的基础上学会一个分类函数或构造出一个分类模型,即我们通常所说的分类器(Classifier).该函数或模型能够把数据库中的数据纪录映射到给定类别中的某一个,从而可以应用于数据预测.分类的主要算法有:贝叶斯算法、决策树算法(如ID3、C4.5等)、规则推导、人工神经网络、最近邻算法、支持向量机等等.这些算法在许多现实数据集合上可以做比较精确的数据预测,为人们的生活、生产、学习、研究提供了有效的途径.其中决策树算法具有良好的可解释性,在实践中的应用最为广泛.决策树分类算法的一个典型代表就是ID3算法.
ID3算法是基于信息论(Information Theory)的方法.给定一个记录的集合,每个记录都有相同的结构,并且每个记录是由若干个成对的属性值组成的.这些属性代表记录所属的类别.ID3需要解决的问题是构造一个决策树,从而可以由非类别的属性值正确地预测出类别属性的值.
ID3算法可以分为两个阶段,一是建立决策树阶段,一是利用决策树给实例分类的阶段.在ID3算法建立决策树的过程中,可以递归地进行:首先,选择一个属性作为根节点,并为每一个可能的属性值生成一个分支.这样,把实例集合划分成多个子集合,该属性的每一个值划分为一个子集合.现在对每一个分支重复以上的过程,过程中使用的实例集合是属于该分支的实例.如果在一个节点的所有实例属于相同的类,则停止扩展那一部分子树.这样ID3的所建立的决策树中每一个非叶子节点对应着一个非类别属性,与属性中具有最大信息量的非类别属性相关联;每个叶节点代表从树根到叶节点之间的路径所对应的记录所属的类别属性值.在ID3建立决策树的过程中,一个重要的环节就是分裂属性的选择.选择分裂属性时ID3中采用了信息增益的标准.
1.4.2 ID3算法
基于ID3的基本思想,ID3的具体算法是:
Function ID3
R:一个非类别属性集合;C:类别属性;S:一个训练集.
返回一个决策树.
Begin
If S为空,返回一个值为丢失值的单个节点;
If S是由其值均为相同类别属性值的记录组成,返回一个带有该值的单个节点;
If R为空,则返回一个单节点,其值为在S的记录中找出的频率最高的类别属性值;
将R中属性之间具有最大gain(D,S)值的属性赋给D;
将属性D的值赋给{dj∣j=1,2,…,m};
将分别由对应于D的值为dj的记录组成的S的子集赋给{sj∣j=1,2,…,m };
返回一棵树,其根标记为D,树枝标记为d1,d2,…,dm;
再分别构造以下树:ID3(R-{D},C,S1),ID3(R-{D},C,S2),…,ID3(R-{D},C,S1);
End ID3
1.4.3一个实例的具体分析
下面就以有关天气问题的数据为例仔细介绍一下信息增益的概念和最佳分裂属性的选择过程.
有关天气问题的数据如表一所示:
一个属性的信息增益是由于使用这个属性分割实例而导致的期望熵降低.例如,属性A 相对实例集合S的信息增益Gain(S,A)定义为:
对表一中的各非类别属性计算信息增益的过程如下:
1.计算总的信息熵
信息熵的定义为:若给定的概率分布P=(P1,P2,…Pn),则由该分布传递的信息量称为P的信息熵,记为:
∑
-
=)
(2
log
*
)
(
inf Pi
Pi
P
o
在没有建立决策树之前,训练实例集合包括9个yes和5个no节点,相应总的信息熵为info([9, 5]) = 0.940 bits.
2.计算以outlook属性为根节点的树分裂后各个节点的平均信息熵
如图以outlook属性为根节点建立的树为:
(a)
temperature
Yes
yes
no
no
Yes
yes
yes
yes
no
no
Yes
yes
yes
no
(b)
humidity
hot mild cool
Yes yes yes no no no no
Yes
yes
yes
yes
yes
yes
no
high normal
(c)
windy
Yes
yes
yes
yes
yes
yes
no
no
Yes
yes
yes
no
no
no
false true
(d)
考虑一下每个节点的实例数目,我们计算一下他们的平均信息值;第一个和第三个节点有5个实例,第二个节点有4个,第三个节点有5个:
info([2, 3], [4, 0], [3, 2]) = (5 / 14) ×0.971 + (4 / 14) ×0 + (5 / 14) ×0.971 = 0.693 bits 3.计算属性outlook的信息获得
gain(outlook) = info([9, 5]) - info([2, 3], [4, 0], [3, 2]) = 0.940 - 0.693 = 0.247 bits,
4.重复上述步骤,得到temperature、humidity和windy的信息获得分别为:
gain(temperature) = 0.029 bits
gain(humidity) = 0.152 bits
gain(windy) = 0.048 bits,
计算出各个非类别属性的信息获得后,我们由此来选择信息获得最大的属性作为分裂属性,由上述计算结果可以看出属性outlook的信息获得最大,则选择其作为分裂属性来建立决策树.
(a)(b)
(c)
然后我们继续递归下去,图二表明当outlook = sunny时,可能在节点产生一个更深的分支.很明显,还依照outlook(观看)属性来划分下一层分支得不到任何新的东西,所以只考虑其它三个属性.他们各自的信息获得值是
gain(temperature) = 0.571 bits
gain(humidity) = 0.971 bits
gain(windy) = 0.020 bits,
所以我们选择humidity(湿度)作为这个点的划分属性,没有必要作进一步的划分了,这个分支结束.
继续用同样的方法得到图三的weather(天气)数据的决策树.理想的情况是当所有叶子节点是纯洁的时候过程结束.即,他们所包含的实例属于同一类.然而,也许不可能达到这种状态,因为有可能有一个实例集合,包含两个实例,有同样的属性集合,但属于不同的类,谁也不能保证这种情况不发生,所以当数据不能继续划分时就停止.这样就会在运用分类器给实例分类时出现有未分实例的现象.
上述过程是在ID3算法中建立决策树的过程,建立好决策树后就可以利用些决策树给实例进行分类.分类过程是根据待分实例在所建决策树中找到与其匹配的类属性值的过程.在程序设计中上也可以通过递归来实现.下面以实例(sunny,hot,high,False)为例说明一下其分类过程:
1.待分实例的在根节点outlook属性上的值为sunny,所以沿outlook=sunny路径,将实例分到以humidity属性为根节点的子树上.
2.待分实例的在当前根节点humidity属性上的值为high,而humidity=high路径对应的节点为叶子节点,此叶子节点对应的类属性值为no,因为已到叶子节点所以待分实例的类属性值就为no.
1.4.4 ID3算法的不足及决策树学习中常见问题
(偏置、过度拟合、连续值属性和确实属性的处理)----------------------------------机器学习
1.5 决策树学习的改进算法C4.5
类似于ID3基本思想和算法分析
C4.5算法是一个里程碑式的决策树算法,是迄今为止在实践中应用最为广泛的机器学习方法。
它所采用的是分而治之策略.其构造决策树的核心思想是贪心算法,它采用自上而下递归地各个击破方式构造决策树。
决策树生成的难点主要有如何处理连续值属性,如何处理缺省值,如何修剪决策树。
J48是在weka实验平台下它的具体实现程序.
1.5 实用的决策树学习算法C4.5
1.5.2 C4.5算法的工作流程
C4.5算法构造决策树的核心思想是贪心算法,它采用自上而下递归地各个击破方式构造决策树。
开始时,所有的属性都在根结点,这些属性都是种类字段(如果是连续的,将其离散化),所有记录用所选属性递归的进行分裂,属性的选择是基于一个统计的度量,然后把这个过程递归到每个子树,当一个结点上的数据都是属于同一个类别或者没有属性可以再用于对数据进行分裂时停止分裂。
决策树生成之后,对树剪枝以处理过分适应(Over-fitting )的问题。
(以下文字的标题有待确定)
C4.5分类器使用最大信息增益来选择连续型属性的阈值,它使得对结果划分中的样本分类所需的信息量最小,并反映划分的最小随机性或“不纯性”。
设S是s 个数据样本的集合,假定类标属性有m 个不同值,定义了m 个不同类ci ( i=1, 2,… , m ).设Si 是类ci 中的样本数。
对一个给定的样本分类所需的期望信息由下式给出
)(log ),,,(21
21i m
i i m P P S S S I ∑=-=⋯
其中Pi 是任意样本属于Ci 概率,并用Si/S 估计.
设连续值属性A 的阈值为a ,可以用阈值a 将S 划分为2个子集:S1={样本|属性值A 的取值< a},S2={样本|属性值A 的取值 >= a}。
设Sij 是子集Sj 中类Ci 的样本数。
根据由a 划分成子集合的熵或期望信息由下式给出
∑
=⋯+⋯+=2
1
11),,()(j mj j mj
j S S I S
S S A E
对于给定的子集Sj(j=1, 2)
∑=-=⋯m
i ij ij mj j P P S S I 1
21)(log ),,(
其中,Pij=Sij/Sj 是Sj 中的样本属于类Ci 的概率。
则属性在阈值a 上的信息增益为
)A (E )S ,,S (I )A (gain m a -⋯=1
换言之,gain(A)由于知道属性A 的阈值a 而导致的熵期望压缩。
在现实数据集合里,属性值缺损的现象很常见。
处理缺损值的一个简单办法就是删除有缺损值的实例。
另外一种方法是用一个简单值代替缺损属性值。
C4.5算法保留有缺损值的实例,采取的方法是:当使用这个属性值有缺损的属性时,按照分裂分支下的训练实例数的。