1 导论–什么是决策树

本文整体阅读时长约10分钟。如果只想对决策树有个概念性的了解,建议只阅读各级标题即可。

决策树算法是一种采用树形结构解决分类问题的算法。其树形结构如下图所示,主要包含根节点,叶结点,及两者之间的中间结点,可以看出,根节点划分开始直至全部为叶结点结束。

2 决策树学习流程

2.1 特征(属性)选择

选择哪些特征作为分类的标准是决策树算法的关键,因为特征选择的好坏直接决定了分类的效果是否理理想。因此,在存在的众多特征(属性)中,如何找到与分类最相关、次相关的特征是核心。一般地,决策树算法会根据:信息增益,作为准则来进行特征的确定。即对根节点计算所有特征的信息增益,选择信息增益最大的特征作为最开始的节点特征。

2.2 决策树生成

在进行特征确定之后,就可以根据最相关属性进行分类:即从该节点出发,根据该特征的不同取值建立子节点;对每个子节点使用相同的方式生成新的子节点,直到信息增益很小或者没有特征可以选择为止。这样,决策树就生成完毕了。

2.3 决策树剪枝(防止过拟合)

决策树在生成过程中,为了尽量分类正确,节点划分过程有时会不断重复,造成分支过多,有可能会将训练样本分类太好,而泛化能力减弱,即出现过拟合。因此,有必要在决策树生成后进行剪枝处理。

3 案例实现----3种经典决策树算法

3.1 ID3算法详解

3.1.1 分类依据(增益率)

决策树是根据信息增益来进行特征选择的,信息增益定义为
Gain(D,a)=Ent(D)−Σv=1V∣Dv∣∣D∣Ent(Dv)Gain(D, a)=Ent(D) - \Sigma_{v=1}^{V} \frac{|D^v|}{|D|} Ent(D^v) Gain(D,a)=Ent(D)−Σv=1V​∣D∣∣Dv∣​Ent(Dv)
其中D为总的样本,a为属性,v为在属性a中的v类样本,信息增益越大,表明该属性对分类的相关性越大。Ent()表示信息熵(entropy),公式如下:
Ent(D)=−Σk=1Dpklog2pk.Ent(D) = - \Sigma_{k=1}^{D} p_k log_2 {p_k}. Ent(D)=−Σk=1D​pk​log2​pk​.
k表示在样本D中的第k类样本,pkp_kpk​表示第k类样本所占样本总体的概率。类比于现实中的熵,可以理解为,信息熵越小,表明纯度越高。

3.1.2 分类流程

按照第2节中决策树学习的流程,有了上述的分类依据,我们便可对根节点进行分类,其实套用公式即可。

  1. 先求取每个属性a下所对应分类的信息熵Ent(Dv)Ent(D^v)Ent(Dv)(此时计算的是在属性a中的所占比例),乘上此时a属性分类下各样本所占总体样本的比例并加和,随后得到Gain(D,a)Gain(D,a)Gain(D,a)。
  2. 然后就进一步计算Gain(D,b)Gain(D,b)Gain(D,b), Gain(D,c)Gain(D,c)Gain(D,c)等a,b,c各属性的增益,相互比较,得到增益率最大的那个属性即作为本次的划分属性。
  3. 然后在可继续分类的那个子节点下重复上述1和2的过程(此时可以不用计算上面刚确定的那个属性的增益率),一直到不可再分为止,即全部为叶结点为止。
  4. 此时决策树大体就生成好了,结合验证集,通过剪枝或后剪枝法对一些节点进行剪枝操作。然而,预剪枝预防过拟合,却带来了欠拟合风险;后剪枝则在决策树完全生成后进行,并且自底向上逐一排查,训练开销大。

3.2 C4.5算法

在ID3算法上的改进,由于ID3算法会偏向于样本数目多的属性,因此ID3引进了一个因子来抵消它,但会引来偏好数目少的样本。因此,在应用中,先从候选属性中找出信息增益高于平均水平的属性,再从中选择增益率最高的。其具体公式见最后附图。

3.3 CART算法

和之前选择增益率最大的不同,CART算法是通过基尼指数的最小值来选择属性,基尼指数越小,其纯度越高。以上所有的讲解小结在最后附图中。

参考文档:
周志华,《机器学习》,清华大学出版社。

决策树算法(ID3算法详解)相关推荐

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

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

  2. ID3算法详解及python实现

    前言 决策树算法在机器学习中算是很经典的算法系列.它既可以作为分类算法,也可以作为回归算法,同时也特别适合集成学习比如随机森林.本文就对决策树算法ID3思想做个总结. ID3算法的信息论基础 1970 ...

  3. python机器学习算法.mobi_机器学习之ID3算法详解及python代码实现

    在生活中我们经常会用到决策树算法,最简单的就是二叉树了:相信大家也会又同样的困扰,手机经常收到各种短信,其中不乏很多垃圾短信.此时只要设置这类短信为垃圾短信手机就会自动进行屏蔽.减少被骚扰的次数,同时 ...

  4. 决策树算法——ID3算法,C4.5算法

    目录(?)[-] 决策树算法 1摘要 2决策树引导 3决策树的构造 31ID3算法 32C45算法 4关于决策树的几点补充说明 41如果属性用完了怎么办 42关于剪枝 决策树算法 1.摘要 在前面两篇 ...

  5. python决策树 value_机器学习之ID3算法详解及python代码实现

    在生活中我们经常会用到决策树算法,最简单的就是二叉树了:相信大家也会又同样的困扰,手机经常收到各种短信,其中不乏很多垃圾短信.此时只要设置这类短信为垃圾短信手机就会自动进行屏蔽.减少被骚扰的次数,同时 ...

  6. 机器学习:决策树算法(ID3算法)的理解与实现

    机器学习:决策树算法(ID3算法)的理解与实现 文章目录 机器学习:决策树算法(ID3算法)的理解与实现 1.对决策树算法的理解 1.概述 2.算法难点 选择最优划分属性 1.信息熵 2.信息增益 2 ...

  7. 数据挖掘ID3算法详解

    ID3算法 例:设网球俱乐部有打球与气候条件的历史统计数据如下表表示.其中,描述气候的条件属性:"天气"."温度"."湿度"."风 ...

  8. id3算法c语言实现,从ID3到C5.0的故事:算法详解及实践应用

    原标题:从ID3到C5.0的故事:算法详解及实践应用 在前面,我们分别概述性地介绍了决策树的基本知识: 1.算法概述 ID3(Iterative Dichotomiser3)算法可以说决策树算法中最著 ...

  9. c4.5算法 程序语言,决策树之C4.5算法详解-Go语言中文社区

    决策树之C4.5算法详解 主要内容 C4.5算法简介 分裂属性的选择--信息增益率 连续型属性的离散化处理 剪枝--PEP(Pessimistic Error Pruning)剪枝法 缺失属性值的处理 ...

  10. 经典算法详解--CART分类决策树、回归树和模型树

    Classification And Regression Tree(CART)是一种很重要的机器学习算法,既可以用于创建分类树(Classification Tree),也可以用于创建回归树(Reg ...

最新文章

  1. Java遍历Map对象的四种方式
  2. mfc 弹框只出现一次_只出现一次的数字
  3. h.265编码库x265实例
  4. VC++ 19 (VS2015) 编译器系统环境变量配置
  5. 分享10个2012年最新发布的jQuery插件
  6. 分享套接字数据包序列化与反序列化方法
  7. openshift s2i_对Openshift上的Play Framework 2应用进行故障排除
  8. 【ACL2020论文尝鲜】何时采用BERT更加有效?
  9. java用dockerfile生成镜像_【HAVENT原创】创建 Dockerfile 生成新的镜像,并发布到 DockerHub...
  10. 修改金仓数据库KingbaseES端口
  11. ADA4939 ADA4930
  12. Nicholas C. Zakas:我得到的最佳职业生涯建议
  13. coffeescript html5,CoffeeScript入门
  14. 计算机怎么学的快,怎样学电脑打字最快电脑新手如何快速学会打字
  15. 边城小猿——某二线城程序员15年的工作经历
  16. 使用PMW3901和VL53L1X 实现室内定点悬停
  17. PTA 7-2 一帮一
  18. windows 远程连接
  19. 实时系统和非实时系统的区别
  20. 数据分析 | 如何对年终销售数据进行可视化分析快速搞定统计图表

热门文章

  1. 微信小程序云开发如何修改后台手动添加的数据
  2. 谷粒学院(十六)OAuth2 | 微信扫码登录 | QQ扫码登录
  3. FPGA零基础学习:UART协议驱动设计
  4. 华为IPSec VPN的配置
  5. 液晶拼接处理器_大屏幕显示系统设备中矩阵与液晶拼接屏的连接方法
  6. 微软官方帮助文档的中文网站和英文网站
  7. 条件期望的测度论解释
  8. cropper裁剪图片并上传
  9. python 基于模板生成ppt_【Python3】通过模板实现PPT的自动生成
  10. 56个民族静态字典代码创建sql语句