决策树--CART树模型
上一章节介绍了决策树的ID3、C4.5算法相应的原理及算法优缺点已经介绍,本章主要讲解CART树的原理及相较于ID3、C4.5算法的改进。
1、CART树:可以解决分类和回归问题
2、分裂节点的选择:
CART树选取特征是根据基尼系数,基尼系数越小,模型的不纯度越小。ID3、C4.5都是基于熵的运存,会涉及大量的对数运算,为了解决这个问题,CART树用基尼系数作为分裂特征选取标准,首先我们理解一下基尼系数:
2.1 在分类问题中: 如果一个数据集有i个类别,第i个类别的概率Pi,那么基尼系数为:
则二分类的基尼系数:
在分裂节点中,如果一个样本集合选取A特征的某个值,将数据集分为D1、D2两部分,那么数据集在A特征下的基尼系数为:
同时针对CART树,一方面选取了基尼系数作为特征选取的衡量标准,另一方面采用的是二叉树而不是多叉树,那么在运算效率上就会有很大的提高。
3、CART分类树对连续值的特征变量离散化
CART分类树在处理连续特征变量与C4.5的处理方式是一样的,唯一区别就是选取划分点时的度量值不同。
e.g.某样本中特征A为连续特征值,根据A的所有取值,从小到大排序,分别取出所有相邻两个值的均值,记做集合m,然后计算m中的每个值当做二元分类点时的基尼系数,选择基尼系数最小的值为连续特征A的二元分类点。可以将小于这个点的分类为A类,大于这个点的分类为B类,这样就将连续变量离散化了。
4、CART回归树对连续值的特征变量离散化
采用的是和方差的度量方法:
e.g.某样本中特征A为连续特征值,根据A的所有取值,从小到大排序,分别取出所有相邻两个值的均值,记做集合m,当二元分类点x将数据分成了s1、s2两个集合,则针对两个数据集合,分别计算均方差,最后求和,那么和方差最小的为当前特征的划分点。
5、NOTE:CART树是一个二叉树,ID3、C4.5是多叉树
e.g. 在分类问题上:某数据集上有特征A,有A1,A2,A3共三个类别,那么在ID3、C4.5算法中,会建立成三个分支。但是在CART分类树中,会将A1,A2,A3划分成{A1,A2}和{A3}、{A1}和{A2,A3}、{A2}和{A1,A3},分别计算基尼系数,最小的一组为当前节点特征A的分裂依据,同时特征A还有机会参与以后的节点建立,这是与ID3、C4.5不同的地方。
6、CART回归和分类树对结果预测的区别
CART回归树预测结果是根据叶子节点的中位数或均值作为预测结果,而CART分类树是根据叶节点的类别概率最大的作为预测结果。
7、CART树剪枝
决策树算法会出现过拟合现象,那么为了提高了模型的泛化能力,降低过拟合,CART树提供了剪枝的方法。剪枝的方法有预剪枝和后剪枝,CART树采用的是后剪枝的方法。剪枝的过程会产生很多剪之后的树,那么我们采用交叉验证的方法评测各个剪枝效果,选出效果最好的树作为最终的模型。
CART回归树和CART分类树的剪枝过程是一样的,只是在损失函数上的度量方式不一样,一个是使用基尼系数,另一个是使用均方差。
损失函数的度量:
在剪枝过程中,对任意一棵子树,其损失函数为:
其中,为正则化参数,为训练数据的误差(CART回归树用的是均方差,CART分类树是基尼系数),为叶子节点的数量。
当=0时,则原生的CART树是最优的子树;
当=时,则CART树的根节点组成的单节点树为最优子树
当越大,剪枝的越厉害,其剪枝的后的树越小。
剪枝思路:
当位于节点t的任意一颗子树,没有剪枝的情况下,其损失:
当剪枝到根节点,即只保留根节点,其损失是:
当=0或者很小时,则: ,当增大到一定程度时:
所以当T和满足,即:
就可以对进行剪枝,将子节点全部剪掉,剩下一个叶子结点T。
最后要做的就是交叉验证,当我们计算出所有节点是否剪枝的,将对应的最优子树在训练集上进行交叉验证,找到最优子树作为最终结果。
以上是我对CART树的理解,下一章节会用Python代码实现CART分类树和CART回归树算法。
欢迎关注我的公众号!