决策树算法原理(CART分类树)

CART回归树

决策树的剪枝

  决策树可以作为分类算法,也可以作为回归算法,同时特别适合集成学习比如随机森林。

1. 决策树ID3算法的信息论基础

   1970年昆兰找到了用信息论中的熵来度量决策树的决策选择过程,昆兰把这个算法叫做ID3。

  熵度量了事物的不确定性,越不确定的事物,熵就越大。随机变量X的熵的表达式如下:

  其中n代表X的n种不同的离散取值。而pi代表了X取值为i的概率,log为以2或者e为底的对数。举个例子,比如X有2个可能的取值,而这两个取值各为1/2时X的熵最大,此时X具有最大的不确定性。值为如果一个值概率大于1/2,另一个值概率小于1/2,则不确定性减少,对应的熵也会减少。比如一个概率1/3,一个概率2/3,则对应熵为

  熟悉了一个变量X的熵,很容易推广到多个变量的联合熵,这里给出两个变量X和Y的联合熵表达式:

  有了联合熵,又可以得到条件熵的表达式H(X|Y),条件熵类似于条件概率,它度量了我们的X在知道Y以后剩下的不确定性。表达式如下:

  H(X)度量了X的不确定性,条件熵H(X|Y)度量了我们在知道Y以后X剩下的不确定性,H(X)-H(X|Y)度量了X在知道Y以后不确定性减少程度,这个度量我们在信息论中称为互信息,记为I(X,Y)。在决策树ID3算法中叫做信息增益。信息增益大,则越适合用来分类。

  用下面这个图很容易明白他们的关系。左边的椭圆代表H(X),右边的椭圆代表H(Y),中间重合的部分就是我们的互信息或者信息增益I(X,Y), 左边的椭圆去掉重合部分就是H(X|Y),右边的椭圆去掉重合部分就是H(Y|X)。两个椭圆的并就是H(X,Y)。

2. 决策树ID3算法的思路

  ID3算法思想:用信息增益最大的特征来建立决策树的当前节点。下面是一个具体例子。

  15个样本D,其中9个输出为1,6个输出为0。样本中有特征A,取值为A1,A2,A3。在取值为A1的样本的输出中,有3个输出为1,2个输出为0,取值为A2的样本中,2个输出为1,3个输出为0,在取值为A3的样本中,4个输出为1,1个输出为0。

  样本D的熵为:

  样本D在特征下的条件熵为:

  对应的信息增益为:

  

  已知:输入的是m个样本,样本输出集合为D,每个样本有n个离散特征,特征集合即为A,输出为决策树T。

  

  具体算法过程:

  1. 初始化信息增益的阈值ε
  2. 判断样本是否为同一类输出Di,如果是则返回单节点树T。标记类别为Di
  3. 判断特征是否为空,如果是则返回单节点树T,标记类别为样本中输出类别D实例数最多的类别
  4. 计算A中的各个特征(一共n个)对输出D的信息增益,选择信息增益最大的特征Ag
  5. 如果Ag的信息增益小于阈值ε,则返回单节点树T,标记类别为样本中输出类别D实例数最多的类别。
  6. 否则,按特征Ag的不同值Agi将对应的样本输出D分成不同的类别Di。每个类别产生一个子节点。对应特征值为Agi。返回增加了节点的数T。
  7. 对于所有子节点,令D = Di ,A = A- {Ag}递归调用2-6步,得到子树Ti并返回。

  具体实例见:https://blog.csdn.net/gumpeng/article/details/51397737

3. 决策树ID3算法的不足

  •   ID3没考虑连续特征,比如长度,密度都是连续值,无法在ID3运用。
  •   ID3用信息增益作为标准容易偏向取值较多的特征。然而在相同条件下,取值比较多的特征比取值少的特征信息增益大。比如一个变量有2个值,各为1/2,另一个变量为3个值,各为1/3,其实他们都是完全不确定的变量,但是取3个值比取2个值的信息增益大。如何校正这个问题?
  •   ID3算法没考虑缺失值问题。
  •   没考虑过拟合问题。

  

 4. 决策树C4.5算法对ID3的改进

  针对ID3算法4个主要的不足,一是不能处理连续特征,二是用信息增益作为标准容易偏向取值较多的特征,最后是缺失值处理的问题和过拟合问题。

  (1)、对不能处理连续值特征,C4.5思路:将连续的特征离散化。

  1. 将m个连续样本从小到大排列。(比如 m 个样本的连续特征A有 m 个,从小到大排列 a1,a2,......am)
  2. 取相邻两样本值的平均数,会得m-1个划分点。(其中第i个划分点Ti表示为:)
  3. 对于这m-1个点,分别计算以该点作为二元分类点时的信息增益。选择信息增益最大的点作为该连续特征的二元离散分类点。(比如取到的增益最大的点为at,则小于at的值为类别1,大于at的值为类别2,这样就做到了连续特征的离散化。注意的是,与离散属性不同,如果当前节点为连续属性,则该属性后面还可以参与子节点的产生选择过程。)
  4. 用信息增益比选择最佳划分。

  注意:选择连续特征的分类点采用信息增益这个指标,因为若采用增益比,影响分裂点信息度量准确性,若某分界点恰好将连续特征分成数目相等的两部分时其抑制作用最大,而选择属性的时候才使用增益比,这个指标能选择出最佳分类特征。

  (2)、对于信息增益作为标准容易偏向于取值较多特征的问题。引入一个信息增益比 IR(Y, X),它是信息增益与特征熵(也称分裂信息)的比。表达式:

  其中D为样本特征输出的集合,A为样本特征,对于特征熵 HA(D),表达式:

  其中n为特征A的类别数,|Di|为特征A的第i个取值对应的样本个数。|D|为样本个数。

  特征数越多的特征对应的特征熵越大,它作为分母,可以校正信息增益容易偏向于取值较多的特征的问题。

  (3)、对于缺失值处理的问题,主要需要解决的是两个问题,一是在样本某些特征缺失的情况下选择划分的属性,二是选定了划分属性,对于在该属性上缺失特征的样本的处理。

  对于第一个子问题,对于某一个有缺失特征值的特征A。C4.5的思路是将数据分成两部分,对每个样本设置一个权重(初始可以都为1),然后划分数据,一部分是有特征值A的数据D1,另一部分是没有特征A的数据D2. 然后对于没有缺失特征A的数据集D1来和对应的A特征的各个特征值一起计算加权重后的信息增益比,最后乘上一个系数,这个系数是无特征A缺失的样本加权后所占加权总样本的比例。

  对于第二个子问题,可以将缺失特征的样本同时划分入所有的子节点,不过将该样本的权重按各个子节点样本的数量比例来分配。比如缺失特征A的样本a之前权重为1,特征A有3个特征值A1,A2,A3。 3个特征值对应的无缺失A特征的样本个数为2,3,4.则a同时划分入A1,A2,A3。对应权重调节为2/9,3/9, 4/9。

 5. 决策树C4.5算法的不足与改进

(1)、决策树算法非常容易过拟合,因此对于生成的决策树要进行剪枝。C4.5的剪枝方法有优化的空间。思路主要是两种,一种是预剪枝,即在生成决策树的时候就决定是否剪枝。另一个是后剪枝,即先生成决策树,再通过交叉验证来剪枝。后面在下篇讲CART树的时候我们会专门讲决策树的减枝思路,主要采用的是后剪枝加上交叉验证选择最合适的决策树。

(2)、C4.5生成的是多叉树,在计算机中二叉树模型会比多叉树运算效率高。多叉树改二叉树,可以提高效率。

(3)、C4.5只能用于分类。

(4)、C4.5由于使用了熵模型,里面有大量的耗时的对数运算,如果是连续值还有大量的排序运算。如果能够加以模型简化减少运算强度但又不牺牲太多准确性的话,因此用基尼系数代替熵模型。

来自:https://www.cnblogs.com/pinard/p/6050306.html

来自:https://blog.csdn.net/zhangbaoanhadoop/article/details/79904091

来自:http://leijun00.github.io/2014/09/decision-tree/

(有例子容易理解)来自:https://blog.csdn.net/gumpeng/article/details/51397737

转载于:https://www.cnblogs.com/keye/p/10267473.html

决策树算法原理(ID3,C4.5)相关推荐

  1. 通过实例理解决策树算法(ID3,C4.5,Cart算法)

    (一)实例:使用ID3算法给出"好苹果"的决策树 (二)决策树的工作原理 我们在做决策树的时候,会经历两个阶段:构造和剪枝. 构造原理--构造的过程就是选择什么属性作为节点的过程, ...

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

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

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

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

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

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

  5. 决策树算法原理及实现

    决策树算法原理及实现 转载自:https://www.cnblogs.com/sxron/p/5471078.html (一)认识决策树 1.决策树分类原理 决策树是通过一系列规则对数据进行分类的过程 ...

  6. FlyAI小课堂:python机器学习笔记:深入学习决策树算法原理

    分类技术(或分类法)是一种根据输入数据建立分类模型的系统方法,分类法的例子包括决策分类法,基于规则的分类法,神经网络,支持向量机和朴素贝叶斯分类法.这些技术都使用一种学习算法(learning alg ...

  7. 常见决策树算法(ID3、C4.5、CART)

    一.决策树原理 决策树模型是运用于分类以及回归的一种树结构.决策树由节点和有向边组成,一般一棵决策树包含一个根节点.若干内部节点和若干叶节点.决策树的决策过程需要从决策树的根节点开始,待测数据与决策树 ...

  8. 《统计学习方法》—— 信息增益、决策树算法(ID3,C4.5)以及python3实现

    前言 在这篇博客中,我们将主要介绍决策树算法.决策树算法主要由三个部分构成:特征的选择,决策树的构建以及决策树的剪枝X. 我们往往期望选择最有分类能力的特征.比如找对象这件事情上,女生面对众多追求者, ...

  9. 机器学习-决策树算法原理及实现-附python代码

    1.决策树-分类树 sklearn.tree.DecisionTreeClassifier官方地址: https://scikit-learn.org/stable/modules/generated ...

最新文章

  1. @PropertySource读取外部配置文件中的k-v保存到运行的环境变量中,加载完微博的配置文件以后使用${}取配置文件中的键值
  2. Keil5.15使用GCC编译器链接.a库文件
  3. 【SpringBoot】关闭HttpClient无用日志
  4. 如何运行一个Java文件?
  5. 2 年来,每个人最该感谢的,是坚持学习、用心分享的自己
  6. 蓝色巨人IBM全力奔赴的混合云之旅能顺利吗?
  7. 我的第一个java程序_我的第一个Java程序
  8. 使用数据库维护计划SQL Server更新统计信息
  9. Python实现输入电影名字自动生成豆瓣评论词云图(带GUI界面)小程序
  10. C# WebApi Xml序列化问题解决方法:“ObjectContent`1”类型未能序列化内容类型“application/xml;charset=utf-8“的响应正文。...
  11. 设计一个Shell程序,在/userdata目录下建立50个目录,即user1~user50,
  12. 在窗体创建时显示窗体
  13. GO随笔-Web简读
  14. sqlite如何与mysql连接数据库连接_c#中怎么连接到sqlite数据库?
  15. 低版本VC2010打开高版本VC2012的方法
  16. u盘文件看得见却打不开_u盘可以显示但是打不开怎么办
  17. Win10系统中没有Microsoft Store(微软商城)解决方法【详细步骤】
  18. 三角波的傅里叶变换对_冲激信号、门信号、方波、矩形波的傅里叶变换分析
  19. 微信支付终于成功了(安卓,iOS),在此分享
  20. 运动品牌推荐:2022年最值得入手的一些运动装备

热门文章

  1. 二叉树简介及C++实现
  2. 设计模式之单例模式(Singleton)摘录
  3. 【FFmpeg】使用过的命令汇总(持续更新中...)
  4. 【Ubuntu】制作usb启动盘安装ubuntu18.04时报错:“failed to load ldlinux.c32”
  5. java微信菜单获取openid_微信二次开发点击菜单openId的获取
  6. python中没有arcpy怎么办_Arcpy学习笔记(一)—无中生有(上)
  7. linux 替换文件中某个字符串_word中如何删除包含某个特定字符串的整个段落?...
  8. 安卓怎么用抖音做锁屏_香港超级推荐全网霸屏快速上排怎么做
  9. java 重载 参数子类_java - Java中带有子类参数的函数重载 - 堆栈内存溢出
  10. redis 缓存过期默认时间_缓存的必知必会:一文搞懂Redis持久化和过期机制