C A R T 分 类 与 回 归 树
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
【机器学习】十、分类和回归树CART原理
一文详解,分类和回归树算法背后原理。码字不易,喜欢请点赞,谢谢!!!
一、前言
分类和回归树(Classification And Regression Trees),简称CART,是1984年提出来的既可用于分类,又可用于回归的树。CART被称为数据挖掘领域内里程碑式的算法。
上一节介绍了决策树的ID3和C4.5算法,后面说到了C4.5算法存在几点不足,主要为,生成多叉树;容易过拟合;只能用于分类;特征选择采用熵模型计算量大。而CART针对C4.5算法的这几点不足都提出了改进。本文将会一一介绍。
二、CART特征选择方法
CART算法包括分类树和回归树,其中分类树和回归树的特征选择采用的是不同的方法,这里依次介绍。
CART分类树特征选择
在ID3中,采用信息增益来选择特征;在C4.5中,采用信息增益率来选择特征;而在CART的分类树中,则是采用基尼系数来选择特征。这是因为,信息论中的熵模型,存在大量的对数运算,而基尼系数在简化熵模型的计算的同时保留了熵模型的优点。
基尼系数
基尼系数代表模型的纯度,基尼系数越大,模型越不纯;基尼系数越
小,模型越纯。因此在特征选择时,选择基尼系数小的来构建决策树,这和信息增益(率)是相反的。
基尼系数表达式:
式中KKK表示分类问题有KKK个类别,第kkk个类别的概率为pkp_kpk?。
如果是二分类,公式将更简单,假设第一类的概率为ppp,则基尼系数表达式为:
对于个给定的样本DDD,假设有KKK个类别, 第kkk个类别的数量为CkC_kCk?,则样本DDD的基尼系数表达式为:
特别的,对于样本DDD,如果根据特征AAA的某个值aaa,把DDD分成
D1D1D1和D2D2D2两部分,则在特征AAA的条件下,DDD的基尼系数表达式为:
从熵模型到基尼系数
到这里你可能还不明白为什么可以使用基尼系数来替代熵,推导如下:从上面推导可以得知,通过泰勒展开,可以将基尼系数近似的等价于熵模型。下图展示了基尼系数和熵模型之间的差距,可以看出,基尼系数和熵之半的曲线非常接近,仅仅在45度角附近误差稍大。因此,基尼系数可以做为熵模型的一个近似替代。
CART回归树特征选择
上面说了CART的分类树采用基尼系数来选取特征,而CART的回归树对于离散型特征也是采用基尼系数,而对于连续性特征,则采用均方差。对于任意划分特征AAA,对应的任意划分点sss两边划分成的数据集D1D1D1和D2D2D2,求出使D1D1D1和D2D2D2各自集合的均方差最小,同
时D1D1D1和D2D2D2的均方差之和最小所对应的特征和特征值划分点。表达式为:
另外,为了简化算法,CART的分类和回归均采用二叉树,而不是多叉树,这样一可以进一步简化基尼系数和均方差的计算,二可以建立一个更加优雅的二叉树模型。
三、CART连续型和离散型数据处理方法
离散型数据
回忆下ID3或者C4.5,如果某个特征A被选取建立决策树节点,如果它有A1,A2,A3三种类别,我们会在决策树上一下建立一个三叉的节点。这样导致决策树是多叉树。但是CART使用的方法不同,他采用的是不停的二分,还是这个例子,CART会考虑把A分成{A1}和{A2,A3}{A1}和{A2,A3}, {A2}和{A1,A3}{A2}和{A1,A3}, {A3}和{A1,A2}{A3}和{A1,A2}三种情况,找到基尼系数最小的组合,比如{A2}和{A1,A3}{A2}和{A1,A3},然后建立二叉树节点,一个节点是A2对应的样本,另一个节点是{A1,A3}对应的节点。同时,由于这次没有把特征A的取值完全分开,后面我们还有机会在子节点继续选择到特征A来划分A1和A3。这和ID3或者C4.5不同,在ID3或者C4.5的一棵子树中,离散特征只会参与一次节点的建立。
连续型数据
对于CART连续值的处理问题,其思想和C4.5是相同的,都是将连续的特征离散化。唯一的区别在于在选择划分点时的度量方式不同,C4.5使用的是信息增益比,则CART使用的是基尼系数或均方差。
具体思路,如果m个样本的特征A是连续型特征,将其值从小到大排
列a1,a2.,ama_1,a_2.,a_ma1?,a2?.,am?,然后取相邻样本的平均数,得到m-1个划分点,其中第iii个划分点Ti=ai+ai+12T_i=frac{a_i+a_{i+1}}{2}Ti?=2ai?+ai+1?。对于这m-1个划分点,分别计算其作为二元分类时候的基尼系数(分类)或均方差(回归),然后取到最小的点ata_tat?,则小于ata_tat?的值为类别1,大于ata_tat?的值为类别2,这样我们就做到了连续特征的离散化。要注意的是,与ID3或者C4.5处理离散属性不同的是,如果当前节点为连续属性,则该属性后面还可以参与子节点的产生选择过程。
四、CART步骤
CART的步骤包括,构造树,然后进行剪枝操作(后面会讲到),然后进行预测。对于构造树部分,分类树和回归树步骤是一样的,只是连续型特征选择准则不同,因此这里步骤放在一起。
输入:训练集D,基尼系数(均方差)阈值,样本个数阈值
输出:决策树T
构建树步骤:从根节点开始,采用递归的方法构建CART树
对于当前节点的数据集为D,如果样本个数小于阈值或者没有特征,则返回决策子树,当前节点停止递归;
计算样本集D的基尼系数(均方差),如果基尼系数(均方差)小于阈值,则返回决策树子树,当前节点停止递归;
计算当前节点现有的各个特征的各个特征值对数据集D的基尼系数(均方差);
在计算出来的各个特征的各个特征值对数据集D的基尼系数(均方差)
中,选择基尼系数(均方差)最小的特征A和对应的特征值a。根据这个最优特征和最优特征值,把数据集划分成两部分D1和D2,同时建立当前节点的左右节点,左节点的数据集D为D1,右节点的数据集D为D2。
预测:如果样本输出是离散值,那么这是一颗分类树。如果果样本输出是连续值,那么那么这是一颗回归树。
分类树预测:采用叶子节点里概率最大的类别作为当前节点的预测类别;
回归树预测:采用的是用最终叶子的均值或者中位数来预测输出结果。
五、CART剪枝
剪枝是决策树非常重要的一步,因为决策树经常出现过拟合的情况,CART回归树和CART分类树的剪枝策略除了在度量损失的时候一个使用均方差,一个使用基尼系数,算法基本完全一样,这里我们一起来讲。
剪枝的目的是为了增加决策树的泛化能力。
剪枝方法:前剪枝(边建树边剪枝);后剪枝(建完树之后剪枝)。
对于CART来说,一般采用后剪枝,即先生成决策树,然后产生所有可能的剪枝后的CART树,然后使用交叉验证来检验各种剪枝的效果,选择泛化能力最好的剪枝策略。
CART剪枝的步骤可以理解为下图,如果剪枝后的损失函数小于剪枝前损失函数,则进行剪枝操作。
六、CART小结
李航《统计学习方法》
CART树选取特征是根据基尼系数,基尼系数越小,模型的不纯度越小。