C4.5 是对 ID3 的一个优化,它依据信息增益率来进行属性选择。

关于决策树。请參见:http://blog.csdn.net/bone_ace/article/details/46299681

关于 ID3,请參见:http://blog.csdn.net/Bone_ACE/article/details/46312215

关于 C4.5

C4.5 主要针对 ID3 的缺陷作了一些优化改进,相当于是一个“升级版”的 ID3:

  1. 可以处理连续型和离散型的数据。
  2. 可以处理包括缺失值的数据。
  3. 对生成的决策树进行了减枝。

  4. 使用信息增益率作为属性选择的标准。

信息增益率

信息增益率定义为:

GainRatio(A)=Gain(A)SplitE(A)

当中。分母 SplitE(A) 叫做分裂信息,公式定义为:

SplitE(A)=−∑i=1k|Si||S|log2|Si||S|

信息增益 Gain(A) 的求解和 ID3 一样:

Gain(S,A)=Entropy(S)−EntropyA(S)


信息熵:

Entropy(S)=−∑i=1mpi⋅log2pi

另外,属性 A 划分 S 的信息熵 EntropyA(S) 的求解添加了对连续型数据的处理。

假设属性 A 是离散型的数据。则:

EntropyA(S)=∑i=1k|Si||S|Entropy(Si)

假设属性 A 是连续型的数据,则:

EntropyA(S)=|SL||S|Entropy(SL)+|SR||S|Entropy(SR)

(将属性A的值按递增的顺序排序,对相邻的两个值取中间值(平均值),SL和SR就是这个中间值左右两部分子集。文字解释比較拗口难懂,详细的使用见后面的样例。)

缺失值和减枝

缺失值处理:

缺失值处理的方法有两种:

一种,是抛弃含有缺失值的数据,这样的适合于仅仅含少量缺失值的情况。

还有一种,是填充。C4.5 算法不是直接填充缺失值,而是用概率知识把信息增益率的求解作些变化:

  1. Gain(A)= 属性 A 在数据集中不空的比率×(Entropy(S)−EntropyA(S))。
  2. SplitE(A)=−∑i=1k|Si||S|log2|Si||S|−|Sunknow||S|log2|Sunknow||S|

    (当中。Sunknow是含缺失值的数据组成的样本集。)

减枝处理:

  • 减枝的目的是消除过度拟合,提高决策树的品质。
  • 减枝的原则是去除预測精确度低的子树、减少决策树的复杂度、让决策树更加浅显易懂。
  • 减枝的方法有两个:一种,在构建决策树之前给出限定条件,限定树的生长。还有一种,在决策树全然生长以后。对不良子树进行减枝。
  • C4.5 採用后一种方法:从底往上。假设用某个使用频率非常高的子节点(或者叶子节点)替换该决策节点后。可以使得整棵树的预測误差率减少,则进行相应的减枝。
  • 然而怎么求预測误差率呢?(以后再补上。

C4.5 步骤

  1. 对数据集进行预处理,对连续型属性求数据的最佳分裂点。
  2. 计算每一个属性的信息增益率,选取信息增益率最大的属性作为决策节点的划分属性。

  3. 对决策节点属性的每一个可能取值所相应的样本子集递归地执行步骤2。直到划分的每一个子集中的观測数据都属于同一个类标号,终于生成决策树。
  4. 对全然生长的决策树进行剪枝,得到优化后的决策树。
  5. 从剪枝后的决策树中提取分类规则。对新的数据集进行分类。

C4.5的优缺点

长处:产生的分类规则易于理解。准确率较高。

缺点:

  • 在构造树的过程中,须要对数据集进行多次的顺序扫描和排序,因而导致算法的低效。

  • 精度不够高。商业上用 C5.0 而非 C4.5。就是由于它的预測精度还不能非常好的满足用户的需求。
  • C4.5 仅仅适合于可以驻留于内存的数据集,当训练集大得无法在内存容纳时,程序无法执行。
转载请注明出处。谢谢。(原文链接:http://blog.csdn.net/bone_ace/article/details/46322815

决策树之 C4.5的更多相关文章

  1. 决策树之C4.5算法

    决策树之C4.5算法 一.C4.5算法概述 C4.5算法是最常用的决策树算法,因为它继承了ID3算法的所有优点并对ID3算法进行了改进和补充. 改进有如下几个要点: 用信息增益率来选择属性,克服了ID ...

  2. 机器学习之决策树二-C4.5原理与代码实现

    决策树之系列二—C4.5原理与代码实现 本文系作者原创,转载请注明出处:https://www.cnblogs.com/further-further-further/p/9435712.html I ...

  3. 深入了解机器学习决策树模型——C4.5算法

    本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是机器学习专题的第22篇文章,我们继续决策树的话题. 上一篇文章当中介绍了一种最简单构造决策树的方法--ID3算法,也就是每次选择一个特 ...

  4. 决策树(ID3,C4.5,CART)原理以及实现

    决策树 决策树是一种基本的分类和回归方法.决策树顾名思义,模型可以表示为树型结构,可以认为是if-then的集合,也可以认为是定义在特征空间与类空间上的条件概率分布. [图片上传失败...(image ...

  5. 分类算法:决策树(C4.5)(转)

    C4.5是机器学习算法中的另一个分类决策树算法,它是基于ID3算法进行改进后的一种重要算法,相比于ID3算法,改进有如下几个要点: 1)用信息增益率来选择属性.ID3选择属性用的是子树的信息增益,这里 ...

  6. 决策树 ID3 C4.5 CART(未完)

    1.决策树 :监督学习 决策树是一种依托决策而建立起来的一种树. 在机器学习中,决策树是一种预测模型,代表的是一种对象属性与对象值之间的一种映射关系,每一个节点代表某个对象,树中的每一个分叉路径代表某 ...

  7. 决策树之C4.5算法学习

    决策树<Decision Tree>是一种预測模型,它由决策节点,分支和叶节点三个部分组成. 决策节点代表一个样本測试,通常代表待分类样本的某个属性,在该属性上的不同測试结果代表一个分支: ...

  8. 21.决策树(ID3/C4.5/CART)

    总览 算法   功能  树结构  特征选择  连续值处理 缺失值处理  剪枝  ID3  分类  多叉树  信息增益   不支持 不支持  不支持 C4.5  分类  多叉树  信息增益比   支持 ...

  9. Python3实现机器学习经典算法(四)C4.5决策树

    一.C4.5决策树概述 C4.5决策树是ID3决策树的改进算法,它解决了ID3决策树无法处理连续型数据的问题以及ID3决策树在使用信息增益划分数据集的时候倾向于选择属性分支更多的属性的问题.它的大部分 ...

随机推荐

  1. MySQL Innodb表导致死锁日志情况分析与归纳

    发现当备份表格的sql语句与删除该表部分数据的sql语句同时运行时,mysql会检测出死锁,并打印出日志   案例描述在定时脚本运行过程中,发现当备份表格的sql语句与删除该表部分数据的sql语句同时 ...

  2. 管理nuget程序包中搜索不到任何程序包

    之前一直使用vs2012开发,管理nuget程序包没有出现过什么问题.因为开发需要,需要使用vs2015,安装vs2015后再使用vs2012时,发现管理nuget程序包中搜索不到任何资源,晕死. 想 ...

  3. iOS App启动图不显示的解决办法.

    1. 正常来说,启动图以及App图标需按照命名规则命名, 但是命名不规范并不影响显示; 2. 设置启动图的两种方法:      (1) iOS 8—xcode 6 之后新出LaunchScreen.s ...

  4. C++ Essentials 之 lower_bound 和 upper_bound 的比较函数格式不同

    第一次注意到这个问题. cppreference 上的条目: lower_bound upper_bound C++17 草案 N4659 lower_bound template<class ...

  5. BZOJ1415 [Noi2005]聪聪和可可 【SPFA + 期望dp记忆化搜索】

    题目 输入格式 数据的第1行为两个整数N和E,以空格分隔,分别表示森林中的景点数和连接相邻景点的路的条数. 第2行包含两个整数C和M,以空格分隔,分别表示初始时聪聪和可可所在的景点的编号. 接下来E行 ...

  6. redis学习(三)五种数据结构

    Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合). 1.string string类型是Redis最基 ...

  7. docke存储

    1.Docker提供三种不同的方式将数据从宿主机挂载到容器中:volumes,bind mounts和tmpfs.volumes:Docker管理宿主机文件系统的一部分(/var/lib/docker ...

  8. linux之参数实用讲解

    <1>linux文件参数 在Windows下是使用 %1 %2 %3 而在Linux下是使用   $1 $2  $3 ------------------- 如: 1.某bat文件 cd ...

  9. IOS-内存检测以及优化

    IOS-内存检测以及优化 2014年01月23日 Jason PS:开始写这个系列的笔记:主要是对过去自己比较模糊的一些概念进行测试,明确结果,提高自己 IOS 应用如果占用系统的内容过大(8GB), ...

  10. 极致 Web 性能 —— SPA 性能指南

    前言 前端框架时代,为开发体验.效率与页面性能带来,非常大的革命.大家纷纷拿起一系列打包工具(webpack/parcel etc.),配合一系列加载器快速搭建起一个 SPA 页面. SPA 应用带来 ...