上一篇我们学习的ID3和C4.5算法,今天我们来看看CART(classification and regression tree)算法。
从名字上也能看出来,它是分类和回归树。
本文参考以及采用了很多其他博主的文字,因为自己觉得他们写的很好,自己做了归纳和整理,汲取百家之长。
其实这会儿是有点困了,因为自己也在忙完工作后有点累,也是不停地站东脑子去学习算法,也在思考这三种决策树算法的区别和相似处,经过百度呢,也是大同小异,所以今天偷个懒,哈哈,就当是自己按照自己的理解思路整理整理,免得后面忘记了。当然了,我也会添加一些自己的思考和理解咯。
华丽分割线
一:概述
1:CART树是二叉树
2:CART既可以作为分类树,也可以作为回归树。
3:当预测离散值的时候,就是分类问题,这时候建立的树就是分类树,属性分裂的依据是GINI系数;当预测连续值的时候,就是回归问题,这时候建立的树就是回归树,属性分裂的依据是样本的最小方差。
华丽分割线
二:对某个属性A进行切分
这里分两种情况
1:该属性值是离散值
思路是不停二分属性,且是天然的类别划分。
在ID3、C4.5,特征A被选取建立决策树节点,如果它有3个类别A1,A2,A3,我们会在决策树上建立一个三叉点,这样决策树是多叉树。
CART采用的是不停的二分。会考虑把特征A分成{A1}和{A2,A3}、{A2}和{A1,A3}、{A3}和{A1,A2}三种情况,找到基尼系数最小的组合,比如{A2}和{A1,A3},然后建立二叉树节点,一个节点是A2对应的样本,另一个节点是{A1,A3}对应的样本。由于{A1,A3}这次没有把特征A的取值完全分开,后面还有机会对子节点继续选择特征A划分A1和A3。这和ID3、C4.5不同,在ID3或C4.5的一颗子树中,离散特征只会参与一次节点的建立。
2:该属性值是连续值
将连续值离散化的思想和C4.5相同。唯一区别在选择划分点时,C4.5是信息增益比,CART是基尼系数。
具体思路:m个样本的连续特征A有m个,从小到大排列a1,a2,…,am,则CART取相邻两样本值的平均数做划分点,一共取m-1个,其中第i个划分点Ti表示为:Ti = (ai + ai+1)/2。分别计算以这m-1个点作为二元分类点时的基尼系数。选择基尼系数最小的点为该连续特征的二元离散分类点。比如取到的基尼系数最小的点为at,则小于at的值为类别1,大于at的值为类别2,这样就做到了连续特征的离散化。
以上就实现了将连续特征值离散化,但是CART与ID3,C4.5处理离散属性不同的是:如果当前节点为连续属性,则该属性(剩余的属性值)后面还可以参与子节点的产生选择过程。
华丽分割线
三:CART分类树
ID3中使用了信息增益选择特征,增益大优先选择。
C4.5中,采用信息增益比选择特征,减少因特征值多导致信息增益大的问题。
CART分类树算法使用基尼系数来代替信息增益比,基尼系数代表了模型的不纯度,基尼系数越小,不纯度越低,特征越好。这和信息增益(比)相反。
下面的式子就是展示了,如果计算一个样本集合D的Gini系数,以及在给定某个属性A的情况下计算经过属性二元分裂后,所得到的新的Gini系数。
当属性A是离散数值的时候:
假设属性A有V个取值,那么就会分成V个不同的二元分类,分别计算其Gini(D , A_v),取数值最小的所对应的二元分类,作为该属性A的切分点。
当属性A是连续数值的时候:
先将属性A进行离散化,分别求二元分类后的Gini系数,找到数值最小的切分点作为该属性A的切分点。按照这样的方式,对所有的属性都这样计算,取最小的属性以及其切分点进行切分,这样就选择了一层。
由于CART对待每个属性理论上都是可以被多次切分选择,因此每一个子样本集合的处理方式都是跟原始样本的处理方式一样,隐含的递归循环处理。
ID3和C4.5对属性只能切分和选择一次,因此一次用完了后,子样本集合的属性种类选择就少了,这一点是需要注意。
CART分类树的预测方式是:当建立完成后,叶子节点的出现概率最大的类别作为输出分类。
华丽分割线
四:CART回归树
下面是其求方差的公式。
CART 分类树采用基尼系数的大小来度量特征的各个划分点。在CART回归树模型中,我们使用常见的和方差度量方式,对于任意划分属性 A,对应的任意划分点 s 两边划分成的数据集D1和 D2,求出使D1和 D2各自集合的均方差最小,同时 D1和 D2的均方差之和最小所对应的特征和特征值划分点。表达式为:
其中,c1为D1数据集的样本输出均值,c2为D2数据集的样本输出均值。
当属性A是离散数值的时候:
假设属性A有V个取值,那么就会分成V个不同的二元分类,分别计算其方差,取数值最小的所对应的二元分类,作为该属性A的切分点。
当属性A是连续数值的时候:
先将属性A进行离散化,分别求二元分类后的方差,找到数值最小的切分点作为该属性A的切分点。
CART分回归树的预测方式是:当建立完成后,叶子节点的中值/平均值/众数可以作为预测值。
华丽分割线
五:和ID3、C4.5的对比
1)划分标准的差异:ID3 使用信息增益偏向特征值多的特征,C4.5 使用信息增益率克服信息增益的缺点,偏向于特征值小的特征,CART 使用基尼指数克服 C4.5 需要求 log 的巨大计算量,偏向于特征值较多的特征。
2)使用场景的差异:ID3 和 C4.5 都只能用于分类问题,CART 可以用于分类和回归问题;ID3 和 C4.5 是多叉树,速度较慢,CART 是二叉树,计算速度很快;
3)样本数据的差异:ID3 只能处理离散数据且缺失值敏感,C4.5 和 CART 可以处理连续性数据且有多种方式处理缺失值;从样本量考虑的话,小样本建议 C4.5、大样本建议 CART。C4.5 处理过程中需对数据集进行多次扫描排序,处理成本耗时较高,而 CART 本身是一种大样本的统计方法,小样本处理下泛化误差较大;
4)样本特征的差异:ID3 和 C4.5 层级之间只使用一次特征,CART 可多次重复使用特征;
5)剪枝策略的差异:ID3 没有剪枝策略,C4.5 是通过悲观剪枝策略来修正树的准确性,而 CART 是通过代价复杂度剪枝。
6)对缺失值的差异:ID3 没有缺失值策略策略,C4.5 和CART有处理缺失值策略。
7)对连续值处理的差异:ID3 没有处理连续值,C4.5 和CART有处理连续值离散化。
华丽分割线
六:决策树算法总结
这里是对ID3、C4.5、CART算法进行总结,这部分内容直接抄录自scikit-learn英文文档。
优点:
缺点:
华丽分割线
七:后面的学习路线
后面还要学习“集成学习”:
Bagging -> RandomForst
Boosting -> Adaboost -> GBDT -> Xgboost