第四章 决策树
此系列文章旨在提炼周志华《机器学习》的核心要点,不断完善中…
4.1 基本流程
- 概要
- 决策树组成
一个根节点:包含样本全集
若干个内部节点:对应于一个属性测试
若干个叶节点:对应于决策结果 - 决策树的目的:为了产生一棵泛化能力强,即处理未见示例能力强的决策树
- 遵循的策略:分而治之
- 决策树组成
- 决策时学习基本算法
4.2 划分选择:如何选择最优划分属性
- 原则:提高结点的纯度(purity)——结点所包含的样本尽可能属于同一类别
- 信息增益(information gain)
- 信息熵(information entropy): E n t ( D ) = − ∑ k = 1 ∣ Y ∣ p k l o g 2 p k Ent(D)=-\sum_{k=1}^{|\mathcal{Y}|}p_klog_2 p_k Ent(D)=−∑k=1∣Y∣pklog2pk(其中 E n t ( D ) Ent(D) Ent(D)越低则数据集纯度越高, E n t ( D ) ∈ [ 0 , l o g 2 ∣ Y ∣ ] Ent(D)\in [0,log_2|\mathcal{Y}|] Ent(D)∈[0,log2∣Y∣])
- 信息增益: G a i n ( D , a ) = E n t ( D ) − ∑ v = 1 V ∣ D v ∣ ∣ D ∣ E n t ( D v ) Gain(D,a)=Ent(D)-\sum_{v=1}^V \frac{|D^v|}{|D|}Ent(D^v) Gain(D,a)=Ent(D)−∑v=1V∣D∣∣Dv∣Ent(Dv)(其中分支节点权重为 ∣ D v ∣ ∣ D ∣ \frac{|D^v|}{|D|} ∣D∣∣Dv∣)
- 著名决策树学习算法:ID3(以信息增益为准则来选择划分属性)
- 偏好(不利影响):对可取值数目较多的属性有偏好
- 增益率
- 定义: G a i n _ r a t i o ( D , a ) = G a i n ( D , a ) I V ( a ) , I V ( a ) = − ∑ v = 1 V ∣ D v ∣ ∣ D ∣ l o g 2 ∣ D v ∣ ∣ D ∣ 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|} Gain_ratio(D,a)=IV(a)Gain(D,a), IV(a)=−∑v=1V∣D∣∣Dv∣log2∣D∣∣Dv∣
- 著名决策树学习算法:C4.5(使用增益率划分最优属性)
- 偏好:对可取值数目较少的属性有所偏好
- 基尼指数(Gini index)
- 数据集的纯度可用基尼值来度量: G i n i ( D ) = ∑ k = 1 ∣ Y ∣ ∑ k ′ = k̸ p k p k ′ = 1 − ∑ k = 1 ∣ Y ∣ p k 2 Gini(D)=\sum_{k=1}^{|\mathcal{Y}|}\sum_{k'=\not k}p_kp_k'=1-\sum_{k=1}^{|\mathcal{Y}|}p_k^2 Gini(D)=∑k=1∣Y∣∑k′=kpkpk′=1−∑k=1∣Y∣pk2
- 属性a的基尼指数:
G i n i _ i n d e x ( D , a ) = ∑ v = 1 V ∣ D v ∣ ∣ D ∣ G i n i ( D v ) (A) Gini\_index(D,a)=\sum_{v=1}^V\frac{|D^v|}{|D|}Gini(D^v) \tag{A} Gini_index(D,a)=v=1∑V∣D∣∣Dv∣Gini(Dv)(A) - 著名决策树学习算法:Classification and Regression Tree(CART)
- 偏好:在候选属性集合A中,选择那个使得划分后基尼指数最小的属性作为最优划分属性
4.3 剪枝处理:决策树学习算法对付“过拟合”的主要手段
-
预剪枝
-
过程:
1)预在决策树生成的过程中,对每个结点在划分前先进行估计
2)判断当前结点划分能否带来决策树泛化性能的提升
3)决定是否停止划分并将当前结点标记为叶节点 -
决策树桩(decision stump):一棵仅有一层划分的决策树
-
优点:降低过拟合风险,显著减少训练时间和测试时间
-
-
后剪枝
-
过程:
1)先从训练集生成一棵完整的决策树
2)自底向上对非叶结点进行考察,判断将该结点对应的子树替换为叶节点能否带来决策树泛化性能提升
3)决定是否将该子树替换为叶节点 -
特点:通常比预剪枝保留更多的分支
-
优缺点:欠拟合风险小,泛化性能优,但训练时间长
-
4.4 连续与缺失值
-
连续值处理
离散优化:二分法(bi-partition)将公式 ( A ) (A) (A)进行改造, D D D为基于划分点t划分后的信息增益
T a = { a i + a i + 1 2 ∣ 1 ≤ i ≤ n − 1 } G a i n ( D , a ) = m a x t ∈ T a G a i n ( D , a , t ) = m a x t ∈ T a E n t ( D ) − ∑ λ ∈ { − , + } ∣ D t λ ∣ ∣ D ∣ E n t ( D t λ ) \begin{aligned} Ta&=\{ \frac{a^i+a^{i+1}}{2}| 1≤i≤n-1\}\\ &\\ Gain(D,a)&=max_{t\in T_a} Gain(D,a,t)\\&=max_{t\in T_a}Ent(D)-\sum_{\lambda \in \{-,+\}}\frac{|D_t^\lambda|}{|D|}Ent(D_t^\lambda) \end{aligned} TaGain(D,a)={2ai+ai+1∣1≤i≤n−1}=maxt∈TaGain(D,a,t)=maxt∈TaEnt(D)−λ∈{−,+}∑∣D∣∣Dtλ∣Ent(Dtλ)
注意:与离散属性不同,若当前结点划分属性为连续属性,该属性可作为其后代结点的划分属性 -
缺失值处理
- 1)如何在属性值缺失的情况下进行划分属性的选择
根据D中没有缺失值的样本自己判断a的优劣 - 2)给定划分属性,若样本在该属性上的值缺失,如何对样本进行划分
- 样本x在划分属性a上取值已知:将x划入与其取值对应的子结点,且样本权值在子结点保持wx
- 取值未知:让同一个样本以不同的概率划入到不同的子结点中
- 1)如何在属性值缺失的情况下进行划分属性的选择
4.5 多变量决策树:斜决策树
- 轴平行:形成的分类边界由若干个与坐标轴平行的分段组成
复杂,属性测试预测时间开销大
- 方案:对复杂分类边界进行分段近似
多变量决策树的学习过程中,不为每个非叶结点寻找一个最优划分属性,而是试图建立一个合适的线性分类器