项目github地址:bitcarmanlee easy-algorithm-interview-and-practice
欢迎大家star,留言,一起学习进步

0.前言

在深度神经网络崛起之前,基于树类的算法是表现比较优异,非线性性能比较好的一大类算法,深受广大人民群众的喜爱。比如常见的基于树的算法有随机森林(Random Forest),GBDT, XGboost, LightGBM等。而所有的这些算法,都是基于决策树(Decision Tree)进化而来的。因此了解熟悉决策树是我们学习算法过程中一个必不可少的环节。

决策树可以分为分类树与回归树。回归树一般只能处理连续型数据,而分类树则即可以处理连续型数据又可以处理离散型数据。

1.什么是CART树

CART树的全名叫做Classification and Regression Tree。从名字可以看出来,CART树即可以用来做分类又可以用来做回归。

CART树构建分类树与回归树的时候,主要有如下两点差异(其实也是分类树与回归树的差异):
1.连续值的处理。
CART分类树对连续值采取的是计算Gini系数大小来衡量特征划分点的好坏。
GINI∗(D)=∑i=1kpk∗(1−pk)=1−∑i=1kpk2GINI*(D) = \sum_{i=1}^k p_k * (1 - p_k) = 1 - \sum_{i=1}^k p_k ^ 2GINI∗(D)=i=1∑k​pk​∗(1−pk​)=1−i=1∑k​pk2​

基尼指数的意义是从数据集D中随机抽取两个样本类别标识不一致的概率。基尼指数越小,数据集的纯度越高。分类决策树递归创建过程中就是每次选择GiniGain最小的节点做分叉点。
回归树的处理方式为,对于任意的特征J,选择任意的划分点s将数据集分成R1, R2,然后使得R1与R2的均方差和最小。

2.预测方式
分类树的预测方式为看叶子节点中概率最大的类作为当前预测类。
回归树一般是输出叶子节点的均值作为预测结果。

2.CART回归树的流程

对于决策树的生成过程,就是递归构建二叉树的过程。以CART回归树为例,我们来看看具体怎么构建。
假设X与Y分别为输入输出,Y是连续变量。
D={(x1,y1),(x2,y2),...,(xn,yn))}D = \{ (x_1, y_1), (x_2, y_2), ..., (x_n, y_n)) \}D={(x1​,y1​),(x2​,y2​),...,(xn​,yn​))}
最终我们想生成CART回归树f(x)f(x)f(x)。即在训练集上,递归地将每个区域分为两个子区域并决定每个子区域的输出值,来构建二叉决策树。

1.选择最优切分变量j与切分点s,并求解

min⁡j,s[min⁡c1∑xi∈R1(j,s)(yi−c1)2+min⁡c2∑xi∈R2(j,s)(yi−c2)2]\min _ { j , s } \left[ \min _ { c _ { 1 } } \sum _ { x _ { i } \in R _ { 1 } ( j , s ) } \left( y _ { i } - c _ { 1 } \right) ^ { 2 } + \min _ { c _ { 2 } } \sum _ { x _ { i } \in R _ { 2 } ( j , s ) } \left( y _ { i } - c _ { 2 } \right) ^ { 2 } \right]j,smin​⎣⎡​c1​min​xi​∈R1​(j,s)∑​(yi​−c1​)2+c2​min​xi​∈R2​(j,s)∑​(yi​−c2​)2⎦⎤​

遍历变量j,对固定的切分变量j扫描切分点s,选择最优的(j,s)。

2.用选定的(j,s),划分区域,并决定相应的输出
c^m=average(yi∣xi∈Rm(j,s))\hat{c}_{m}=average(y_{i}|x_{i} \in R_{m}(j,s))c^m​=average(yi​∣xi​∈Rm​(j,s))

3.对两个子区域重复1,2步骤,直到满足终止条件
4.将输入的空间划分为M个区域,R1,R2,...,RMR_1, R_2, ..., R_MR1​,R2​,...,RM​,在每个单元上有固定的输出cmc_mcm​,最终生成决策树
f(x)=∑m=1McmI,X∈Rmf(x) = \sum_{m=1} ^M c_mI, X \in R_mf(x)=m=1∑M​cm​I,X∈Rm​

3.剪枝

决策树很容易出现的一种情况是过拟合(overfitting),所以需要进行剪枝。而基本的策略包括两种:预剪枝(Pre-Pruning)与后剪枝(Post-Pruning)。

预剪枝:其中的核心思想就是,在每一次实际对结点进行进一步划分之前,先采用验证集的数据来验证如果划分是否能提高划分的准确性。如果不能,就把结点标记为叶结点并退出进一步划分;如果可以就继续递归生成节点。
后剪枝:后剪枝则是先从训练集生成一颗完整的决策树,然后自底向上地对非叶结点进行考察,若将该结点对应的子树替换为叶结点能带来泛化性能提升,则将该子树替换为叶结点。

树算法系列之一:CART回归树相关推荐

  1. 大白话5分钟带你走进人工智能-第二十六节决策树系列之Cart回归树及其参数(5)...

                                                    第二十六节决策树系列之Cart回归树及其参数(5) 上一节我们讲了不同的决策树对应的计算纯度的计算方法, ...

  2. Lesson 8.3Lesson 8.4 ID3、C4.5决策树的建模流程CART回归树的建模流程与sklearn参数详解

    Lesson 8.3 ID3.C4.5决策树的建模流程 ID3和C4.5作为的经典决策树算法,尽管无法通过sklearn来进行建模,但其基本原理仍然值得讨论与学习.接下来我们详细介绍关于ID3和C4. ...

  3. CART回归树原理及python实现

    CART回归树入门学习 一.什么是CART回归算法 二.分类树与回归树区别 三.CART回归树与一般回归算法区别 四.CART回归树创建 4.1 CART回归树的划分 4.2 CART回归树的构建 4 ...

  4. 决策树(二):CART回归树与Python代码

    上一篇介绍了决策树的基本概念,特征划分标准及ID3、C4.5和CART分类树的算法,本文着重对CART回归树的内容进行补充. 本文概览: 首先介绍CART回归树的算法,然后是创建CART回归树的主要步 ...

  5. 一个例子让你明白什么是CART回归树

    关于CART的原理我相信各位都有看过,是不是有些晕呢?没关系,这里我给大家讲个例子,你就理解原来CART回归树生成这么简单啊... 首先建立一个数据集,为了方便,就取少量数据,如下表,数据的创建仅作参 ...

  6. CART回归树--决策树

    决策树的关键问题 这么多特征,使用哪个特征先进行子表划分? CART回归树 原始数据集S,此时树的深度depth=0; 针对集合S,遍历每一个特征的每一个value, 用该value将原数据集S分裂成 ...

  7. CART回归树原理及示例

    转载:https://cethik.vip/2016/09/21/machineCAST/ 一.概念 CART全称叫Classification and Regression Tree.首先要强调的是 ...

  8. CART回归树及其实战

    1.CART简介       分类与回归树(classification and regression tree,CART)模型由Breiman等人在1984年提出,是应用广泛的决策树学习方法.CAR ...

  9. 决策树-CART回归树

    1.什么是CART? CART,又名分类回归树,是在ID3的基础上进行优化的决策树,学习CART记住以下几个关键点: (1)CART既能是分类树,又能是分类树: (2)当CART是分类树时,采用GIN ...

  10. cart回归树的理解

    id3不能直接处理连续性的特征,需要将连续性的转化成离散的,但是会破坏连续性特征的内在结构. 一.概念 CART全称叫Classification and Regression Tree.首先要强调的 ...

最新文章

  1. java I/O之装饰者模式
  2. SAP MM GR-based IV, 无GR不能IV?
  3. 基于Javaweb实现实验室设备管理系统
  4. 微信小程序研发问题梳理:翻页:下拉:缓存:canvas:富文本:分享
  5. 方程求解(洛谷P1689题题解,Java语言描述)
  6. 3-3HDFS架构详解
  7. 情侣签到365天获1000现金?这款App被关停下架了 网友拍手称快!
  8. golang连接mysql操作示例增删改查
  9. python中pygame放入图_python使用PyGame绘制图像并保存为图片文件的方法
  10. NeoKylin7配置DM8数据库实例
  11. xp计算机无法正常启动,修复WindowsXP系统无法正常启动
  12. Android http请求 工具类
  13. 微信小程序与webview H5交互(内嵌H5跳转原生页面)
  14. 四年级下册计算机工作计划,四年级下册信息技术教学计划
  15. 注意力模型直观理解(Attention Model Intuition)
  16. 英语口语8000句-生病、受伤时
  17. C语言递归实现四色定理,实现四色定理的C++程序
  18. VS Warring
  19. FPGA进行多路并行插值滤波(多相滤波)的实现原理
  20. 悟空CRM java版(基于jfinal+vue+ElementUI的前后端分离CRM系统)

热门文章

  1. [Network] okhttp3与旧版本okhttp的区别分析
  2. 这项技术曾应用于无人驾驶,荣耀10将其移植到手机上这样操作!
  3. HDU 2504 又见GCD(最大公约数与最小公倍数变形题)
  4. UltraISO v 9.6 单文件版
  5. SQL Server 高可用性(六)日志传送
  6. 文件比较 增量 更新 系统发布 增量更新
  7. FriendStyle CSS
  8. 看完这篇文章你就清楚的知道 ZooKeeper的 概念了
  9. redisrabbitMQ安装
  10. [LeetCode]题解(python):146-LRU Cache