一、背景介绍
分类与回归树(classification and regression tree,CART)是决策树算法中的一种,与其他决策树算法相同,同样由特征选择,树的生成与剪枝组成。CART被广泛应用,且被用于树的集成模型,例如,GBDT、RF等集成算法的基学习器都是CART树。决策树是典型的非线性模型,GBDT和RF因此也是非线性模型。
决策树的经典算法包括ID3、C4.5、CART算法,其应用领域及所使用的准则,如下图所示。
二、CART介绍
CART分类回归树是一种典型的二叉决策树,可以做分类或者回归。如果待预测结果是离散型数据,则CART生成分类决策树;如果待预测结果是连续型数据,则CART生成回归决策树。
CART算法的重要基础包含以下三个方面:
-
二分(Binary Split):在每次判断过程中,都是对观察变量进行二分。
CART算法采用一种二分递归分割的技术,算法总是将当前样本集分割为两个子样本集,使得生成的决策树的每个非叶结点都只有两个分枝,CART二分每个特征(包括标签特征以及连续特征),如果标签特征有3个属性,可以将其中的两个属性归为一类,另一个属性归为一类。因此CART算法生成的决策树是结构简洁的二叉树。因此CART算法适用于样本特征的取值为是或非的场景,对于连续特征的处理则与C4.5算法相似。 -
单变量分割(Split Based on One Variable):每次最优划分都是针对单个变量。
-
剪枝策略:CART算法的关键点,也是整个Tree-Based算法的关键步骤。
剪枝过程特别重要,所以在最优决策树生成过程中占有重要地位。有研究表明,剪枝过程的重要性要比树生成过程更为重要,对于不同的划分标准生成的最大树(Maximum Tree),在剪枝之后都能够保留最重要的属性划分,差别不大。反而是剪枝方法对于最优树的生成更为关键。
2.1 分类树
2.2.1 基本介绍
分类树用基尼指数(gini index)最小化准则进行特征选择生成二叉树 ,基尼指数G(D,A)表示经A=a分割后集合D的不确定性,基尼指数越大,样本集合的不确定性就越大。
【基尼指数】: 对于一份lable为分类变量的训练集,存在一个指标叫做基尼指数,其定义如下:
其中,pi表示某一类别的样本数占总样本数的比例。gini越小,表示样本分布越均匀(0的时候就表示只有一类了),越大越不均匀。
注意:只要是分类性质的样本集,本身就存在基尼指数这个属性。
【Gini增益】:
Gini增益表示当前属性的一个混乱度。其中, N i / N Ni/N Ni/N表示当前类别占所有类别的概率。
最终Cart分类树选择GiniGain最小的特征作为划分特征。
【Cart分类树选择GiniGain最小的特征作为划分特征】这里怎么理解呢?
其实就是我们用每个特征(这里是A)的每个可能的值(这里是a)进行二分,每分一次就会产生两份样本,然后按照上式求每一次的综合基尼指数,最后选择基尼指数最小的那个分法就好了。
注意:CART树的每一步都是二分,没有多分情况。
2.1.2 实现步骤
【分类树算法步骤】:
- 首先是根据当前特征计算他们的基尼增益。
- 选择基尼增益最小的特征作为划分特征。
- 从该特征中查找基尼指数最小的分类类别作为最优划分点。
- 将当前样本划分成两类,一类是划分特征的类别等于最优划分点,另一类就是不等于
针对这两类递归进行上述的划分工作,直达结点中的样本个数小于预定阈值,或样本集的基尼指数小于预定阈值(样本基本属于同一类),或者没有更多特征。
2.2 回归树
2.2.1 基本介绍
回归树采用均方误差作为损失函数,树生成时会递归的按最优特征与最优特征下的最优取值对空间进行划分,直到满足停止条件为止。
回归树该怎么确定哪个分法才最好呢?最小二乘!经典的最小二乘算法!
之所以称为最小二乘回归树,是因为,回归树以误差平方和为准则选择最优二分切点,该生成算法在训练数据集上所在的输入空间中,递归的将每个区域划分为两个子区域并决定每个子区域的输出值,在这里分为两种情况,一是输出值为子区域输出值的均值该种情况下为回归树,二是输出值为子区域输入与输出的线性回归,输出值为回归系数,该种情况下为模型树。
2.2.2 实现步骤
构建回归树的步骤如下:
输入: 训练数据集 D={(x1,y1),(x2,y2),…,(xN,yN)}
输出: 回归树T
(1) 求解选择切分特征j与切分特征取值s。j将训练集D划分为两部R1与R2,依照(j,s)切分后如下:
其中,c1,c2分别为左右子区域输出的均值(模型树时是输出变量的回归值),可通过遍历每个变量的每个可能取值来切分数据集找出最优切分点。
(2) 遍历所有可能的解(j,s),找到最优的 (j∗,s∗),最优的解使得对应损失最小,按照最优特征 (j∗,s∗) 来切分即可。
(3) 递归条用(1)∼(2),直到满足停止条件。
(4) 返回决策树T
注:停止条件可以人为设定,比如说设置某个节点的样本容量小于给定的阈值 c ,或者当切分后的损失减小值小于给定的阈值小于给定的 ε,则停止切分,生成叶节点。
三、CART剪枝
由于CART生成算法是让生成的决策树自然生长,尽量大,所以容易造成过拟合,因此采取剪枝策略避免过拟合。
CART采取Cost-Complexity Pruning(CCP、代价复杂度)剪枝法:
CCP方法包含两个步骤:
1:从原始决策树T0开始生成一个子树序列{T0、T1、T2、…、Tn},其中Ti+1是从Ti总产生,Tn为根节点
2:通过交叉验证法在独立的验证数据集上对子树序列{T0、T1、T2、…、Tn}进行测试,从中选择最优子树。