决策树

来源:互联网 发布:红外图像处理算法 编辑:程序博客网 时间:2024/06/05 14:25

1 基本流程

决策过程中提出的每个判定问题都是对某个属性的“测试”,每个测试的结果或是导出结论或是导出进一步的判定问题。决策树学习的目的就是产生一棵泛化能力强的决策树。


图 1 决策树学习基本算法

2 划分选择

决策树学习的关键是第8行,即如何选择最优划分属性。随着划分的不断进行,我们希望决策树的分支结点所包含的样本尽可能属于同一类别,即结点的“纯度”(purity)越高越好。

2.1 信息增益

“信息熵”(information entropy)是度量样本集合纯度最常用的一种指标。假定当前样本集合D中第k类样本所占的比例为 ,则D的信息熵定义为:
(1)
Ent(D)的值越小,则D的纯度越高。

假定离散属性有V个可能的取值,若使用a来对样本集D进行划分,则会产生V个分支,考虑到不同的分支所包含的样本数不同,给分支结点赋予权重,其中为第个分支结点包含了D中在属性a上取值为的样本集,计算属性a对样本集D进行划分所获得的“信息增益”(information gain):
(2)
一般而言,信息增益越大,则意味着使用属性a来划分所获得的“纯度提升”越大,因此,我们可用信息增益来进行决策树的划分属性选择。

2.2 增益率

信息增益准备对可取值数目较多的属性有所偏好,为减少这种偏好带来的不利影响,使用“增益率”(gain ratio)来选择最优划分属性:
(3)
其中
(4)
称为属性a的“固有值”(intrinsic value)。
增益率准则对可取值数目较少的属性有所偏好,因此C4.5决策树使用的是:先从候选划分属性中找出信息增益高于平均水平的属性,再从中选择增益率最高的。

2.3 基尼指数

CART决策树(Classification And Regression Tree)使用“基尼指数”(Gini index)来选择划分属性,数据集的D的纯度可以用基尼值来度量:
(5)
Gini(D)反映了从数据集D中随机抽取两个样本,其类别标记不一致的概率。因此,Gini(D)越小,则数据集D的纯度越高。
属性a的基尼指数定义为:
(6)
因此,在候选属性集合A中,选择哪个使得划分后基尼指数最小的属性作为最优划分属性,即

3 剪枝处理

剪枝(pruning)是决策树学习算法对付过拟合的主要手段。基本策略有“预剪枝”(prepruning)和“后剪枝”(postpruning)。

3.1 预剪枝

预剪枝是指在决策树生成过程中,对每个结点在划分前先进行估计,若当前结点的划分不能带来决策树泛化性能提升,则停止划分并将当前结点标记为叶结点。
预剪枝使得决策树的很多分支都没有“展开”,这不仅降低了过拟合风险,还显著减少了决策树的训练时间开销和测试时间开销。但是另一方面,有些分支的当前划分虽不能提升泛化性能、甚至可能导致泛化性能暂时下降,但在其基础上进行的 后续划分却有可能导致性能显著提高;预剪枝基于“贪心”本质禁止这些分支展开,给预剪枝决策树带来了欠拟合的风险。

3.2 后剪枝

后剪枝是先从训练集生成一棵完整的决策树,然后自底向上地对非叶结点进行考察,若将该结点对应的子树替换为叶结点能带来决策树泛化性能提升,则将该子树替换为叶结点。
后剪枝决策树通常比预剪枝决策树保留了更多的分支。一般情形下,后剪枝决策树的欠拟合风险很小,泛化性能往往优于预剪枝决策树。但是后剪枝过程是在生产完全决策树之后进行的,并且要自底向上地对树中的所有非叶结点进行逐一考察,因此训练时间开销比未剪枝决策树和预剪枝决策树要大得多。

4 连续与缺失值

4.1 连续值处理

连续属性离散化技术派上用场。给定样本集D和连续属性a,假定a在D上出现了n个不同的取值,将这些值从小到大排列,基于划分点t可将D分为子集,其中包含那些在属性a上取值不大于t的样本,而包含那些在属性a上取值大于t的样本,我们考察包含n-1个元素的候选划分点集合:
(7)

选择最优划分点进行样本集合的划分,对(2)稍加改造:

(8)
其中,Gain(D,a,t)是样本集D基于划分点t二分后的信息增益。于是,我们将可选择使Gain(D,a,t)最大的划分点。

4.2 缺失值处理

需要解决两个问题:(1)如何在属性缺失的情况下进行划分属性选择?(2)给定划分属性,若样本在该属性上的值缺失,如何对样本进行划分?
对于问题(1),根据在该属性上有值的样本判断属性a的优劣。
对于问题(2),若样本x在划分属性a上的取值已知,则将x划入与其取值对应的子节点,若样本x在划分属性a上的取值未知,则将x以不同的概率划入到不同的子结点中去。

5 多变量决策树

决策树所形成的分类边界有一个明显的特点:轴平行(axis-parallel),即分类边界右若干个与坐标轴平行的分段组成。
但是在学习任务的真实分类边界比较复杂时,必须使用很多段划分才能获得较好的近似,此时的决策树会相当复杂,由于要进行大量的属性测试,预测时间开销会很大。
决策树模型将大为简化。“多变量决策树”(multivariate decision tree)就是能实现这样的“斜划分”甚至更复杂划分的决策树,在此决策树中,非叶结点不再是仅对某个属性,而是对属性的线性组合进行测试,即,每个非叶结点是一个形如的线性分类器,其中是属性的权重,和t可在该结点所含的样本集和属性集上学得。
原创粉丝点击