机器学习之决策树_CART算法
目录
- 3、CART算法(classification and regression tree tree)
- 3.1 CART生成算法(回归树生成和分类树生成)
- 3.2 CART剪枝
决策树基本知识参考,请点击:https://www.cnblogs.com/hugechuanqi/p/10498786.html
3、CART算法(classification and regression tree tree)
- CART,即分类与回归树,是在给定输入随机变量X条件下输出随机变量Y的条件概率分布的学习方法。CART假定决策树是二叉树,内部结点特征的取值为“是”和“否”,左分支是取值为“是”的分支,右分支是取值为“否”的分支。
- CART算法分为两个步骤:
- 决策树生成:基于训练集生成决策树,生成的决策树要尽量大;
- 决策树剪枝:基于验证数据对已生成的树进行剪枝并选择最优子树,这时用损失函数最小作为剪枝的标准。
3.1 CART生成算法(回归树生成和分类树生成)
- CART包括回归树和分类树,回归树和分类树的区别:
- 回归树用平方误差最小化准则,进行特征选择,递归地构建二叉树。
- 分类树用基尼指数最小化准则,进行特征选择,递归地构建二叉树。
- CART算法是一种二分递归分割技术,把当前样本划分为两个子样本,使得生成的每个非叶子节点都有两个分支。因此CART算法生成的决策树是结构简单的二叉树,做决策时只有“是”和“否”两个分支,即使一个特征下有多个分类取值,也只能把数据分为两部分。
(1)CART回归树生成
- 回归树用平方误差最小化准则,进行特征选择,递归地构建二叉树。
数据集\(D={(x_{1}, y_{2}), (x_{2}, y_{2}), ..., (x_{N}, y_{N})}\),其中\(x = \{x^{1}, x^{2}, ..., x^{l}, ..., x^{M}\}\)为输入变量,例如\(x_{1} = \{x_{1}^{1}, x_{1}^{2}, ..., x_{1}^{l}, ..., x_{1}^{M}\}\),\(Y\)是连续的输入变量。
- 一个回归树对应着输入特征空间中的一个划分,以及在划分单元的输出值。假定已经将输入特征空间划分为M个单元\(R_{1}, R_{2}, ..., R_{M}\),并且在每个单元\(R_{m}\)上有一个固定的输出值\(c_{m}\),则回归树的模型为:
\[f(x) = \sum\limits_{m=1}^{M} c_{m} I(x \in R_{m})\] 每个单元最优输出值的确定:当输入特征空间已经划分时,可以用平方误差\(\sum\limits_{x_[i] \in R_{m}} (y_{i} - f(x_{i}))^{2}\)来表示预测误差,然后用最小平方误差的准则求解每个单元上的最优输出值\(\hat{c}_{m}\)。从统计分析的角度,平均值概括了大多数样本。因此单元\(R_{m}\)上的\(c_{m}\)的最优值\(\hat{c}_{m}\)是\(R_{m}\)上的所有输入实例\(x_{i}\)对应的输出平均值,即
\[\hat{c}_{m} = ave(y_{i} | x_{i} \in R_{m})\]空间划分:选择第\(j\)个变量\(x^{j}\)和它的取值s,作为切分变量和切分点。并定义两个区域:
\[R_{1}(j,s) = \{x | x^{(j)} \leq s\} \ 和\ R_{2}(j,s) = \{x | x^{(j)} > s\}\]
然后寻找最优切分变量\(j\)和最优切分点s。具体求解:
\[\min\limits_{j,s} [\min\limits_{c1} \sum\limits_{x_{i} \in R_{1}(j,s)} (y_{i} - c_{1})^{2} + \min\limits_{c2} \sum\limits_{x_{i} \in R_{2}(j,s)} (y_{i} - c_{2})^{2}]\]
对固定输入变量\(j\)可以找到最优切分点。
\[\hat{c}_{1} = ave(y_{i} | x_{i} \in R_{1}(j,s)) \ 和 \hat{c}_{2} = ave(y_{i} | x_{i} \in R_{2}(j,s))\]
遍历所有的输入变量,找到最优的切分变量\(j\),构成一个对(j,s),依次将输入特征空间划分为两个区域。接下来,对每个区域重复上述划分过程,直到满足停止条件为止,这样就生成一颗回归树。- 最小二乘回归树生成算法流程:
其中变量J指某一个特征,该特征变量取值\(x_{1} = \{x_{1}^{1}, x_{1}^{2}, ..., x_{1}^{l}, ..., x_{1}^{M}\}\),对应的输出为\(y_{1} = \{y_{1}^{1}, y_{1}^{2}, ..., y_{1}^{l}, ..., y_{1}^{M}\}\)。并利用拟合出来的残差\(r_{1}^{i} = y_{1}^{i} -f(x_{1}^{i})\)代替输出\(y_{1}^{i}\)继续生成子树。 扩展:在梯度提升树中,GBDT利用损失函数的负梯度\(r_{ti} = - [\frac{\partial L(y_{i}, f(x_{i})) }{\partial f(x_{i}) }]_{f(x)=f_{t-1}(x)}\)代替残差的近似值继续生成子树。(具体实例见下回分解)
(2)CART分类树生成
- 分类树用基尼指数选择最优特征,通过选择基尼指数最小的特征及其对应的切分点作为最优特征和最优切分点。
- 概率分布的基尼指数定义为:
\[Gini(p) = \sum\limits_{k=1}^{K} p_{k}(1-p_{k}) = 1 - \sum_{k=1}^{K} p_{k}^{2}\]
其中,假设分类问题中有K个类,样本点属于第K类的概率为\(p_{k}\)。 - 对于二分类问题,属于第一个类的概率为p,则属于第二个类的概率为1-p,其概率分布的基尼指数为:
\[Gini(p) = 2p(1-p)\] - 对于给定的样本集合D,其基尼指数为:
\[Gini(D) = 1 - \sum\limits_{k=1}^{K} (\frac{|C_{k}|}{|D|})^{2}\]
其中,\(C_{k}\)是D中属于第k类的样本子集,K是类的个数。 - 如果在样本集合D根据A是否取某一可能值a被分割成\(D_{1}\)和\(D_{2}\)两部分,即\(D_{1} = \{(x,y) \in D | A(x) = a\}\), \(D_{2}=D-D_{1}\),则在特征A的条件下,集合D 的基尼指数定义为:
\[Gini(D,A) = \frac{|D_{1}|}{|D|} Gini(D_{1}) + \frac{|D_{2}|}{|D|} Gini(D_{2})\] 基尼指数\(Gini(D)\)表示集合D的不确定性,基尼指数\(Gini(D,A)\)表示经\(A=a\)分割后集合D的不确定性。基尼指数值越大,样本集合的不确定性也就越大,类似于殇。
CART分类树的生成算法流程:
3.2 CART剪枝
- CART剪枝算法从“完全生长”的决策树的底端剪去一些子树,使决策树变简单,防止过拟合。分两步:
- 首先从生成算法产生的决策树\(T_{0}\)底端开始不断剪枝,知道==直到\(T_{0}\)的根结点,形成一个子树序列\(\{T_{0}, T_{1}, ..., T_{n},\}\);
- 然后通过交叉验证法在独立的验证数据集上对子树序列进行测试,从中选择最优子树。
(1)形成一个子树序列
剪枝过程中子树的损失函数:
\[C_{\alpha}(T) = C(T) + \alpha |T|\]
其中T为任意子树,\(C_{T}\)是对训练数据的预测误差(如基尼指数),\(|T|\)为子树的叶结点个数,C_{\alpha}(T)为参数\(\alpha\)时的子树T的整体损失,参数\(\alpha\)权衡训练数据的拟合程度与模型的复杂度。对\(T_{0}\)中每一个内部结点t,计算
\[g(t) = \frac{C(t) - C(T_{t})}{|T_{t}| - 1}\]
g(t)表示剪枝后整体损失函数减少的程度,\(C(t)\)表示剪枝前的损失函数,\(C(T_{t})\)表示剪枝后的损失函数。在\(T_{0}\)中剪去g(t)最小的\(T_{t}\),将得到的子树作为\(T_{1}\),同时将最小的g(t)设为\(\alpha_{1}\)。\(T_{1}\)为区间\([\alpha_{1}, \alpha_{2}]\)的最优子树。不断剪枝下去,直至得到根结点。在这个过程中,不断地增加\(\alpha\)的值,产生新的空间。
(2)在剪枝得到的子树序列\(T_{0}, T_{1}, .., T_{n}\)中通过交叉验证选取最优子树\(T_{\alpha}\)
主要是通过验证数据集,测试这些子树序列中各棵子树的平方误差或者基尼指数。取平方误差或者基尼指数最小的决策树为最优决策树\(T_{k}\),对应的\(\alpha_{k}\)也就确定了。
CART剪枝算法流程:
参考:
- 李航《统计学习方法》
- CART分类树原理示例:https://blog.csdn.net/aaa_aaa1sdf/article/details/81587359
- 数据挖掘十大算法之CART:https://blog.csdn.net/baimafujinji/article/details/53269040
转载于:https://www.cnblogs.com/hugechuanqi/p/10549640.html
机器学习之决策树_CART算法相关推荐
- 机器学习_决策树_ID3算法_C4.5算法_CART算法及各个算法Python实现
下面的有些叙述基于我个人理解, 可能与专业书籍描述不同, 但是最终都是表达同一个意思, 如果有不同意见的小伙伴, 请在评论区留言, 我不胜感激. 参考: 周志华-机器学习 https://blog.c ...
- python分类算法报告_Python机器学习(1)——决策树分类算法
1.决策树算法 决策树用树形结构对样本的属性进行分类,是最直观的分类算法,而且也可以用于回归.不过对于一些特殊的逻辑分类会有困难.典型的如异或(XOR)逻辑,决策树并不擅长解决此类问题. 决策树的构建 ...
- 机器学习:决策树-基础算法,剪枝,连续值缺失值处理,多变量决策树(附代码实现)
我的小程序: 待办计划:卷起来吧,少年! 我们记账:年薪50w够花么? 基础算法 举个栗子: 当一个有经验的老农看一个瓜是不是好瓜时,他可能会先看下瓜的颜色,一看是青绿的,心想有可能是好瓜!接着他又 ...
- 【机器学习】决策树-ID3算法
1.ID3算法 ID3算法利用信息增益进行特征的选择进行树的构建.信息熵的取值范围为0~1,值越大,越不纯,相反值越小,代表集合纯度越高.信息增益反映的是给定条件后不确定性减少的程度.每一次对决策树进 ...
- 机器学习之决策树分类算法
决策树和随机森林:决策树和随机森林都是非线性有监督的分类模型. 决策树是一种树形结构,树内部每个节点表示一个属性上的测试,每个分支代表一个测试输出,每个叶子节点代表一个分类类别.通过训练数据构建决策树 ...
- 机器学习知识点(七)决策树学习算法Java实现
为理解机器学习第四章节决策树学习算法,通过网上找到的一份现成代码,主要实现了最优划分属性选择和决策树构造,其中最优划分属性选择采用信息增益准则.决策树构造采用递归实现,代码如下: package sk ...
- 机器学习第五篇:详解决策树-CART算法
01|前言: 本篇接着上一篇决策树详解,CART是英文"classification and regression tree"的缩写,翻译过来是分类与回归树,与前面说到的ID3.C ...
- 利用计算机语言实现ID3算法,机器学习之决策树学习-id3算法-原理分析及c语言代码实现.pdf...
机器学习之决策树学习-id3算法-原理分析及c语言代码实现.pdf 还剩 23页未读, 继续阅读 下载文档到电脑,马上远离加班熬夜! 亲,很抱歉,此页已超出免费预览范围啦! 如果喜欢就下载吧,价低环保 ...
- 机器学习十大经典算法之决策树
机器学习经典十大算法 机器学习/人工智能的子领域在过去几年越来越受欢迎.目前大数据在科技行业已经炙手可热,而基于大量数据来进行预测或者得出建议的机器学习无疑是非常强大的.一些最常见的机器学习例子,比如 ...
最新文章
- android 5.0 9300,三星Android5.0升级名单曝光 S2止步4.2
- 【机器学习入门到精通系列】插值与拟合
- python matplotlib散点图-python-Matplotlib散点图图例
- windows server 守护进程nssm
- Java Scanner 类、异常处理 总结
- Android 欢迎页面的编写
- DDD理论学习系列(3)-- 限界上下文
- linux 创建进程 execl,linux中进程的vfork()和execl()函数
- 糙哥出版本,脸都不去洗
- DPDK Release 21.05
- Android源码编译:openjdk安装
- return next(val for val in obj if safe_isfinite(val)) StopIteravtion报错解决方法
- 米兔机器人恐龙拼图手册_MI 小米 米兔积木机器人 履带版
- @Cacheable使用spring缓存
- New Online Judge P1128-绝地求生(多源bfs)
- 苹果系统怎样修改mac地址?
- python 京东 抢券_Python写一个京东抢券脚本
- 如何把matlab里的字符串按照顺序排列好
- 海康监控平台投屏电视墙方案切换失败故障
- 阿里云oss对象存储跨域设置