赞
踩
之前在博文 决策树归纳 中,我介绍了用决策树进行分类的算法,包括ID3和C4.5。然而决策树不仅可以用来做数据分类,也可用于做数据回归。1984年Breiman,Friedman,Olshen等人出版了著作《Classification and Regression Trees》(简称CART)介绍了二叉决策树的产生。他们给出了用二叉决策进行树数据分类和回归的方法。
在阅读本文之前,我假设读者已经了解了我之前写的“决策树归纳”中的知识点,包括决策树的基本构建方法,以及相关术语。然后我会分别介绍用于分类和回归两类计算任务的CART。
用于分类的CART的构建方法与之前ID3和C4.5算法是非常类似的,都是采用贪心策略,自顶而下分治地构建树。只不过此处判断分裂后子集元素“纯”度的标准不是ID3中用的信息增益,也不是C4.5中用的增益率,而是用基尼指数。
基尼指数按照如下的计算方式度量一个训练集
其中
其中
这样,对于一个节点中包含的数据集
所以,CART作为分类树的算法步骤如下:
CART的构建本来到此就算是结束了。但是所有的决策树构建算法(包括我之前介绍的ID3和C4.5)都有可能存在过拟合的问题(尤其是训练数据存在一些噪声和离群点时)。虽然可以通过阈值控制终止条件,避免树形结构分支过细,还有随机森林这样一些方法防止过拟合,但是一般情况下最常用的还是剪枝。剪枝的操作我在之前介绍ID3和C4.5的时候并没有讲到,但它是决策树算法中非常关键的一环,是不可以跳过的。所以我放到本文中也算是对之前文章的一个补充。
如果我们先建好决策树再进行剪枝(即所谓的后剪枝),那需要在初始构建决策树时让树完全增长直到所有的叶子节点都是纯的且具有零训练误差。然后找到过拟合的子树并剪掉它们。同时,剪枝导致决策树高度更低,分支更少,这也在一定程度上提高了数据分类(回归)的速度。
如果一棵子树需要被剪枝,那么剪枝之后这棵子树就变成了一个叶子节点,其类标记为原先子树的元组中出现最多次的类标记。比如下图中的左图,假如要把
现在剩下的问题就是在什么情况下需要对决策树的某个子树剪枝。简单想想就能想到,是否剪枝的评估标准肯定是子树的误差和子树复杂度(实际上就是叶子节点数)之间的平衡关系。根据这个原理,我们可以定义子树的损失函数:
其中
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。