决策树,生成剪枝,CART算法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

决策树

1. 原理

1.1 模型简介

决策树是一种基本的回归和分类算法。在分类问题中,可以认为是一系列if-then 规则的几何。决策树学通常包括三个步骤:特征选择,决策树的生成,决策树的修剪。

定义:决策树由结点和有向边组成,内部节点表示一个特征和属性,叶子结点表示一个类。

性质:决策树路径(或者对应的if-then 规则)具有互斥且完备性:每一个实例都被一条路径或规则所覆盖,而且只被这条路径或规则所覆盖。

决策树学习:能够正确对数据集进行分类的决策树可能有多个,也可能一个也没有,我们的目的是找到一个与训练数据集矛盾较小的,同时具有很好泛化能力的决策树。

特征选择:一种是在决策树学习开始的时候,对特征进行选择,只留下对训练数据有足够分类能力的特征,一种是在学习过程中对训练数据分割成自己的时候,选择最优的特征进行分割。

决策树生成:一般这是一个递归的规程。

决策树的剪枝:提高决策树的泛化能力。

1.2 特征选择

特征选择的准则一般是:信息增益和信息增益比

1.2.1 信息增益

a.信息增益:信息增益大的特征具有更强的分类能力,即选择信息增益值大的特征作为最优特征。

b.信息熵:表示变量的不确定性(在得知特征X 的信息时,使得Y 的信息不确定性减少的程度),熵越大,变量的不确定性越大。设X 是一个取有限值的离散型随机变量,其概率分布为:

()i i p X x p ==

则随机变量X 的熵定义为:

1()log n

i i i H X p p ==-∑

注:若p i =0,定义0log 00=。其中若对数以2为底,熵的单位称为比特,若以e 为底,单位称为纳特。

c.条件熵:随机变量X 在给定条件下随机变量Y 的条件熵H (Y|X )表示:X 给定条件下Y 的条件概率分布的熵 关于X 的数学期望:

1(|)(|)n

i i i H Y X p H Y X x ===∑

其中,()i i p X x p ==。

当熵和条件熵有数据估计(特别是极大似然估计)得到时,被分别称为经验熵和经验条件熵。

信息增益:

特征A 对训练数据集D 的信息增益g(D|A)定义为:

(,)()(|)g D A H D H D A =-

其中,()H D 为集合D 的经验熵,(|)H D A 为特征A 给定条件下D 的经验条件熵。

d.信息增益的计算方法。

设:

训练数据集D ,个数为|D|。

K 个类,分别为C k..每个类内个数|C k |

根据特征A ,能够将训练集划分为n 个子集:D 1,D 2,…D n 。|D I |为该子集的样本个数。

子集D i 中属于类C k 的个数|D ik |。

则计算信息增益的公式为:

数据集D 的信息熵:

i 1||||()log()||||k K K C C H D D D ==-∑

特征A 对数据集D 的经验条件熵: 111||||||||(|)()log()||||||||n

n K i i ik ik i i i k i i D D D D H D A H D D D D D =====∑∑∑ 注:此公式意义:在特征A 作用下,将数据集D 分为多个D i 。这时关于D 的熵等于关于D i 熵的均值。

计算信息增益。

1.2.2 信息增益比

(,)(,)()R A g D A g D A H D

. 其中()A H D 表示特征集D 关于特征A 的值得熵。

1.3 决策树的生成

1.3.1 ID3算法

a.选取特征:信息增益准则

b.算法终止条件:所有特征的信息增益均很小或者没有特征可以选择。

c.算法过程: Algorithm 1 ID3

输入

训练数据集D ,特征集A ,阈值E 输出

决策树T 1:

若D 中所有实例属于同一类C k ,则T 为单节点树,将C k 作为该结点类标记,返回T 。 2

若A=∅,则T 为单节点树,将D 中实例数最多的类作为该结点类标记,返回T 。 3:

否则,计算A 中各特征对D 的信息增益,选取信息增益最大的特征A g 。 4:

如果特征A g 的信息增益小于E ,则T 为单结点树,将实例数最多的类作为该结点的类标记,返回T 。 5:

否则,对A g 将训练集划分为多个D i ,创建子结点。每个D i 中实例 数最多的类作为该子结点的类标记。返回此时构建的树T 。 6: 对每一个子结点,以D i 为训练集,{A-A g }为特征集,递归调用上

述5个步骤,得到字数T i ,返回T i .

1.3.2 C4.5算法

算法过程与ID3算法类似。不同的是该算法将信息增益比作为特征选择的准则。

1.4 决策树剪枝

原理:极小化决策树整体的损失函数。

方法:

设:

树T 的叶结点个数为|T|,

T 是树T 的一个叶结点,并且包含N t 个样本点。其中k 类的样本点个数为N tk 。

则,决策树的损失函数定义为:

||

a t 1()()||T t t C T N H T a T ==+∑

其中,1()log()K tk tk t k t t

N N H T N N ==-∑。 上式中,N t 的意义:

假设我们最后的分类结果是为每个样本都分配了一个叶子节点,则此时的经验熵为0(1log1=0)。然而极端情况基本是不存在的。我们一般都会有类别数量的限制。想像这样的一个情况,对于前i 个类我们为其每个分配一个样本,后面所有的样本归为一个类,此时损失可能比较小.但是这样的分类完全没有意义(单叶子节点过拟合,后面的欠拟合)。所以在每个叶子节点的经验熵前面乘以一个系数N t 。放大欠拟合部分的损失,以平衡损失函数。当然如果仅仅这样做,并不能防止过拟合,还应该加上正则项来防止过拟合。

对于上式般令C (T )等于左边项,表示模型对训练数据的预测误差。第二项为正则项,避免过拟合,|T|可以看做是对模型复杂度的度量。

树的剪枝算法:

Algorithm 2 树的剪枝算法

输入

树T ,参数a 输出

修剪后的决策树T 1:

计算每个结点的经验熵 2 递归的从树的叶结点向上回缩,计算前后整体树的损失函数值,如果减小或相等则剪枝。 3: 返回2,直至不能继续为止

1.4.1 REP(错误率降低剪枝) 上面所讲的方法叫做错误率降低剪枝

该算法以bottom-up 的方式遍历所有的子树,对于完全决策树中的每一个非叶子节点的子树,我们尝试着把它替换成一个叶子节点,该叶子节点的类别我们用子树所覆盖训练样本中存在最多的那个类来代替,这样就产生了一个简化决策树,然后比较这两个决策树在测试数据集中的表现,如果简化决策树在测试数据集中的错误比较少,那么该子树就可以替换成叶子节点。直至没有任何子树可以替换使得测试数据集的表现得以改进时,算法就可以终止。

相关文档
最新文档