Decision Tree
- 是一种基本的分类与回归方法
- 决策树由节点和有向边组成
- 内部节点表示一个特征/属性
- 叶子节点表示一个分类
- 有向边表示一个划分规则
- 决策树从根节点到子节点的有向边代表了一条路径(一条分类规则)
- 决策树的路径是互斥的且是完备的
- 互斥:每一个样本不会同时匹配上两条分类规则
- 完备:每一个样本都能在决策树中匹配上一条规则
- 决策树学习通常包括3个步骤:
- 特征选择
- 决策树生成
- 决策树剪枝
- 决策树表示给定特征条件下类的条件概率分布
决策树的组成:
- 根节点:第一个选择点
- 非叶子节点与分支:中间过程
- 叶子节点:最终的决策结果
原理
特征选择
特征选择指选择最大化所定义目标函数的特征。
为了衡量类别分布概率的倾斜程度,定义决策树节点node的不纯度(impurity)
- 不纯度越小,则类别的分布概率越倾斜
不纯度的三种度量:
- 熵(Entropy)
$$\mathrm{Entropy}(\mathrm{node})=-\sum_{k=1}^Kp_k\log{p_k}$$ - 基尼不纯度(Gini Impurity)
$$\mathrm{Gini}(\mathrm{node})=\sum_{k=1}^K p_k(1-p_k)$$ - 分类误差率
$$\mathrm{Classification_error}(\mathrm{node})=1-\max_k\ p_k$$
其中$p_k$表示样本中类别$k$的占比;共有$K$个类别。
其中
- 为了更好地反映变量关系,曲线中的熵除以2
- 横轴是$p$
- $p$为0或1时,熵、基尼不纯度、分类误差率都为0,表示不存在不确定性
- 当$p=0.5$时,熵、基尼不纯度、分类误差率最大,表示不确定性最大
信息增益
信息增益(Information Gain):表示已知特征$X$的信息而使得类$Y$的信息的不确定性减少的程度。
定义:特征$A$对训练数据集$D$的信息增益$g(D,A)$,定义为数据集$D$的经验熵$H(D)$与特征$A$给定条件下$D$的经验条件熵$H(D|A)$之差。即
$$g(D,A)=H(D)-H(D|A)$$
一般地,熵$H(Y)$与条件熵$H(Y|X)$之差称为Post not found: Machine-Learning-熵 互信息(Mutual Information)。
- 决策树学习中的信息增益等价于训练数据集中类与特征的互信息
- 给定训练数据集$D$和特征$A$,经验熵$H(D)$表示对数据集$D$进行分类的不确定性
- $g(D,A)$表示由于特征$A$而使得对数据集$D$的分类的不确定性减少的程度
- 对于数据集$D$而言,信息增益依赖于特征
- 不同的特征往往具有不同的信息增益
- 信息增益大的特征具有更强的分类能力
考虑训练数据集$D$,$n=|D|$为样本容量。
- 有$K$个类$C_k,\ (k=1,\cdots,K)$
- $|C_k|$为属于类$C_k$的样本个数
$$\sum_{k=1}^K|C_k|=n$$ - 设特征$A$有$m$个不同的取值$a_1,\cdots,a_m$
- 根据特征$A$的取值将$D$划分为$m$个子集$D_1,\cdots,D_m$
- $|D_i|$为$D_i$的样本个数
$$\sum_{i=1}^m|D_i|=|D|$$ - 记子集$D_i$中属于类$C_k$的样本的集合为$D_{ik}$
$$D_{ik}=D_i\cap C_k$$
$|D_{ik}|$为$D_{ik}$的样本个数
信息增益算法
输入:训练数据集$D$和特征$A$
输出:特征$A$对训练数据集$D$的信息增益$g(D,A)$
- 计算训练集$D$的经验熵$H(D)$
$$H(D)=-\sum_{k=1}^K\frac{|C_k|}{|D|}\log{\frac{|C_k|}{|D|} }$$ - 计算特征$A$对数据集$D$的经验条件熵$H(D|A)$
$$\begin{aligned} H(D|A)&=\sum_{i=1}^m\frac{|D_i|}{|D|}H(D_i)\
&=-\sum_{i=1}m\frac{|D_i|}{|D|}\sum_{k=1}K\frac{|D_{ik}|}{|D_i|}\log{\frac{|D_{ik}|}{|D_i|} }\
&= -\sum_{i=1}m\sum_{k=1}K\frac{|D_{ik}|}{|D|}\log{\frac{|D_{ik}|}{|D_i|} }
\end{aligned}$$ - 计算信息增益
$$g(D,A)=H(D)-H(D|A)$$
- 可用信息增益来进行决策树的划分属性选择
$$a^*=\arg\max_{a\in A} g(D,a)$$
ID3决策树学习算法就是以信息增益为准则来选择划分属性
决策树算法
包括
- ID3
- C4.5
- CART
ID3
- 以信息增益为准则来划分属性
示例:
数据来源
共4个特征:
- 天气
- 温度
- 湿度
- 风
特征 | 特征的不同取值 | 样本数 | `yes`样本数 | `no`样本数 |
---|---|---|---|---|
outlook | sunny | 5 | 2 | 3 |
overcast | 4 | 4 | 0 | |
rainy | 5 | 3 | 2 | |
temperature | hot | 4 | 2 | 2 |
mild | 6 | 4 | 2 | |
cool | 4 | 3 | 1 | |
humidity | high | 7 | 3 | 4 |
normal | 7 | 6 | 1 | |
windy | false | 8 | 6 | 2 |
true | 6 | 3 | 3 | |
标签为“打球”yes
或“不打球”no
,原始数据共有14个样本,其中9个为yes
、5个为no
,原始数据集的熵为
$$H(D)=-\frac{9}{14}\log_2{\frac{9}{14} }-\frac{5}{14}\log_2{\frac{5}{14} }=0.940286$$
接着计算经验条件熵:
- 天气:
\begin{aligned}
H(sunny)&=-\frac{2}{5}\log_2{\frac{2}{5} }-\frac{3}{5}\log_2{\frac{3}{5} }=0.970951\
H(overcast)&=0\
H(rainy)&=-\frac{3}{5}\log_2{\frac{3}{5} }-\frac{2}{5}\log_2{\frac{2}{5} }=0.970951\
H(D|outlook)&=\frac{5}{14}H(sunny)+\frac{4}{14}H(overcast)+\frac{5}{14}H(rainy)=0.693536
\end{aligned} - 温度
\begin{aligned}
H(hot)&=-\frac{2}{4}\log_2{\frac{2}{4} }-\frac{2}{4}\log_2{\frac{2}{4} }=1\
H(mild)&=-\frac{4}{6}\log_2{\frac{4}{6} }-\frac{2}{6}\log_2{\frac{2}{6} }=0.918296\
H(cool)&=-\frac{3}{4}\log_2{\frac{3}{4} }-\frac{1}{4}\log_2{\frac{1}{4} }=0.811278\
H(D|temperture)&=\frac{4}{14}H(hot)+\frac{6}{14}H(mild)+\frac{4}{14}H(cool)=0.911063
\end{aligned} - 湿度
\begin{aligned}
H(high)&=\cdots=0.985228\
H(normal)&=\cdots=0.591673\
H(D|humidity)&=\frac{7}{14}H(high)+\frac{7}{14}H(normal)=0.788451
\end{aligned} - 风
\begin{aligned}
H(false)&=\cdots=0.811278\
H(true)&=\cdots=1\
H(D|windy)&=\frac{8}{14}H(false)+\frac{6}{14}H(true)=0.892159
\end{aligned}
接着计算信息增益:
\begin{aligned}
H(D,outlook)&=0.940286-0.693536=0.24675\
H(D,temperature)&=0.940286-0.911063=0.029223\
H(D,humidity)&=0.940286-0.788451=0.151835\
H(D,windy)&=0.940286-0.892159=0.048127
\end{aligned}
其中outlook的信息增益最大,所以应选择特征outlook
为根节点。
ID4
C4.5
- 基于ID3
- ID3使用的是信息增益,而C4.5使用的是信息增益比
CART
Classification and Regression Tree / Regression Tree
分类和回归树
- 与C4.5不同,CART的决策树由二元逻辑问题生成,每个树节点只有两个分支
regression tree is a function that maps the attributes to the score. —— from Tianqi Chen - Introduction to Boosted Tree
CHAID
Chi-squared Automatic Interaction Detector
MARS
条件推断树
过拟合
当训练误差(training error)很小,泛化误差(generalization error / test error)较大时,说明决策树模型发生了过拟合。
发生过拟合的根本原因是决策树模型过于复杂,可能的原因有:
- 训练数据集中有异常点(噪音样本点),异常点影响了模型的分类效果
- 决策树的叶节点中缺乏有分类价值的样本记录(需要进行剪枝)
如何避免决策树过拟合?
- 限制树的深度max_depth
- 剪枝prune
- 限制叶子节点数量
- 正则化项
- 增加样本数据
- bagging(subsample、subfeature、低维空间投影)
- 数据增加(加入有噪声的数据)
- early stopping
总结
优点
决策树的优点:
- 可读性强
- 分类速度快
- 推理过程完全依赖于属性变量的取值特点
- 可自动忽略对目标变量没有贡献的属性变量
缺点
笔试题目
当在一个决策树中划分一个节点时,以下关于“信息增益”的论述正确的是(2、3)
1.较不纯的节点需要更多的信息来描述总体
2.信息增益可以通过熵来推导
3.信息增益偏向于选择大量值的属性
[来自:牛客试题广场]
- 不纯度指的是基尼系数
- 不需要归一化处理的模型:决策树、随机森林
- 因为它们不关心变量的值,而是关心变量的分布和变量之间的条件概率