一、决策树模型

决策树算法是一种归纳分类算法,它通过对训练集的学习,挖掘有用的规则,对新数据集进行预测。它属于有监督、非参数学习算法,对每个输入使用该分类区域的训练数据得到对应的局部模型。决策树模型的基本算法是贪心算法,以自顶向下递归的方式构建决策树。
可以用一下集中方法构建决策树。

1. ID3算法

ID3算法的核心思想是最大化信息熵增益。所谓最大化信息熵增益,即每次进行下一次分裂时,计算出所有类别对应当前特征的熵,选择能够十的信息熵增益最大的那一个特征类别进行下一次的分裂。假设在数据D中有 k个类别,其中第i个类别数据在总数据中占有率为p_i,则熵的计算公式为:

由于初始数据可以划分的类别不止一项,于是我们需要对已经划分为D类别的数据再次分类,假设此次的类别为A,则类别A对数据集D划分的条件熵为:

二者的差值即信息熵增益:





2. C4.5算法

尽管ID3算法能够帮助决策下次分裂特征,但其本身存在一个问题:一般会优先选择有较多属性值的类别,因为属性值多的类别相对于属性值少的类别有相对较大的信息熵增益。

C4.5算法使用增益率作为选择分支的准则,同时引入分裂信息来惩罚取值较多多的分类。其定义为:


该公式表述的是,每一个类别i所占比重为权重的熵值和代表当前特征D_i的惩罚值。这样,类别数量越多,特征D在样本内部越不趋近于稳定,越不容易被选为当前的分类节点。
以上述例子为例,

3. CART算法

CART假设决策树是二叉树,内部节点特征的取值为“是”和“否”。这样的决策树等价于递归的二分每个特征,将输入空间(即特征空间)划分为有限个单元,并在这些单元上确定预测的概率分布,也就是在给定的输入条件下确定输出的条件概率分布。

CART算法由以下两步组成:

  1. 决策树生成:基于训练数据集生成决策树,生成的决策树要尽量大。
  2. 决策树剪枝:通过验证数据集对已生成的树进行剪枝并选择最优子树,这时以损失函数最小最为剪枝的标准。

A. CART树生成

CART决策树的生成是递归的构建二叉决策树的过程。CART决策树既可以用于分类,也可以用于回归。对于分类而言,CART以基尼系数最小化准则进行特征选择,生成二叉决策树。



之后在依次计算剩下两种分组的GINI系数增加值。

综上: 虽然在原始数据中只有4个分类,但是在计算GINI系数增加值时,需要计算(3+1+1+3)中分组可能。(即A1和A4有三个分类,即有三种划分情况;A2和A3只有两个分类,即有一种划分情况)。

按照这种计算方式依次计算,每次都选取GINI系数增加最大的划分可能,直至数据没有在划分的可能或者数据已经完全分开。

值得注意的是,当数据是连续型时,我们将数据从小到大排列,去相邻两个取值的均值作为划分点。例如,数据为(60,70,80,90),我们分别取65,75,85作为划分点,并且计算划分之后的GINI增加值。

B. CART树剪枝

剪枝方法的本质是在树模型庞大的叶子结点中,挑选对于模型整体影响过量或不重要的部分,将其乃至之后可能出现的分类整体从模型中删除。删除节点的好处在于:提高了对于同类问题的泛化能力,同时由于剪去了部分中间的树叶节点,提高了训练速度。在树模型中,常见的剪枝方式为预剪枝和后剪枝。

预剪枝就是在生成决策树的同时进行剪枝。正常决策树的生成是只要有信息增益就要进行分支。预剪枝就是设定一个阈值,只有在信息增益大于这个阈值的时候(也即是在分类后的信息混乱程度减小程度大于一定标准的时候)才进行分类。如果在信息增益过小的情况下,即使存在信息增益的现象,也不会对其进行分支。预剪枝的思想比较简单,但在实际应用中,预剪枝的表现并不是很好。所以,目前我们基本都是使用后剪枝方法。

后剪枝就是在决策树构造完成后进行剪枝。剪枝的过程是对拥有相同父节点的一组节点进行检查,如果将其合并,熵增小于某一阈值,那么这一组节点可以合并一个节点。如果将其合并后熵增大于这个阈值,那么说明将其分枝是合理的。后剪枝就是删除一些子树,然后用其叶节点代替。这个叶节点代表的子集不一定都是“纯”的。那么,这个叶子节点所标识的类别通过大多数原则确定。大多数原则就是指这个叶节点所代表的子集中大多数的类别来表示这个叶节点。

CART的剪枝主题剋氛围两部分,即子树序列的生成以及交叉验证。

  1. 子树序列的生成:找到一个中间节点,并将后续的所有子节点与叶子结点退回到这个中间节点,这样当前的中间节点就成为一个新的叶子结点,当前新的模型就是原始树模型的一个新的子树模型。而由所有叶子结点由下至上的生成所有子树模型即原始树模型的子树序列。
  2. 交叉验证:依赖所有子树模型的表面误差增益率(即误差的增加速率),选取多个节点组成的子树与交叉验证集合进行验证,选取误差最小的子树作为最优树的结果输出。


α表示当前节点剪枝后,对整体模型误差的影响。设α从0增加至正无穷,记做α(i),若α(i)>α(t),则当前节点t可剪枝。

二、集成算法模型GBDT

梯度提升决策树(Gradient Boosting Decision Tree, GBDT)是一种Boosting算法,Boosting算法的核心思想是:利用前一轮迭代的误差更新训练集的权重,矫正前一轮迭代被错误分类的样本,下一轮迭代会将重心放在上一轮分错的样本上。

GBDT可以看作是由M棵树组成的加法模型,即:

虽然GBDT也是一个加法模型,却是通过不断迭代拟合样本真实值与当前分类器的残差来逼近真实值,即
Fm(x)=Fm−1(x)+αmhm(x)F_m(x) =F_{m-1}(x) + \alpha _mh_m(x)Fm​(x)=Fm−1​(x)+αm​hm​(x)
根据机器学习的思想, hm(x)h_m(x)hm​(x)优化目标是缩小 Fm−1(x)+amhmF_{m-1}(x) + a_mh_mFm−1​(x)+am​hm​和yiy_iyi​之间的差距,即
hm(xi)=argminh∑i=1nL(yi,Fm−1(xi)+h(xi))h_m(x_i)=\underset{h}{argmin}\sum_{i=1}^{n}L(y_i, F_{m-1}(x_i)+h(x_i))hm​(xi​)=hargmin​i=1∑n​L(yi​,Fm−1​(xi​)+h(xi​))

GBDT算法主要过程如下:

  1. 建立第一个决策树,预测值为f0(x)f_0(x)f0​(x),初始值为0
  2. 通过选择分裂特征和分裂点,将数据集分为左右两个子节点。计算左右两个节点内数据集NLN_LNL​和NRN_RNR​的均值,并将其作为预测值yiy_iyi​(我理解的不一定是两个,要是三层的话,可能是四五个,然后分别计算均值作为预测值)
  3. 计算残差:rm,i=yi,−fm−1(xi)+h(xi),i=1,2,3,...,Nr_{m,i}=y_i,-f_{m-1}(x_i)+h(x_i), i=1,2,3,...,Nrm,i​=yi​,−fm−1​(xi​)+h(xi​),i=1,2,3,...,N
  4. 计算损失误差,当误差小于阈值时完成迭代
  5. 从而得到一棵回归树,残差将作为下一步迭代的目标值
  6. 迭代更新预测结果。

在分类树中,一般通过信息熵增益或者信息熵增益率等属性来选择分裂特征和分裂点。在回归树中,一般选择分类增益最大即分类后误差最小的点作为当前的分裂点。

参考资料

  1. 智能搜索和推荐系统 原理、算法与应用 机械工业出版社 刘宇/赵宏宇/刘书斌/孙明珠 著
  2. 分类算法 – 决策树ID3算法
  3. 分类算法 – 决策树C4.5算法
  4. 分类算法 – 决策数CART算法
  5. 决策树的剪枝:REP/PEP/CCP算法

【算法】决策树模型 集成算法模型GBDT相关推荐

  1. 一小部分机器学习算法小结: 优化算法、逻辑回归、支持向量机、决策树、集成算法、Word2Vec等...

    优化算法 先导知识:泰勒公式 \[ f(x)=\sum_{n=0}^{\infty}\frac{f^{(n)}(x_0)}{n!}(x-x_0)^n \] 一阶泰勒展开: \[ f(x)\approx ...

  2. 简单易学的机器学习算法——决策树之ID3算法

    一.决策树分类算法概述     决策树算法是从数据的属性(或者特征)出发,以属性作为基础,划分不同的类.例如对于如下数据集 (数据集) 其中,第一列和第二列为属性(特征),最后一列为类别标签,1表示是 ...

  3. 最小径集的算法_机器学习的利器——集成算法

    最近在打算法竞赛的时候用到了集成算法,效果还不错,索性就总结了一篇集成算法的文章,希望能帮到正在转行的数据分析师们. 集成算法核心思想 集成算法的核心思想是通过构建并结合多个学习器来完成学习任务,也就 ...

  4. bagging算法_集成算法——三个“臭皮匠”级算法优于一个“诸葛亮”级算法

    最近在打算法竞赛的时候用到了集成算法,效果还不错,索性就总结了一篇集成算法的文章,希望能帮到正在转行的数据分析师们.集成算法核心思想集成算法的核心思想是通过构建并结合多个学习器来完成学习任务,也就是通 ...

  5. 机器学习(4):集成算法(Bagging、Boosting、Stacking)

    目录 一.Bagging模型:随机森林 1.1 bagging的原理 1.2 随机森林算法 Random Forest 1.3 随机森林的推广:极限随机数 extra trees 二.Boosting ...

  6. 机器学习算法—集成算法原理详解

    集成算法 1.集成算法之Boosting(GBDT.XGB.LGB) 2.集成算法之Bagging(RF) 3.集成算法之Stacking(速度慢) 1.集成算法之Boosting(GBDT.XGB. ...

  7. 2022国赛数学建模思路 - 案例:集成算法AdaBoost

    2022 高教社杯(国赛数学建模)思路解析 2022高教社杯ABCD赛题思路解析: https://blog.csdn.net/dc_sinor/article/details/126211983 集 ...

  8. 集成算法系列之GBM

    http://baijiahao.baidu.com/s?id=1570175598042474&wfr=spider&for=pc 一.GBM简介 GBM全称为Gradient Bo ...

  9. python决策树 value_机器学习 | 算法笔记(四)- 决策树算法以及代码实现

    概述 上一篇讲述了<机器学习 | 算法笔记(三)- 支持向量机算法以及代码实现>,本篇讲述机器学习算法决策树,内容包括模型介绍及代码实现. 决策树 决策树(Decision Tree)在机 ...

最新文章

  1. 拍牌神器是怎样炼成的(三)---注册全局热键
  2. 博士毕业去哪了?光鲜亮丽的高校教师工资了解下!
  3. AWS之EC2搭建WordPress博客
  4. oracle根据_分割字符串,oracle分割字符串函数
  5. 杭电1430康托 bfs(java)
  6. Happy Necklace dp 递推 矩阵快速幂
  7. .NET平台下几种SOCKET模型的简要性能供参考
  8. 模板:割点、桥与双连通
  9. 强制Tomcat通过SLF4J / Logback登录
  10. 基础算法 —— 调度问题
  11. SQL Server数据库-限制返回行数
  12. Linux操作系统下的多线程编程详细解析----条件变量pthread_cond_t那些事儿
  13. 交叉风帆行业调研报告 - 市场现状分析与发展前景预测
  14. AD快捷键还原为默认配置
  15. 怎么用计算机程序求根公式,一元四次方程求根公式
  16. 指数波段划分以及底部反弹行业特征统计分析
  17. 使用别名(就像我们自己的小名)
  18. 游戏商店MySQL数据库设计
  19. 移动应用测试篇(1)——移动应用的发展
  20. centos基本命令

热门文章

  1. 杰理AD142A4电子贺卡方案
  2. jQuery手机触屏左右滑动切换栏目和焦点图
  3. Python:ERROR: Could not install packages due to an OSError: HTTPSConnectionPool
  4. 我的C语言学习历程:GUI篇
  5. 前端对大数据处理方案,比如列表如何显示几万条数据
  6. Google Earth Engine———土地类型分类
  7. 鄂尔多斯房价崩盘阵痛:老总2年都在催账还账
  8. windows10专业版命令激活、学生电脑左下角图标点了没反应
  9. spring boot 集成 mongodb 通过id查询问题
  10. 采草药---题解报告