决策树算法详解:从 ID3、C4.5 到 CART 以及 sklearn 参数调优
一、什么是决策树决策树通过对训练样本的学习并建立分类规则然后依据分类规则对新样本数据进行分类预测属于有效监督学习。核心所以数据从根节点一步一步落到叶子节点。决策树的结构非常类似生活中的判断过程例如天气怎么样├── 晴天 → 湿度高吗│ ├── 是 → 不打球│ └── 否 → 打球└── 阴天 → 打球其中根节点第一个节点非叶子节点中间节点叶子节点最终结果节点决策树的核心问题是如何选择最优特征进行数据划分不同算法采用了不同的方法ID3使用信息增益C4.5使用信息增益率CART使用基尼指数Gini Index二、ID3 算法基于信息增益选择特征1. 信息熵EntropyID3 算法的核心思想是选择能够最大程度降低数据不确定性的特征作为划分依据。衡量数据混乱程度的指标就是信息熵。公式\[ H(D) -\sum p_i \log_2(p_i) \]其中\( p_i \)某一类别出现的概率熵越小数据越纯净熵越大数据越混乱在决策树中希望划分之后的数据熵越来越小。文件中的案例使用是否外出打球作为分类任务14 天数据中打球9 天不打球5 天因此类别熵为\[ H(D) 0.940 \]2. 信息增益Information Gain信息增益表示一个特征能够减少多少信息的不确定性。公式\[ \text{Gain}(D, A) H(D) - H(D|A) \]如果某个特征带来的信息增益最大则说明该特征最具有分类能力会优先作为决策树节点。3. ID3 案例计算假设数据包含特征分类天气晴天、阴天、雨天温度热、温和、凉爽湿度高、正常风有风、无风分别计算不同特征的信息增益。1天气特征天气划分后晴天5 天阴天4 天雨天5 天计算得到\[ H(D|\text{天气}) 0.693 \]因此\[ \text{Gain}(\text{天气}) 0.940 - 0.693 0.247 \]2温度特征计算得到\[ \text{Gain}(\text{温度}) 0.940 - 0.911 0.029 \]3湿度特征计算得到\[ \text{Gain}(\text{湿度}) 0.151 \]4风特征计算得到\[ \text{Gain}(\text{风}) 0.048 \]最终结果特征信息增益天气0.247湿度0.151风0.048温度0.029因此\[ \text{天气} \text{湿度} \text{风} \text{温度} \]天气成为根节点。三、C4.5 算法解决 ID3 容易偏向取值多特征的问题1. 为什么需要 C4.5ID3 算法存在一个问题如果某个特征拥有大量不同取值例如编号用户 ID商品编号虽然信息增益很高但实际没有分类意义。因此 C4.5 提出使用信息增益率代替信息增益。2. 信息增益率计算过程计算类别熵计算每个属性的信息熵计算信息增益\[ \text{Gain} H(D) - H(D|A) \]计算信息增益率\[ \text{GainRatio} \frac{\text{Gain}}{H(A)} \]选择信息增益率最大的特征。3. C4.5 案例计算计算结果特征信息增益率天气0.1566湿度0.151风0.049温度0.0186排序\[ \text{天气} \text{湿度} \text{风} \text{温度} \]因此依旧选择天气作为首个划分节点。四、CART 算法基于基尼指数CARTClassification And Regression Tree是目前应用非常广泛的一种决策树算法。它与 ID3、C4.5 最大的区别ID3信息增益C4.5信息增益率CART基尼指数CART 选择使划分后的数据基尼指数最小的特征。1. 基尼指数Gini Index公式\[ \text{Gini}(D) 1 - \sum p_i^2 \]含义Gini 越小数据越纯最好的划分方式就是让划分后的 Gini 指数最低例如贷款预测案例根据年龄特征青年中年老年分别计算不同年龄节点的基尼指数。五、决策树剪枝解决过拟合问题1. 为什么需要剪枝在决策树学习过程中模型会不断地对数据进行划分。如果不限制树的生长例如有 1000 条训练数据构建出来的决策树可能生成 1000 条不同的路径。也就是说每一个样本都有自己对应的一条判断路线树会完全记住训练数据对训练数据预测效果很好但是面对新的未知数据时可能无法正确判断这种现象称为过拟合Overfitting即模型过度学习训练数据中的细节和噪声导致泛化能力下降。因此需要通过剪枝Pruning降低模型复杂度提高模型对新数据的预测能力。2. 决策树如何剪枝决策树剪枝主要分为两种1预剪枝Pre-Pruning预剪枝是在决策树生成过程中提前限制树的生长。也就是说在树还没有完全建立之前根据一定条件停止继续划分。例如限制树的最大深度限制叶子节点数量限制叶子节点最少样本数量优点训练速度快可以减少模型复杂度防止过拟合缺点可能提前停止导致模型没有充分学习数据规律2后剪枝Post-Pruning后剪枝是在决策树已经完全生成之后再删除不必要的分支。流程先构建完整决策树分析每个节点的重要程度删除贡献较小的节点得到更加简单的决策树优点保留更多数据规律通常泛化能力更强缺点计算成本较高3. 预剪枝策略在实际机器学习中预剪枝通常通过以下方式实现1限制树的深度参数max_depth表示决策树允许达到的最大层数。例如如果设置max_depth 3表示树最多只有 3 层。作用防止树无限增长降低模型复杂度减少过拟合在数据量较小的时候可以不限制深度如果样本数量多特征数量多则可以尝试限制树深度。2限制叶子节点数量参数max_leaf_nodes表示限制决策树最大的叶子节点数量。例如设置max_leaf_nodes 10那么当叶子节点达到 10 个模型不会继续产生新的分支作用控制树结构规模防止模型学习过多细节3限制叶子节点样本数量参数min_samples_leaf表示叶子节点中最少需要包含多少个样本。例如min_samples_leaf 5表示一个叶子节点至少需要 5 个样本。如果某个节点样本过少说明该节点可能只是在记忆训练数据容易造成过拟合因此可以进行剪枝。4. 基尼系数与剪枝CART 算法使用基尼指数Gini Index作为节点划分标准。公式\[ \text{Gini}(D) 1 - \sum p_i^2 \]其中\( p_i \)类别比例基尼指数越小说明数据越纯。在剪枝过程中如果某个节点继续划分后基尼指数下降不明显分类效果提升很小那么这个节点可能没有必要继续展开。因此基尼系数不仅用于选择划分节点也可以辅助判断树结构是否合理。CART 算法本身就是通过基尼指数最小化准则进行特征选择。5. 剪枝前后的决策树变化剪枝前根节点 | ---------------- | | 节点A 节点B / \ / \ C D E F /|\ /|\ ...大量分支...特点树结构复杂节点数量多容易过拟合剪枝后根节点 | ---------------- | | 节点A 节点B | 结果特点删除无意义分支模型更加简单泛化能力提高六、sklearn 中的决策树剪枝参数在 sklearn 中from sklearn.tree import DecisionTreeClassifier model DecisionTreeClassifier( criteriongini, max_depth5, min_samples_leaf10, max_leaf_nodes20 )其中参数

相关新闻

A 股回测中的复权与 Point-in-Time 偏差:一次数据泄露的工程复盘

A 股回测中的复权与 Point-in-Time 偏差:一次数据泄露的工程复盘

A 股回测中的复权与 Point-in-Time 偏差:一次数据泄露的工程复盘 在量化投资领域,回测是验证策略有效性的核心环节。然而,一个看似微小的数据预处理问题——复权处理与 Point-in-Time(时间点)数据偏差——可能导致回测…

2026/7/31 4:55:47阅读更多 →
游戏性能优化实战:解决GC频繁触发导致的帧率卡顿问题

游戏性能优化实战:解决GC频繁触发导致的帧率卡顿问题

1. 项目概述:当游戏帧率被GC“偷袭”做游戏开发,尤其是移动端或者对性能要求苛刻的平台,最怕的就是画面突然卡顿。玩家正沉浸在激烈的对战或者精美的场景中,突然画面一滞,帧率(FPS)从流畅的60直…

2026/7/31 4:53:46阅读更多 →
功能开发插件的智能代理架构

功能开发插件的智能代理架构

功能开发插件的智能代理架构 【免费下载链接】claude-code Claude Code is an agentic coding tool that lives in your terminal, understands your codebase, and helps you code faster by executing routine tasks, explaining complex code, and handling git workflows -…

2026/7/31 4:53:46阅读更多 →
从STL容器到自研哈希表:C++哈希表核心原理与实现详解

从STL容器到自研哈希表:C++哈希表核心原理与实现详解

1. 项目概述:从STL容器到自研哈希表在C的日常开发中,std::unordered_map和std::unordered_set是我们处理快速查找、去重问题的左膀右臂。它们基于哈希表实现,提供了平均O(1)时间复杂度的插入、删除和查找操作,性能远超基于红黑树的…

2026/7/31 6:02:09阅读更多 →
AMD Radeon显卡全史:从架构解析到二手选购实战指南

AMD Radeon显卡全史:从架构解析到二手选购实战指南

1. 项目概述:一份持续更新的显卡“族谱”如果你是一位硬件爱好者、二手淘金客,或者只是想搞清楚自己那台老电脑里那块显卡的“前世今生”,那么一份详尽、准确的历代显卡列表就是你的“藏宝图”。我整理这份《1996-2023历代AMD Radeon桌面显卡…

2026/7/31 6:02:09阅读更多 →
Python脚本打包成exe与GUI界面开发实战指南

Python脚本打包成exe与GUI界面开发实战指南

1. 从脚本到应用:为什么我们需要打包与UI如果你用Python写过一些实用的小工具,比如一个批量重命名文件的脚本,或者一个自动整理桌面文档的程序,你大概率会遇到一个尴尬的局面:你想把这个工具分享给不会编程的朋友或同事…

2026/7/31 6:02:09阅读更多 →
openpyxl PatternFill参数详解:patternType对颜色填充的影响与最佳实践

openpyxl PatternFill参数详解:patternType对颜色填充的影响与最佳实践

1. 项目缘起:一个看似简单却暗藏玄机的颜色填充需求最近在做一个数据报表自动化的项目,用到了Python的openpyxl库来处理Excel文件。需求很简单:根据数据的不同状态,给对应的单元格填充不同的背景色,比如“通过”用绿色…

2026/7/31 6:02:09阅读更多 →
07 FastAPI

07 FastAPI

FastAPI 入门 FastAPI 是什么? FastAPI 是 Python 里写 Web API 的框架,特点:特点说明快性能接近 Node.js、Go简单几行代码就能起一个 API自动文档启动后访问 /docs 有交互式文档类型注解和第 19 课的类型注解无缝配合它和 Flask、Django 的区…

2026/7/31 6:02:08阅读更多 →
SKY77652-31射频放大器芯片与MIPI RFFE接口应用解析

SKY77652-31射频放大器芯片与MIPI RFFE接口应用解析

1. SKY77652-31放大器芯片深度解析这款由Skyworks推出的射频前端模块,专为4G/5G移动设备设计。我在实际项目中多次使用该芯片,最突出的感受是其将功率放大器(PA)、低噪声放大器(LNA)、开关和滤波器集成在3mm3mm的超小封装内。这种高度集成化设计让PCB布局…

2026/7/31 6:00:08阅读更多 →
覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

🔹 工具基础介绍 OpenClaw 是开源生态中一款实用性较强的本地智能工具,凭借本地离线运行、可视化图形操作和任务自动化三大核心特性,赢得了众多用户的青睐。与普通在线对话AI工具不同,它属于能够直接操控本机软硬件的智能数字员工…

2026/7/30 15:03:16阅读更多 →
伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

所谓液压伺服阀体的精密激光焊接,是用激光束对阀座壳体(通常为不锈钢或铝合金)进行密封焊接,使阀体在21-35MPa的高压液压油或压缩气体中长期运行而不发生介质泄漏。液压伺服阀是高端液压系统的"大脑"。从航空航天飞行控…

2026/7/30 12:22:27阅读更多 →
D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南 【免费下载链接】d2dx D2DX is a complete solution to make Diablo II run well on modern PCs, with high fps and better resolutions. 项目地址: https://gitcode.com/gh_mirrors/d2/d2dx 你是否还在…

2026/7/30 15:13:02阅读更多 →
物理复制比逻辑复制好在哪?数据库复制原理详解

物理复制比逻辑复制好在哪?数据库复制原理详解

数据库复制是把主库数据同步到备库的机制,分为逻辑复制和物理复制两种。逻辑复制传输的是 SQL 语句或行变更事件,物理复制传输的是存储引擎底层的物理日志。阿里云 PolarDB(云原生数据库)采用物理复制,在同步延迟、数据…

2026/7/31 0:00:40阅读更多 →
BilibiliDown:3分钟学会B站视频下载的终极指南

BilibiliDown:3分钟学会B站视频下载的终极指南

BilibiliDown:3分钟学会B站视频下载的终极指南 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader 😳 项目地址: https://gitcode.com/gh_mirrors/bi/Bilib…

2026/7/31 0:00:41阅读更多 →
有哪些游戏数据AI平台?游戏行业Data+AI融合方案盘点

有哪些游戏数据AI平台?游戏行业Data+AI融合方案盘点

当前,游戏行业的“DataAI融合”已从概念验证进入价值落地阶段。根据IDC 2025年数据,中国AI游戏云市场规模已达18.6亿元;同时,游戏研发环节AI渗透率高达86%,生成式AI内容普及率超过50%。面对庞大的市场,游戏…

2026/7/31 0:00:41阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/31 0:49:33阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/31 5:08:18阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/30 15:43:46阅读更多 →