决策树——ID3和C4.5

        决策树(decision tree)是一个树结构(可以是二叉树或非二叉树)。其每个非叶节点表示一个特征属性上的测试,每个分支代表这个特征属性在某个值域上的输出,而每个叶节点存放一个类别。使用决策树进行决策的过程就是从根节点开始,测试待分类项中相应的特征属性,并按照其值选择输出分支,直到到达叶子节点,将叶子节点存放的类别作为决策结果。

       构建决策树的过程:

关键步骤是分裂属性所谓分裂属性就是在某个节点处按照某一特征属性的不同划分构造不同的分支,其目标是让各个分裂子集尽可能地“纯”。尽可能“纯”就是尽量让一个分裂子集中待分类项属于同一类别。分裂属性分为三种不同的情况:

               1. 属性是离散值且不要求生成二叉决策树。此时用属性的每一个划分作为一个分支。

               2. 属性是离散值且要求生成二叉决策树。此时使用属性划分的一个子集进行测试,按照“属于此子集”和“不属于此子集”分成两个分支。Yes or No.

                3. 属性是连续值。此时确定一个值作为分裂点split_point,按照>split_point和<=split_point生成两个分支。

      构造决策树的关键性内容是进行属性选择度量,属性选择度量是一种选择分裂准则,是将给定的类标记的训练集合的数据划分D“最好”地分成个体类的启发式分类,它决定了拓扑结构及分裂点split_point的选择。

    属性选择度量算法有很多,一般使用自顶向下递归分治法,并采用不回溯的贪心算法。

递归划分方法:

(1) 分区D的所有元祖都属于同一个类;

(2)没有剩余属性可以用来进一步划分元组。在此情况下,使用多数表决。  设计将N转换成树叶,并用D中的多数类标记它。另外,也可以存放节点元组的类分布。

(3)给定的分支没有元组。即有一个分支为空。在这种情况下,用D中的多数类创建一个树叶。

ID3算法

ID3算法的核心思想就是以信息增益度量属性选择,选择分裂后信息增益最大的属性进行分裂。

熵越大,越混乱,越稳定(熵表示混乱程度,越混乱表明越不需要维持,则越稳定;越整齐越需要维持,越不稳定)。

期望信息越小,信息增益越大,从而纯度越高。我们需要找的是最“纯”的特征

      设D为用类别对训练元组进行的划分,则D的熵(entropy)表示为:

      

      其中pi表示第i个类别在整个训练元组中出现的概率,可以用属于此类别元素的数量除以训练元组元素总数量作为估计。熵的实际意义表示是D中元组的类标号所需要的平均信息量。

      现在我们假设将训练元组D按属性A进行划分,则A对D划分的期望信息为:

      

      而信息增益即为两者的差值:

      

      ID3算法就是在每次需要分裂时,计算每个属性的增益率,然后选择增益率最大的属性进行分裂。下面我们继续用SNS社区中不真实账号检测的例子说明如何使用ID3算法构造决策树。为了简单起见,我们假设训练集合包含10个元素:

      其中s、m和l分别表示小、中和大。

      设L、F、H和R表示日志密度、好友密度、是否使用真实头像和账号是否真实,下面计算各属性的信息增益。

      

      

      

      因此日志密度的信息增益是0.276。

      用同样方法得到H和F的信息增益分别为0.033和0.553。

      因为F具有最大的信息增益,所以第一次分裂选择F为分裂属性,分裂后的结果如下图表示:

      在上图的基础上,再递归使用这个方法计算子节点的分裂属性,最终就可以得到整个决策树。

      上面为了简便,将特征属性离散化了,其实日志密度和好友密度都是连续的属性。对于特征属性为连续值,可以如此使用ID3算法:

      先将D中元素按照特征属性排序,则每两个相邻元素的中间点可以看做潜在分裂点,从第一个潜在分裂点开始,分裂D并计算两个集合的期望信息,具有最小期望信息的点称为这个属性的最佳分裂点,其信息期望作为此属性的信息期望。

C4.5算法

 ID3算法存在一个问题,就是偏向于多值属性,例如,如果存在唯一标识属性ID,则ID3会选择它作为分裂属性,这样虽然使得划分充分纯净,但这种划分对分类几乎毫无用处。ID3的后继算法C4.5使用增益率(gain ratio)的信息增益扩充,试图克服这个偏倚。
C4.5算法实现步骤:
    1)求“分裂信息” :
        
      2)求熵:

       

    3)划分期望:

      

    4)信息增益:

     

    5)增益率:
     
 C4.5选择具有最大增益率的属性作为分裂属性。

建议参考机械工业出版社《数据挖掘概念与技术》第3版,P213-P220,更容易明白。

——————————————————————————我是华丽丽的分割线——————————————————————————
欢迎互相讨论交流,望不吝赐教。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/386109.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

保驾护航金三银四,分分钟搞定!

开头 Web前端开发基础知识学习路线分享&#xff0c;前端开发入门学习三大基础&#xff1a;HTML、CSS、JavaScript。除此之外还要学习数据可视化、Vue、React、Angular相关框架&#xff0c;熟练运用框架提升开发效率&#xff0c;提升稳定性。 [外链图片转存失败,源站可能有防盗…

保驾护航金三银四,吐血整理

前言 又逢金三银四&#xff0c;拿到大厂的offer一直是程序员朋友的一个目标&#xff0c;我是如何拿到大厂offer的呢&#xff0c;今天给大家分享我拿到大厂offer的利器&#xff0c;前端核心知识面试宝典&#xff0c;内容囊括Html、CSS、Javascript、Vue、HTTP、浏览器面试题\数…

Ajax知识笔记——入门,同步和异步,XHR

Ajax全称&#xff1a;Asynchronous Javascript and XML &#xff0c;异步的javascript和XML。 Ajax不是一种语言&#xff0c;是一种无需重新加载整个网页的情况下&#xff0c;能更新部分网页的技术。&#xff08;与后台交互&#xff0c;实现局部更新&#xff0c;异步更新&…

保驾护航金三银四,含BATJM大厂

前言 跳槽&#xff0c;这在 IT 互联网圈是非常普遍的&#xff0c;也是让自己升职加薪&#xff0c;走上人生巅峰的重要方式。那么作为一个普通的Android程序猿&#xff0c;我们如何才能斩获大厂offer 呢&#xff1f; 疫情向好、面试在即&#xff0c;还在迷茫踌躇中的后浪们&…

保驾护航金三银四,妈妈再也不用担心我找工作了!

01 前言 2021是不平凡的一年&#xff0c;这一年里发生许多事情&#xff0c;大家也都知道。对于互联网行业来说也是一次重大的打击&#xff0c;也有一些企业在这次疫情中倒闭了&#xff0c;所以可能对于今年2021年毕业的同学来说是一次很大的考验&#xff0c;也关乎我们的前途。…

web开发者工具,118页Vue面试题总结,涨姿势!

逻辑运算符 JavaScript中有三个逻辑运算符&#xff0c;&&与、||或、!非。 JavaScript 中的逻辑运算符可用来确定变量或者是值之间的逻辑关系。通常用于布尔型值&#xff0c;会返回一个布尔值true 或 false。而 &&、|| 运算符能够使用非布尔值的操作数&#x…

2G、3G 和 4G

2G、3G 和 4G 区别形象比喻 版本1&#xff1a; 2G 看小说&#xff1b; 3G 看app、微博、新闻……&#xff1b; 4G 看苍井空、松岛枫…… 版本2&#xff1a; 2G 看「女教师.txt」 3G 看「女教师.jpg」 4G 看「女教师.avi」 版本3&#xff1a; 选自&#xff1a;365知识网 2G:打个…

web开发者工具,261页前端面试题宝典,通用流行框架大全

开头 Web前端开发基础知识学习路线分享&#xff0c;前端开发入门学习三大基础&#xff1a;HTML、CSS、JavaScript。除此之外还要学习数据可视化、Vue、React、Angular相关框架&#xff0c;熟练运用框架提升开发效率&#xff0c;提升稳定性。 [外链图片转存失败,源站可能有防盗…

web开发者工具,你必须知道的CSS盒模型,架构师必备!

前言 不要为了面试而去背题&#xff0c;匆匆忙忙的&#xff0c;不仅学不进去&#xff0c;背完了几天后马上会忘记。 你可能会说&#xff0c;“没办法&#xff0c;这不是为了能找份工作嘛&#xff01;”。我想说的是&#xff0c;“那你没开始找工作的时候&#xff0c;咋不好好…

web开发要学多久,HTML表格标签,薪资翻倍

前言 作为一个程序员&#xff0c;当然总是期望自己的代码能「一次编写&#xff0c;四处运行」&#xff0c;但真实经验往往是「一处修改&#xff0c;百处填坑」&#xff0c;依赖落后了好几个版本了想要升级、老代码已经看着很不爽了打算重构&#xff0c;都需要下坚决的决心&…

web开发课程培训,10大前端常用算法,学习路线+知识点梳理

标签语义化&#xff1a; 语义和默认样式的区别&#xff1a; 默认样式是浏览器设定的一些常用tag的表现形式&#xff1b;语义化的主要目的就是让大家直观的认识标签和属性的用途和作用&#xff1b; 标签语义化作用&#xff1a; 当只有HTML页面时&#xff0c;没有CSS&#xf…

web开发课程,CSS标准文档流与脱离文档流,已整理成文档

前言 年前准备换工作&#xff0c;总结了一波面试最频繁的面试问题跟大家交流。此文章是关于浏览器的常见问题&#xff0c;大概面试10家遇到6家提问类似问题&#xff08;主要是大厂和中厂&#xff09;。目前入职滴滴出行成都团队。 前端核心 1.JSONP的缺点 2.跨域&#xff08…

jQuery学习笔记(一)——基础选择器、过滤选择器、表单选择器

$()就是jQuery中的函数&#xff0c;它的功能是获得&#xff08;&#xff09;中指定的标签元素。如示例中$(“p”)会得到一组P标签元素,其中“p”表示CSS中的标签选择器。$()中的()不一定是指定元素&#xff0c;也可能是函数。 在jQuery中 $()方法等价于jQuery()方法,前者比较常…

web开发课程,HTML常用的五种标签,附赠课程+题库

标准文档流 标准文档流&#xff0c;指的是元素排版布局过程中&#xff0c;元素会默认自动从左往右&#xff0c;从上往下的流式排列方式。前面内容发生了变化&#xff0c;后面的内容位置也会随着发生变化。 HTML就是一种标准文档流文件 HTML中的标准文档流特点通过两种方式体现…

jQuery学习笔记(二)—— 操作DOM元素

使用attr()方法控制元素的属性 attr()方法的作用是设置或者返回元素的属性&#xff0c;其中attr(属性名)格式是获取元素属性名的值&#xff0c;attr(属性名&#xff0c;属性值)格式则是设置元素属性名的值。 例如&#xff0c;使用attr(属性名)的格式获取页面中<a>元素的“…

web开发软件,8个优秀的CSS实践,附面试题

一.为什么要学习前端开发&#xff1f; 你可能是因为兴趣&#xff0c;完成一个网站、页面、功能的成就感。你也可能是因为现在前端岗位火爆&#xff0c;就业率高。不管是因为什么&#xff0c;只要找准了目标&#xff0c;学就是了&#xff01; 突破困境&#xff1a; 1. 提升学…

jQuery 学习笔记(三)——事件与应用

页面加载时触发ready()事件 ready()事件类似于onLoad()事件&#xff0c;但前者只要页面的DOM结构加载后便触发&#xff0c;而后者必须在页面全部元素加载成功才触发&#xff0c;ready()可以写多个&#xff0c;按顺序执行。此外&#xff0c;下列写法是相等的&#xff1a; $(docu…

web开发软件,HTML如何添加锚点,成功入职阿里

前言 正式学习前端大概 3 年多了&#xff0c;接触前端大概 4 年了&#xff0c;很早就想整理这个书单了&#xff0c;因为常常会有朋友问&#xff0c;前端该如何学习&#xff0c;学习前端该看哪些书&#xff0c;我就讲讲我学习的道路中看的一些书&#xff0c;虽然整理的书不多&a…

疯狂涨知识!Java多态实现原理技术总监都拍手叫好

##前言 多态是Java语言重要的特性之一&#xff0c;它允许基类的指针或引用指向派生类的对象&#xff0c;而在具体访问时实现方法的动态绑定。Java对于方法调用动态绑定的实现主要依赖于方法表&#xff0c;但通过引用调用&#xff08;invokevitual&#xff09;和接口引用调用&am…

疯狂涨知识!「高并发秒杀」微信抢红包实战案例帮你突破瓶颈

推荐阅读&#xff1a; 阿里二面凉经&#xff1a;设计模式缓存Spring虚拟机MySQL中间件并发等难题&#xff0c;全部迎刃而解阿里巴巴字节跳动那些大厂必问的HTTP该怎么学&#xff1f;我建议你看看这篇文章&#xff01;蚂蚁、字节、PDD社招面经Java岗&#xff08;分布式线程安全…