【机器学习300问】136、C4.5虽然改善了ID3决策树算法的部分缺点,但还是有不足,请问还有更好的算法吗?CART算法构建决策树

一、C4.5算法仍存在的不足

(1)计算效率不高

        C4.5使用的信息增益率计算涉及熵的对数计算,特别是当属性值数量大时,计算成本较高。

(2)处理连续数值属性不够高效

        ID3算法只能处理离散属性,需要预先对连续属性进行离散化处理。C4.5虽然也能处理连续属性,但效率不高。

二、CART算法原理

        分类与回归树(Classification And Regression Trees,CART)算法是一种决策树构建方法。同时适用于分类和回归任务。它是机器学习中的监督学习算法。

(1)算法核心思想

        CART算法的核心思想是通过递归地选择最佳特征和阈值来分割数据集,直至满足预设的停止条件,最终形成一个二叉树结构。这个树结构可以用来做分类或预测连续值的回归。

(2)什么是基尼不纯度?

        基尼不纯度(Gini Impurity)是衡量数据集中类别的混乱程度的一种指标,用于决策树算法中确定最佳分裂特征。其计算公式如下:

        假设数据集共有K个类别,第k类样本所占的比例为p_k(其中\sum_{k=1}^{K}p_k=1)则该数据集的基尼不纯度G计算公式为:

G=\sum_{k=1}^{K} p_k(1-p_k)=1-\sum_{k=1}^{K}p_k^2

这个公式的直观理解是:

  • 每一个类别的概率p_k越大,它“纯净”的贡献(即p_k^2)就越大,而基尼不纯度作为整体的“不纯净”程度就越小;
  • 反之,如果各类别分布均匀,每个类别的概率都很小,那么基尼不纯度就会接近其最大值1,表示数据集非常“混乱”。

        在决策树构建过程中,会选择使得分割后两个子集的加权基尼不纯度之和最小的特征作为最佳分割特征。

(3)算法步骤

        CART算法的工作过程主要分为以下三个步骤:

① 特征选择与阈值确定

        在每个节点上,算法会遍历所有特征的所有可能分割点,计算分割后的不纯度或误差,并选择使得不纯度或误差降低最多的特征和分割点。

  • 对于分类任务,CART使用基尼不纯度作为衡量标准来选择最佳分割特征和分割点。基尼不纯度越低表示数据划分后类别分布越纯净。
  • 对于回归任务,CART使用均方误差作为衡量标准,寻找使得各子集残差平方和最小的分割点。

② 树的生成

        从根节点开始,根据选定的特征和分割点划分数据集,然后对每个子集重复此过程,直到满足停止条件,如节点中的样本属于同一类别、达到预设的最大深度、子集中的样本数小于某个阈值等。

③ 树的剪枝

        为了避免过拟合,CART使用后剪枝策略。即先生成一棵完整的树,然后自底向上地检查是否可以通过合并某些子树来降低测试集上的误差。剪枝的目的是找到一个子树,它在训练集上的性能可能略差,但在未知数据上的泛化能力更强。

三、CART算法如何解决前辈们遗留的问题

(1)处理连续数值属性

        CART算法能够直接处理连续属性,通过选择最优的分割点来划分数据(即确定节点阈值),而ID3算法只能处理离散属性,需要预先对连续属性进行离散化处理。C4.5虽然也能处理连续属性,但CART在处理连续属性时更为直接和高效。

(2)同时支持分类与回归

        CART算法不仅适用于分类任务,还能处理回归问题,即预测连续数值,这是ID3和C4.5所不具备的能力。这一灵活性拓宽了CART的应用场景。

(3)计算效率高

        CART使用基尼不纯度作为分裂标准,计算上相对简单,避免了ID3和C4.5信息增益计算中的对数运算,从而提高了效率。基尼不纯度在处理类别不平衡的数据集时表现得更为稳健。

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

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

相关文章

kafka学习笔记08

Springboot项目整合spring-kafka依赖包配置 有这种方式,就是可以是把之前test里的配置在这写上,用Bean注解上。 现在来介绍第二种方式: 1.添加kafka依赖: 2.添加kafka配置方式: 编写代码发送消息: 测试: …

c++11、14多线程从原理到线程池

c11、14多线程从原理到线程池 一.初识二.std::thread对象生命周期和线程等待与分离1.主线程不退出,thread对象被销毁,子线程仍然在运行。2.主线程阻塞,等待子线程退出3.子线程与主线程分离(守护线程) 三.线程创建的多种…

【Android面试八股文】请描诉Activity的启动流程,从点击图标开始。

当用户点击应用程序图标启动一个 Activity 时,涉及的整个流程可以梳理如下: 1. 用户点击应用程序图标 用户在设备的主屏幕或应用列表中点击应用程序图标,触发应用程序启动事件。 2. 系统接收启动请求 Intent 解析: 系统接收到用户点击事件后,会创建一个包含目标 Activi…

在实施数据加密时,有哪些常见的加密技术可供选择?

在实施数据加密时,有哪些常见的加密技术可供选择? 在实施数据加密时,有许多常见的加密技术可供选择,这些技术根据其原理、安全性、效率和适用场景有所不同。以下是一些常见的加密技术: 对称加密(Symmetri…

Nuxtjs3教程

起步 官方文档 官方目录结构 安装 npx nuxi@latest init <project-name>后面跟着提示走就行 最后yarn run dev 启动项目访问localhost:3000即可 路由组件 app.vue为项目根组件 <nuxt-page />为路由显示入口 将app.vue更改内容如下 <template><d…

C# enum Enumeration Type 枚举

定义枚举使用枚举访问枚举值枚举与switch语句枚举特性枚举与位字段总结 在 C#中&#xff0c; enum 是一种特殊的值类型&#xff0c;它允许你为一组相关的常量定义一个名称。枚举提供了一种将一组整数值与更易读的名称关联起来的方法。 定义枚举 你可以使用 enum 关键字来定义…

C语言的数据结构:树与二叉树(哈夫曼树篇)

前言 上篇讲完了二叉树&#xff0c;二叉树的查找性能要比树好很多&#xff0c;如平衡二叉树保证左右两边节点层级相差不会大于1&#xff0c;其查找的时间复杂度仅为 l o g 2 n log_2n log2​n&#xff0c;在两边层级相同时&#xff0c;其查找速度接近于二分查找。1w条数据&am…

什么是中断?---STM32篇

目录 一&#xff0c;中断的概念 二&#xff0c;中断的意义 三&#xff0c;中断的优先级 四&#xff0c;中断的嵌套 如果一个高优先级的中断发生&#xff0c;它会立即打断当前正在处理的中断&#xff08;如果其优先级较低&#xff09;&#xff0c;并首先处理这个高优…

uniapp+php开发的全开源多端微商城完整系统源码.

uniappphp开发的全开源多端微商城完整系统源码. 全开源的基础商城销售功能的开源微商城。前端基于 uni-app&#xff0c;一端发布多端通用。 目前已经适配 H5、微信小程序、QQ小程序、Ios App、Android App。 采用该资源包做商城项目&#xff0c;可以节省大量的开发时间。 这…

网页摘要生成算法的一点探索

网页摘要生成算法是一个复杂的过程&#xff0c;涉及多个步骤和不同的技术。以下是一个基于参考文章信息的清晰回答&#xff0c;对网页摘要生成算法进行了分点表示和归纳&#xff1a; 1. 算法概述 网页摘要生成算法的主要目标是自动从网页内容中提取关键信息&#xff0c;并生成简…

【第8章】MyBatis-Plus持久层接口之ActiveRecord

文章目录 前言一、使用步骤1. 继承 Model 类2. 调用 CRUD 方法 二、使用提示总结 前言 ActiveRecord 模式是一种设计模式&#xff0c;它允许实体类直接与数据库进行交互&#xff0c;实体类既是领域模型又是数据访问对象。在 Mybatis-Plus 中&#xff0c;实体类只需继承 Model …

周边美食小程序系统的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;用户管理&#xff0c;美食店铺管理&#xff0c;菜品分类管理&#xff0c;标签管理&#xff0c;菜品信息管理&#xff0c;系统管理 微信端账号功能包括&#xff1a;系统首页&#xff0c;美食店铺&#…

操作系统期末复习(选择题判断题(二))

选择题 1.临界区是。 A.一段共享数据区 B.一个缓冲区 C.一段互斥执行的程序段 D.一个互斥资源 2. 生产者一消费者问题中&#xff0c;当时表示缓冲池满。 A.inmod n out B&#xff08;in&#xff0b;1&#xff09;mod n out C.&#xff08;in-1&#xff09;mod n o…

基于SSM+Jsp的疫情居家办公OA系统

开发语言&#xff1a;Java框架&#xff1a;ssm技术&#xff1a;JSPJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包…

20-OWASP top10--XXS跨站脚本攻击

目录 什么是xxs&#xff1f; XSS漏洞出现的原因 XSS分类 反射型XSS 储存型XSS DOM型 XSS XSS漏洞复现 XSS的危害或能做什么&#xff1f; 劫持用户cookie 钓鱼登录 XSS获取键盘记录 同源策略 &#xff08;1&#xff09;什么是跨域 &#xff08;2&#xff09;同源策略…

面试官:MySQL并发事务是如何处理

1. 并发事务的挑战 开发人员在并发编程中经常面临安全性和一致性问题。通常采用同步机制和锁机制来解决这些问题&#xff0c;例如Java中的synchronized关键字和Lock接口。 2. MySQL并发事务情况 数据的读写操作基于数据页。并发事务可能存在的类型&#xff1a; 读/读读/写写…

Python 潮流周刊#58:最快运行原型的语言(摘要)

本周刊由 Python猫 出品&#xff0c;精心筛选国内外的 250 信息源&#xff0c;为你挑选最值得分享的文章、教程、开源项目、软件工具、播客和视频、热门话题等内容。愿景&#xff1a;帮助所有读者精进 Python 技术&#xff0c;并增长职业和副业的收入。 本期周刊分享了 12 篇文…

容易涨粉的视频素材有哪些?容易涨粉的爆款短素材库网站分享

如何挑选社交媒体视频素材&#xff1a;顶级视频库推荐 在社交媒体上脱颖而出&#xff0c;视频素材的选择至关重要。以下是一些顶级的视频素材网站推荐&#xff0c;不仅可以提升视频质量&#xff0c;还能帮助你吸引更多粉丝。 蛙学网&#xff1a;创意的源泉 作为创意和独特性的…

Databend db-archiver 数据归档压测报告

Databend db-archiver 数据归档压测报告 背景准备工作Create target databend table启动 small warehouse准备北京区阿里云 ECSdb-archiver 的配置文件准备一亿条源表数据开始压测 背景 本次压测目标为使用 db-archiver 从 MySQL 归档数据到 Databend Cloud&#xff0c; 归档的…

【王佩丰 Excel 基础教程】第一讲:认识Excel

文章目录 前言一、Excel软件简介1.1、历史上的其他数据处理软件与 Microsoft Excel1.2、Microsoft Excel 能做些什么1.3、Excel 界面介绍 二、Microsoft Excel 的一些重要概念2.1、Microsoft Excel 的几种常见文件类型2.2、工作簿、工作表、单元格. 三、使用小工具&#xff1a;…