Cart算法

Cart是Classification and regression tree的缩写,即分类回归树。它和前面的ID3, C4.5等算法思想一致都是通过对输入空间进行递归划分并确定每个单元上预测的概率分布,进而进行回归和分类任务。只不过由于任务的不同, 所以回归树和分类树的划分准则并不相同。

Cart生成

回归树

模型

上面说到,我们将特征空间划分为一个个小的单元,假设共有\(M\)个,那么对于回归任务来说,每个单元就应该对于一个数值,我们分别记作\(R_i\)和\(c_i\)。那么决策树模型就可以表示为

\[f(x) = \sum_{m=1}^M c_m I(x\in R_m)
\]

即同一个所属同一个单元内的样本的值相同。

那么我们的每个单元上的预测误差就可以用下面的式子表示

\[L = \sum_{x_i\in R_m} (y_i - f(x_i))^2= \sum_{x_i\in R_m} (y_i - c_m)^2
\]

令\(L^{\prime}=0\),我们可以得到

\[\hat{c}_m = ave(y_i|x_i\in R_m)=\frac{\sum_{x_i\in R_m}y_i}{|R_m|}
\]

但问题的难点在于如何对决策空间进化划分,文中给出了一种启发式的方法。

划分方法

选择第\(j\)个变量\(x^{(j)}\)和它的取值s,作为切分变量和切分点,并定义两个区域(两个划分集合)

\(R_1(j, s)=\{x|x^{(j)} \leq s\}\)以及\(R_2(j, s)=\{x|x^{(j)} > s\}\)

这样我们可以通过求解下式来找到每次最佳划分变量和切分点。

\[\begin{equation}
\mathop\min_{j,s} [\mathop\min_{\hat{c_1}} \sum_{x_i\in {R_1(j,s)}} (y_i - \hat{c_1})^2+\mathop\min_{\hat{c_2}} \sum_{x_i\in {R_2(j,s)}} (y_i - \hat{c_2})^2]
\end{equation}
\]

其中\(j\)从1到所有存在的特征,\(s\)取遍\(x^{(j)}\)所有可能的取值。

生成算法

Step1:求解公式(1)得到切分变量与切分点

Step2:划分子区域\(R_1(j, s)=\{x|x^{(j)} \leq s\}\)以及\(R_2(j, s)=\{x|x^{(j)} > s\}\),并决定子区域的输出值

Step3:递归调对子区域递归调用上述步骤,直至满足停止条件

Step4:划分为\(M\)个子区域,生成决策树完毕。

分类树

Cart分类树和前面的ID3以及C4.5大致相同,主要不同的地方在于划分方法(特征选择)有所区别,我们将重点对此部分进行阐述。

划分方法

Cart分类树使用基尼指数选择最有特征(表示集合\(D\)的不确定性,成正相关),同时决定该特征的最优二值切分点。

样本的基尼指数计算如下:

\[\mathrm {Gini}(D) = 1 - \sum_{k=1}^{K} (\frac{\vert C_k \vert}{|D|})^2
\]

定义在特征\(A\)的条件下,集合\(D\)的基尼指数为:

\[\mathrm {Gini}(D) = \frac{|D_1|}{|D|}\mathrm {Gini}(D_1) + \frac{|D_2|}{|D|}\mathrm {Gini}(D_2)
\]

生成算法

Step1:对现有数据集的每个特征的每个取值计算其基尼指数并选择最小的特征\(A\)及其取值\(A=a\)作为切分点。

Step2:依照切分点将数据集划分为两个部分\(D_1\)和\(D_2\)。

Step3:继续对两个子集进行递归操作,直至达到停止条件(样本数小于阈值,样本基本属于同一类等等)。

决策树模型(4)Cart算法的更多相关文章

  1. python数据分析算法(决策树2)CART算法

    CART(Classification And Regression Tree),分类回归树,,决策树可以分为ID3算法,C4.5算法,和CART算法.ID3算法,C4.5算法可以生成二叉树或者多叉树 ...

  2. 深入了解机器学习决策树模型——C4.5算法

    本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是机器学习专题的第22篇文章,我们继续决策树的话题. 上一篇文章当中介绍了一种最简单构造决策树的方法--ID3算法,也就是每次选择一个特 ...

  3. 决策树模型 ID3/C4.5/CART算法比较

    决策树模型在监督学习中非常常见,可用于分类(二分类.多分类)和回归.虽然将多棵弱决策树的Bagging.Random Forest.Boosting等tree ensembel 模型更为常见,但是“完 ...

  4. R_Studio(cart算法决策树)对book3.csv数据用测试集进行测试并评估模型

    对book3.csv数据集,实现如下功能: (1)创建训练集.测试集 (2)用rpart包创建关于类别的cart算法的决策树 (3)用测试集进行测试,并评估模型 book3.csv数据集 setwd( ...

  5. 决策树-预测隐形眼镜类型 (ID3算法,C4.5算法,CART算法,GINI指数,剪枝,随机森林)

    1. 1.问题的引入 2.一个实例 3.基本概念 4.ID3 5.C4.5 6.CART 7.随机森林 2. 我们应该设计什么的算法,使得计算机对贷款申请人员的申请信息自动进行分类,以决定能否贷款? ...

  6. 决策树模型比较:C4.5,CART,CHAID,QUEST

    (1)C4.5算法的特点为: 输入变量(自变量):为分类型变量或连续型变量. 输出变量(目标变量):为分类型变量. 连续变量处理:N等分离散化. 树分枝类型:多分枝. 分裂指标:信息增益比率gain ...

  7. 机器学习总结(八)决策树ID3,C4.5算法,CART算法

    本文主要总结决策树中的ID3,C4.5和CART算法,各种算法的特点,并对比了各种算法的不同点. 决策树:是一种基本的分类和回归方法.在分类问题中,是基于特征对实例进行分类.既可以认为是if-then ...

  8. 决策树-Cart算法二

    本文结构: CART算法有两步 回归树的生成 分类树的生成 剪枝 CART - Classification and Regression Trees 分类与回归树,是二叉树,可以用于分类,也可以用于 ...

  9. 统计学习五:3.决策树的学习之CART算法

    全文引用自<统计学习方法>(李航) 分类与回归树(classification and regression tree, CART)模型是由Breiman等人于1984年提出的另一类决策树 ...

  10. 决策树之CART算法

    顾名思义,CART算法(classification and regression tree)分类和回归算法,是一种应用广泛的决策树学习方法,既然是一种决策树学习方法,必然也满足决策树的几大步骤,即: ...

随机推荐

  1. 如何运维多集群数据库?58 同城 NebulaGraph Database 运维实践

    图计算业务背景介绍 我们为什么选择 NebulaGraph? 在公司各个业务线中,有不少部门都有着关系分析等图探索场景,随着业务发展,相关的需求越来越多.大量需求使用多模数据库来实现,开发成本和管理成 ...

  2. xml中xsd、xsi、xmlns的含义

    XML是可扩展标记语言,它定义了按格式编码文件的一系列规则[3],编码的文件是机器可读和人可读的.XML文件对于机器可读是基于XSD(XML Schema Definition)[1]的.XSD是受W ...

  3. Java package(包) +import 关键字(1)

    Java 包(package) 为了更好地组织类,Java 提供了包机制,用于区别类名的命名空间. 包的作用 1.把功能相似或相关的类或接口组织在同一个包中,方便类的查找和使用. 2.如同文件夹一样, ...

  4. Java 从键盘输入不确定的整数 并判断读入的整数和负数的个数,输入0时候结束

    1 /** 2 * 从键盘输入不确定的整数 并判断读入的整数和负数的个数,输入0时候结束 3 * 4 */ 5 6 Scanner scan = new Scanner(System.in); 7 8 ...

  5. 一个简易的ORM框架的实现(二)

    框架目标 什么是框架,框架能做到什么? 把一个方向的技术研发做封装,具备通用性,让使用框架的开发者用起来很轻松. 属性: 通用性 健壮性 稳定性 扩展性 高性能 组件化 跨平台 从零开始-搭建框架 建 ...

  6. Web服务器通信原理

    Web服务器通信原理 1.区分系统 2.DOS系统 3.IP地址 4.域名.DNS 5.端口 6.HTTP协议 7.Web容器 8.整个流程 一.区分系统 主要三个系统Windows.Linux.Ma ...

  7. 百度api经历

    底部参考文档,欢迎点击:https://www.runoob.com/http/http-content-type.html 这两天遇到了点糟心事,因为小伙伴走了.然后事情起因是这样的,来了个任务封装 ...

  8. linux下几种快速清空文件内容的方法

    [root@iamzken ~] : > filename [root@iamzken ~] > filename [root@iamzken ~] echo "" & ...

  9. Java递归实现全排列改进(一)---利用HashSet实现去重

    import java.util.ArrayList; import java.util.Arrays; import java.util.HashSet; import java.util.Iter ...

  10. 使用Java给图片添加水印

    什么是水印呢?比如使用手机拍摄一张照片的时候,照片右下角的位置显示得有日期和时间信息,那就表示一个水印. 项目开发中给图片添加水印的操作很常见,比如给图片添加日期和时间,给图片添加公司的logo之类的 ...