【机器学习】决策树
Decision Tree 决策树
决策树的定义和直观解释
决策树定义
决策树是一类常见的机器学习方法。本质就是一棵树,这棵树表示的含义如下:
- 每个非叶子结点对应一个判定问题
- 每个叶子结点对应一个决策结果
- 每一条从根到叶的路径对应一个完整的决策过程
决策树模型的特点
优点
- 可解释性极强,常用于医疗诊断等领域
- 计算复杂度低
- 可以处理不同类型的数据,包括离散值和连续值
缺点
- 容易过拟合,需要配合剪枝策略
不是一点点容易,真的是非常容易,因为只要有一个 outlier 就会导致决策树继续分支,最后会非常复杂。
划分指标
决策树的划分目的,是使得每个结点所包含的样本尽量属于同一类别,即“纯度” (purity)。衡量集合纯度最常用的指标是信息熵
\[Ent(D) = -\sum_{k=1}^{|{\mathcal Y}|}p_k\log_2p_k
\]
信息熵越小,纯度越高
-
信息增益 (information gain)
\[Gain(D, a) = Ent(D) - \sum_{v=1}^{V}\frac{|D^v|}{|D|}Ent(D^v) \]衡量划分后纯度的变化。不同子集合信息熵通过加权平均的方式汇总。缺点是对可取值较多的属性有偏好。
-
信息增益率 (information gain ratio)
\[Gain\_ratio(D, a) = \frac{Gain(D, a)}{IV(a)}\\ IV(a)=-\sum_{v=1}^{V}\frac{|D^v|}{|D|}\log_2\frac{|D^v|}{|D|} \]\(IV(a)\)称为 a 的固有值(intrinsic value)。增益率对可取值较少的属性有偏好。
-
基尼指数 (Gini index)
\[Gini(D) = \sum_{k=1}^{|{\mathcal Y}|} \sum_{k'\ne k}p_kp_{k'} = 1 - \sum_{k=1}^{|{\mathcal Y}|}p_k^2\\ Gini\_index(D, a) = \sum_{v=1}^V\frac{|D^v|}{|D|}Gini(D^v) \]
其实熵 (Ent) 和基尼值 (Gini) 是很类似的东西,从表达式中就可以看出:
熵就是 \(-\sum p\log p\),基尼值就是 \(-\sum p^2\),都是越小越好。二者只是对纯度的敏感程度不一样。
同理基尼指数也会对可取值较多的属性有偏好。
剪枝策略 (pruning)
剪枝策略是决策树学习算法处理过拟合的主要手段,分为预剪枝和后剪枝。两种剪枝策略都是基于泛化能力(验证集结果)进行的。
预剪枝
- 在决策树生成过程中进行
- 对于某一个划分,如果划分后验证集上的准确率有提升,就进行划分;反之若划分后验证集上的准确率下降,就不进行划分
- 优点:显著减小训练时间开销
- 缺点:本质是一种贪心策略,忽视了后续划分对泛化能力的提升,训练出的决策树往往较小,可能造成欠拟合。
后剪枝
- 在决策树生成后进行
- 剪枝方法同上,不过是自下而上剪枝
- 优点:通常比预剪枝保留更多的分支,欠拟合风险很小
- 缺点:训练开销比预剪枝,甚至未剪枝要大得多
连续值和缺失值处理
连续值处理
-
可在训练过程中使用二分法划分连续属性
-
连续属性可以出现在多次出现在后代中,比如使用两次二分法实现三分类。
graph TB; A(x<=0?)--Y-->B(x<=0) A--N-->C(x<=10?) C--Y-->D(0< x<=10) C--N-->E(x>10)
缺失值处理
确实值处理需要面对两个问题:
- 训练过程中,如何选择划分属性 - 调整信息增益(率)的计算方式。只有存在的值能够用来计算信息增益。
- 预测过程中,如何划分缺值样本 - 将预测结果变为一个概率分布。缺失值可能是该属性的任意一个值,可利用该属性的分布估计不同状态下的预测结果。
训练算法
决策树有一些常用的训练算法,是对以上知识点的整合应用。例如 CART,ID3,C4.5,其中 C4.5 是由 ID3 发展而来。具体区别如下:
| CART (1984) | ID3 (1986) | C4.5 (1993) | |
|---|---|---|---|
| 分支指标 | GINI 系数 | 信息增益 | 信息增益率 |
| 输入变量 | 连续/离散 | 离散 | 连续/离散 |
| 输出变量 | 回归/分类 | 分类 | 分类 |
| 树结构 | 二叉树 | 多叉树 | 多叉树 |
| 特征重用 | 可重用 | 不可重用 | 不可重用 |
| 缺失值 | 可处理 | 不可处理 | 可处理 |
| 计算量 | 低 | 较高 | 较高 |
| 泛化误差 | 较大 | 较小 | 较小 |
| 适用样本 | 大样本 | 小样本 | 小样本 |
| 剪枝方法 | 代价复杂度 (CCP) | 正则化损失函数 | 正则化损失函数 |
*多变量决策树
一般的决策树,每个结点只考虑一个属性,决策边界是垂直于坐标轴的;如果每个结点考虑多个属性,实现一个线性分类器,那么决策边界就能更好的拟合结果。本质类似一个树状的多层感知机。

浙公网安备 33010602011771号