首页 > 编程语言 >C4.5分类树算法介绍

C4.5分类树算法介绍

时间:2023-04-08 22:13:59浏览次数:46  
标签:错误率 分类 IV 算法 U25% C4.5 数目 分支

为什么C4.5会出现?

因为ID3算法节点的分支越多,信息增益也就越大,这会出现过拟合的现象,因此提出C4.5算法。

 图1

C4.5的属性选择方法——获利比例

获利比例=信息增益/分支度IV

分支度IV与各分支下的类别数目之比成负相关:

假如14个样本一共分4支:

划分方法1为:分支1数目:分支2数目:分支3数目:分支4数目 = 1:1:1:11。

划分方法2为:分支1数目:分支2数目:分支3数目:分支4数目 = 1:1:6:6。

划分方法3为:分支1数目:分支2数目:分支3数目:分支4数目 = 3:3:4:4。

则划分方法1的分支度IV为1.089,划分方法1的分支度IV为1.592,划分方法3的分支度IV为1.985。

这里的划分方法3,各分支下的数目趋于一致,就像图1中分支的分布,虽然划分了5个类,各个类别下有一个样本,但只针对此次训练集是划分准确的。

加入分支度IV,可有效避免这个问题。

C4.5的砍树方法

假设预测一笔数据的信心水准是CONFIDENCE LEVEL= 25%(CONFIDENCE LEVEL越小,树被修剪的程度越大。)

U25%(0,1)=0.75,U25%(0,6)=0.206,U25%(0,9)=0.143  (U25%(0,1)表示:1笔训练数据,训练数据无错,但测试集的错误概率是0.75。)

假设:

              节点B(15Y,1N) b1              b2                 b3 |                   |                     | (6Y,0N)    (9Y,0N)         (0Y,1N) 则: b1的错误率为U25%(0,6)*  6 b2的错误率为U25%(0,9)*  9 b3的错误率为U25%(0,1)*  1

分支后的总错误率为U25%(0,6)*  6   +   U25%(0,9)*  9  +   U25%(0,1)  = 3.273  [16笔测试数据如果到此节点,展开的话,预计会错3.273笔。]   

分支前的总错误率为U25%(1,16)* 6  = 2.512      [16笔测试数据如果到此节点,预计会错2.5笔。]

因此得出结论,将此分支砍掉。

标签:错误率,分类,IV,算法,U25%,C4.5,数目,分支
From: https://www.cnblogs.com/liuguangshou123/p/17298497.html

相关文章

  • 随机森林算法深入浅出
    目录一随机森林算法的基本原理二随机森林算法的优点1.随机森林算法具有很高的准确性和鲁棒性2.随机森林算法可以有效地避免过拟合问题3.随机森林算法可以处理高维度数据4.随机森林算法可以评估特征的重要性三随机森林算法的缺点1.随机森林算法对于少量数据集表现不佳2.随......
  • 理解回溯算法——从全排列问题开始
    一、简介回溯法(backtracking)是优先搜索的一种特殊情况,又称为试探法,常用于需要记录节点状态的深度优先搜索。通常来说,排列、组合、选择类问题使用回溯法比较方便。 二、从全排列问题开始理解回溯算法以数组[1,2,3]的全排列为例。先写以1开头的全排列,它们是:[1,2,3],[1,......
  • 【算法数据结构专题】「延时队列算法」史上手把手教你针对层级时间轮(TimingWheel)实现
    承接上文承接上一篇文章【算法数据结构专题】「延时队列算法」史上手把手教你针对层级时间轮(TimingWheel)实现延时队列的开发实战落地(上)】我们基本上对层级时间轮算法的基本原理有了一定的认识,本章节就从落地的角度进行分析和介绍如何通过Java进行实现一个属于我们自己的时间轮服务......
  • HJ67_24点游戏算法_多维递归_DFS(深度优先搜索)
    思路:多维递归,深度有限遍历加减乘除四种情况。知识点:1、多维递归不能对传递的变量进行修改,否则无法回溯。应该传递一个新地址的变量,如代码所示,传递切片的列表,不修改列表  2、搜索遗漏。两括号比如((9-4)-1)*6选取任意一个数作为第一个运算数与24运算,不能找出所有24点的计算......
  • Tarjan 算法学习笔记
    (绝大部分都是贺的,来自OI-WIKI和洛谷题解,自己抄一遍印象深刻一点,部分代码未编译,不保证正确性,但大体是对的)一、DFS生成树注意可能有多棵,因为图可能不联通。树边(treeedge):示意图中以黑色边表示,每次搜索找到一个还没有访问过的结点的时候就形成了一条树边。反祖边(backedge):......
  • Python 进阶指南(编程轻松进阶):十三、性能测量和大 O 算法分析
    原文:http://inventwithpython.com/beyond/chapter13.html对于大多数小程序来说,性能并不那么重要。我们可能会花一个小时编写一个脚本来自动执行一个只需要几秒钟就能运行的任务。即使需要更长的时间,当我们端着一杯咖啡回到办公桌时,这个项目也可能已经完成了。有时候花时间学......
  • Chapter2 K-近邻算法案例1
    案例2:使用K-近邻算法实现手写数字系统1.案例要求编写一个程序,应用K-近邻算法,实现手写数字系统。通过画图生成一个32*32的数字图像,再将图像转化为代表数字的0-1文本文件。之后往程序输入代表数字的0-1文本文件,程序便可以输出相应的数字。2.案例的执行流程示例......
  • 【生产调度】基于和声搜索算法实现并行机器调度附matlab代码
    ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。......
  • 算法C#
    #region二分查找法publicstaticintBinarySertch(int[]arr,intstartIndex,intendIndex,intresult){if(startIndex>endIndex){return-1;}intmidIndex=(end......
  • 09、OpenFoam中的PISO,SIMPLE和PIMPLE算法
    隐式:PISO半隐式:SIMPLE组合式:PIMPLE(PISO+SIMPLE)PISO算法PISO算法是一种常用于求解不可压缩流体流动问题的数值方法,它在OpenFOAM中被广泛应用。PISO算法的全称为PressureImplicitwithSplittingofOperators,即利用算子分裂的方法进行隐式求解压力和速度。PISO算法主要分为......