上篇文章介绍了ID3和C4.5算法,针对C4.5算法的缺点,本文介绍CART树算法,CART树既能用于分类,也能用于回归,Scikit-Learn官网的决策树算法也是使用了CART树实现。
1. 二叉树
CART树处理划分所有特征为“是”和“否”,即每个节点都只能分裂称两个节点。假设特征A有3个取值,A1,A2和A3,若使用了ID3和C4.5决策树算法,则节点会分裂成三个子节点;若使用了CART决策树算法,节点会分裂成两个节点,如A1和{A2,A3},{A1,A2}和A3等,二叉树叫多叉树的运算效率高。
2. 模型不确定性的度量指标
ID3和C4,5算法使用熵度量了数据的不确定性,因为其使用了对数运算造成了算法计算量大。
CART树使用了基尼系数来衡量数据的不确定性,去掉了对数运算。
对于给定的样本D,假设有K个类别,第K个类别的数量为
,其基尼系数为:

基尼系数越小,不确定性越小,特征越好,含义与熵相反。
3. CART树建立算法
上一节我们知道了使用基尼系数衡量数据的不确定性,CART树建立算法与
C4.5,ID3相似,选择某一特征使得划分后的节点,其基尼系数最小。
上述是针对分类算法,若我们需要构建CART回归树时,如何衡量数据的损失函数?
最常用的方法是使用均方差函数来衡量数据各个切点划分的好坏,公式为:

其中c1为D1样本的平均值,c2为D2样本的平均值,s为特征A的划分切点。
4. CART树剪枝策略
ID3和C4.5算法会造成模型的过拟合,为了防止过拟合,我们需要对CART树进行剪枝,剪枝是在生成CART树后进行的。
我们把CART树的每一个节点当成是一个根节点,基于该根节点的CART树为子树
。
子树
的正则化损失函数为:

其中
为叶节点个数,α为正则化系数,
为子树
的损失函数,当用于分类任务时,损失函数为Gini系数;用于回归任务时,损失函数为均方差。
若把该子树的所有节点都剪掉,只剩下根节点,则损失函数为:

当α较小时:

逐渐增大α时,使下面等式成立:

根据等式反推正则化系数α,有:

因此我们计算每个子树
对应的α,使得剪枝前后的损失函数相等。然后对剪枝后的树进行交叉验证,选择交叉验证率最优时的α,根据已选择的最优正则化系数α进行剪枝。
参考:
https://www.cnblogs.com/pinard/p/6053344.html
欢迎扫码关注:

2356

被折叠的 条评论
为什么被折叠?



