决策树-CART回归树
1、什么是CART?
CART,又名分类回归树,是在ID3的基础上进行优化的决策树,学习CART记住以下几个关键点:
(1)CART既能是分类树,又能是分类树;
(2)当CART是分类树时,采用GINI值作为节点分裂的依据;当CART是回归树时,采用样本的最小方差作为节点分裂的依据;
(3)CART是一棵二叉树。
分类树的作用是通过一个对象的特征来预测该对象所属的类别,而回归树的目的是根据一个对象的信息预测该对象的属性,并以数值表示。
CART既能是分类树,又能是决策树,如上表所示,如果我们想预测一个人是否已婚,那么构建的CART将是分类树;如果想预测一个人的年龄,那么构建的将是回归树。
2、CART如何选择分裂的属性?
分裂的目的是为了能够让数据变纯,使决策树输出的结果更接近真实值。那么CART是如何评价节点的纯度呢?如果是分类树,CART采用GINI值衡量节点纯度;如果是回归树,采用样本方差衡量节点纯度。节点越不纯,节点分类或者预测的效果就越差。
GINI值的计算公式:
节点越不纯,GINI值越大。以二分类为例,如果节点的所有数据只有一个类别,则 ,如果两类数量相同,则 。
回归方差计算公式:
方差越大,表示该节点的数据越分散,预测的效果就越差。如果一个节点的所有数据都相同,那么方差就为0,此时可以很肯定得认为该节点的输出值;如果节点的数据相差很大,那么输出的值有很大的可能与实际值相差较大。
因此,无论是分类树还是回归树,CART都要选择使子节点的GINI值或者回归方差最小的属性作为分裂的方案。即最小化(分类树):
或者(回归树):
3、如何剪枝?
为防止过拟合,需要对生成的树进行剪枝。
CART采用CCP(代价复杂度)剪枝方法。代价复杂度选择节点表面误差率增益值最小的非叶子节点,删除该非叶子节点的左右子节点,若有多个非叶子节点的表面误差率增益值相同小,则选择非叶子节点中子节点数最多的非叶子节点进行剪枝。
CCP(代价复杂度)剪枝方法描述如下:
令决策树的非叶子节点为。
a)计算所有非叶子节点的表面误差率增益值
b)选择表面误差率增益值最小的非叶子节点(若多个非叶子节点具有相同小的表面误差率增益值,选择节点数最多的非叶子节点)。
c)对进行剪枝
表面误差率增益值的计算公式:
其中:
表示叶子节点的误差代价, , 为节点的错误率, 为节点数据量的占比;
表示子树的误差代价, , 为子节点i的错误率, 表示节点i的数据节点占比;
表示子树节点个数。
算例:
下图是其中一颗子树,设决策树的总数据量为40。
该子树的表面误差率增益值可以计算如下:
求出该子树的表面错误覆盖率为 ,只要求出其他子树的表面误差率增益值就可以对决策树进行剪枝。
4、例子讲解
接下来将以一个实际的例子对CART进行介绍:
表1 原始数据表
看电视时间 |
婚姻情况 |
职业 |
年龄 |
3 |
未婚 |
学生 |
12 |
4 |
未婚 |
学生 |
18 |
2 |
已婚 |
老师 |
26 |
5 |
已婚 |
上班族 |
47 |
2.5 |
已婚 |
上班族 |
36 |
3.5 |
未婚 |
老师 |
29 |
4 |
已婚 |
学生 |
21 |
分类树和回归树是怎么做决策的?假设我们构建了两棵决策树分别预测用户是否已婚和实际的年龄,如图1和图2所示:
图1 预测婚姻情况决策树 图2 预测年龄的决策树
图1表示一棵分类树,其叶子节点的输出结果为一个实际的类别,在这个例子里是婚姻的情况(已婚或者未婚),选择叶子节点中数量占比最大的类别作为输出的类别;
图2是一棵回归树,预测用户的实际年龄,是一个具体的输出值。怎样得到这个输出值?一般情况下选择使用中值、平均值或者众数进行表示,图2使用节点年龄数据的平均值作为输出值。
CART如何分裂成一棵二叉树?
节点的分裂分为两种情况,连续型的数据和离散型的数据。
CART对连续型属性的处理与C4.5差不多,通过最小化分裂后的GINI值或者样本方差寻找最优分割点,将节点一分为二,在这里不再叙述,详细请看C4.5。
对于离散型属性,理论上有多少个离散值就应该分裂成多少个节点。但CART是一棵二叉树,每一次分裂只会产生两个节点,怎么办呢?很简单,只要将其中一个离散值独立作为一个节点,其他的离散值生成另外一个节点即可。这种分裂方案有多少个离散值就有多少种划分的方法,举一个简单的例子:如果某离散属性一个有三个离散值X,Y,Z,则该属性的分裂方法有{X}、{Y,Z},{Y}、{X,Z},{Z}、{X,Y},分别计算每种划分方法的基尼值或者样本方差确定最优的方法。
以属性“职业”为例,一共有三个离散值,“学生”、“老师”、“上班族”。该属性有三种划分的方案,分别为{“学生”}、{“老师”、“上班族”},{“老师”}、{“学生”、“上班族”},{“上班族”}、{“学生”、“老师”},分别计算三种划分方案的子节点GINI值或者样本方差,选择最优的划分方法,如下图所示:
第一种划分方法:{“学生”}、{“老师”、“上班族”}
预测是否已婚(分类):
预测年龄(回归):
第二种划分方法:{“老师”}、{“学生”、“上班族”}
预测是否已婚(分类):
预测年龄(回归):
第三种划分方法:{“上班族”}、{“学生”、“老师”}
预测是否已婚(分类):
预测年龄(回归):
综上,如果想预测是否已婚,则选择{“上班族”}、{“学生”、“老师”}的划分方法,如果想预测年龄,则选择{“老师”}、{“学生”、“上班族”}的划分方法。
转载:https://www.cnblogs.com/yonghao/p/5135386.html
决策树-CART回归树相关推荐
- Lesson 8.3Lesson 8.4 ID3、C4.5决策树的建模流程CART回归树的建模流程与sklearn参数详解
Lesson 8.3 ID3.C4.5决策树的建模流程 ID3和C4.5作为的经典决策树算法,尽管无法通过sklearn来进行建模,但其基本原理仍然值得讨论与学习.接下来我们详细介绍关于ID3和C4. ...
- 大白话5分钟带你走进人工智能-第二十六节决策树系列之Cart回归树及其参数(5)...
第二十六节决策树系列之Cart回归树及其参数(5) 上一节我们讲了不同的决策树对应的计算纯度的计算方法, ...
- 决策树(二):CART回归树与Python代码
上一篇介绍了决策树的基本概念,特征划分标准及ID3、C4.5和CART分类树的算法,本文着重对CART回归树的内容进行补充. 本文概览: 首先介绍CART回归树的算法,然后是创建CART回归树的主要步 ...
- CART回归树--决策树
决策树的关键问题 这么多特征,使用哪个特征先进行子表划分? CART回归树 原始数据集S,此时树的深度depth=0; 针对集合S,遍历每一个特征的每一个value, 用该value将原数据集S分裂成 ...
- 经典算法详解--CART分类决策树、回归树和模型树
Classification And Regression Tree(CART)是一种很重要的机器学习算法,既可以用于创建分类树(Classification Tree),也可以用于创建回归树(Reg ...
- CART分类决策树、回归树和模型树算法详解及Python实现
机器学习经典算法详解及Python实现–CART分类决策树.回归树和模型树 摘要: Classification And Regression Tree(CART)是一种很重要的机器学习算法,既可以用 ...
- CART回归树原理及python实现
CART回归树入门学习 一.什么是CART回归算法 二.分类树与回归树区别 三.CART回归树与一般回归算法区别 四.CART回归树创建 4.1 CART回归树的划分 4.2 CART回归树的构建 4 ...
- 一个例子让你明白什么是CART回归树
关于CART的原理我相信各位都有看过,是不是有些晕呢?没关系,这里我给大家讲个例子,你就理解原来CART回归树生成这么简单啊... 首先建立一个数据集,为了方便,就取少量数据,如下表,数据的创建仅作参 ...
- 机器学习 | 决策树之回归树
机器学习 | 决策树之回归树 上文提到决策树不仅可用于分类,还可进行回归,本文将继续记录回归决策树. 文章目录 机器学习 | 决策树之回归树 前言 一.回归树的构建方法 二.递归二分法 三.回归树的剪 ...
最新文章
- 硬核!两个博士结婚,接亲时新娘给新郎摆了盘棋局:你赢了再娶我!
- 图像处理包括哪些东东?
- SSH 安全性和配置入门
- Intel Realsense D435 多摄像头多线程目标识别架构
- C语言正则表达式regex
- Flink的时间语义和Watermark
- 查看提交历史(git log)
- dllregisterserver找不到入口点_厨房间漏水找不到漏水点,厨房上面漏水 | 影楼
- Unity 2D角色复活点与复活等待时间设置
- tomcat查看线程数
- Word:三线表,最底边变细,一直调不过来
- 旋转矩阵是正交矩阵与伴随性质的证明
- 架构 高级系统架构师培训笔记
- 磊科linux无线网卡驱动安装步骤,怎么安装磊科nw336无线网卡驱动
- Userland中debian系统打开chromium
- 计算机三维制图论文,三维重建初探(整理的一些资料及论文分享)
- 教师计算机知识比赛方案,小学信息技术教师基本功竞赛方案.doc
- 笔记2 IKAnalyzer扩展词库
- 超详细的逐句介绍Java网络编程之Socket类函数源码讲解(全)
- 刺激前低的EEG alpha功率增强了视觉知觉,但不是视觉知觉敏感度