【机器学习】十、分类和回归树CART原理

一文详解,分类和回归树算法背后原理。码字不易,喜欢请点赞,谢谢!!!
【机器学习】十、分类和回归树CART原理_第1张图片

一、前言

分类和回归树(Classification And Regression Trees),简称CART,是1984年提出来的既可用于分类,又可用于回归的树。CART被称为数据挖掘领域内里程碑式的算法。
上一节介绍了决策树的ID3和C4.5算法,后面说到了C4.5算法存在几点不足,主要为,生成多叉树;容易过拟合;只能用于分类;特征选择采用熵模型计算量大。而CART针对C4.5算法的这几点不足都提出了改进。本文将会一一介绍。

二、CART特征选择方法

CART算法包括分类树和回归树,其中分类树和回归树的特征选择采用的是不同的方法,这里依次介绍。

  1. CART分类树特征选择
    在ID3中,采用信息增益来选择特征;在C4.5中,采用信息增益率来选择特征;而在CART的分类树中,则是采用基尼系数来选择特征。这是因为,信息论中的熵模型,存在大量的对数运算,而基尼系数在简化熵模型的计算的同时保留了熵模型的优点。
  • 基尼系数
    基尼系数代表模型的纯度,基尼系数越大,模型越不纯;基尼系数越小,模型越纯。因此在特征选择时,选择基尼系数小的来构建决策树,这和信息增益(率)是相反的。
    基尼系数表达式:
    在这里插入图片描述
    式中 K K K表示分类问题有 K K K个类别,第 k k k个类别的概率为 p k p_k pk
    如果是二分类,公式将更简单,假设第一类的概率为 p p p,则基尼系数表达式为:
    在这里插入图片描述
    对于个给定的样本 D D D,假设有 K K K个类别, 第 k k k个类别的数量为 C k C_k Ck,则样本 D D D的基尼系数表达式为:
    在这里插入图片描述
    特别的,对于样本 D D D,如果根据特征 A A A的某个值 a a a,把 D D D分成 D 1 D1 D1 D 2 D2 D2两部分,则在特征 A A A的条件下, D D D的基尼系数表达式为:
    在这里插入图片描述
  • 从熵模型到基尼系数
    到这里你可能还不明白为什么可以使用基尼系数来替代熵,推导如下:
    【机器学习】十、分类和回归树CART原理_第2张图片
    从上面推导可以得知,通过泰勒展开,可以将基尼系数近似的等价于熵模型。下图展示了基尼系数和熵模型之间的差距,可以看出,基尼系数和熵之半的曲线非常接近,仅仅在45度角附近误差稍大。因此,基尼系数可以做为熵模型的一个近似替代。
    【机器学习】十、分类和回归树CART原理_第3张图片
  1. CART回归树特征选择
    上面说了CART的分类树采用基尼系数来选取特征,而CART的回归树对于离散型特征也是采用基尼系数,而对于连续性特征,则采用均方差。对于任意划分特征 A A A,对应的任意划分点 s s s两边划分成的数据集 D 1 D1 D1 D 2 D2 D2,求出使 D 1 D1 D1 D 2 D2 D2各自集合的均方差最小,同时 D 1 D1 D1 D 2 D2 D2的均方差之和最小所对应的特征和特征值划分点。表达式为:
    【机器学习】十、分类和回归树CART原理_第4张图片

另外,为了简化算法,CART的分类和回归均采用二叉树,而不是多叉树,这样一可以进一步简化基尼系数和均方差的计算,二可以建立一个更加优雅的二叉树模型。

三、CART连续型和离散型数据处理方法

  1. 离散型数据
    回忆下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的一棵子树中,离散特征只会参与一次节点的建立。
  2. 连续型数据
    对于CART连续值的处理问题,其思想和C4.5是相同的,都是将连续的特征离散化。唯一的区别在于在选择划分点时的度量方式不同,C4.5使用的是信息增益比,则CART使用的是基尼系数均方差
    具体思路,如果m个样本的特征A是连续型特征,将其值从小到大排列 a 1 , a 2 , . . . , a m a_1,a_2,...,a_m a1,a2,...,am,然后取相邻样本的平均数,得到m-1个划分点,其中第 i i i个划分点 T i = a i + a i + 1 2 T_i=\frac{a_i+a_{i+1}}{2} Ti=2ai+ai+1。对于这m-1个划分点,分别计算其作为二元分类时候的基尼系数(分类)或均方差(回归),然后取到最小的点 a t a_t at,则小于 a t a_t at的值为类别1,大于 a t a_t at的值为类别2,这样我们就做到了连续特征的离散化。要注意的是,与ID3或者C4.5处理离散属性不同的是,如果当前节点为连续属性,则该属性后面还可以参与子节点的产生选择过程。

四、CART步骤

CART的步骤包括,构造树,然后进行剪枝操作(后面会讲到),然后进行预测。对于构造树部分,分类树和回归树步骤是一样的,只是连续型特征选择准则不同,因此这里步骤放在一起。

  • 输入:训练集D,基尼系数(均方差)阈值,样本个数阈值
  • 输出:决策树T
  • 构建树步骤:从根节点开始,采用递归的方法构建CART树
  1. 对于当前节点的数据集为D,如果样本个数小于阈值或者没有特征,则返回决策子树,当前节点停止递归;
  2. 计算样本集D的基尼系数(均方差),如果基尼系数(均方差)小于阈值,则返回决策树子树,当前节点停止递归;
  3. 计算当前节点现有的各个特征的各个特征值对数据集D的基尼系数(均方差);
  4. 在计算出来的各个特征的各个特征值对数据集D的基尼系数(均方差)中,选择基尼系数(均方差)最小的特征A和对应的特征值a。根据这个最优特征和最优特征值,把数据集划分成两部分D1和D2,同时建立当前节点的左右节点,左节点的数据集D为D1,右节点的数据集D为D2。
  • 预测:如果样本输出是离散值,那么这是一颗分类树。如果果样本输出是连续值,那么那么这是一颗回归树。
    分类树预测:采用叶子节点里概率最大的类别作为当前节点的预测类别;
    回归树预测:采用的是用最终叶子的均值或者中位数来预测输出结果。

五、CART剪枝

剪枝是决策树非常重要的一步,因为决策树经常出现过拟合的情况,CART回归树和CART分类树的剪枝策略除了在度量损失的时候一个使用均方差,一个使用基尼系数,算法基本完全一样,这里我们一起来讲。
剪枝的目的是为了增加决策树的泛化能力。
剪枝方法:前剪枝(边建树边剪枝);后剪枝(建完树之后剪枝)。
对于CART来说,一般采用后剪枝,即先生成决策树,然后产生所有可能的剪枝后的CART树,然后使用交叉验证来检验各种剪枝的效果,选择泛化能力最好的剪枝策略。
【机器学习】十、分类和回归树CART原理_第5张图片
CART剪枝的步骤可以理解为下图,如果剪枝后的损失函数小于剪枝前损失函数,则进行剪枝操作。
【机器学习】十、分类和回归树CART原理_第6张图片【机器学习】十、分类和回归树CART原理_第7张图片
在这里插入图片描述

六、CART小结

【机器学习】十、分类和回归树CART原理_第8张图片
注:本文主要参考刘建平老师关于CART的总结!!!

参考文献:
https://www.cnblogs.com/pinard/p/6053344.html
李航 《统计学习方法》
https://www.bilibili.com/video/av54649502
https://blog.csdn.net/lanchunhui/article/details/65441891
https://www.cnblogs.com/zhangchaoyang/articles/2709922.html

你可能感兴趣的:(机器学习,CART,分类和回归树,基尼系数,均方差,原理)