决策树分开两部分,是因为CART算法还是有些麻烦的,对于回归树我还是存在一些问题,希望后面整理的时候能够理清楚。
【学习思想】
决策树的学习思想还是很通俗易懂的。一般我们去买东西,我们会对这个东西的一些特征做一个衡量来决定是否购买,比如我们可能会看这个东西的大小是否合适,如果合适,我们可能会看这个东西的材质是否满意,满意的话我们会继续在意它的价格是否合理。这样一步一步下来,我们就能构造出一个树形模型。不过我们在构造树的时候,第一个选择什么特征作为我们的衡量标准,下一个选择什么特征来衡量,这是一个问题,因此我们要做出特征选择。当我们要买一个新东西(同功用)的时候,我们就可以根据以前生成的树形模型,来判断我们是否会购买。这里买与不买是一个二分类问题,多分类问题与其思想也是一样的,决策树模型可读性很高,且分类速度很快。
【学习步骤】
①特征选择:特征选择即我们用哪个特征来划分空间。我们常用信息增益、信息增益比或基尼系数来作为划分依据。
②决策树的生成:常用算法有ID3,C4.5,CART
②决策树的剪枝:常用方法有极小化决策树整体的损失函数、CART剪枝算法
【①特征选择】
选择最佳划分的度量通常是根据划分后子女节点不纯性的程度。不纯的程度越低,类分布就越倾斜。不纯性度量有熵、基尼、classification error。由于在ID3和C4.5中我们分别是用信息增益和信息增益比,在CART的分类树上是用基尼系数来做特征选择。因此我们要对信息增益、信息增益比以及基尼系数的计算有个了解。
信息增益
输入:训练数据集
、特征
输出:特征A对训练数据集D的信息增益
信息增益比
输入:训练数据集
、特征
输出:特征A对训练数据集D的信息增益比
基尼指数
输入:训练数据集
、特征
输出:特征A对训练数据集D的基尼指数
【②决策树生成算法】
由于C4.5与ID3的区别只在于特征选择上,因此算法结构是一样的。
C4.5是ID3的改进,因为ID3采用信息增益的方式选择特征,会对某些可取类别(值)数目较多的属性有所偏好(如学号,学号取值很多,其信息增益很大,但实际分类意义不强,不具有泛化能力)
的生成算法:
输入:训练数据集
,特征集
,阈值
输出:决策树
(1)若
中样本全属于同一类别
,则将
标记为
类叶节点,返回T;
(2)若 中样本在 上取值相同或 ,则将 标记为叶节点,其类别标记为 中样本数量最多的类,返回 ;
(3)若是以上两种情况都未发生,那么计算 中各特征对 的信息增益 ,选择信息增益 最大的特征 ,若 的信息增益 小于阈值 ,则将 标记为 中样本数最多的类;
(4)否则对
的每一可能值
,依
将
分割为若干个非空的
,将
中样本数最多的类作为类别标记,构建子节点,由节点及其子节点构成树
,返回
;
(5)对节点i,以
为训练集,以
为特征集,递归调用(1)~(5),得到子树
,返回
。
【③决策树剪枝算法】
在了解决策树剪枝算法之前,我们先来看看决策树最显著的缺点,那就是容易过拟合。我们可能会学习了一个很复杂的树,它对于训练集有很好的拟合效果,但是对于新输入的数据来说,却无法给出好的分类。因此,为了让复杂的树简单些,提出了剪枝算法。
这这里先复习《统计学习方法》上给出的一种剪枝算法,即极小化决策树整体的损失函数。
决策树学习的损失函数
我们用
(树
的叶节点个数)来表示模型的复杂度。
经验熵:
定义决策树学习的损失函数为:
令
,用于表示模型对训练数据的误差,即模型与训练数据的拟合程度。
可以得到:
是控制模型复杂度和模型误差之间比重的参数,若
小,则选择较复杂的模型(即
较大);若
大,则选择较简单的模型(即
较小)。这样能够很好地平衡过拟合(方差)与误差(偏差)
剪枝算法(基于极小化决策树整体的损失函数)
输入:由生成算法得到的整个树
,参数
输出:修剪后的子树
(1)计算每一个叶节点的经验熵;
(2)递归地从树的叶节点向上回缩;
(3)计算剪枝前整体树
和剪枝后
的损失函数
和
;
(4)若剪枝后的损失函数
小于剪枝前的损失函数
,则进行剪枝,将父节点变为新的叶节点;
(5)返回(2),直至不能继续为止,得到损失函数最小的子树
通过对决策树的生成算法和剪枝算法的学习,我们可以看出决策树生成希望得到更好的拟合效果,而决策树剪枝通过优化损失函数还考虑了模型的复杂度。决策树生成学习局部的模型,决策树剪枝学习整体的模型。
决策树的计算确实不难,我觉得可以通过对例题,习题的计算来加快理解,在真正应用当中,决策树通常会被用到集成学习当中作为基函数,如随机森林,梯度提升树等(大多选择cart tree)
参考文献:《统计学习方法》、《数据挖掘导论》