16 决策树

决策树是一种监督学习算法,以树状图为基础,其输出结果为一系列简单实用的规则。它就是一系列的if-then语句,既可以用于分类问题,也可以用于回归问题。构建决策树之通常包括三个步骤:

  1. 特征选择

2)决策树生成

3)决策树剪枝

在介绍具体步骤之前首先介绍信息熵的概念。

16.1 信息熵

信息熵,是一个与信息有关的概念,一般而言,是可以量化的。信息量的大小跟事情的不确定性有关。它应该满足以下4个特点:

  1. 不是负数。
  2. 信息量与信息量间可以相加。
  3. 信息量与概率有关,它连续依赖于概率。
  4. 信息量的大小与可能结果数有关。

-log(x)(0<x<1,底数大于1)满足以上四个特点。即一个事件的信息量就是这个事件发生的概率的负对数。信息熵是跟所有可能性有关系的。每个可能事件的发生都有个概率。信息熵就是平均而言发生一个事件我们得到的信息量大小。所以数学上,信息熵其实是信息量的期望。熵:度量随机变量的不确定性。(纯度)

定义:

假设随机变量X的可能取值有,对于每个可能的取值,其概率,因此随机变量X的熵为:

对于样本集合D来说,随机变量X是样本的类别,即,假设样本有K个类别,||表示类别k的样本个数,|D|表示样本总数,则对于样本集合D来说熵为:

熵越大,样本的不确定性就越大。

16.2 特征选择

特征选择指选择有较强分类能力的特征。而分类能力通过信息增益或者信息增益比来刻画。选择特征的标准是找出局部最优的特征作为判断进行切分,取决于切分后节点数据集合中类别的有序程度(纯度),划分后的分区数据越纯,切分规则越合适。衡量节点数据集合的纯度有:熵、基尼系数和方差。熵和基尼系数是针对分类的,方差是针对回归的

16.2.1 信息增益(ID3算法)

信息增益是以某特征划分数据集前后的熵的差值。熵可以表示样本集合的不确定性,熵越大,样本的不确定性就越大。因此,可以用某特征划分数据集前后的熵的差值来衡量此特征对于样本集合D划分效果的好坏。给定特征A与训练数据集D,定义信息增益为:

信息增益的缺点是偏向取值较多的特征。特征的值较多时,根据此特征划分更容易得到纯度更高的子集,故划分之后的熵更低,因为划分前的熵是一定的,所以信息增益更大,更偏向取值较多的特征。

16.2.2 信息增益比(C4.5算法)

可以通过定义信息增益比来解决信息增益向取值较多的特征的问题。特征A对训练集D的信息增益比定义为:

其中,表示将当前特征A作为随机变量(取值为特征A的各个特征值)求得的经验熵。

16.2.3 C4.5算法演示

以weka中的天气数据为例(weather.norminal.arff),演示C4.5算法,数据集如下图所示:

令S为天气数据集,共14个样本,每个样本有5个属性。类别标签属性play有两个值{C1=yes,C2=no}。C1=yes在S中出现的概率为9/14,C2=no出现的概率为5/14。因此S的熵为:

第一步:计算所有属性划分数据集S所得的信息增益。

以属性windy为例,取值为{FASLE,TRUE},将S划分为2个子集{S1(8个),S2(6个)}。

对于S1,play=yes有6个样本,play=no有2个样本,则:

对于S2,play=yes有3个样本,play=no有3个样本,则:

则利用属性windy划分S后的熵为:

则按属性windy划分数据集S所得的信息增益值为:

同理,得到S对其他所有属性的信息增益,列示如下:

第二步:计算各个属性的分裂信息和信息增益比。

以outlook属性为例,取值为overcast的样本有4条,取值为rain的样本有5条,取值为sunny的样本有5条:

同理,计算其他属性的信息增益比:

第三步:将信息增益率取值最大的那个属性作为分裂节点,因此以outlook属性作为决策树的根节点。

第四步:对根决策节点的三个不同取值的分支,递归调用以上方法,求子树。最后得到的决策树如下图:

16.3 决策树生成

基本的决策树的生成算法中,典型的有ID3生成算法和C4.5生成算法,它们生成树的过程大致相似,ID3是采用的信息增益作为特征选择的度量,而C4.5则采用信息增益比。

两种算法的比较:

C4.5算法继承ID3算法的优点,并在以下几方面对ID3算法进行了改进:

  1. 用信息增益率来选择属性,克服了用信息增益选择属性时偏向选择取值多的属性的不足。
  2. 在树构造过程中进行剪枝。
  3. 能够完成对连续属性的离散化处理。
  4. 能够对不完整数据进行处理。

C4.5算法有如下优点:产生的分类规则易于理解,准确率较高。其缺点是:在构造树的过程中,需要对数据集进行多次的顺序扫描和排序,因而导致算法的低效。此外。C4.5只适合于能够驻留于内存的数据集,当训练集大得无法在内存容纳时程序无法运行。C4.5和ID3两个算法只有树的生成算法,生成的树容易产生过拟合。即对训练集匹配很好,但是预测测试集效果较差。

16.4 决策树停止生成条件

决策树不会无限制的生长,总会有停止分裂的时候,最极端情况为节点分裂到只剩一个数据点时自动停止分裂。为降低决策树的复杂度和提高预测精度,会适当提前终止节点的分裂(先剪枝)。决策树停止分裂的一般性条件为:

  1. 最小节点数

当节点数小于一个指定数时,不再继续分裂。因为数据量较少时,再做分裂容易强化噪声数据的作用。其次,降低树生长的复杂性,提前结束分裂一定程度上有利于降低过拟合的影响。

  1. 熵或基尼指数小于阀值

熵和基尼指数(PS:后面介绍)的大小表示数据的复杂程度,当熵或者基尼值过小时,表示数据的纯度比较大,如果熵或者基尼值小于一定程度数,节点停止分裂。

  1. 决策树的深度达到指定上限。
  2. 所有特征已经使用完毕。

16.5 决策树剪枝

决策树需要剪枝的原因是:决策树生成算法生成的树对训练数据的预测很准确,但是对于末知的数据分类却很差,这就产生过拟合的现象。决策树剪枝过程是从已生成的决策树上裁掉一些子树或者叶节点。

决策树剪枝的方案一般有两种:先剪枝与后剪枝。先剪枝即提前结束决策树的增长,与上述决策树停止生长的方式一样。后剪枝是指决策树生长完成后再进行剪枝的过程。CRAT算法使用的剪枝方式是先剪枝和后剪枝相结合的方法,而C4.5算法使用后剪枝方式。后剪枝方案如下:

16.5.1 错误率降低剪枝(REP)

即根据错误率进行剪枝,如果一颗子树修剪前后错误率没有下降,可认为该子树可以修剪。REP剪枝需要用新的数据集,原因是如果用旧的数据集,不可能出现分裂后的错误率比分裂前错误率要高的情况。由于使用新的数据集没有参与决策树的构建,能够降低训练数据的影响,降低过拟合的程度,提高预测的准确率。

16.5.2 悲观剪枝(PEP)

悲观剪枝即认为决策树的精度在剪枝前后没有影响的话,则进行剪枝。怎样才算是没有影响?如果剪枝后的误差小于剪枝前经度的上限,则说明剪枝后的效果与剪枝前的效果一致,此时要进行剪枝。

16.5.3 代价复杂度剪枝(CCP)

代价复杂度选择节点表面误差率增益值最小的非叶子节点,删除该非叶子节点的左右子节点,若有多个非叶子节点的表面误差率增益值相同小,则选择非叶子节点中子节点数最多的非叶子节点进行剪枝。

表面误差率增益值计算公式如下:

其中,R(t)表示叶子节点的误差代价,R(T)表示子树的误差代价,N(T)表示子树节点个数。r(t)为节点的错误率,p(t)为节点数量的占比;(t)为子节点i的错误率,表示节点i的数据节点占比。

16.6 CART模型

分类与回归树(CART)模型也是一种决策树模型。它即可以用于分类,也可以用于回归。回归生成树采用平方误差最小化策略,分类生成树采用基尼指数最小化策略。

16.6.1 基尼指数

基尼指数表示在样本中一个随机选中的样本被分错的概率。Gini指数越小表示集合中被选中的样本被分错的概率越小,也就是说集合的纯度越高,反之,集合越不纯。即:基尼指数(基尼不纯度)= 样本被选中的概率*样本被分错的概率。公式为:

表示选中的样本属于k类别的概率,则这个样本被分错的概率是(1-)。样本集合中有K个类别,一个随机选中的样本可以属于这k个类别中的任意一个,因而对类别就加和。样本集合D的Gini指数(假设集合中有K个类别)则:

16.6.2 CART算法

机器学习笔记(参考吴恩达机器学习视频笔记)16_决策树相关推荐

  1. 【学习笔记】吴恩达机器学习 WEEK 0

    资源地址 课程地址:https://www.coursera.org/learn/machine-learning/home/welcome GIthub上的Python代码:https://gith ...

  2. 【学习笔记】吴恩达机器学习 WEEK1

    Introduction 机器学习算法分类 监督学习 Supervised learning 无监督学习 Unsupervised learning 监督学习 回归 regression map in ...

  3. 【学习笔记】吴恩达机器学习 WEEK2 线性回归 Octave教程

    Multivariate Linear Regression Multiple Features Xj(i)X_j^{(i)}Xj(i)​ 其中j表示迭代次数,i表示矩阵索引 转换 原来:hθ(x)= ...

  4. github标星11600+:最全的吴恩达机器学习课程资源(完整笔记、中英文字幕视频、python作业,提供百度云镜像!)...

    吴恩达老师的机器学习课程,可以说是机器学习入门的第一课和最热门课程,我在github开源了吴恩达机器学习个人笔记,用python复现了课程作业,成为热门项目,star数达到11671+,曾经有相关报道 ...

  5. 吴恩达机器学习笔记——Day2——Octave使用基础

    观看的视频来自网易云课堂--<吴恩达机器学习> http://吴恩达机器学习 - 网易云课堂 https://study.163.com/course/courseMain.htm?cou ...

  6. 吴恩达机器学习与深度学习作业目录 [图片已修复]

    python3.6 (一) 吴恩达机器学习作业目录 1 吴恩达机器学习作业Python实现(一):线性回归 2 吴恩达机器学习作业Python实现(二):logistic回归 3 吴恩达机器学习作业P ...

  7. 吴恩达机器学习视频学习笔记

    吴恩达机器学习视频笔记 介绍 Introduction 线性回归 Linear Regression 单变量 One Variable 多变量 Multiple Variables 多项式回归 Pol ...

  8. Github标星24300!吴恩达机器学习课程笔记.pdf

    个人认为:吴恩达老师的机器学习课程,是初学者入门机器学习的最好的课程!我们整理了笔记(336页),复现的Python代码等资源,文末提供下载. 课程简介 课程地址:https://www.course ...

  9. 下载量过百万的吴恩达机器学习和深度学习笔记更新了!(附PDF下载)

    今天,我把吴恩达机器学习和深度学习课程笔记都更新了,并提供下载,这两本笔记非常适合机器学习和深度学习入门.(作者:黄海广) 0.导语 我和同学将吴恩达老师机器学习和深度学习课程笔记做成了打印版,放在g ...

  10. 吴恩达机器学习课程笔记(英文授课) Lv.1 新手村(回归)

    目录 1-1机器学习的相关名词 1-2 什么是机器学习? 1.definition 定义 2.主要的机器学习算法的分类 1-3有监督学习及常用算法 1.定义 2.两种数据类型补充:categorica ...

最新文章

  1. nyoj 776 删除元素
  2. 【企业管理】2020年的经营关键词
  3. ResNet才是YYDS!新研究:不用蒸馏、无额外数据,性能还能涨一波
  4. win10系统调用架构分析
  5. mysql插入图片数据
  6. WEBGL的测试网站和基础知识
  7. python基本代码教程-Python入门教程丨1300多行代码,让你轻松掌握基础知识点
  8. linux下自动补全问题: autocomplete sh: ( compgen -d — ” ): No such file or directory
  9. Oracle 过程(Procedure)、函数(Function)、包(Package)、触发器(Trigger)
  10. 《Spring Boot极简教程》 第6章 Springboot数据库集成
  11. ApacheCN 活动汇总 2019.7.27
  12. 三星手机不能连接无线网络连接服务器,手机已连接wife但无法访问互联网
  13. 为什么鼓励工程师写博客
  14. 后台模拟页面登陆_微信直播小程序后台,微信朋友圈可直达小程序直播了
  15. 步进电机+protues
  16. Vue 人资 实战篇七 员工管理上 封装通用的组件、formatter属性、过滤器的使用、树形结构、建立公共导入的页面路由、excel的导入和导出、
  17. 自考学历到底有没有用?
  18. java security用法_Java加密体系(一)java.security包
  19. Microsoft Office Excel 不能访问文件。。。 可能的原因有。。。
  20. 简单好用的免费进销存软件发布

热门文章

  1. python多次判断_python - 怎么判断函数或方法多次使用是否需要定义临时变量?
  2. python windows ui自动化_pywinauto处理UI自动化
  3. QVideoWidget遇到的坑。
  4. 公钥加密_河海大学陆阳、李继国:不依赖双线性对的带关键字搜索的无证书公钥加密方案构造...
  5. DLL导出类避免地狱问题的完美解决方案
  6. c++\MFC测试代码的运行时间
  7. 》》css3--动画
  8. 实体词典 情感词典_情感词典最全版
  9. VBA新手教程:抽卡模拟实战(3)
  10. 在VBA中调用Windows API的方法