目录

第一代裁判:ID3 与信息增益的 “偏爱”

第二代裁判:C4.5 用 “增益率” 找平衡

第三代裁判:CART 的 “基尼指数” 新思路

遇到连续值?先 “砍几刀” 再说

给决策树 “减肥”:剪枝的学问

动手试试:决策树的 “调参” 小技巧

最后想说


决策树的 “成长记”:从分错到分巧的进化

    上次琢磨决策树时,总觉得 “选哪个特征当节点” 像猜谜 —— 直到今天才算摸到了门道。原来决策树也在 “进化”,从最初的 ID3 到后来的 C4.5、CART,每一步都在解决上一代的小麻烦。这就像给分类问题找裁判,一代比一代更懂 “公平” 和 “高效”。

第一代裁判:ID3 与信息增益的 “偏爱”

    最早的决策树算法 ID3,选节点靠的是 “信息增益”—— 哪个特征能让数据的 “混乱度”(熵)降得最多,就选哪个。这思路挺直接,比如用 “天气” 划分打球数据时,信息增益最大,那就让 “天气” 当根节点。

    但 ID3 有个小毛病:特别喜欢 “选项多” 的特征。比如给数据加个 “编号” 特征(1 到 7 号),每个编号对应唯一结果,用它划分时信息增益肯定最大 —— 但这显然没意义,因为它根本没抓住规律,纯属 “抬杠式划分”。就像裁判偏爱话多的选手,哪怕说的都是废话。

第二代裁判:C4.5 用 “增益率” 找平衡

    为了治 ID3 的 “偏爱”,C4.5 算法站了出来。它不直接用信息增益,而是用 “信息增益率”—— 信息增益除以这个特征自身的熵。

    这么一来,“选项多” 的特征(比如编号)自身熵很高,就算信息增益大,增益率也可能变低,从而被 “劝退”。比如用 “天气” 和 “编号” 比,天气的自身熵低,信息增益率反而更突出,这就避免了 “抬杠式划分”。相当于裁判学会了 “听质量” 而非 “听数量”,更公平了。

第三代裁判:CART 的 “基尼指数” 新思路

    后来又出现了 CART 算法,它换了个衡量标准 ——“基尼指数”。这东西说的是:从数据里随机抽两个样本,类别不一样的概率。概率越低,说明数据越纯(比如全是 “去打球” 或全是 “不去”)。

    和熵相比,基尼指数计算更简单(不用算对数),但效果类似:纯度越高,基尼指数越小。CART 用它来选节点,相当于裁判换了把更轻便的 “尺子”,效率更高了。

遇到连续值?先 “砍几刀” 再说

    现实中的数据不全是 “晴天 / 阴天” 这种离散值,更多是 “温度 30 度”“收入 125K” 这种连续数。决策树怎么处理呢?答案是:把连续值变成 “选择题”。

    比如 “收入” 这个特征,有 60K、70K、85K… 我们可以用 “贪婪算法” 找分界点:先把所有值排序,然后在每两个相邻值中间 “砍一刀”(比如 60 和 70 之间砍成 “≤65” 和 “>65”),算每个分界点的信息增益(或基尼指数),选最好的那个。这其实就是把连续值 “离散化”,让决策树能看懂。

给决策树 “减肥”:剪枝的学问

    决策树有个坏毛病:学太细容易 “钻牛角尖”。比如把训练数据里的每个小例外都当成规律,结果换个新数据就错得离谱(过拟合)。这时候就得 “剪枝”—— 给树瘦瘦身。

预剪枝是 “边长边剪”:比如限制树的最大深度(最多问 5 个问题就得出结论),或者规定叶子节点至少得有 10 个样本才继续分。就像家长提前说 “不许挑食”,从一开始就避免坏习惯。

后剪枝是 “长完再剪”:先让树长得枝繁叶茂,再回头看哪些分支是 “多余的”。判断标准是 “损失函数”:自身的基尼指数(或熵)加上 α 乘以叶子节点数。α 越大,越鼓励少用叶子(简化树);α 越小,越允许复杂但精准的划分。就像考完试回头改错题,把没必要的步骤删掉。

    比如有个分支,剪枝前在验证集上正确率 57%,剪枝后反而升到 71%—— 显然这分支是 “画蛇添足”,该剪!

动手试试:决策树的 “调参” 小技巧

    实际用决策树时,代码里有几个关键参数得留意:

  • criterion:选 “gini”(基尼指数)还是 “entropy”(信息熵),看数据特点;

  • max_depth:树别太深,5-20 层通常够了,太深容易过拟合;

  • splitter:“best” 是找最优切分点,“random” 是随机找,后者快但可能稍欠精准。

    比如用决策树预测泰坦尼克号幸存者时,调对这些参数,就能让模型更准 —— 毕竟不是越复杂的树,越能看透 “生存规律”。

最后想说

    决策树的进化,其实是人类在教机器 “怎么更聪明地分类”。从 ID3 的直接,到 C4.5 的平衡,再到 CART 的高效,每一步都在逼近 “简单又准确” 的目标。就像我们自己做决策,既要抓住重点,又不能钻牛角尖 —— 原来机器学习和生活智慧,道理相通。

    下次再用决策树时,或许会忍不住想:这一步划分,是 ID3 会喜欢,还是 C4.5 更认可?这种 “与算法对话” 的感觉,还挺奇妙的。

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

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

相关文章

yggjs_react使用教程 v0.1.1

yggjs_react是一个用于快速创建React项目的工具,它集成了Vite、TypeScript、Zustand和React Router等现代前端技术栈,帮助开发者快速搭建高质量的React应用。 快速入门 快速入门部分将指导您如何安装yggjs_react工具、创建新项目并启动开发服务器。 安…

vulhub可用的docker源

这一块不太容易找,我试了好几个源,下面是20250820测试可用源 编辑方法sudo mkdir -p /etc/docker sudo vim /etc/docker/daemon.json 配置内容 [1] {"registry-mirrors" : ["https://docker.registry.cyou", "https://docker-…

基于YOLOv8-SEAttention与LLMs融合的农作物害虫智能诊断与防控决策系统

1. 引言 1.1 研究背景与意义 农作物虫害是制约农业产量与质量的重要因素。据FAO报告,全球每年因病虫害造成的粮食损失高达 20%–40%。传统人工巡查与经验诊断具有时效性差、成本高与专业人才不足等缺陷。近年来,计算机视觉特别是目标检测技术在农业检测…

从零开始构建GraphRAG红楼梦知识图谱问答项目(三)

文章结尾有CSDN官方提供的学长的联系方式!! 欢迎关注B站从零开始构建一个基于GraphRAG的红楼梦项目 第三集01 搭建后端服务 创建一个python文件server.py 完整源码放到文章最后了。 1.1 graphrag 相关导入 # GraphRAG 相关导入 from graphrag.query.cont…

S32K328(Arm Cortex-M7)适配CmBacktrace错误追踪

CmBacktrace 相当于重写了hard_fault函数,在hard_fault函数里面去分析SCB寄存器的信息和堆栈信息,然后把这些信息打印出来(或者写到flash);通过使用串口输出产生hard_fault的堆栈信息,然后利用addr2line工具反推出具体的代码执行函…

AI研究引擎的简单技术实现步骤

产品愿景与核心功能 1.1 产品使命 “洞见 Weaver”是一个全栈AI Web应用,旨在将用户的复杂研究问题,通过AI驱动的动态思维导图和结构化报告,转化为一次沉浸式的、可追溯的视觉探索之旅。我们的使命是,将AI复杂的推理过程透明化,将人类的探索直觉与AI的分析能力无缝结合,…

open webui源码分析5-Tools

本文从最简单的时间工具入手,分析Tools相关的代码。一、安装工具git clone https://github.com/open-webui/openapi-servers cd openapi-servers# 进入时间工具目录 cd servers/timepip install -r requirements.txt# 启动服务 uvicorn main:app --host 0.0.0.0 --r…

windows下通过vscode远程调试linux c/cpp程序配置

windows下通过vscode远程调试linux c/cpp程序配置vscode插件配置linux依赖工具安装launch.json配置vscode插件配置 CodeLLDB插件需要提前下载: linux依赖工具安装 sudo apt update sudo apt install cmake clangdlaunch.json配置 {"version": "0…

IDEA报JDK版本问题

解决思路:1.找到配置jdk的IDEA配置位置settings和project structure2.先配置setting3.再修改项目结构

VirtualBox 安装 Ubuntu Server 系统及 Ubuntu 初始配置

文章目录简介VirtualBoxUbuntu Server 简介Ubuntu Server 下载安装 Ubuntu Server首选项配置导入系统镜像配置系统用户配置内存 CPU 虚拟硬盘开始安装 Ubuntu安装完成登录系统配置网络Ubuntu 系统配置安装常用工具安装 SSH设置 root 密码配置 IP 地址(推荐自动分配I…

Milvus 可观测性最佳实践

Milvus 介绍 Milvus 是一个开源的向量数据库,专为处理大规模、高维度向量数据而设计,广泛应用于人工智能、推荐系统、图像检索、自然语言处理等场景。它支持亿级向量的高效存储与快速检索,内置多种相似度搜索算法(如 HNSW、IVF、…

arcgis-空间矫正工具(将下发数据A的信息放置原始数据B的原始信息并放置到成果数据C中,主要按下发数据A的范围)

正常来说,可以直接相交获取,但是会存在原始数据B将下发数据A进行分割,所以相交功能会导致最终成果会产生稀碎图斑及图斑切割,因此,经学习了解,学会此方法进行既保留原始数据B的信息,又按下发数据…

MySQL深分页慢问题及性能优化

在数据驱动的应用中,分页是不可或缺的功能。然而,当数据量达到百万甚至千万级别时,传统基于 LIMIT OFFSET 的分页方式会遭遇严重的性能瓶颈,即“深分页”问题。本文将剖析其根源并提供主流的优化策略。问题根源:LIMIT …

漫谈《数字图像处理》之平滑

在数字图像处理中,平滑(Smoothing) 的核心目标是降低图像噪声、模糊细节或简化纹理,本质是通过 “局部邻域运算” 对像素值进行 “平均化” 或 “规整化”,让图像整体更 “平缓”。形态学平滑与高斯平滑、均值平滑等其…

机器学习之数据预处理学习总结

在机器学习中,数据预处理是模型训练前至关重要的环节,直接影响模型的性能和准确性。通过本次学习,我系统掌握了数据预处理的核心方法与工具,现将主要内容总结如下:一、缺失值处理缺失值是实际数据中常见的问题&#xf…

在完全没有无线网络(Wi-Fi)和移动网络(蜂窝数据)的环境下,使用安卓平板,通过USB数据线(而不是Wi-Fi)来控制电脑(版本2)

在完全没有无线网络(Wi-Fi)和移动网络(蜂窝数据)的环境下,要实现用安卓手机通过USB数据线控制电脑,核心思路是:利用USB数据线创建一個纯粹的、本地的有线网络连接。 这不仅是可行的,…

Ubuntu22.04配置网络上网

前言 安装Ubuntu系统后,有时会遇到无法联网、无法使用浏览器的问题。然而当宿主机已连接网络时,虚拟机通常也能联网,需要进行一些配置,现在就以Ubuntu22.04为例。 VMware配置打开虚拟网络编辑器 启动VMWare点击编辑,并…

网络协议之TCP和UDP

写在前面 本文来看下TCP和UDP协议。 我们接触这两个协议最多的应该就是在面试中了,经典题目就是“TCP和UDP有什么区别?”,而最常得到的答案就是TCP是面向连接的,而UDP是面向无连接的。 那么这里的连接到底是什么呢?难…

Qt音乐播放器项目实践:本地持久化与边角问题处理

本音乐播放器完整项目源码(包含各个按钮的图片文件): ly/Project-Code - Gitee.com 一.本地持久化 请注意,学习此部分之前需要读者具有一定的Mysql基础。如果读者能够接受无法本地持久化,那么可以跳过这部分内容,直接去看边角问题处理。我…

基于NB-IoT技术的宠物定位跟踪系统设计#基于STM32\物联网\单片机技术的宠物定位跟踪系统

基于NB-IoT技术的宠物定位跟踪系统设计#基于STM32\物联网\单片机技术的宠物定位跟踪系统在设计基于NB-IoT技术的宠物定位跟踪系统时,首先明确了系统分为感知层、网络层和应用层三个部分。在感知层,考虑到需要获取宠物位置和运动状态,选用GPS定…