文 | 菊子皮 (转载请注明出处)同名B站:AIAS编程有道

「摘要:」  决策树在机器学习算法中是一个相对简单的算法,如果不能进行适当的剪枝就容易造成模型的过拟合。决策树算法也是当前很多集成学习算法的基础,集成算法的效果往往比单独使用决策树算法效果更好。

「关键词:」 决策树,集成学习

1 初识决策树

决策树就是一个根据原始数据的特征的重要性逐渐确定数据的类别的一种算法。之所以被称为决策树,是因为训练的模型根据训练的数据确定特征的重要性,然后对测试数据分析时会根据不同数据的各个特征值一步一步地分析到分类,就如同一棵树从树根到树叶的路径一样,可参考下图:决策树传统上来讲主要是用来做分类的,但是也不排除可以使用该算法进行回归分析,之前的文章也有过介绍如:【机器学习】分类算法其实也可做回归分析——以knn为例。本文主要介绍使用决策树进行分类的原理。

2 构造决策树

刚才说到,决策树是根据数据的不同重要的特征进行一步一步地划分数据的,那么使用什么指标来确定特征的重要性呢?当前主要使用的衡量指标是「信息熵」「基尼(Gini)指数」

2.1 通过熵构建决策树

2.1.1 信息熵

文献1中指出,信息熵是衡量信息不确定性的指标,不确定性是一个事件出现不同结果的可能性。对应的计算公式如下:

其中,是随机变量的一个可能事件,则代表该事件发生的概率。以常见的掷硬币为例,两枚骰子正反面出现的概率如下:

硬币 概率
正面 0.5
反面 0.5

对于该硬币掷出去后,信息熵如下:

硬币 概率
正面 0.99
反面 0.01

同理,对于该硬币掷出去后,信息熵如下:

从上面的例子我们可以看出,第二枚硬币正面的概率为0.99,我们基本可以认为硬币掷出去后是正面,所有信息熵比较小,而对于第一枚硬币,由于正反面概率相同,这时掷出硬币后就比较难确定正反面了,信息熵也就比较大了。

2.1.2 条件熵

在决策树确定特征的重要性时除了信息熵以外,还会用到「条件熵」。在给定随机变量的条件下,随机变量的不确定性。公式如下:

其中和分别是随机变量、的一个事件。

2.1.3 信息增益

信息增益的定义就是:事件的熵值减去对应的条件熵,代表了在一个条件下,信息不确定性减少的程度。通过下面的公式就可以了解。

「当信息增益越大,那么在这个条件下知晓后,事件就比较容易确定了」。计算案例可以参考如下(知道某个条件后分成将原始数据分成了两堆):

2.1.4 决策树结构过程

有以下数据,该数据是在不同天气情况下客户打高尔夫球的记录。每条数据包含Outlook、Temp、Humanity、Wind四个特征以及对应的数据标签是否Play Golf。现在我们就可以通过结合天气信息较少不确定性来判断在一些情况下客户是否会打Golf。而每个特征都有多个取值。现在我们需要明确研究对象,即是否打Golf。第一步就是:计算Play Golf的熵,可以根据下表进行计算:首先是构建根节点,先看Play Golf 的熵:在14 条历史数据中,打球的概率为0.64,不打球的 概率为0.36,熵值为0.94。第二步就是:寻找晴朗程度、湿度、风力和温度四种状况与是否打高尔夫相关性最高的一个特征,进行决策树构建。

  1. 以Outlook为条件计算的条件熵和信息增益如下:那么使用Outlook的条件熵:

信息增益:0.940-0.69=0.25 (最佳分割特征)

2. 同理分别以Temp、Humidity、Wind计算出对应的信息增益结果为:0.02,0.15,0.05.

3. 经比较Outlook的信息增益最大,将其设置为第一个分类依据特征,根据Outlook的取值就可以构建如下图的树:根据上图结果可以看出在Outlook为Overcast时,这时全部是Play Golf,进而可将决策树简化为下图:但是在Sunny和Rainy这两个分支中还有数据需要继续划分,划分时只用考虑Temp、Humidity、Wind这三个特征。「在Sunny枝节上的划分时」,如下图:从图中可以看出在Wind特征中,只要是False就Play Golf,True就不打Golf, 也就是说可以对剩下的数据进行划分了,这个枝节结束。当然,同样可以使用信息增益的方式确定这三个特征的优先级。

「在Rainy枝节上的划分时」,如下图:从图中可以看出在Humidity特征中,只要是Normal就Play Golf,High就不打Golf,同样也可以使用信息增益的方式选择该特征。另一方面说,这时针对训练数据,决策树就构建完成了。

2.1.5 决策树模型数据预测

假设我们有一个数据如下:

Outlook Temp Humidity Wind Play Golf
Sunny Mild High False ?

那么根据刚刚构建的决策树模型,则有下图:那么就可以预测出“True”,即去打Golf。以这种方式构建决策树的算法称为ID3决策树生成算法。

2.2 基于基尼指数构建决策树

使用基尼指数去确定数据的特征的重要性。根据文献1介绍,「基尼指数(Gini不纯度)表示在样本集合中一个随机选中的样本被分错的概率。」注:Gini指数越小表示集合中被选中的样本被分错的概率越小,也就是说集合的纯度越高,反之集合就不纯。当集合中所有样本为一个类时,基尼指数为0. 在当前特征条件下,对于是否打Golf,当基尼指数越小时那么,那么集合纯度越大,其对应的特征就越重要。根据文献2基尼指数定义如下:分类问题中,假设有K个类,样本点属于第k类的概率为,则概率分布的基尼指数如下:

使用基尼指数的方式与信息熵相同,使用基尼增益确定哪个特征的重要性,下面来看一个例子。

2.2.1 使用基尼指数构建决策树

依然使用根据天气预测是否打高尔夫球的案例,数据在2.1.4节。根据原始数据计算基尼不纯度,一个14条数据,5次No,9次Yes,则基尼不纯度为:

以Outlook特征为条件的基尼指数计算,这时Outlook特征不同取值的概率就可看成一个权重,而Outlook一个取值下存在Play Golf和不打Golf,那么在这个特征下加权的基尼不纯度为:

注:gini(a,b)表示,在当前条件两种结果出现的次数a,b下的基尼指数。进而可以计算出Gini增益为:0.459-0.342=0.117 同理可计算出分别以Temp,Wind,Humidity为条件的特征的基尼增益为:0.0185,0.0304,0.0916。经比较Outlook的基尼增益最大,特征最重要,与使用熵的方式相类似,以此类推就可以构建一个决策树了。

2.3 基于信息增益比构建决策树

由于以信息增益作为划分训练数据集特征,存在偏向于选择取值较多的问题。使用信息增益比可以对这一问题进行校正。根据文献2,可知「信息增益比」:特征A对训练数据集D的信息增益比为:其信息增益与训练数据集D关于特征A的值的熵之比。其中公式如下:

这里的n表示特征A取值的个数。以这种方式构建决策树的算法称为「C4.5」决策树生成算法。

Reference

[1] 集成学习:XGBoost, lightGBM. https://www.bilibili.com/video/BV1Ca4y1t7DS

[2] 李航.统计学习方法[M]. 北京,清华大学出版社:55-75

剑指Offer刷题集| Python基础

更多精彩文章

如何用Python书写计算任一多变量函数任一点的偏导导数值?

一个绘制决策树的工具——graphviz,但你忽视了它的其他功能,如结构句法分析结果!

知道线性回归,但你知道什么是岭回归(Ridge Regression)和LASSO回归吗?

VSCode再添新功能——绘制流程图,来看看如何操作吧!

如何批量安装和导出Python项目的依赖库?

如何解决下载Github源码慢的问题

分类算法其实也可做回归分析——以knn为例

K近邻(knn)算法是如何完成分类的?

sklearn机器学习入门案例——使用k近邻算法进行鸢尾花分类

一本不错的Python书籍推荐给你

kmeans聚类以及kmeans应用——图片压缩 案例

Python中的迭代器和生成器

最优化问题:拉格朗日乘子法、KKT条件以及对偶问题

id3决策树 鸢尾花 python_决策树算法——集成学的基础!相关推荐

  1. id3决策树 鸢尾花 python_机器学习之分类回归树(python实现CART)

    机器学习之分类回归树(python实现CART) 之前有文章介绍过决策树(ID3).简单回顾一下:ID3每次选取最佳特征来分割数据,这个最佳特征的判断原则是通过信息增益来实现的.按照某种特征切分数据后 ...

  2. id3决策树 鸢尾花 python_C4.5决策树Python代码实现

    C4.5决策树Python代码实现 我们知道C4.5决策树与ID3决策树最主要的区别就是C4.5使用信息增益率来划分最优属性.因为使用信息增益来划分属性的话会存在以下这些缺点:对可取属性多的特征有偏好 ...

  3. 机器学习强基计划2-2:一文详解ID3、C4.5、CART决策树算法+ Python实现

    目录 0 写在前面 1 什么是决策树? 2 决策树算法框架 3 常见决策树算法 3.1 ID3算法 3.2 C4.5算法 3.3 CART算法 4 Python实现三种决策树算法 4.1 数据集 4. ...

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

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

  5. python决策树分类鸢尾花_基于决策树—鸢尾花分类

    决策树算法广泛应用于:语音识别.医疗诊断.客户关系管理.模式识别.专家系统等,在实际工作中,必须根据数据类型的特点及数据集的大小,选择合适的算法. 本文选择经典案例--<鸢尾花分类> 一. ...

  6. 机器学习 决策树算法

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

  7. 通俗地说决策树算法(二)实例解析

    前情提要: 通俗地说决策树算法(一)基础概念介绍 一. 概述 上一节,我们介绍了决策树的一些基本概念,包括树的基本知识以及信息熵的相关内容,那么这次,我们就通过一个例子,来具体展示决策树的工作原理,以 ...

  8. 决策树算法及Python实现

    1 什么是决策树 决策树(Decision Tree)是一种基本的分类与回归方法,本文主要讨论分类决策树.决策树模型呈树形结构,在分类问题中,表示基于特征对数据进行分类的过程.它可以认为是if-the ...

  9. 决策树算法——选择困难症的“良药”

    "To be , or not to be:that is the question"(生存还是毁灭:这是一个问题),这是著名的莎士比亚悲剧<哈姆雷特>中的主人公一句非 ...

最新文章

  1. 为什么结构主机和全局编录服务器不能放在同一个域控制器上?
  2. 产品经理在创造AI,到底在创造什么
  3. Debain/ArchLinux/Gentoo 等将合并为超级Linux
  4. Webview--如何让加载进来的页面自适应手机屏幕分辨率居中显示
  5. 2020年下半年信息系统项目管理师章节占分比
  6. 打破信息孤岛完成EAI
  7. linux下安装Mysql(干货!!!)解决mysql 1130问题,远程登录问题
  8. mysql 查询两张表结构相同的数据库_利用反射处理多个表结构相同的数据的查询和数据库表的关联...
  9. 人脸识别接口_人工智能 人脸识别双目模组摄像头 活体检测的重要作用
  10. 竞彩足球混合过关赔率API调用示例代码
  11. Antenna Placement(二分图的最大匹配)
  12. 越优秀的人,越早想通透这七件事
  13. java对象的实例化_java实例化对象的几种方式
  14. 『Hammerspoon』Mac 锁屏自动开关蓝牙
  15. 网页换肤--setAttribute - css
  16. code::blocks自动补全诸如socket或者其它一些库中的函数
  17. 网易云音乐歌单或歌曲封面提取
  18. HTML5面试题及答案
  19. VMR7100/VMM7100 Typ-C/DP转HDMI2.1 8K设计方案|替代VMM7100/VMR7100芯片|GSV6201可完全替代兼容 VMM7100/VMR7100
  20. CTF之做题总结(一)

热门文章

  1. cross join
  2. 一道面试题:用多种方法实现两个数的交换
  3. win7硬盘安装ubuntu双系统——注意项
  4. 相对最完整的软件测试工具手册
  5. 使用SSM+JSP实现一个教务管理系统
  6. bash: xsync: command not found的解决方法
  7. 决策树和基于决策树的模型构建
  8. Tricks(四十九)—— 按 batch 访问越界的解决办法
  9. SQL Server 备份还原造成孤立用户的问题
  10. Codeforces Round #303 (Div. 2) E. Paths and Trees 最短路+贪心