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. 【应用服务 App Service】在Azure Web App的部署文件中,是否可以限制某些文件无法被访问?(如json)

    问题描述 当部署文件到Azure App Service上后,默认访问文件在wwwroot目录中,如appsettings.json文件,在通过URL+文件名的形式可以访问,这样敏感信息会被泄露出去, ...

  2. 【Azure 应用服务】更新镜像后并重启应用服务,部署日志始终没有出现加载新镜像成功的日志

    问题描述 在App Service中部署镜像文件,发现镜像一直没有部署,重启App Service服务也无效果. DockerFile如下: FROM crunchgeek/php-fpm:7.0 # ...

  3. 【Azure Redis 缓存】Azure Redis Cluster 在增加分片数时失败分析

    问题描述 Azure Redis Cluster 在增加分片数时失败,错误消息为: ResponseBody: { "error": { "details": ...

  4. TensorFlow 回归模型

    TensorFlow 回归模型 首先,导入所需的库和模块.代码中使用了numpy进行数值计算,matplotlib进行数据可视化,tensorflow进行机器学习模型的构建和训练,sklearn进行多 ...

  5. Alt+Space 快速打开切换程序 - Everything - AutoHotKey

    Alt+Space 快速打开切换程序 - Everything - AutoHotKey 需求 电脑切换任务 需要用鼠标找,效率比较低,用快捷键Alt+Space 打开列表,输入指定关键字回车,切换或 ...

  6. debian在使用Thunderbird时英文改为中文

    sudo apt-get install thunder* 随后重启应用!

  7. typescript 解决变量多类型访问属性报错--工作随记

    一个变量类型允许是多个类型,如果访问某个类型的属性,编辑器会直接提示错误 比如 变量 tuple 可能为string 或 number 类型,如果直接访问tuple.toFixed const mix ...

  8. AOSP编译成功后关闭终端emulator命令找不到

    当我们编译好AOSP系统源码后,可以通过emulator命令打开模拟器,但是当我们关闭终端后,在次打开终端输入emulator命令,提示未找到命令: 此时我们需要重新执行下面语句 source bui ...

  9. Python编程规范+最佳实践

    前言 Python之禅是影响Python编程语言设计的19条原则,也是Python编码规范的核心理念. 优美胜于丑陋(Python 以编写优美的代码为目标) 明了胜于晦涩(优美的代码应当是明了的,命名 ...

  10. rust结构体包含另一个结构体引用时,serde序列化问题

    代码如下 use serde::{Deserialize, Serialize}; #[derive(Serialize, Deserialize)] struct Person { id: Stri ...