数据分析之决策树

决策树的工作原理

决策树基本上就是把我们以前的经验总结起来,我给你准备一个打篮球的训练集。如果我们要出门打篮球,一般会根据’天气’、’温度‘、’湿度‘、’刮风‘这几个条件来判断,最后得到的结果:去打篮球?还是不去?

一般做决策树会有两个阶段:构造和剪枝

构造

构造的过程就是选择什么属性作为节点的过程

  1. 跟节点:就是树的顶端
  2. 内部节点:就是树中间的那些节点
  3. 叶节点:就是树最底部的节点

剪枝

剪枝就是给决策树瘦身,之所以这么做就是为了防止过拟合

过拟合就是说这个模型训练的太好了,不符合实际情况

欠拟合和过拟合就好比下面的图片,训练结果太好反而在实际应用过程中会导致分类错误

一般导致过拟合的原因是训练集太小了,导致决策树容易在真实数据分类中出现错误

用一个实际例子来展示更容易方便大家理解

这里采用一个篮球的训练集

在开始先,要提及一下关于纯度和信息熵的概念

纯度

这个你可以把决策树的构造过程理解成为寻找纯净值划分的过程。数学上,我们可以用纯度来表示,纯度换成一种方式来解释就是让目标变量的分歧最小

假如有3个集合

  • 集合1:6次都去打篮球
  • 集合2:4次都去打篮球,2次不去打篮球
  • 集合3:3次都去打篮球,3次不去打篮球

按照纯度指标来说,集合1>集合2>集合3。因为集合1的分歧最小,集合3的分歧最大

信息熵

它表示了信息的不确定度

计算信息熵的公式:

p(i|t)代表了节点t为分类i的概率,其中log2为取以2为底的对数,当不确定性越大,它所包含的信息量也就越大,信息熵也就越高

假如有2个集合

  • 集合1: 5次去打篮球,1次不去打篮球
  • 集合2: 3次去打篮球,3次不去打篮球

计算集合1的信息熵就是:

​ Entropy(t) = -(1/6)log2(1/6) - (5/6)log2(5/6) = 0.65

计算集合2的信息熵就是:

​ Entropy(t) = -(3/6)log2(3/6) - (3/6)log2(3/6) = 1

从上面的计算结果中可以看出,信息熵越大,纯度越低。当集合中的所有样本均匀混合时,信息熵最大,纯度最低

在构造决策树的时候,会基于纯度来构造。而经典的“不纯度”的指标有三种,分别是信息增益(ID3算法)、信息增益率(C4.5算法)以及基尼指数(Cart算法)

ID3算法

ID3算法计算的是信息增益,信息增益指的是划分可以带来纯度的提高,信息熵的下降。计算公式为父亲节点的信息熵减去所有子节点的信息熵。在计算的过程中,提高每一个子节点的归一化信息熵,既按照每一个子节点在父节点出现的概率,来计算这些子节点的信息熵,公式为:

公式中D是父亲节点,Di是子节点,Gain(D,a)中的a作为D节点的属性选择

例如:

假设天气 = 晴的时候,会有5次去打篮球,5次不去打篮球,其中D1刮风 = 是,有2次打篮球,1次不打篮球,D2 = 否,有3次打篮球,4次不打篮球,那么a节点代表的是天气 = 晴

公式可以写成:

也就说D节点的信息熵-2个子节点的归一信息熵。2个子节点归一化信息熵 = 3/10的D1信息熵 + 7/10的D2的信息熵

基于ID3的算法规则,完整的计算出我们的训练集,训练集一共有7条数据,3个打篮球,4个不去打篮球,根节点的信息熵是:

如果将天气作为属性划分,会有三个叶子节点,D1 D2 D3分别对应的是晴天,阴天,小雨,用+号代表打篮球,-号代表不去打篮球,公式如下:

因为我们用ID3中的信息增益来构造决策树,所以要计算每个节点的信息增益

天气作为属性节点的信息增益为,Gain(D,天气) = 0.985-0.965 = 0.020

同理可以计算其他属性作为根节点的信息增益,如下

Gain(D,温度) = 0.128

Gain(D,湿度) = 0.020

Gain(D,刮风) = 0.020

从上面看温度作为属性的信息增益最大,因为ID3就是要将信息增益最大的节点作为父节点,这样就可以得到纯度高的决策树,所以我们将温度作为根节点。如下:

然后再对第一个叶节点进行分裂,计算其不同属性(天气,温度,刮风)作为节点的信息增益,如图:

这样就可以得到一颗决策树,ID3的算法相对比较简单,可解释性强,同样也存在缺陷,ID3倾向选择取值比较多的属性。如果把”编号“作为一个属性,那么”编号“会被选为最优属性,但实际上”编号“是无关属性的,它对”打篮球“分类并没有太大作用。

所以ID3的缺陷就是,容易对某个无意义的属性进行误判

因此C4.5算法就是在ID3的基础上进行改良

改良的方向:

1、采用信息增益率

C4.5采用信息增益率的方式来选择属性。信息增益率 = 信息增益 /属性熵

当属性有很多值的时候,相当于被划分成许多份,虽然信息增益变大了,但对于C4.5来说,属性熵也会变大,所以整体的信息增益率并不大

2、采用悲观剪枝

在C4.5中,会对决策树构造进行悲观剪枝(PER),这样可以提升决策树的泛化能力

悲观剪枝是后剪枝技术的一种,通过递归估算每个内部节点的分类错误率,比较剪枝前后,这个节点的分类错误率来决定是否对其进行剪枝,这种剪枝方法不再需要一个单独的测试数据集

3、离散化处理连续属性

C4.5可以处理连续属性的情况,对连续的属性进行离散化的处理。比如打篮球存在的“湿度”属性,不按照“高”,“中”划分,而是按照湿度值进行计算,那么湿度取什么值都有可能,该怎么选择这个阈值,C4.5选择具有最高信息增益的划分所对应的阈值

4、处理缺失值

针对数据集不完整,C4.5也可以进行处理

假如我们得到的是如下的数据,你会发现这个数据中存在两点,第一个问题是,数据集中存在数值缺少的情况,如何进行属性选择?第二个问题是,假设已经做了属性划分,但是样本在这个属性上有缺少值,该如何对样本进行划分?

数据集如下:

我们不考虑缺少的数值,可以得到温度D={2-,3+,4+,5-,6+7-}。温度 = 高:D1 = {2-,3+,4+};温度 = 中:D2 = {6+,7-};温度 = 低: D3={5-}。这里+号代表打篮球,-号代表不打篮球。比如ID=2时,决策是不打篮球,我们可以记录为2-

针对将属性选择为温度的信息增为:

Gain(D,温度) = Ent(D)-0.792 = 1.0-0.792 = 0.208

属性熵 = 1.459,信息增益率Gain_ratio(D,温度) = 0.208/1.459 = 0.1426

D的样本个数为6,而D的样本个数为7,所以所占权重比例为6/7,所以Gain(D,温度)所占权重比例为6/7,所以:

Gain_ratio(D,温度) = 6/7*0.1426 = 0.122

这样即使在温度属性的数值有缺失的情况下,我们依然可以计算信息增益,并对属性进行选择

总结

ID3算法的优点是方法简单,缺点是对噪声敏感,容易进行误判

C4.5在ID3的基础上,用信息增益率代替信息增益,解决了噪声敏感的问题,并且可以对构造树进行剪枝,处理连续数值以及数值缺少等情况,但是由于C4.5需要对数据集进行多次扫描,算法效率较低

即使在温度属性的数值有缺失的情况下,我们依然可以计算信息增益,并对属性进行选择

总结

ID3算法的优点是方法简单,缺点是对噪声敏感,容易进行误判

C4.5在ID3的基础上,用信息增益率代替信息增益,解决了噪声敏感的问题,并且可以对构造树进行剪枝,处理连续数值以及数值缺少等情况,但是由于C4.5需要对数据集进行多次扫描,算法效率较低

数据分析算法-决策树(上)-课堂学习笔记相关推荐

  1. 23神经网络 :唐宇迪《python数据分析与机器学习实战》学习笔记

    唐宇迪<python数据分析与机器学习实战>学习笔记 23神经网络 1.初识神经网络 百度深度学习研究院的图,当数据规模较小时差异较小,但当数据规模较大时深度学习算法的效率明显增加,目前大 ...

  2. 拉勾启源老师mysql讲义,【拉勾教育数据分析实战训练营】--Tableau学习笔记-重点回顾1...

    [拉勾教育数据分析实战训练营]--Tableau学习笔记-重点回顾1 [拉勾教育数据分析实战训练营]--Tableau学习笔记-重点回顾1 以下是我搜罗的一些官方优秀case分享: 1.https:/ ...

  3. 机器学习实战(Machine Learning in Action)学习笔记————06.k-均值聚类算法(kMeans)学习笔记...

    机器学习实战(Machine Learning in Action)学习笔记----06.k-均值聚类算法(kMeans)学习笔记 关键字:k-均值.kMeans.聚类.非监督学习 作者:米仓山下 时 ...

  4. 数据分析与爬虫实战视频——学习笔记(一)(python基础、urllib、超时设置、自动模拟HTTP请求、异常处理、浏览器伪装、代理服务器、新闻爬虫、淘宝登陆和图片爬取)

    未经允许,请勿转载. 连载未完成状态 网址: [数据挖掘]2019年最新python3 数据分析与爬虫实战_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili https://www.bilibili ...

  5. 陈宝林《最优化理论与算法》超详细学习笔记 (八)————最优性条件

    陈宝林<最优化理论与算法>超详细学习笔记 (八)----最优性条件 无约束问题的极值条件 必要条件 二阶充分条件 充要条件 约束极值问题的最优性条件 不等式约束的一阶最优性条件 无约束问题 ...

  6. 陈宝林《最优化理论与算法》超详细学习笔记 (七)————第五章 运输问题

    陈宝林<最优化理论与算法>超详细学习笔记 (七)----第五章 运输问题 第1节 运输问题的数学模型 第2节 表上作业法 2.1 确定初始基可行解 2.2 最优解的判别 2.3 改进的方法 ...

  7. 陈宝林《最优化理论与算法》超详细学习笔记 (四)————第四章 对偶理论

    陈宝林<最优化理论与算法>超详细学习笔记 (四)----第四章 对偶理论 1. 对偶问题的提出 2. 线性规划的对偶理论 2.1 原问题与对偶问题的关系 2.2 对偶问题的基本性质 3. ...

  8. 陈宝林《最优化理论与算法》超详细学习笔记 (二)————补充知识(凸集) 第二章 线性规划的基本性质

    陈宝林<最优化理论与算法>超详细学习笔记 (二)----补充知识 凸集 & 第二章 线性规划的基本性质 补充知识 凸集 方向与极方向 表示定理 择一定理 第一章 线性规划的基本性质 ...

  9. Kaldi决策树状态绑定学习笔记(一)

    建议在csdn资源页中免费下载该学习笔记的PDF版进行阅读:)点击进入下载页面 Kaldi决策树状态绑定学习笔记(一) --如何累积相关统计量? 目录 Kaldi决策树状态绑定学习笔记一 如何累积相关 ...

  10. 算法【二叉树】学习笔记 - 已知结点数计算可构建出多少种二叉树

    算法[二叉树]学习笔记 - 已知结点数计算可构建出多少种二叉树 卡特兰数 相关知识点 排列组合公式 排列 Arrangement 组合 Combination 分步计算 简化 参考资料 题目:已知3个 ...

最新文章

  1. FPGA 内部双口块RAM 读写实现
  2. 大数据搜索:Python编码实战
  3. 那些年,我还在学习actionscript
  4. html表单显示提示,html侧栏对应表单的提示显示
  5. SSH服务的渗透测试
  6. Thinkphp 整合tcpdf
  7. git删除本地分支、删除远程分支 复制分支
  8. js 判断数据是否为空
  9. flask 安装flask_resultful
  10. 16 CO配置-控制-产品成本控制-产品成本计划编制-定义成本构成结构
  11. java jexl 工具类_jexl表达式解析、计算工具类.md
  12. rename批量修改文件名
  13. 企业为什么要上智能仓储系统?
  14. DLL的Export和Import及extern
  15. ORBSLAM2在ubuntu20.04上运行,实时单目摄像头(适用高版本的PCL,OpenCV4.2.0等)
  16. 使用lxml爬取豆瓣电影排行榜
  17. 笔记本使用HDMI连接显示器没反应
  18. CC2630 7x7 更改为5X5
  19. unity (初学者的个人问题)
  20. opencv-python——调用摄像头录制并保存视频

热门文章

  1. C#支付宝当面付扫码支付开发,包括demo代码的修改和蚂蚁金服开发平台的配置
  2. HLS调用vitis库
  3. hibernate 学习笔记-操作数据库
  4. 五大车载操作(VOS)系统优劣对比,车载系统架构分析-QNX系统性能分析
  5. 无线蓝牙耳机哪个品牌好?蓝牙降噪耳机品牌推荐
  6. 基于OpenCV的人脸识别签到系统
  7. linux vi模式下基本命令和快捷键
  8. 移动宽带frp内网穿透访问家中网络(by quqi99)
  9. [GXYCTF2019]禁止套娃
  10. 笔记本电脑不显示WIFI列表无法连接到网络的解决办法