上一篇我们学习的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英文文档。
优点:

  1. 简单直观,生成的决策树很直观。
  2. 基本不需要预处理,不需要提前归一化和处理缺失值。
  3. 使用决策树预测的代价是O(log2m)。m为样本数。
  4. 既可以处理离散值也可以处理连续值。很多算法只是专注于离散值或者连续值。
  5. 可以处理多维度输出的分类问题。
  6. 相比于神经网络之类的黑盒分类模型,决策树在逻辑上可以很好解释。
  7. 可以交叉验证的剪枝来选择模型,从而提高泛化能力。
  8. 对于异常点的容错能力好,健壮性高。

缺点:

  1. 决策树算法非常容易过拟合,导致泛化能力不强。可以通过设置节点最少样本数量和限制决策树深度来改进。
  2. 决策树会因为样本发生一点的改动,导致树结构的剧烈改变。这个可以通过集成学习之类的方法解决。
  3. 寻找最优的决策树是一个NP难题,我们一般是通过启发式方法,容易陷入局部最优。可以通过集成学习的方法来改善。
  4. 有些比较复杂的关系,决策树很难学习,比如异或。这个就没有办法了,一般这种关系可以换神经网络分类方法来解决。
  5. 如果某些特征的样本比例过大,生成决策树容易偏向于这些特征。这个可以通过调节样本权重来改善。

华丽分割线
七:后面的学习路线
后面还要学习“集成学习”:
Bagging -> RandomForst
Boosting -> Adaboost -> GBDT -> Xgboost

ML《决策树(三)CART》相关推荐

  1. 决策树一一CART算法(第三部分)

    决策树一一CART算法(第三部分) CART-回归树模型 ​ 如果输出变量是 连续 的,对应的就是 回归 问题,对于决策树而言,输出的信息一定就是叶子结点,所以需要将连续变量按照一定的要求划分. 回归 ...

  2. [机器学习算法]决策树和CART树

    决策树综述 决策树的工作原理 决策树(decision tree)分类法是一种简单但广泛使用的分类技术.以是否贷款违约的二分类问题为例,当我们希望根据给定的训练集习得一个模型对新出现的贷款人进行分类时 ...

  3. ML近三年在CVPR比较流行被应用的技术有哪些?

    发信人: mlmonster (bishop), 信区: AI 标  题: ML近三年在CVPR比较流行被应用的技术有哪些? 发信站: 水木社区 (Sun Feb 13 01:31:10 2011), ...

  4. 树模型之三种常见的决策树:CART,…

    树模型(又称决策树或者树结构模型):基本思想和方差分析中的变异分解极为相似. 目的(基本原则):将总研究样本通过某些牲(自变量取值)分成数个相对同质的子样本.每一子样本因变量的取值高度一致,相应的变异 ...

  5. 决策树一CART算法(第四部分)

    决策树一CART算法(第四部分) CART树的剪枝:算法步骤 输入:CART算法生成的决策树. 输出:最优决策树T 设K=0,T=T0K=0,T=T_0K=0,T=T0​ ,从完整的决策树出发 ​ k ...

  6. 【机器学习基础】数学推导+纯Python实现机器学习算法5:决策树之CART算法

    目录 CART概述 回归树 分类树 剪枝 Python实现示例:分类树 在数学推导+纯Python实现机器学习算法4:决策树之ID3算法中笔者已经对决策树的基本原理进行了大概的论述.本节将在上一讲的基 ...

  7. 机器学习爬大树之决策树(CART与剪枝)

    分类与回归树(classification and regression tree,CART)是应用广泛的决策树学习方法,同样由特征选择,树的生成以及剪枝组成,既可以用于分类也可以用于回归.CART假 ...

  8. 决策树之CART 算法(回归树,分类树)

    CART 算法,英文全称叫做 Classification And Regression Tree,中文叫做分类回归树. ID3 和 C4.5 算法可以生成二叉树或多叉树,而 CART 只支持二叉树. ...

  9. 决策树之CART分类树

    目录 一.基尼系数 (1)离散型属性 (2)连续型属性 二.cart算法的步骤 三.举个栗子 四.代码实现过程 总结: 一.基尼系数 基尼系数(Gini)是一种不等性的度量,经济学上用基尼系数度量收入 ...

  10. 掰开揉碎机器学习系列-决策树(2)-CART决策树

    一.CART决策树和ID3决策树的区别在哪里: 区别主要体现在对于连续型特征的处理方式,ID3决策树完全根据特征值等于几,做决策分支,这肯定容易出现很多很多分支,即所谓过拟合. CART决策树在一定程 ...

最新文章

  1. android x86 按键精灵,界面版按键精灵的使用【包含内置浏览器、打开程序的方法】...
  2. dede织梦背景经常使用标签
  3. 发现 ASP.NET Core SignalR
  4. 高等数学下-赵立军-北京大学出版社-题解-练习10.1
  5. 手把手入门神经网络系列-2篇-有图有码(转)
  6. SpringBoot AOP 理解和用途
  7. Linux 系统服务之间 实现免密登陆
  8. 解决windows 下 mysql命令行导入备份文件 查询时乱码的问题
  9. nowcoder-linux
  10. 冲刺倒计时,复习核心是什么?
  11. 【人机】确认框中的“取消/确定”要如何设计呢?
  12. 单臂路由之一,单网口软路由实现主路由功能,光猫或交换机剩余网口实现上网功能
  13. javaScript的字符串
  14. linux firmware 框架,学习整理:arm-trusted-firmware
  15. h2o.ai源码解析(1)—项目简介
  16. win10浏览器闪退_Win10系统下Edge浏览器经常闪退的解决方法
  17. JSP四大作用域,九大内置对象
  18. 涂鸦标准模组MCU SDK开发流程
  19. 杭电oj刷题C语言答案+思路
  20. css鼠标放上按钮变色

热门文章

  1. UNIX/Linux 系统管理技术手册阅读(二)
  2. Windows Server 2003 下安装Apache+Php+Mysql
  3. 我是如何带领团队开发项目的
  4. 人工智能 - paddlepaddle飞桨 - 深度学习基础教程 - 词向量
  5. 容器编排技术 -- Kubernetes kubectl create secret tls 命令详解
  6. vue实现网络图片瀑布流 + 下拉刷新 + 上拉加载更多
  7. 【Java】从键盘中输入一个值,在数组中查找该值的索引并输出
  8. 【安卓开发】启动另一个 Activity
  9. C#LeetCode刷题之#598-范围求和 II​​​​​​​(Range Addition II)
  10. pdm vault 使用_如何使用Key Vault连接器更好地保护Logic Apps中的秘密