决策树算法和剪枝原理

本节我们对决策算法原理做简单的解析,帮助您理清算法思路,温故而知新。

我们知道,决策树算法是一种树形分类结构,要通过这棵树实现样本分类,就要根据 if -else 原理设置判别条件。因此您可以这样理解,决策树是由许多 if -else 分枝组合而成的树形模型。

决策树算法原理

决策树特征属性是 if -else 判别条件的关键所在,我们可以把这些特征属性看成一个集合,我们要选择的判别条件都来自于这个集合,通过分析与计算选择与待分类样本最合适的“判别条件”。通过前面文章的学习,我们可以知道被选择的“判别条件”使得样本集合的某个子树节点“纯度”最高。

上述过程就好比从众多的样本中提取“类别纯度”最高的样本集合,因此我们可以起一个形象化的名字“提纯”,过程示意图如下所示:

图1:决策树流程图

通过上述流程图可以得知,决策树算法通过判别条件从根节点开始分裂为子节点,子节点可以继续分裂,每一次分裂都相当于一次对分类结果的“提纯”,周而复始,从而达到分类的目的,在这个过程中,节点为“否”的不在分裂,判断为“是”的节点则继续分裂。那么你有没有考虑过决策树会在什么情况下“停止”分裂呢?下面列举了两种情况:

1) 子节点属于同一类别
决策树算法的目的是为了完成有效的样本分类。当某个数据集集合分类完成,也就分类后的子节点集合都属于同一个类别,不可再分,此时代表着分类任务完成,分裂也就会终止。

2) 特征属性用完
我们知道,决策树依赖特征属性作为判别条件,如果特征属性已经全部用上,自然也就无法继续进行节点分裂,此处可能就会出现两种情况:一种是分类任务完成,也就是子节点属于同一类别,还有另外一种情况就是分类还没有完成,比如,在判断为“是”的节点集合中,有 8 个正类 3 个负类,此时我们将采用占比最大的类作为当前节点的归属类。

3) 设置停止条件
除上述情况外,我们也可以自己决定什么时候停止。比如在实际应用中我们可以在外部设置一些阈值,把决策树的深度,或者叶子节点的个数当做停止条件。

决策树剪枝策略

决策树算法是机器学习中的经典算法。如果要解决分类问题,决策树算法再合适不过了。不过决策树算法并非至善至美,决策树分类算法最容易出现的问题就是“过拟合”。什么是“过拟合”我们在教程的开篇已经提及过,它指的机器学习模型对于训练集数据能够实现较好的预测,而对于测试集性能较差。

“过拟合”使决策树模型学习到了并不具备普遍意义的分类决策条件,从而导致模型的分类效率、泛化能力降低。

决策树出现过拟合的原因其实很简单,因为它注重细节。决策树会根据数据集各个维度的重要性来选择 if -else 分支,如果决策树将所有的特征属性都用完的情况下,那么过拟合现象就很容易出现。

我们知道,每个数据集都会有各种各样的属性维度,总会出现一些属性维度样本分类实际上并不存在关联关系的情况。因此,在理想情况下决策树算法应尽可能少地使用这些不相关属性,但理想终归是理想,在现实情况下很难实现。那么我们要如何解决这种过拟合问题呢?这时就要用到“剪枝策略”。

“剪枝策略”这个名字非常的形象化,它是解决决策树算法过拟合问题的核心方法,也是决策树算法的重要组成部分。剪枝策略有很多种,我们根据剪枝操作触发时间的不同,可以将它们分成两种,一种称为预剪枝,另一种称为后剪枝。

1) 预剪枝
所谓预剪枝,就是将即将发芽的分支“扼杀在萌芽状态”即在分支划分前就进行剪枝判断,如果判断结果是需要剪枝,则不进行该分支划分。

2) 后剪枝
所谓后剪枝,则是在分支划分之后,通常是决策树的各个判断分支已经形成后,才开始进行剪枝判断。

上述两个剪枝策略,我们重要理解“预”和“后”。“预”就是打算、想要的意思,也就是在分支之前就被剪掉,不让分支生成,而“后”则是以后、后面,也就是分支形成以后进行剪枝操作。那么我要如何判断什么时候需要进行剪枝操作呢?其实很容易理解,如果剪枝后决策树模型在测试集验证上得到有效的提升,就判断其需要剪枝,否则不需要。

剪枝的操作对象是“分支的判别条件”,也就是减少不必要特征属性的介入,从而提高决策树分类效率,和测试集的预测能力。下面通过一个简单的例子进行说明:

某个样本数据集有两个类别(正类与负类),2 个特征属性,现在我们对 20 个样本进行分类。首先,在应用所有“特征属性”的情况下对样本进行分类。如下所示:

图2:决策树过拟合问题

上图 2 使用了两个特征属性对样本集合进行分类,最后正确分类的概率是 12/20。如果只通过特征 1 进行分类,也就是剪掉冗余特征 2,最后的结果又是怎样呢?如下图所示:

图3:决策树剪枝策略流程

通过后剪枝策略后,正确分类概率变成了 16/20。显而易见,剪枝策略使得正确分类的概率得到提高。

剪枝策略较容易理解,在实际情况中后剪枝策略使用较多。在分支生成后,使用后剪枝策略将冗余的子树及其判别条件直接剪掉,然后使用上个节点中占比最大的类做为最终的分类结果。

决策树算法和剪枝原理相关推荐

  1. 机器学习决策树算法和分类原理

    目录 1 决策树算法简介 2 决策树分类原理 2.1 熵 2.1.1 概念 2.1.2 案例 2.2 划分依据一 :信息增益 2.2.1 概念 2.2.2 案例 2.3 划分依据二 :信息增益率 2. ...

  2. 机器学习决策树算法cart剪枝

    目录 1 为什么要剪枝 2 常用的减枝方法 2.1 预剪枝 2.2 后剪枝 3 小结 1 为什么要剪枝 在决策树学习中,为了尽可能正确分类训练样本,结点划分过程将不断重复,有时会造成决策树分支过多,这 ...

  3. 【机器学习入门】(4) 决策树算法理论:算法原理、信息熵、信息增益、预剪枝、后剪枝、算法选择

    各位同学好,今天我向大家介绍一下python机器学习中的决策树算法的基本原理.内容主要有: (1) 概念理解:(2) 信息熵:(3) 信息增益:(4) 算法选择:(5) 预剪枝和后剪枝. python ...

  4. 决策树算法原理(ID3,C4.5)

    决策树算法原理(CART分类树) CART回归树 决策树的剪枝 决策树可以作为分类算法,也可以作为回归算法,同时特别适合集成学习比如随机森林. 1. 决策树ID3算法的信息论基础   1970年昆兰找 ...

  5. 决策树算法的原理(接地气版)

    ↑↑点击上方蓝字,N个G的惊喜 ❝ 决策树( )是一类很常见很经典的机器学习算法,既可以作为分类算法也可以作为回归算法.同时也适合许多集成算法,如 , ,以后会逐一介绍.本篇介绍一下决策树算法的原理. ...

  6. 决策树算法原理(下)

    在决策树算法原理(上)这篇里,我们讲到了决策树里ID3算法,和ID3算法的改进版C4.5算法.对于C4.5算法,我们也提到了它的不足,比如模型是用较为复杂的熵来度量,使用了相对较为复杂的多叉树,只能处 ...

  7. 决策树算法原理(上)

    决策树算法在机器学习中算是很经典的一个算法系列了.它既可以作为分类算法,也可以作为回归算法,同时也特别适合集成学习比如随机森林.本文就对决策树算法原理做一个总结,上篇对ID3, C4.5的算法思想做了 ...

  8. 决策树算法原理以及决策树规则生成方法

    决策树算法原理以及决策树规则生成方法 决策树是一种可解释性较强的策略分析工具.creditmodel提供了分类回归树和条件推断树两种决策树生成和提取规则的方法. 每一个风险管理人员都应该掌握使用决策树 ...

  9. 【机器学习】算法原理详细推导与实现(七):决策树算法

    [机器学习]算法原理详细推导与实现(七):决策树算法 在之前的文章中,对于介绍的分类算法有逻辑回归算法和朴素贝叶斯算法,这类算法都是二分类的分类器,但是往往只实际问题中yyy不仅仅只有{0,1}\{0 ...

最新文章

  1. REDIS的几个测试结果
  2. c:forEach varStatus=status中 varStatus的属性简介
  3. java 缓存的简单实现_Java8简单的本地缓存实现
  4. python ide: pycharm
  5. C++新特性探究(十一):enum class(struct)
  6. linux删除指定大小的文件,Linux 脚本删除大于指定大小的文件
  7. 如何设计自动化测试的代码结构
  8. matlab 马丢函数,振幅调制产生马丢光束的方法与流程
  9. python中数据结构的基本定义
  10. c语言输入相应的成绩评定信息,C语言上机练习题记答案.doc
  11. 30分钟看懂经济机器是如何运行的?
  12. MATLAB--特征值和特征向量 及具体应用
  13. 免费和开源引擎的游戏引擎,转载自维基
  14. Codeforces-1487 D. Pythagorean Triples(数学)
  15. 夏天推荐凉快的地方不嫌多!四明山这里更是集凉爽与好玩一起
  16. abs210桥堆的芯片多大,ASEMI-ABS210贴片整流桥
  17. 禁用计算机usb设备,电脑如何设置禁止使用USB设备以及电脑怎样屏蔽U盘使用功能...
  18. 最多只需三步,彻底解决VB6中不能加载MSCOMCTL.OCX的提示
  19. 2021-01-09:Microsoft Word2019 提示:很抱歉此功能看似已中断,并需要修复。请使用Windows控制面板中的“程序和功能”选项修复Microsoft Office
  20. fflush函数有什么作用?

热门文章

  1. ARM扩展嵌入式与物联网产品阵容,推全新Cortex-A32处理器
  2. 爱普搜 | 360造车;特斯拉陶琳回应:加强车主教育;吉利43万
  3. 计算机与应用要求,计算机基础与应用教学的基本要求.doc
  4. 何为儒家的四书五经?
  5. C/C++常用算法手册.pdf免费下载
  6. python c++情侣网名含义_#python和C/C++#让python和C/C++联姻
  7. 数据绑定控件GridView展示商品列表
  8. Vue2源代码解读(含源码)
  9. 第一封信 / 友子,你还在等我么
  10. Openlayers3 实现点击不同的图标弹出不同的popup信息