决策树模型下的几种优质算法剖析
1.决策树模型的发展
决策树(decesion tree) 是一种基本的分类和回归方法,其呈树型结构,在分类问题中,在基于特征对实例进行分类过程中,其常常被认为是if-then规则的集合,也可以认为是定义在特征空间与类空间上的条件概率分布,该模型具有可读性,分类速度快,学习时,利用训练数据,根据损失最小化的原则建立决策树模型,预测时,对新的数据,利用决策树模型进行分类,决策树的学习大致可以分为3个步骤,特征选择,决策树的生成和决策树的修剪,这些决策树学习思想主要来自于Quinlan在1986年提出的ID3算法和1993年提出的C4.5算法,以及由Breiman等人在1984年提出的CART算法.下面我们会对这些算法进行讨论.在深度分析之前,我想介绍一些关于算法基础问题2.什么是决策树模型?
分类决策树是一种描述对实例进行分类的树型结构,由结点和有向边组成,结点主要有两种类型,内结点与叶结点,内部结点表示特征或属性,叶子结点主要表示类,那么如何使用其进行分类时,一般而言是从根部进行测试,根据测试结果,将实例分配到子结点,每个子结点对应一个取值,直至达到叶结点,当然你也可以把它看做是if-then的集合,使得其本身保持一种互斥与完备的特征.同时决策树在条件概率分布中有很大作用,其可以将特征空间划分为互不相关的单元.3.0.什么是决策树学习?
决策树学习本质是从训练数据中归纳出一种分类规则,与训练数据矛盾的决策树可能有多个,也可能一个也没有,我们需要一个与训练数据矛盾较小的决策树,同时具有较好的泛化能力,从另一个角度来看,决策树模型是由训练数据集估计条件概率,基于特征空间划分的类的条件概率模型很多,因此在选择条件概率模型时,应不仅对训练数据有很好的拟合,同时对未知数据有较好的预测,因此决策树模型使用损失函数作为这一目标,通常选取正则化的极大似然函数,其主要策略是以损失函数为目标函数的最小化,当损失函数确定以后,学习问题就变为在损失函数意义下选择最优决策树的问题,实质来说其属于NP完全问题,所以现实中通常采用启发式方法,近似求解最优化问题,这样得到的决策树是sub-optimal的,决策树学习的算法通常是一个递归选择最优特征,并根据该特征对训练数据进行分割,使得每个子数据集有一个最好分类的过程,这一过程对应着特征空间的划分,也对应着决策树的构建,开始构建根节点,选择最优特征,然后按这以特征划分子集,使得各个子集在当前条件下有个最好的分类,如果这些子集已经能够被基本正确分类那么就构造叶子结点,将这些节点分到对应的叶子结点上去,这样不断递归,直至每个子集被分到叶结点上,但是该分类有时会导致过拟合问题,我们需要自上而下进行剪枝,让树变得更简单,使其具备泛化能力,由上可以分析出几个结论,深浅不同的决策树对应着不同复杂的概率模型,决策树的生成对应于模型的局部选择,决策树的剪枝对应于模型的全局选择,决策树的生成只考虑局部最优,相应的决策树的剪枝对应这全局最优. 接下来从这几个方面来论述决策树的学习,从理论储备来说起.3.1.特征选择问题是什么?
特征选择在于选择对训练数据具有分类能力的特征,这样可以提高决策树学习的效率,如果该特征进行分类的结果与随机分类的结果是没有差别的,则该特征是没有分类能力的,通常来说使用信息增益或者信息增益比来作为特征选择的准则.3.2 信息增益怎么计算?
- 熵的概念:在信息论与概率统计中,熵表示随机变量不确定性的度量,设X表示一个取有限个值的离散随机变量,其概率分布为
P(X=xi)=pi,i=1,2,...n
随机变量的熵可定义为
H(X)= −∑(pi)log(pi) − ∑ ( p i ) l o g ( p i )
熵越大,随机变量的不确定性就越大- 信息增益:表示得知特征x的信息而使得y信息的不确定性减小的程度,从数学角度来说,特征A对训练数据D的信息增益g(D,A)表示为经验熵H(D)和在特征A在给定条件下D的经验条件熵之差
g(D,A)=H(D)-H(D,A) - 信息增益比:特征A 对训练数据集D的信息增益比gR(D,A)定义为其信息增益g(D,A)与训练数据D关于A的值熵HA(D)之比
- 条件熵的概念:设有随机变量(X,Y),其联合概率分布为:
P(X=xi,Y=yi)=pij ,i=1,2,..n;j=1,2,..n;
条件熵H(Y|X)=
∑(pi)H(Y|X=xi)
∑
(
p
i
)
H
(
Y
|
X
=
x
i
)
当熵和条件熵由数据估计得到时,所对应的熵和条件熵称之为经验熵和经验条件熵
4.1 决策树生成算法之ID3算法与C4.5算法
- ID3算法:其核心是在决策树各个结点上应用信息增益准则选择特征,递归的构建决策树,具体方法是对结点计算所有可能的特征的信息增益,选择信息增益最大特征作为结点的特征,由该特征的不同取值来建立子结点,再对每个子结点递归的调用以上方法,构建决策树,直到所有特征的信息增益均很小时或没有特征选择为止,从而达到决策树,ID3使用极大似然法对概率模型进行选择
# ID3 算法 输入:训练数据集D,特征集A,阈值ε 输出:决策树T (1) 若D中所有实例属于同一类Ck,则T单结点树,并将Ck作为该结点的类标记,返回T 平凡解的情况 (2) 若A=∅,则T为单结点树,并将D中实例最大的类Ck作为该结点的类标记,返回T,平凡解的情况 (3) 否则按照之前介绍的公式计算信息增益,选择信息增益最大的特征Ag (4) 如果Ag的信息增益小于阈值ε,则置T为单结点树,并将D中实例最大的类Ck作为该结点的类标记,返回T (5) 否则,对Ag的每一个可能ai,依Ai=ai将D分割为若干非空子集Di,Di中实例最大的类作为标记,构建子节点,由结点和其子结点构成T,返回T (6) 对第i个子结点,以Di为训练集,以A-{Ag}为特征集,递归的调用(1)-(5) 得到子树Ti,返回T
算法分析:只有树的生成,所以该算法生成的树容易产生过拟合
- C4.5 算法: C4.5算法与ID3算法相似,并对ID3进行了改进,C4.5算法在生成过程中使用信息增益比来选择特征
# C4.5 生成算法: 输入: 训练数据D,特征集A,阈值ε 输出: 决策树T (1) 如果D中所有实例属于同一类Ck,则置T为单结点树,并将Ck,作为该结点的类,返回T (2) 若A=∅,则T为单结点树,并将D中实例最大的类Ck作为该结点的类标记,返回T,平凡解的情况 (3) 否则按照之前介绍的公式计算信息增益比,选择信息增益比最大的特征Ag (4) 如果Ag的信息增益小于阈值ε,则置T为单结点树,并将D中实例最大的类Ck作为该结点的类标记,返回T (5) 否则,对Ag的每一个可能ai,依Ai=ai将D分割为若干非空子集Di,Di中实例最大的类作为标记,构建子节点,由结点和其子结点构成T,返回T (6) 对第i个子结点,以Di为训练集,以A-{Ag}为特征集,递归的调用(1)-(5) 得到子树Ti,返回T
以上两种算法:不同之处在于特征选择的度量不同,但思维基本差不多
5.决策树的剪枝
为什么需要剪枝呢? 在前面我们曾经提到过,由于递归的生成决策树,这样的结果是训练数据的分类很准确,但是对于未知的测试数据来说却没有那么准确,即出现过拟合现象,过拟合的原因在于学习时如何提高对训练数据的正确分类,从而构建出复杂的决策树,解决需要考虑决策树的复杂度,对已生成的决策树进行简化,在决策树学习中将已经生成的树进行简化的过程称之为剪枝(pruning)
,具体来说,就是将已生成的树裁掉一些子树或叶结点,并将其根结点或者父结点作为新的叶结点,从而简化分类模型.6.CART算法
- 定义: 分类与回归树(classification ans regression tree CART) 模型 1984年提出,是应用广泛的一种决策树学习算法,CART同样有特征选择,树的生层,树的剪枝组成,既可以用来进行分类,又可以用来进行回归,一下将其统称为决策树
- 组成:
- (1)决策树的生成:基于训练数据集生成决策树,生成的决策树要尽量大
- (2)决策树剪枝:用验证数据集对已生成的树进行剪枝并选择最优子树,这时用损失函数最小来作为剪枝的标准.
- 回归树的生成:
- 最小二乘回归树生成算法
- 分类树的生成:
- 使用基尼指数,CART生成算法,按照基尼指数来进行分割
- CART剪枝:
- (1) 剪枝,形成一个子树序列
- (2) 通过剪枝将得到的子序列T0,T1,T2,..Tn中通过交叉验证选取最优子树Ta
- ID3算法:其核心是在决策树各个结点上应用信息增益准则选择特征,递归的构建决策树,具体方法是对结点计算所有可能的特征的信息增益,选择信息增益最大特征作为结点的特征,由该特征的不同取值来建立子结点,再对每个子结点递归的调用以上方法,构建决策树,直到所有特征的信息增益均很小时或没有特征选择为止,从而达到决策树,ID3使用极大似然法对概率模型进行选择
7.小结
决策树模型在于构建一个训练数据拟合很好,并且复杂度很小的决策树,同时对于多元分类能起到重要作用,