一、剪枝算法决策树生成算法递归地产生决策树,直到不能继续下去为止。这样产生的树往往对训练数据的分类很准确,但对未知的测试数据的分类却没有那么准确,即出现过拟合现象。过拟合的原因在于学习时过多地考虑如何提高对训练数据的正确分类,从而构建出过于复杂的决策树。解决这个问题的办法是考虑决策树的复杂度,对已生成的决策树进行简化。

在决策树学习中将已生成的树进行简化的过程称为剪枝(Pruning)。具体地,剪枝从已生成的树上裁掉一些子树或叶结点,并将其根结点或父结点作为新的叶结点,从而简化分类树模型。

决策树的剪枝往往通过极小化决策树整体的损失函数(Loss Function)或代价函数(Cost Function)来实现。设树的叶结点个数为||,t是树的叶结点,该叶结点有个样本点,其中k类的样本点有个,=1,2,⋯,,()为叶结t点上的经验熵,≥0为参数,则决策树学习的损失函数可以定义为:

()=∑=1||()+||其中经验熵为:

()=−∑log在损失函数中,记:

()=∑=1||()=−∑=1||∑=1log这时有:

()=()+||上式中,()表示模型对训练数据的预测误差,即模型与训练数据的拟合程度,||表示模型复杂度,也称正则项,参数>0控制两者之间的影响。较大的促使选择较简单的模型(树),较小的促使选择较复杂的模型(树)。=0意味着只考虑模型与训练数据的拟合程度,不考虑模型的复杂度。

剪枝,就是当确定时,选择损失函数最小的模型,即损失函数最小的子树。当值确定时,子树越大,往往与训练数据的拟合越好,但是模型的复杂度就越髙;相反,子树越小,模型的复杂度就越低,但是往往与训练数据的拟合不好。损失函数正好表示了对两者的平衡.

可以看出,决策树生成只考虑了通过提高信息增益(或信息增益比)对训练数据进行更好的拟合。而决策树剪枝通过优化损失函数还考虑了减小模型复杂度。决策树生成学习局部的模型,而决策树剪枝学习整体的模型。

二、决策树剪枝过程

树的剪枝算法

​ 输入:生成算法产生的整个树,参数:

​ 输出:修剪后的子树。

​ (1) 计算每个结点的经验熵;

​ (2) 递归地从树的叶结点向上回缩。设一组叶结点回缩到其父结点之前与之后的整体树分别为和,其对应的损失函数值分别是()与(),如果()⩽(),则进行剪枝,即将父结点变为新的叶结点。

​ (3) 返回(2),直至不能继续为止,得到损失函数最小的子树。

三、CART 树分类与回归树(Classification And Regression Tree, CART)模型由Breiman等人在1984年提出,是应用广泛的决策树学习方法。CART同样由特征选择、树的生成及剪枝组成,既可以用于分类也可以用于回归。以下将用于分类与回归的树统称为决策树。

CART是在给定输入随机变量X条件下输出随机变量Y的条件概率分布的学习方法。CART假设决策树是二叉树,内部结点特征的取值为“是”和“否”,左分支是取值为“是”的分支,右分支是取值为“否”的分支。这样的决策树等价于递归地二分每个特征,将输入空间即特征空间划分为有限个单元,并在这些单元上确定预测的概率分布,也就是在输入给定的条件下输出的条件概率分布。

CART算法由以下两步组成:

​ (1) 决策树生成:基于训练数据集生成决策树,生成的决策树要尽量大;

​ (2) 决策树剪枝:用验证数据集对己生成的树进行剪枝并选择最优子树,这时用损失函数最小作为剪枝的标准。

CART 生成决策树的生成就是递归地构建二叉决策树的过程。对回归树用平方误差最小化准则,对分类树用基尼指数(Gini Index)最小化准则,进行特征选择,生成二叉树。

回归树的生成假设X与Y分别为输入和输出变量,并且Y是连续变量,给定训练数据集

={(1,1),(2,2),⋯,(,)}一个回归树对应着输入空间(即特征空间)的一个划分以及在划分的单元上的输出值。假设已将输入空间划分为M个单元,1,2,⋯,,并且在每个单元上有一个固定的输出值,于是回归树模型可表示为:

()=∑=1(∈)当输入空间的划分确定时,可以用平方误差∑∈(−())2来表示回归树对于训练数据的预测误差,用平方误差最小的准求解每个单元上的最优输出值。易知,单元上的的最优值̂ 是的所有输入实例对应的输出的均值,即:

̂ =(∣∈)采用启发式的方法对输入空间进行划分,选择第j个变量()和它取的值s,作为切分变量(Splitting Variable)和切分点(Splitting Point), 并定义两个区域:

1(,)={∣()≤}和2(,)={∣()>}然后寻找最优切分变量j和最优切分点s,具体地,求解

,[1∑∈1(,)(−1)2+2∑∈2(,)(−2)2]对固定输入变量j可以找到最优切分点s。

̂ 1=(∣∈1(,))和̂ 2=(∣∈2(,))遍历所有输入变量,找到最优的切分变量j,构成一个对(,)。依此将输入空间划分为两个区域。接着,对每个区域重复上述划分过程,直到满足停止条件为止。这样就生成一棵回归树。这样的回归树通常称为最小二乘回归树(Least Squares Regression Tree)。

分类树的生成分类树用基尼指数选择最优特征,同时决定该特征的最有二值分割点。

在分类问题中,假设有K个类,样本点属于第k类的概率为,则概率分布的基尼指数定义为:

()=∑=1(1−)=1−∑=12对于二分类问题,若样本点属于第一个类的概率是p,则概率分部的基尼指数为:

()=2(1−)对于给定的样本集合,其基尼指数为:

()=1−∑=1(||||)2这里,是中属于第k类的样本子集,K是类的个数。

如果样本集合根据特征是否取某一可能值被分割成1和2两部分,即:

1={(,)∈∣()=},2=−1则在特征的条件下,集合的基尼指数定义为:

(,)=|1|||(1)+|2|||(2)基尼指数()表示集合的不确定性,基尼指数(,)表示经∗=∗分割后集合的不确定性。基尼指数值越大,样本集合的不确定性也就越大,这一点与熵相似。

CART生成算法

​ 输入:训练数据集,停止计算的条件;

​ 输出:CART决策树。

​ 根据训练数据集,从根结点开始,递归地对每个结点进行以下操作,构建二叉决策树:

​ (1) 设结点的训练数据集为,计算现有特征对该数据集的基尼指数。此时,对每一个特征对其可能取的每个值,根据样本点对=的测试为“是”或 “否”将分割成1和2两部分,计算=时的基尼指数。

​ (2) 在所有可能的特征以及它们所有可能的切分点中,选择基尼指数最小的特征及其对应的切分点作为最优特征与最优切分点。依据最优特征与最优切分点,从现结点生成两个子结点,将训练数据集依特征分配到两个子结点中去。

​ (3) 对两个子结点递归地调用上述操作,直至满足停止条件为止。

​ (4) 生成CART决策树。

算法停止计算的条件是结点中的样本个数小于预定阈值,或样本集的基尼指数小于预定阈值(样本基本属于同一类),或者没有更多特征。

CART 剪枝CART剪枝算法从“完全生长”的决策树的底端剪去一些子树,使决策树变小(模型变简单),从而能够对未知数据有更准确的预测,提高模型泛化能力。CART剪枝算法由两步组成:首先从生成算法产生的决策树0底端开始不断剪枝,直到0的根结点,形成一个子树序列{0,1,⋯,};然后通过交叉验证法在独立的验证数据集上对子树序列进行测试,从中选择最优子树。

在剪枝过程中,计算子树的损失函数:

()=()+||其中,为任意子树,()为对训练数据的预测误差(如基尼指数),||为子树的叶结点个数,为参数,()为参数是时的子树的整体损失。参数权衡训练数据的拟合程度与模型的复杂度。

对固定的,—定存在使损失函数最()小的子树,将其表示为;在损失函数()最小的意义下是最优的。容易验证这样的最优子树是唯一的。当大的时候,最优子树偏小;当小的时候,最优子树偏大。极端情况,当=0时,整体树是最优的。当→∞时,根结点组成的单结点树是最优的。

可以用递归的方法对树进行剪枝。将从小增大,$0=a_{0}

具体地,从整体树0开始剪枝,对0的任意内部结点t,以t为单结点树的损失函数是:

()=()+以t为根结点的子树的损失函数是:

()=()+||当=0及充分小时,有不等式:

()

()=()当再增大时,()>(),只要=()−()||−1,与t有相同的损失函数值,而t的结点少,因此t比更可取,对进行剪枝。

为此,对0中每一内部节点t,计算:

()=()−()||−1它表示剪枝后整体损失函数减少的程度。在0中减去()最小的,将得到的子树作为1,同时将减小的()设置为1。1为区间[1,2)的最优子树。

如此剪枝下去,直到得到根节点。在这一过程中,不断地增加的值,产生新的区间。

在剪枝得到的子树序列{0,1,⋯,}中果果交叉验证选取最优子树。

具体地,利用独立的验证数据集,测试子树序列{0,1,⋯,}中各棵子树的平方误差或基尼指数。平方误差或基尼指数最小的决策树被认为是最优的决策树。在子树序列中,每棵子树{0,1,⋯,}都对应一个参数{0,1,⋯,}。所以,当最优子树选定时,对应的也就确定了,即得到了最优决策树。

决策树准确率低原因_机器学习决策树算法--剪枝算法相关推荐

  1. 决策树准确率低原因_智能质检优化实践:召回率和准确率,哪个更重要?

    题图:美剧<了不起的麦瑟尔夫人> 很多企业拥有中大型电销或客服中心,每天与客户产生成千上万次沟通.沟通的质量,决定了企业的收入或客户满意度.企业监督业务人员的沟通质量和执行力的过程,被称为 ...

  2. 决策树准确率低原因_新上市酸奶决策树分析

    前言:为帮助新开的酸奶店明确主力消费客户群体,我们运用决策树对其客户群体进行分析,最终为该酸奶店铺明确目标客户群体--离异与未婚的中等收入男性,并对该新开酸奶店铺提出一些建议. 原因:"信息 ...

  3. 机器学习 决策树算法

    4.1 决策树算法简介 学习目标 知道什么是决策树 能够通过sklearn实现决策树分类,进一步认识决策树 1 概念 决策树思想的来源非常朴素,程序设计中的条件分支结构就是if-else结构,最早的决 ...

  4. [飞桨机器学习]决策树算法

    [飞桨机器学习]决策树算法 一.简介 1.概述 决策树算法是一种逼近离散函数值的方法.它是一种典型的分类方法,首先对数据进行处理,利用归纳算法生成可读的规则和决策树,然后使用决策对新数据进行分析.本质 ...

  5. 机器学习-决策树算法原理及实现-附python代码

    1.决策树-分类树 sklearn.tree.DecisionTreeClassifier官方地址: https://scikit-learn.org/stable/modules/generated ...

  6. 决策树算法ID3算法(Python3实现)

    目录 1.数据集准备 2.使用ID3算法递归构建决策树并使用决策树执行分类 2.1 ID3算法概述 2.2 递归终止条件 2.3 代码实现 3.Matplotlib实现决策树可视化 4.决策树的存储与 ...

  7. python决策树原理_Python机器学习决策树算法 | kTWO-个人博客

    ps:这篇文章主要来介绍决策树算法的基本原理和概念.具体的Python应用将在下一篇文章中介绍. 1.什么是决策树? 决策树(decision tree)也叫做判定树,类似于流程图的结构,每个内部的结 ...

  8. python决策树原理_关于决策树算法最通俗的一次Python学习教程,你肯定得看

    一. 概述 前面的一篇 有一点得先说一下,决策树在优化过程中,有3个经典的算法,分别是ID3,C4.5,和CART.后面的算法都是基于前面算法的一些不足进行改进的,我们这次的Python学习教程就先跟 ...

  9. 机器学习-决策树算法ID3实现,含例子(红酒分类)

    决策树原理实现代码如下所示:(参考自机器学习实践 Peter Harrington). import mathx=[[0,1,"no"],[0,1,"no"], ...

最新文章

  1. 为什么watch机制不是银弹?
  2. 定时器 Quartz
  3. ES6新特性之解构表达式
  4. jsp的九大内置对象和作用域
  5. 基于Idea+Java+MySQL+SSM的毕业设计网上管理系统(建议收藏)
  6. js 简单的鼠标指针小图标
  7. 模型推理速度与硬件算力
  8. Only老K说-Java设计模式之原型模式(Prototype)
  9. python2.7 一个莫名其妙的错误
  10. python根据出生年份计算年龄_python根据出生日期计算年龄的代码详解
  11. android 开机动画 卡顿,开机动画没按帧率播放 有卡顿
  12. 按关键字爬取百度图片
  13. 棋盘密码(Polybius)
  14. html图片轮播思路,css3如何实现轮播图?css3实现轮播图片的方法
  15. mv移动或重命名文件
  16. php搞笑证件,怎么制作搞笑证件 网络搞笑证件制作的软件怎么用的
  17. 孙宇晨被调查背后:网民狂欢不能代替常识
  18. cifar-10之matlab初步
  19. android LVDS屏幕驱动移植
  20. Numpy简易教程8——简易分析

热门文章

  1. python的 是什么-python中的生成器是什么?生成器有什么用处?
  2. php主机转发ipv6,php实现ipv4转换ipv6
  3. 【Java】 5.7 多态
  4. 一直认为 count(1) 比 count(*) 效果高,被同事鄙视了。
  5. java11正式发布了,让java代码更完美
  6. Android中BroadcastReceiver组件详解
  7. JavaBean网页电子时钟
  8. Python访问MySQL数据库并实现其增删改查功能
  9. Oracle TO_YMINTERVAL 函数简介
  10. Oracle 在Sqlplus 执行sql脚本文件。