目录
一、决策树介绍
二、决策树特征选择
三、决策树的生成
四、决策树的剪枝
五、CART算法
总结
参考资料:《统计学习方法》李航
目前最流行的一类机器学习算法是树形算法(决策树、随机森林、GBDT、XGBoost和LightGBM等)。树形算法的基础就是决策树,由于其易理解、易构建、速度快等特点,被广泛地应用。因此,决策树是经典的机器学习算法,很多复杂的机器学习算法都是由决策树演变而来。
根据处理数据类型的不同,决策树又分为两类:分类决策树与回归决策树。分类决策树可用于处理离散型数据,回归决策树可用于处理连续型数据。最常见的决策树算法包含ID3算法、C4.5算法以及CART算法。
决策树学习的策略是以损失函数为目标函数的最小化,损失函数通常是正则化的极大似然函数。 当损失函数确定以后,学习问题就变为在损失函数意义下选择最优决策树的问题。因为从所有可能的决策树中选取最优决策树是 NP完全问题,所以现实中决策树学习算法通常采用启发式方法,近似求解这一最优化问题,这样得到的决策树是次最优的。决策树学习的算法通常是递归地选择最优特征,并根据该特征对训练数据进行分割,使得各子数据集有一个最好的分类的过程。直至所有训练数据子集都被基本正确分类, 或者直到没有合适的特征为止。
以上方法生成的决策树可能对训练数据有很好的分类能力,但对未知的测试数据却未必有很好的分类能力,即可能发生过拟合现象。我们可以对已生成的树自下而上进行剪枝,将树变得更简单,从而具有更好的泛化能力。如果特征数量很多,也可以在决策树学习开始的时候,对特征进行选择,只留下对训练数据有足够分类能力的特征。
决策树的生成对应于模型的局部选择,决策树的剪枝对应于模型的全局选择。
决策树学习通常包括 3 个步骤:特征选择、树的生成和树的剪枝。
特征选择在于选取对训练数据具有分类能力的特征,这样可以提高决策树学习的效率。如果利用一个特征进行分类的结果与随机分类的结果没有很大差别, 则称这个特征是没有分类能力的,经验上扔掉这样的特征对决策树学习的精度影响不大。ID3和C4.5算法特征选择的准则是信息增益或信息增益比。
1. 熵
在信息论与概率统计中,熵(entropy)是表示随机变量不确定性的度量。设是一个取有限个值的离散随机变量,其概率分布为
,
条件熵 表示在已知随机变量
的条件下随机变量
的不确定性。它定义为
。
2. 信息增益
信息增益表示给定特征
的信息而使得数据集
的信息不确定性减少的程度。它定义为数据集
的熵
与给定特征
后数据集
的条件熵
之差,即
。
3. 信息增益比
信息增益是绝对指标,信息增益比是相对指标。特征对数据集
的信息增益比
定义为其信息增益
与数据集
的熵
之比,即
1. ID3 算法
ID3算法的核心是在决策树各个结点上应用信息增益准则选择特征,递归地构建决策树,直到所有特征的信息增益均很小或没有特征可以选择为止。ID3算法只有树的生成,没有剪枝,所以该算法生成的树容易产生过拟合问题。
2. C4.5算法
C4.5算法继承了ID3算法的优点,并在以下几方面对ID3算法进行了改进。1)在生成树的过程中,用信息增益率准则来选择特征,克服了用信息增益选择特征时偏向选择取值多的特征的不足;2) 在树的构造过程中进行剪枝; 3) 能够完成对连续属性的离散化处理; 4) 能够对不完整数据进行处理。
C4.5算法有如下优点:产生的分类规则易于理解,准确率较高。有如下缺点:在构造树的过程中,需要对数据集进行多次的顺序扫描和排序,因而导致算法的低效;此外只适合于能够存储于内存的数据集,当训练集大得无法在内存存储时,程序将无法运行。
决策树生成算法递归地产生决策树,直到不能继续下去为止。这样产生的树往往对训练数据的分类很准确,但对测试数据的分类却没有那么准确,即容易出现过拟合现象。过拟合的原因在于学习时过多地考虑如何提高对训练数据的正确分类,从而构建出过于复杂的决策树。解决这个问题的办法可以是对已生成的决策树进行简化,这个简化的过程称为剪枝。具体而言, 剪枝是从已生成的树上裁掉一些子树或叶结点,并将其根结点或父结点作为新的叶结点,从而简化分类树模型。
剪枝分为预剪枝和后剪枝。预剪枝是指在构造树的过程中就知道哪些节点可以剪掉,于是干脆不对这些节点进行分裂;后剪枝是指构造出完整的决策树之后再来考虑哪些子树可以剪掉。对比预剪枝和后剪枝,能够发现,后剪枝决策树通常比预剪枝决策树保留了更多的分支。一般情形下,后剪枝决策树的欠拟合风险小,泛化性能往往也会更优。但后剪枝过程是在构建完全决策树之后进行的,并且要自底向上对树中的所有非叶结点进行逐一考察,因此其训练时间开销要比未剪枝决策树和预剪枝决策树都大得多。
一种简单的剪枝算法
本文介绍一种简单的决策树的剪枝算法。决策树的剪枝往往通过极小化决策树整体的损失函数来实现。设树的叶结点个数为
,
是树
的叶结点,该叶结点有
个样本点,其中
类的样本点有
个,
,
为叶结点
上的经验熵,
为参数,则决策树的损失函数可以定义为
表示模型与训练数据的拟合程度,
表示模型复杂度,参数
控制两者之间的平衡。较大的
促使选择较简单的模型,较小的
促使选择较复杂的模型,
意味着只考虑模型与训练数据的拟合程度,不考虑模型的复杂度。剪枝,就是当
确定时,选择损失函数最小的模型。当
确定时,子树越大,往往与训练数据的拟合越好,但模型复杂度就越高;相反,子树越小,模型的复杂度就越低,但往往与训练数据的拟合不好。
可以看出,决策树生成只考虑了通过提高信息增益(或信息增益比)对训练数据进行更好地拟合,而决策树剪枝通过极小化损失函数不仅考虑了拟合效果,还考虑了模型复杂度。所以说,决策树的生成对应于模型的局部选择,决策树的剪枝对应于模型的全局选择。
上文定义的损失函数的极小化等价于正则化的极大似然估计。所以说,利用损失函数最小原则进行剪枝就是用正则化的极大似然估计进行模型选择。
CART(Classification And Regression Tree,即分类回归树)也属于一种决策树,它是一棵二叉树,是应用最广泛的决策树学习方法。CART既可以用于分类也可以用于回归,同样由特征选择、树的生成及树的剪枝组成。
1. CART特征选择
CART算法对回归树采用平方误差最小化准则,对分类树采用基尼系数最小化准则,进行特征选择,生成二叉树。二叉树不易产生数据碎片,精确度往往也会高于多叉树。
2. CART生成
2.1 CART回归树的生成
假设与
分别为输入和输出变量,并且
是连续变量,给定训练数据集
,
假设已将特征空间划分为个单元
,并且在每个单元
上有一个固定的输出值
,于是回归树模型可表示为
。
当特征空间的划分确定时,可以用平方误差来表示回归树对于训练数据的预测误差,用平方误差最小化的准则求解每个单元上的最优输出值。易知,单元
上
的最优值
是
上的所有
对应的
的均值,即
那怎样对特征空间进行划分?这里采用启发式的方法,选择第个变量
和它取的值
,作为切分变量和切分点, 并定义两个区域:
和
。
具体地,求解,
对固定输入变量可以找到最优切分点
,
和
,
遍历所有输入变量,找到最优的切分变量,构成一个对
,依此将特征空间划分为两个区域。接着,对每个区域重复上述划分过程,直到满足停止条件为止。这样就生成一棵回归树,这样的回归树通常称为最小二乘回归树。
2.2 CART分类树的生成
基尼系数
分类问题中,假设有个类,样本点属于第
类的概率为
,则概率分布的基尼系数定义为
对于给定的数据集合,
表示
中属于第
类的样本的个数,
表示
中样本的个数,数据集合
的基尼系数定义为
如果数据集合根据特征
是否取某一可能值
被分割成
和
两部分,
和
分别表示数据集
和
中样本的个数,
表示
中样本的个数,则在特征
的条件下,集合
的基尼系数定义为
生成过程
基于训练数据集来生成决策树,从根结点开始,在所有可能的特征 A 以及它们所有可能的切分点 a 中,选择基尼系数最小的特征及其对应的切分点作为最优特征与最优切分点。依最优特征与最优切分点,从现结点生成两个子结点,将训练数据集依特征分配到两个子结点中去。递归地对每个结点进行上述操作,直至满足停止条件,生成CART决策树。
算法停止的条件是结点中的样本个数小于预定阈值,或样本集的基尼系数小于预定阈值(样本基本属于同一类),或者没有更多特征。
3. CART剪枝
CART剪枝算法由两步组成:首先从生成的决策树 底端开始不断剪枝,直到
的根结点,形成一个子树序列
;然后通过交叉验证法在独立的验证数据集上对子树序列进行测试,从中选择最优子树。这时用损失函数最小作为剪枝的标准。
3.1 剪枝,形成一个子树序列
在剪枝过程中,计算子树的损失函数:
其中,为任意子树,
为子树的叶结点个数,参数
,
为对训练数据的预测误差,
为参数是
时子树
的整体损失。参数
权衡训练数据的拟合程度与模型的复杂度。 对固定的
,一定存在使损失函数
最小的子树,将其表示为
。这样的最优子树是唯一的。当
较大的时候,最优子树
偏小;当
小的时候,最优子树
偏大。极端情况,当
时,整体树是最优的。当
时,单结点树是最优的。
Breiman 等人证明:可以用递归的方法对树进行剪枝。将从小增大,
,产生一系列的区间
,对应着剪枝得到的最优子树序列
,序列中的子树是嵌套的。
3.2 在剪枝得到的子树序列中通过交叉验证选取最优子树
利用独立的验证数据集,测试子树序列中各棵子树的平方误差或基尼系数。平方误差或基尼系数最小的决策树被认为是最优的决策树。
ID3/C4.5/CART三种算法的对比
算法 | 支持模型 | 树结构 | 特征选择 | 连续值处理 | 缺失值处理 | 剪枝 |
ID3 | 分类 | 多叉树 | 信息增益 | 不支持 | 不支持 | 不支持 |
C4.5 | 分类 | 多叉树 | 信息增益比 | 支持 | 支持 | 支持 |
CART | 分类和回归 | 二叉树 | 基尼系数和平方误差 | 支持 | 支持 | 支持 |