1. 决策树
基于树结构来进行决策
1.1. 基本流程
- 测试:决策过程中提出的每个判定问题都是对某个属性的测试
一般的,一颗决策树包含一个根结点、若干个内部结点和若干个叶结点;
叶结点对应于决策结果,其他每个结点则对应于一个属性的测试
每个结点包含的样本集合根据属性测试的结果被划分到子结点中
根结点包含样本全集
从根结点到每个叶结点的路径对应了一个判定测试序列
- 目的:产生一颗泛化能力强,即处理未见示例能力强的决策树
- 基本流程:遵循简单且直观的分而治之策略

决策树的生成是一个递归过程
三种递归返回
- 当前结点包含的样本全属于同一类别,无需划分
- 当前属性集为空,或是所有样本在所有属性上的取值相同,无法划分
- 当前结点包含的样本集合为空,不能划分
1.2. 划分选择
一般而言,随着划分过程不断进行,我们希望决策树的分支结点所包含的样本尽可能属于同一类别,即结点的“纯度”(purity)越来越高.
1.2.1. ID3决策树
ID3名字中的ID是lterative Dichotomiser(迭代二分器)的简称。
以信息增益为准则来选择划分属性
1.2.1.1. 信息增益
信息熵是对量样本集合纯度最常用的一种指标
-
信息熵
假定当前样本集合D中第k类样本所占的比例pk(k=1,2,3,…,∣Y∣)且0≤pk≤1,∑k=1∣Y∣pk=1,∣Y∣样本的类别总数,则D的信息熵定义为
Ent(D)=−k=1∑∣Y∣pklog2pk
Ent(D)的值越小,则D的纯度越高
证明:0≤Ent(D)≤log2∣Y∣
- 求Ent(D)的最大值
若令∣Y∣=n,pk=xk,那么信息熵$\operatorname{Ent}(D) 就可以看成n$元实值函数,也即:
Ent(D)=f(x1,…,xn)=−k=1∑nxklog2xk
其中0≤xk≤1,∑k=1nxk=1,考虑求该多元函数的最值(约束优化问题)
仅考虑∑k=1nxk=1对于f(x1,…,xn)求最大值等同于如何最小化
min k=1∑nxklog2xk, S.t. k=1∑nxk=1
显然,在0≤xk≤1时此问题为凸优化(拆开分析二阶导数大于零,或hessian矩阵)问题,而对于凸优化问题来说,满足KKT条件的点即为最优解。由于此最小化问题仅含等式约束,那么能令其拉格朗日函数的一阶偏导数等于0的点即为满足KKT条件的点。
根据拉格朗日乘子法可知,该优化问题的拉格朗日函数为
L(x1,…,xn,λ)=k=1∑nxklog2xk+λ(k=1∑nxk−1)
对于拉格朗日函数分别关于x1,…,xn,λ求一阶偏导数,并令偏导数等于0
∂x1∂L(x1,…,xn,λ)=∂x1∂[k=1∑nxklog2xk+λ(k=1∑nxk−1)]=0=log2x1+x1⋅x1ln21+λ=0=log2x1+ln21+λ=0⇒λ=−log2x1−ln21
同理可得
λ=−log2x1−ln21=−log2x2−ln21=…=−log2xn−ln21
又因为
∂λ∂L(x1,…,xn,λ)=∂λ∂[k=1∑nxklog2xk+λ(k=1∑nxk−1)]=0⇒k=1∑nxk=1
所以解的
x1=x2=…=xn=n1
根据验证满足约束条件,所以未满足所有约束的最优解,也即未当前最小化问题的最小值点,同时也是f(x1,…,xn)的最大值点
将解带入可得
f(n1,…,n1)=−k=1∑nn1log2n1=−n⋅n1log2n1=log2n
纯度最低是为样本为均匀分布的时候
- 求Ent(D)的最小值
仅考虑0≤xk≤1,f(x1,…,xn)可以看成是n个互不相关的一元函数的加和,即
f(x1,…,xn)=k=1∑ng(xk)
其中g(xk)=−xklog2xk,0≤xk≤1。当各个g(xi)分别取到其最小值时,函数也取到最小值
- 求g(x1)的最小值
g′(x1)g′′(x1)=dx1d(−x1log2x1)=−log2x1−x1⋅x1ln21=−log2x1−ln21=dx1d(g′(x1))=dx1d(−log2x1−ln21)=−x1ln21
g(x1)是一个在其定义域范围内开口向下的凹函数,那么其最小值必然在边界取。所以g(0)=g(1)=1
Note:在信息熵中0log20=0
-
条件熵
在已知样本属性a的取值情况下,度量样本集合纯度的一种指标
假定离散属性a有V个可能的取值{a1,a2,…,aV},若使用a来对样本集D进行划分,则会产生V个分支结点,其中第v个分支结点包含了D中所有在属性a上取值为av的样本,记为Dv
H(D∣a)=v=1∑V∣D∣∣Dv∣Ent(Dv)
H(D∣a)值越小,纯度越高
-
信息增益
属性a对样本集D进行划分所获得的信息增益
Gain(D,a)=Ent(D)−v=1∑V∣D∣∣Dv∣Ent(Dv)=Ent(D)−H(D∣a)
其中∣Dv∣/∣D∣为分支结点赋予权重,即样本数越多的分支结点的影响越大
一般而言信息增益越大,则意味着使用属性a来进行划分所获得的纯度提升越大
最优化分属性
a∗=a∈AargmaxGain(D,a)
- 缺点
信息增益对对可取数值数目较多的属性有所偏好
Gain(D,a)=Ent(D)−v=1∑V∣D∣∣Dv∣Ent(Dv)=Ent(D)−v=1∑V∣D∣∣Dv∣⎝⎛−k=1∑∣y∣pklog2pk⎠⎞=Ent(D)−v=1∑V∣D∣∣Dv∣⎝⎛−k=1∑∣y∣∣Dv∣∣Dkv∣log2∣Dv∣∣Dkv∣⎠⎞
1.2.2. C4.5决策树
解决信息增益的确定,不直接使用信息增益,而是使用增益率来选择最优化分属性
1.2.2.1. 增益率
定义:
Gain ratio (D,a)=IV(a)Gain(D,a)
其中
IV(a)=−v=1∑V∣D∣∣Dv∣log2∣D∣∣Dv∣称为属性a的固有值
属性a的可能取值数目越多(即V越大),则IV(a)的值通常会越大
算法并不是直接选择增益率最大的候选划分属性,而是使用了一个启发式:先从候选划分属性中找出信息增益高于平均水平的属性,再从中选择增益率最高的.
1.2.3. CART
CART是Classification and Regression Tree的简称,这是一种著名的决策树学习算法,分类和回归任务都可用。
1.2.3.1. 基尼指数
- 基尼值
Gini(D)=k=1∑∣Y∣k′=k∑pkpk′=1−k=1∑∣Y∣pk2
直观来说,Gini(D)反映了从数据集D中随机抽取两个样本,其类别标记不一致的概率.因此,Gini(D)越小,则数据集D的纯度越高.
- 基尼指数
属性a的基尼指数
Gini index (D,a)=v=1∑V∣D∣∣Dv∣Gini(Dv)
最优化分属性
a∗=a∈AargminGiniindex (D,a)
1.2.3.2. 算法
- 分类
- 回归