引言
决策树模型在监督学习中非常常见,可用于分类(二分类、多分类)和回归。虽然将多棵弱决策树的Bagging、Random Forest、Boosting等tree ensembel 模型更为常见,但是“完全生长”决策树因为其简单直观,具有很强的解释性,也有广泛的应用,而且决策树是tree ensemble 的基础,值得好好理解。一般而言一棵“完全生长”的决策树包含,特征选择、决策树构建、剪枝三个过程,这篇文章主要是对决策树学习过程中的问题进行简单解释。
决策树算法简介
分类决策树模型是一种描述对实例进行分类的树形结构。决策树由结点(node) 和有向边(directed edge)组成.结点有两种类型:内部结点(internal node)和叶结点(leaf node),内部结点表示一个特征或属性,叶结点表示一个类。
用决策树分类,从根结点开始,对实例的某-特征进行测试,根据测试结果,将实例分配到其子结点:这时,每一-个子结点对应着该特征的-一个取值,如此递归地对实例进行测试并分配,直至达到叶结点最后将实例分到叶结点的类中。
下图是一个决策树的示意图,图中圆和方框分别表示内部结点和叶结点。
例如下图:
决策树模型为(图中绿色和橙色分别表示内部结点和叶结点):
每个非叶节点表示一f个特征属性测试。
每个分支代表这个特征属性在某个值域上的输出。每个叶子节点存放一+个类别。
每个节点包含的样本集合通过属性测试被划分到子节点中,根节点包含样本全集
属性测试的目标是让各个划分出来的子节点尽可能地“纯”,即属于同一类别
因此我们的重点就是量化纯度的具体方法,决策树最常用的算法有三种:ID3,C4.5和CART
ID3算法的缺陷
ID3由Ross Quinlan在1986年提出。ID3决策树可以有多个分支,但是不能处理特征值为连续的情况。决策树是一种贪心算法,每次选取的分割数据的特征都是当前的最佳选择,并不关心是否达到最优。在ID3中,每次根据“最大信息熵增益”选取当前最佳的特征来分割数据,并按照该特征的所有取值来切分,也就是说如果一个特征有4种取值,数据将被切分4份,一旦按某特征切分后,该特征在之后的算法执行中,将不再起作用,所以有观点认为这种切分方式过于迅速。ID3算法十分简单,核心是根据“最大信息熵增益”原则选择划分当前数据集的最好特征,信息熵是信息论里面的概念,是信息的度量方式,不确定度越大或者说越混乱,熵就越大。在建立决策树的过程中,根据特征属性划分数据,使得原本“混乱”的数据的熵(混乱度)减少,按照不同特征划分数据熵减少的程度会不一样。在ID3中选择熵减少程度最大的特征来划分数据(贪心),也就是“最大信息熵增益”原则。
ID3的缺点:
-
ID3没有考虑连续特征,比如长度,密度都是连续值,无法在ID3运用。这大大限制 了ID3的用途。
-
ID3采用信息增益大的特征优先建立决策树的节点。在相同条件下,取值比较多的特征比取值少的特征信息增益大。比如一个变量有2个值,各为1/2,另一个变量为3个值,各为1/3,其实他们都是完全不确定的变量,但是取3个值的比取2个值的信息增益大。
-
ID3算法对于缺失值的情况没有做考虑。
-
没有考虑过拟合的问题。
那么对于ID3算法的第二个缺点,为什么倾向特征选项较多的特征呢?
在X发生的情况下,Y的熵称为条件熵
H
(
Y
∣
X
)
H(Y|X)
H(Y∣X)。显然地,有公式:
上述公式表示:(X,Y)发生所包含的熵(它是个并集),减去X的熵,即为Y发生“新”增的熵。
信息增益:表示得知特征A的信息而使得D集合的信息不确定性减少的程度。它为集合D的经验熵减去特征A的条件熵。公式表示为:
信息增益反映的给定一个条件以后不确定性减少的程度,必然是分得越细的数据集确定性更高,也就是条件熵越小,信息增益越大
考虑一个极端情况,某个属性(特征)的取值很多,以至于每一个取值对应的类别只有一个。这样根据
可以得知后面的那一项的值为0。这样得到信息增益会很大。
所以ID3算法的会倾向特征选项较多的特征呢
条件熵和信息增益的关系
信息增益描述了一个特征带来的信息量的多少,往往用于特征选择
借用上一问题的答案
在X发生的情况下,Y的熵称为条件熵
H
(
Y
∣
X
)
H(Y|X)
H(Y∣X)。显然地,有公式:
信息增益:表示得知特征A的信息而使得D集合的信息不确定性减少的程度。它为集合D的经验熵减去特征A的条件熵。公式表示为:
假定数据集
D
D
D中离散属性
a
a
a有
V
V
V个可能的取值,若使用
a
a
a对数据进行划分,则会产生
V
V
V个分支节点,其中第
v
v
v个分支节点包含了
D
D
D中所有在属性
a
a
a上取值为
a
v
a^v
av的样本,记为
D
v
D^v
Dv,可以用属性
a
a
a对样本集
D
D
D进行划分所得的信息增益( information gain)
后一项即为条件熵
信息增益反映的给定一个条件以后不确定性减少的程度,必然是分得越细的数据集确定性更高,也就是条件熵越小,信息增益越大
联合以上公式,可得:
它显示是典型的计算两个集合的交集公式,这可以表示D和A之间的互信息。
决策树的损失函数
《统计学习方法》5.1.4决策树学习一节中介绍,决策树的损失函数通常是正则化的极大似然函数。
我们知道正则化的损失函数中前一项代表经验误差,而在概率模型中(决策树模型是一种概率模型),经验误差函数的获得往往通过将极大似然函数取反,即将求极大化为求极小而获得。因此,在概率模型中,极大似然函数与经验误差函数可以认为是相同的概念,那么必然就可以通过经验误差函数来推导出极大似然函数,以此来加深对决策树损失函数的理解。
决策树剪枝是简化已经生成的复杂的决策树,防止过拟合,使生成的决策更一般化,下面介绍决策树剪枝原理
t
t
t是树的叶节点,
N
t
N_t
Nt表示该叶节点的样本数量,
H
t
(
T
)
H_t(T)
Ht(T)表示结点t上的经验熵,所以右边第一项相当于对决策树的所有叶节点求熵,并以每个叶节点包含的样本数量为权重。又因为熵的含义为随机变量不确定性的度量,所以右边第一项的计算意义为模型对训练集的预测误差
损失函数分解为:
那么右边第二项又是什么含义,
T
T
T表示树的叶节点个数,即表示树的复杂度,
a
a
a为参数,相当于
a
a
a越大,叶节点的个数对损失函数的影响越大,剪枝之后的决策树更容易选择复杂度较小的树,
a
a
a越小,表示叶节点的个数对损失函数的影响越小,所以
a
a
a的大小控制了预测误差与树的复杂度对剪枝的影响。
所以当a确定时,损失函数最小的子树越大,表明与训练数据的拟合越好,但是树也越复杂,子树越小,与训练数据的拟合越差,但树的复杂度较小,避免了过拟合,提高决策树的一般性,损失函数正好表示了对两者的平衡。
以上仅为作者一己之见,如有理解错误欢迎大佬评论指正。