4.1 基本概念
决策树的生成是一个递归的过程,在几种条件下会被终止,一是当前结点下的类别都一样,二是现有属性不能对剩下的样本进行区分,三是当前结点下没有样本。
4.2 划分选择
这一节研究的问题是如何选取上图中第8行的属性
4.2.1 信息增益
一种方法是依据信息熵来对某一属性的各个取值的纯度进行度量。对于一个样本集合DDD,其中第k类样本所占的比例是pkp_kpk,则信息熵的定义为
Ent(D)=−∑k=1∣y∣pklogpkEnt(D)=-\sum_{k=1}^{|y|}p_k\mathop{log}p_kEnt(D)=−k=1∑∣y∣pklogpk
熵值越大,表示其中的信息越混乱,纯度越低。那么如何衡量一个属性对决策树性能提升的帮助呢?我们可以用父节点的熵值来减去用该属性进行划分后产生的子节点的熵值,得到熵增益。
Gain(D,a)=Ent(D)−∑v=1V∣Dv∣∣D∣Ent(Dv)Gain(D,a)=Ent(D)-\sum_{v=1}^V\frac{|D_v|}{|D|}Ent(D_v)Gain(D,a)=Ent(D)−v=1∑V∣D∣∣Dv∣Ent(Dv)
从上式中可以看到,如果子节点的熵值越小,那么信息增益也就越大。
4.2.2 增益率
信息增益准则对可取值数目较多的属性有所偏好,为了减少这种偏好可能带来的不利影响,我们引入了增益率的概念
Gain_ratio(D,a)=Gain(D,a)IV(a)IV(a)=−∑v=1V∣Dv∣∣D∣log2∣Dv∣∣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=1∑V∣D∣∣Dv∣log2∣D∣∣Dv∣
4.2.3 基尼指数
Gini(D)=∑k=1∣y∣∑k′≠kpkpk′Gini(D)=\sum_{k=1}^{|y|}\sum_{{k'}\neq{k}}p_kp_{k'}Gini(D)=k=1∑∣y∣k′̸=k∑pkpk′
另一种纯度的度量方式
4.3 剪枝处理
决策树剪枝分为预剪枝和后简直。预剪枝是对当前结点在划分前后进行估计,如果划分不能使得决策树的泛化性能得到提升,那么就停止划分;后剪枝则是从训练集中生成完整的树,而后再自底向上地检查各个结点,将其他换为叶子结点是否能得到性能上的提升。
4.4 连续与缺失
4.4.1 连续值处理
给定样本集DDD和连续属性aaa,假定aaa在DDD上出现了nnn个不同的取值,基于划分点ttt可以把DDD分为子集Dt−D_t^-Dt−和Dt+D_t^+Dt+。对于相邻的属性值来讲,ttt在[ai,ai+1)[a^i,a^{i+1})[ai,ai+1)上取任何值产生的划分结果是相同的。因此,我们可以考虑n−1n-1n−1个元素的划分点集合
Ta={ai+ai+12∣1≤i≤n−1}T_a=\{\frac{a^i+a^{i+1}}{2}|1\leq{i}\leq{n-1}\}Ta={2ai+ai+1∣1≤i≤n−1}
如此一来,我们就可以继续用信息增益来度量每个划分点的优劣
Gain(D,a)=maxt∈TaEnt(D)−∑λ∈−,+∣Dtλ∣DEnt(Dtλ)Gain(D,a)=\max_{t\in{T_a}}Ent(D)-\sum_{{\lambda}\in{-,+}}\frac{|D_t^\lambda|}{D}Ent(D_t^\lambda)Gain(D,a)=t∈TamaxEnt(D)−λ∈−,+∑D∣Dtλ∣Ent(Dtλ)
需要注意的是,与离散属性不同,如果当前结点划分属性为连续属性,该属性还可以作为其后代结点的划分属性。
4.4.2 缺失值处理
我们要解决两个问题,(1)如何在属性值缺失的情况下进行划分属性的选择。(2)给定划分属性,如果样本在该属性上缺失,如何对样本进行划分。
令D^\hat{D}D^表示DDD中在aaa属性上没有缺失值的样本子集。对于问题1,我们其实可以只根据D^\hat{D}D^来判断属性a的优劣。假设属性aaa有VVV个可取值{a1,a2,...,aV}{\{a^{1},a^2,...,a^V\}}{a1,a2,...,aV},令D^v\hat{D}^vD^v表示D^{\hat{D}}D^在样本aaa上取值为ava^vav的样本子集,D^k\hat{D}_kD^k表示D^\hat{D}D^中属于第kkk类的样本子集,假设我们为每一个样本赋予一个权重ωx\omega_xωx,定义
ρ=∑x∈D^ωx∑x∈Dωxp^k=∑x∈D^kωx∑x∈Dωxr^v=∑x∈D^vωx∑x∈Dωx\rho=\frac{\sum_{x\in\hat{D}}\omega_x}{\sum_{x\in{D}}\omega_x} \\
\hat{p}_k=\frac{\sum_{x\in\hat{D}_k}\omega_x}{\sum_{x\in{D}}\omega_x} \\
\hat{r}_v=\frac{\sum_{x\in\hat{D}^v}\omega_x}{\sum_{x\in{D}}\omega_x} \\
ρ=∑x∈Dωx∑x∈D^ωxp^k=∑x∈Dωx∑x∈D^kωxr^v=∑x∈Dωx∑x∈D^vωx
基于上述定义,我们可以将信息增益的计算式扩展为
Gain(D,a)=ρ×(Ent(D^)−∑v=1Vr^vEnt(D^v))Ent(D^v)=−∑k=1∣y∣p^klog2p^kGain(D,a)=\rho\times(Ent(\hat{D})-\sum_{v=1}^V\hat{r}_vEnt(\hat{D}^v))\\
Ent(\hat{D}^v)=-\sum_{k=1}^{|y|}\hat{p}_k\mathop{log}_2{\hat{p}_k}Gain(D,a)=ρ×(Ent(D^)−v=1∑Vr^vEnt(D^v))Ent(D^v)=−k=1∑∣y∣p^klog2p^k
4.5 多变量决策树
决策树的分类边界是与坐标轴平行的。
多变量决策树中,非叶子结点不再是仅对于某个属性,而是对属性的线性组合进行测试。