决策树模型与学习
决策树模型
分类决策树模型是一种描述对实例进行分类的树形结构。决策树由结点和有向边组成。结点有两种类型:内部结点和叶结点。内部结点表示一个特征或属性,叶结点表示一个类。
决策树与if-then规则
决策树的路径或其对应的if-then规则集合具有一个重要的性质:互斥并且完备。这就是说,每一个实例都被一条路径或一条规则所覆盖,而且只被一条路径或一条规则所覆盖。
决策树与条件概率分布
决策树还表示给定特征条件下类的条件概率分布。这一条件概率分布定义在特征空间的一个划分上。将特征空间划分为互不相交的单元或区域,并在每个单元定义一个类的概率分布就构成了一个条件概率分布。决策树的一条路径对应于划分中的一个单元。决策树所表示的条件概率分布由各个单元给定条件下类的条件概率分布组成。
决策树学习
决策树学习本质上是从训练数据集中归纳出一组分类规则。我们需要的是一个与训练数据矛盾较小的决策树,同时具有很好的泛化能力。
决策树学习的算法通常是一个递归地选择最优特征,并根据该特征对训练数据进行分割,使得对各个子数据集有一个最好的分类的过程。
决策树学习算法包含特征选择、决策树的生成与决策树的剪枝过程。
特征选择
特征选择问题
特征选择在于选取对训练数据具有分类能力的特征。
熵:表示随机变量不确定性的度量
条件熵:条件熵H(Y|X)表示在已知随机变量X的条件下随机变量Y的不确定性。
当熵和条件熵中的概率由数据估计(特别是极大似然估计)得到时,所对应的熵与条件熵分别称为经验熵和经验条件熵。
信息增益表示得知特征X的信息而使得类Y的信息的不确定性减少的程度。
g(D,A)=H(D)−H(D,A)
一般地,熵H(Y)与条件熵H(Y|X)之差称为互信息。决策树学习中的信息增益等价于训练数据集中类与特征的互信息。
根据信息增益准则的特征选择方法是:对训练数据集(或子集)D,计算其每个特征的信息增益,并比较它们的大小,选择信息增益最大的特征。
信息增益比
gR(D,A)=g(D,A)H(D)
决策树的生成
ID3算法
ID3算法的核心是在决策树各个结点上应用信息增益准则选择特征,递归地构建决策树。ID3相当于用极大似然法进行概率模型的选择。
C4.5的生成算法
C4.5在生成的过程中,用信息增益比来选择特征。
决策树的剪枝
在决策树学习中将已生成的树进行简化的过程称为剪枝。决策树的剪枝往往通过极小化决策树整体的损失函数或代价函数来实现。
设树T的叶结点个数为|T|,t是树T的叶结点,该叶结点有
Nt
个样本点,其中k类的样本点有N_{tk}个,k=1,2,…,K,H_t(T)为叶结点t上的经验熵,a≥0为参数,
损失函数:
Cα(T)=∑|T|t=1NtHt(T)+α|T|
,其中经验熵为:
Ht(T)=−∑kNtkNtlogNtkNt
C(T)=∑|T|t=1NtHt(T)=∑|T|t=1∑Kk=1NtklogNtkNt
C(T)表示模型对训练数据的预测误差,即模型与训练数据的拟合程度,|T|表示模型复杂度,参数a≥0控制两者之间的影响。
决策树生成只考虑了通过提高信息增益(或信息增益比)对训练数据进行更好的拟合。而决策树剪枝通过优化损失函数还考虑了减小模型复杂度。决策树生成学习局部的模型,而决策树剪枝学习整体的模型。
CART算法
CART算法由以下两步组成:
(1)决策树生成:基于训练数据集生成决策树,生成的决策树要尽量大;
(2)决策树剪枝:用验证数据集对已生成的树进行剪枝并选择最优子树,这时用损失函数最小作为剪枝的标准。
CART生成
对回归树用平方误差最小化准则,对分类树用基尼指数最小化准则,进行特征选择,生成二叉树。
回归树的生成
一个回归树对应着输入空间(即特征空间)的一个划分以及在划分的单元上的输出值。假设已将输入空间划分为M个单元
R1,R2,…,RM
,并且在每个单元
Rm
上有一个固定的输出值
cm
,于是回归树模型可表示为
f(x)=∑Mm=1cmI(x∈Rm)
用平方误差来表示回归树对于训练数据的预测误差,用平方误差最小的准则求解每个单元上的最优输出值。
对输入空间进行划分:遍历所有输入变量,找到最优的切分变量j,构成一个对(j,s)。
分类树的生成
- 概率分布p的基尼指数: Gini(p)=∑Kk=1pk(1−pk)=1−∑Kk=1p2k
- 样本集合D的基尼指数: Gini(D)=1−∑Kk=1(|Ck||D|)2 ,Ck是D中属于第k类的样本子集,K是类的个数。
- 在特征A的条件下,集合D的基尼指数:
Gini(D,A)=|D1||D|Gini(D1)+|D2||D|Gini(D2)
基尼指数Gini(D)表示集合D的不确定性,基尼指数Gini(D,A)表示经A=a分割后集合D的不确定性。
CART剪枝
形成一个子树序列
Cα(T)=C(T)+αT
α=C(t)−C(Tt)|Tt|−1g(t)=C(t)−C(Tt)|Tt|−1 表示剪枝后整体损失函数减少的程度。在T0中剪去g(t)最小的Tt,将得到的子树作为T1,同时将最小的g(t)设为a1。T1为区间[a1,a2)的最优子树。如此剪枝下去,直至得到根结点。在这一过程中,不断地增加a的值,产生新的区间。
在剪枝得到的子树序列T0,T1,…,Tn中通过交叉验证选取最优子树Ta
利用独立的验证数据集,测试子树序列T0,T1,…,Tn中各棵子树的平方误差或基尼指数。平方误差或基尼指数最小的决策树被认为是最优的决策树。