参考资料:
《机器学习方法》 李航
一、概述
决策树可以视为一个if-then规则的集合。决策树的路径(即if-then规则的集合)具有一个重要的性质:互斥且完备,即,每个实例有且只有一条规则能够覆盖。
决策树学习的损失函数通常是正则化的极大似然函数(?),目标是最小化损失函数。从所有可能的决策树中选取最优决策树是NP完全问题(?),现实中决策树的学习算法通常采用启发式方法(根据经验,可能得到的不是最好的结果),近似求解这个最优化问题,这样得到的决策树是次最优的。
决策树递归地选择最优特征,根据该特征分割训练数据。自上而下地生成决策树之后,还需要对已生成的决策树自下而上地剪枝,提升泛化能力。可以通过去掉过于细分的叶结点,使其回退到父结点,甚至更高的结点,然后将父结点或者更高的结点作为新的叶结点。
如果特征数量很多,可以在决策树开始学习的时候进行特征选择,只留下对训练数据有足够分类能力的特征。
决策树学习算法包括:特征选择;决策树的生成;决策树的剪枝。
决策树可视为条件概率分布模型,深浅不同的决策树对应不同复杂程度的概率模型。决策树的生成对应模型的局部选择(只考虑局部最优),剪枝对应模型的全局选择(考虑全局最优)。
二、特征选择
我们要选择对训练数据具有分类能力的特征。如果一个特征进行分类的结果和随机分类的结果没有很大的差别,说明这个特征没有分类能力,我们可以去掉这样的特征。通常特征选择的准则是信息增益(或信息增益比)。
1. 熵
熵是一种随机变量不确定性的度量。设是一个离散型随机变量,取值有限,概率分布为
随机变量的熵为
条件熵表示已知随机变量
的条件下随机变量
的不确定性,定义为给定X的条件下Y的条件概率分布的熵对X的期望
2. 信息增益
信息增益是得知特征X的信息而使类别Y的信息的不确定性减少的程度,使用经验熵和经验条件熵之差表示,
3. 信息增益比
使用信息增益作为划分特征的依据,容易倾向选择取值较多的特征,使用信息增益比可以对该问题进行校正。特征A对数据集D的信息增益比定义为,特征A的信息增益与特征A 的熵之比
三、生成决策树
1. ID3算法
ID3算法的核心是在决策树的各个结点上使用信息增益准则选择特征。从根结点开始,对结点计算所有可能的特征的信息增益,选择信息增益最大的特征作为结点的特征,对子结点递归地调用该方法,直到所有的特征的信息增益都很小,或者没有特征可以选择。
ID3算法只有树的生成,没有剪枝,所以生成的树容易过拟合。
2. C4.5算法
对ID3进行改进,使用信息增益比选择特征,其他并无二致。
四、剪枝
决策树的剪枝通过极小化决策树整体的损失函数(实际上就是加上了正则项的损失函数)来实现。在分类问题中,决策树的损失函数定义为
是这棵树的叶结点的个数,
是叶节点中的样本数,
是叶节点t的经验熵,
为正则化参数。这个损失函数就是,度量拟合效果的指标+正则化参数*正则项。
树的剪枝算法:
输入:生成算法得到的树T,参数。
输出:修剪后的子树。
(1)计算每个结点的经验熵;
(2)递归地从树的叶结点向上回缩,即,如果剪枝后损失函数的值减小,则剪枝,否则不剪。
剪枝的过程只考虑剪枝前和剪枝后两个树的损失函数之差,其计算可以在局部进行,所以决策树的剪枝算法可以由一种动态规划的算法(?)实现。
五、CART算法
CART即分类与回归树,同样由特征选择、树的生成、剪枝组成,既可以用于分类,也可以用于回归。CART假设决策树是二叉树,递归地二分特征,由决策树生成(使用训练数据集,生成的树要尽可能大)和决策树剪枝(使用验证数据集,使用最小化损失函数作为剪枝的标准)组成。
1. CART生成:回归树
决策树生成的过程就是递归地构建二叉决策树的过程。对于回归树,使用平方误差最小准则,对于分类树,使用基尼指数最小化准则。
构建决策树的过程,采用启发式算法划分输入空间,寻找最优分割变量和最优分割点,目标为求解优化问题
在训练数据集所在的输入空间中,递归地将每个区域划分为两个子区域。划分的方法是,遍历特征,对固定的切分特征j扫描切分点
,选择使上式最小的
对。
就是对应划分区域的因变量均值。这样生成的回归树称为最小二乘回归树。
2. CART生成:分类树
分类树使用基尼指数选择最优特征,同时决定该特征的最优二值分割点。
基尼指数:在分类问题中,如果有个类别,样本点属于第
类的概率为
,该概率分布的基尼指数为
基尼指数与熵相似,取值越大说明样本集合的不确定性越大。在构建CART分类树的过程中,递归地计算每个特征A和其每一个可能的取值a,计算每个划分下的样本集合的基尼指数;选择最小的基尼指数对应的特征和切分点作为最优特征和最优切分点,从现结点生成2个子结点,分配样本。
3. CART剪枝
CART剪枝算法有两步:从生成的决策树底端开始剪枝,直到
的根结点,形成一个子树序列
;使用交叉验证法在独立的验证集上测试子树序列,选择最优子树。
剪枝使用的损失函数为
Breiman等人证明:可以用递归地方法对树剪枝。将从小增加,产生从小到大的
序列,由此可以得到一系列的小区间;剪枝得到的子树序列对应着区间
的最优子树序列
,序列中的子树是嵌套的。
对于以为根结点的子树
,一定存在一个
,使得剪枝后的子树与以
为单结点树的损失函数值相同,而这个单结点树更简单,所以对
剪枝。
当时,单结点树和剪枝后的子树损失函数值相同,以此作为序列中不同剪枝子树对应的
。计算
中每一个内部节点
对应的最优
值(记为
),在
中按照
最小剪枝,得到
(表示是除了
外最复杂的树),同时将最小的
设为
,则
为区间
的最优子树。
如此剪枝下去,不断增加的值,产生新的区间,直到到达根结点。然后,利用验证数据集来测试子树序列
,均方误差最小或者基尼指数最小的决策树就认为是最优的决策树。另外,
对应正则化参数序列
,当最优子树
确定时。对应的最优正则化参数
也确定了,即得到最优决策树
。