当前位置: 首页 > news >正文

决策树算法学习总结

一、经典决策树算法原理
(一)ID3 算法
核心思想:以 “信息增益” 作为划分属性的选择标准,通过最大化信息增益来提升数据集的 “纯度”。
关键概念 —— 信息增益:指某个属性带来的 “熵减”(即纯度提升量)。具体来说,当用属性 a 对数据集 D 进行划分后,数据集的整体熵值会降低,降低的数值就是属性 a 的信息增益。信息增益越大,说明使用该属性划分后,数据集的类别分布越集中(纯度越高),因此更适合作为当前节点的划分属性。
局限性:信息增益准则对 “可取值数目较多的属性” 存在天然偏好。例如,若数据集中存在 “编号” 这类属性(每个样本的编号唯一),用编号划分时每个子集都只包含单个样本,信息增益会非常大,但这种划分对分类任务毫无意义,因为它完全过拟合了训练数据,无法推广到新样本。
(二)C4.5 算法
改进目标:解决 ID3 算法对取值多的属性偏好问题,通过引入 “信息增益率” 实现更合理的属性选择。
核心指标 —— 信息增益率:计算公式为 “信息增益 ÷ 属性自身的熵”。其中,属性自身的熵反映了该属性取值的分散程度:取值越多且分布越均匀,自身熵越大。通过除以自身熵,信息增益率可以平衡属性取值数量对结果的影响,避免优先选择取值过多的属性。例如,对于 “编号” 这类属性,虽然信息增益大,但自身熵也极大,因此信息增益率会降低,从而避免被误选为最优划分属性。
(三)CART 算法
核心指标 —— 基尼指数:用于衡量数据集的纯度,其物理意义是 “从数据集 D 中随机抽取两个样本,它们的类别标记不一致的概率”。


是数据集 D 中第 k 类样本的占比。当某个类别在数据集中占比极高(
P k
接近 1)时,基尼指数会很小,说明数据集纯度很高;反之,若各类别占比接近,基尼指数会增大,纯度降低。
特点:CART 树是 “二叉树”,每次划分都将数据集分为两个子集,因此无论是离散属性还是连续属性,都采用二分法处理,这与 ID3、C4.5 的多叉划分不同。
二、连续值属性的处理方法
在实际数据中,很多属性是连续值(如收入、年龄等),无法直接像离散属性那样按取值划分,需要通过 “离散化” 转化为离散属性,具体步骤如下:

排序:将连续属性的所有取值按从小到大的顺序排列。例如,某数据集中 “应税收入(Taxable Income)” 的取值为 60K、70K、75K、85K、90K、95K、100K、120K、125K、220K,排序后保持原顺序。
确定候选分界点:采用 “二分法” 时,候选分界点为相邻两个取值的中间值。对于有 n 个不同取值的连续属性,候选分界点有 n-1 个。例如上述收入数据有 10 个取值,因此有 9 个候选分界点(如 65K、72.5K 等)。
选择最优分界点:使用 “贪婪算法”,分别计算每个候选分界点对应的信息增益(或基尼指数),选择能使划分后纯度提升最大的分界点作为最终分割点。例如,可将收入分割为 “TaxIn≤80K” 和 “TaxIn>80K”,或 “TaxIn≤97.5K” 和 “TaxIn>97.5K”,具体取决于哪种划分的指标更优。
三、决策树剪枝策略(解决过拟合问题)
(一)剪枝的必要性
决策树具有很强的拟合能力,理论上可以通过不断划分,将训练集中的每个样本都分到单独的叶子节点,实现 “零错误率”。但这种过度复杂的树会 “记住” 训练数据中的噪声和细节,导致在新数据(测试集)上表现很差,即发生 “过拟合”。剪枝的目的就是通过简化树的结构,降低过拟合风险,提高模型的泛化能力。
(二)预剪枝
操作时机:在决策树构建过程中同步进行剪枝,即边建边剪。
核心逻辑:通过设置 “停止条件”,提前终止某些分支的生长。例如:
限制树的最大深度:当树的深度达到预设阈值时,不再继续划分。
限制叶子节点的最小样本数:若当前节点的样本数小于阈值,即使信息增益仍为正,也停止划分,将当前节点设为叶子节点。
限制信息增益阈值:若某属性的信息增益小于预设阈值,不采用该属性划分,直接将当前节点设为叶子节点。
优点:计算效率高,能避免构建不必要的复杂分支;实用性强,在实际工程中应用广泛。
(三)后剪枝
操作时机:先完整构建决策树,再从叶子节点向上逐层剪枝。
核心逻辑:通过 “损失函数” 衡量剪枝前后的模型性能,保留性能更优的结构。损失函数公式为:最终损失 = 叶子节点的基尼系数(或熵)之和 + α× 叶子节点数量。其中:
第一项 “叶子节点的基尼系数之和” 反映模型对训练数据的拟合程度,值越小拟合越好。
第二项 “α× 叶子节点数量” 是正则化项,α 为超参数,控制对树复杂度的惩罚力度。α 越大,惩罚越强,越倾向于选择简单的树(叶子节点少);α 越小,惩罚越弱,更注重拟合效果。
剪枝决策:对每个非叶子节点,计算 “剪枝后将其变为叶子节点” 的损失,与 “保留原分支” 的损失对比,若剪枝后损失更小,则进行剪枝。
实例效果:在 “好瓜 / 坏瓜” 分类案例中,原分支 “色泽 =?” 剪枝前验证集精度为 57.1%,剪枝后提升至 71.4%;分支 “纹理 =?” 剪枝前精度 42.9%,剪枝后提升至 57.1%,均通过后剪枝显著提升了泛化能力。
四、决策树代码实现关键参数(以 sklearn 为例)
在 Python 的 scikit-learn 库中,使用DecisionTreeClassifier()类创建决策树分类模型,以下是核心参数的详细说明:

criterion:指定划分属性的评价指标,可选值为 “gini”(基尼指数)或 “entropy”(信息熵)。默认值为 “gini”,计算效率略高于熵,实际应用中两者效果差异不大。
splitter:指定划分点的选择策略,可选值为 “best” 或 “random”。“best” 表示在所有特征中寻找最优划分点,适合数据量较小的场景;“random” 表示在部分特征中随机选择划分点,能减少过拟合风险,适合高维数据或需要加快训练速度的场景。
整数 N:固定使用 N 个特征。该参数用于降低模型复杂度,避免过拟合。
max_depth:指定树的最大深度,默认值为 None(不限制深度)。深度越大,树越复杂,越容易过拟合。实际应用中推荐设置为 5-20 之间,需根据数据规模和复杂度调整。

http://www.dtcms.com/a/339990.html

相关文章:

  • 楼宇自控系统的应用,已然成为智能建筑行业发展方向
  • 将字符串“1,2,3“转换为“1‘,‘2‘,‘3‘“
  • Hive常用命令参考
  • 如何保证ES和数据库的数据一致性?
  • java基础(十二)redis 日志机制以及常见问题
  • langChain—状态管理:跟踪复杂任务的上下文流程
  • Linux 进程间通信(IPC):信号、共享内存
  • 内网后渗透攻击--隐藏通信隧道技术(压缩、上传,下载)
  • 19. 大数据-产品概念
  • MySQL 从入门到精通 11:触发器
  • 【群晖NAS】在openwrt上实现内网穿透,并配置外网IP映射(Debian/Ubuntu)
  • 2025-08-19利用opencv检测图片中文字及图片的坐标
  • RocketMq消费者动态订阅topic
  • 【PyTorch项目实战】OpenNMT本地机器翻译框架 —— 支持本地部署和自定义训练
  • 千里马招标网站的核心技术分析
  • qwen2.5vl(1): 环境安装及运行
  • 二维图像处理(完整版2)
  • iOS安全和逆向系列教程 第22篇:iOS应用网络安全与通信保护
  • 自学python第10天
  • 路由器最大传输速率测试
  • VS Code 终端完全指南
  • Pandas中数据清理、连接数据以及合并多个数据集的方法
  • 仿新浪微博 typecho 主题模板源码
  • 1. AutoSAR 技术学习
  • Spring AOP核心原理与实战指南
  • 任务十一 搜索页面开发
  • Incredibuild 新增 Unity 支持:击破构建时间过长的痛点
  • AutoSarAP状态管理的状态机能否理解成C++的类?
  • 电视系统:开启视听新时代
  • 一个多功能的文件分享工具--zdir手动部署教程