4.1 基本流程
决策树是一类常见的机器学习算法,又称“判别树”,决策过程最终结论对应了我们所希望的判定结果。
一个根节点:包括样本全集
若干个内部节点:对应属性测试
若干个叶子节点🍃:对应决策结果
决策树的形成是一个递归过程。
生成叶子结点的三种情况:
- 当前节点包含的样本全部属于同一类别
- 当前属性集为空,或所有样本在所有属性上取值相同
- 当前节点包含的样本集合为空
4.2 划分选择
决策树学习的关键在于如何选择最优划分属性。一般而言,随着划分过程不断进行,我们希望决策树的分支结点所包含的样本尽可能属于同一类别,即结点的“纯度”(purity)越来越高
4.2.1 信息增益
知乎YJango解释“信息熵”的视频:(知乎指路)

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

- 计算信息熵时约定:若
,则
;
- Ent(D)的最小值为0,最大值为
;
- Ent(D)的值越小,则 D 的纯度越高。
假定离散属性 a 有个可能的取值 {a,a2,…,aV},若使用 a 来对样本集 D 进行划分,则会产生 V 个分支结点其中第 v 个分支结点包含了 D 中所有在属性 a 上取值为 a的样本,记为 D。我们可根据式(4.1)计算出 D 的信息熵,再考虑到不同的分支结点所包含的样本数不同,给分支结点赋予权重 |D|/|D| 即样本数越多的分支结点的影响越大于,于是可计算出用属性 a 对样本集 D 进行划分所获得的“信息增益”(information gain)
一般而言,信息增益越大,则意味着使用属性 a 来进行划分所获得的“纯度提升”越大,效果越好。因此,我们可用信息增益来进行决策树的划分属性选择,4.1节中算法选择属性
。

纹理信息增益最大,选为划分属性:


图4.3可更新为下图:

一步步计算,一步步更新,(递归过程)最后可得到决策树
4.2.2 增益率
信息增益准则对可取值数目较多的属性有所偏好,为减少这种偏好可能带来的不利影响,著名的C4.5决策树算法不直接使用信息增益,而是使用“增益率”(gain ratio)来选择最优划分属性。采用与式(4.2)相同的符号表示,增益率定义为
属性a“固有值”(intrinsic value)
增益率准则对可取值数目较少的属性有所偏好。
C4.5并不是直接使用增益率:先找信息增益高于平均水平的,再选择增益率最高的。
4.2.3 基尼指数
CART决策树使用“基尼指数”选择划分属性。
数据集的纯度可用基尼值度量:

直观看,Gini(D)反映了从中随机挑两个样本,其类别标记不一致的概率。Gini(D)越小,纯度越高。
属性 a 的基尼指数(基尼不纯度)定义为:
属性集合 A 中,选得划分后基尼指数最小的属性作为最优划分属性
4.3 剪枝处理
剪枝是用来解决“过拟合”问题。
决策树剪枝的基本策略:“预剪枝”“后剪枝”(判断标准:决策树泛化标准是否提升?)
- 预剪枝:生成过程中,每个节点划分前进行估计,若当前结点的划分不能带来决策树泛化性能提升,则停止划分并将当前结点标记为叶结点;
- 后剪枝:生成完整树,自底向上进行考察

4.3.1 预剪枝(自上而下)

预剪枝的优缺点:
- 优点
1. 降低过拟合风险1. 显著减少训练时间和测试时间开销
缺点
欠拟合风险:有些分支的当前划分虽然不能提升泛化性能,但在其基础上进行的后续划分却有可能导致 性能显著提高。预剪枝基于“贪心”本质禁止这些分支展开,带来了欠拟合风险。
4.3.2 后剪枝(自下而上)


后剪枝的优缺点:优点
后剪枝比预剪枝保留了更多的分支,欠拟合风险小,泛化性能往往优于预剪枝决策树
缺点
训练时间开销大:后剪枝过程是在生成完全决策树之后进行的,需要自底向上对所有非叶结点逐一考察
4.4 连续与缺失值
4.4.1 连续值的处理
由于连续属性的可取值数目不再有限,连续属性离散化技术可派上用场。比如二分法(bi-partition)对连续属性进行处理(C4.5决策树机制)。
给定样本集D,连续属性a
假定a在D上出现了n个不同的取值,从小到大排序
对于连续属性a,我们可以考虑包含(n-1)个元素的候选划分点集合。



把密度按从小到大排序,0.243,0.245, 0.343,… 第一个二分点:(0.243+0.245)/ 2 = 0.244 第二个二分点… T密度={0.244, 0.294, 0.351, 0.381, 0.420, 0.459, 0.518, 0.574, 0.600, 0.621, 0.636, 0.648, 0.661, 0.681, 0.708,0.746}。以0.244位划分点,D{0.243},D{其余},计算信息增益。由式(4.8)可计算
逐个计算,选择信息增益最大的
可计算其信息增益为0.262, 对应划分点为0.381
与离散属性不同,若当前结点划分属性为连续属性,该属性还可作为其后代结点的划分属性
4.4.2 缺失值处理
如何在属性缺失的情况下进行划分属性选择?
给定划分属性,若在该属性上的值缺失,如何对样本进行划分?
给定训练集 D {1,2,…,17}和属性 a {色泽,根蒂,敲声,纹理,脐部,触感}
令
表示 D 中在属性 a 上没有缺失值的样本子集。{4,14,16}
假定属性 a 有 V 个可取值
令
表示
中在属性 a 上取值为
的样本子集 =>

表示
中属于第k类
的样本子集 =>

每个样本 x 赋予一个权重
,定义

表示无缺失值样本所占比例
表示无缺失值样本中第 k 类所占比例
表示无缺失值样本中在属性a上取值
的样本
显然,
(y为某个属性下又有n个取值,比如敲声取值有3个;V为a的属性取值,比如 a 有6个值)
将信息增益的计算式(4.2)推广为



4.5 多变量决策树
若我们把每个属性视为坐标空间中的一个坐标轴,则 d 个属性描述的样本就对应了d维空间中的一个数据点,对样本分类则意味着在这个坐标空间中寻找不同类样本之间的分类边界。
决策树所形成的分类边界有一个明显的特点:轴平行(axis-parallel),即它的分类边界由若干个与坐标轴平行的分段组成。
“多变量决策树”就是能实现这样的“斜划分”甚至更复杂划分的决策树,又称“斜决策树”
在此类决策树中,非叶节点不再是仅对某个属性,而是对属性的线性组合测试;
