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

机器学习(决策树2)

一、决策树算法
  1. ID3 算法
    • 核心概念:使用信息增益选择划分属性,信息增益是某个属性带来的熵增,其值越大,使用该属性划分获得的 “纯度提升” 越大。
    • 缺点:对可取值数目较多的属性有所偏好,例如最优划分为 “编号” 这类属性。
    • 示例数据:包含 7 条记录,涉及天气、温度、湿度、是否多云及是否出去玩等属性,用于演示算法应用。
  2. C4.5 算法
    • 核心概念:采用信息增益率(信息增益 ÷ 自身熵)来选择划分属性,以改进 ID3 算法的不足。
    • 示例数据:与 ID3 算法使用相同的 7 条记录数据。
  3. CART 算法
    • 核心概念:通过基尼指数衡量数据集纯度,基尼指数 Gini (D) 反映从数据集 D 中随机抽取两个样本,其类别标记不一致的概率,p 越大,Gini (D) 越小,数据集纯度越高。
二、连续值处理
  • 方法:采用贪婪算法,先对连续值进行排序,然后确定可能的分界点进行二分,这一过程实质是 “离散化”。
  • 示例:对于 Taxable Income 的连续值 60、70、75、85、90、95、100、120、125、220,有 9 个可能的分界点,可分割为如 TaxIn<=80 和 TaxIn>80,或 TaxIn<=97.5 和 TaxIn>97.5 等情况。
三、决策树剪枝策略
  1. 剪枝原因:决策树过拟合风险大,理论上可完全分开数据,需通过剪枝避免过拟合。
  2. 预剪枝
    • 定义:边建立决策树边进行剪枝的操作,更实用。
    • 方式:可通过限制深度、叶子节点个数、叶子节点样本数、信息增益量等进行剪枝。
  3. 后剪枝
    • 定义:建立完决策树后进行剪枝操作。
    • 衡量标准:最终损失 = 自身的 GINI 系数值 +α× 叶子节点数量。
      • α 越大,越不易过拟合,但结果可能欠佳。
      • α 越小,更注重结果好坏,过拟合可能较严重。
    • 示例:原分支 “色泽 =?” 剪枝前验证集精度 57.1%,剪枝后 71.4%,决策为剪枝;原分支 “纹理 =?” 剪枝前 42.9%,剪枝后 57.1%,决策为剪枝。
四、决策树代码实现
  • 函数DecisionTreeClassifier()用于创建决策树模型。
  • 主要参数

参数说明
criterion可选择 gini(基尼系数)或者 entropy(信息熵)
splitter可选择 best(在所有特征中找最好的切分点)或者 random(在部分特征中找)
max_features可设为 None(所有)、log2、sqrt、N
max_depthint or None, optional (default=None),设置决策树的最大深度,深度越大越易过拟合,推荐 5-20 之间
五、课堂练习
  • 任务:使用决策树对泰坦尼克号幸存者进行预测。

关键问题

  1. 问题:ID3、C4.5、CART 三种决策树算法在划分属性选择上有何不同?
    答案:ID3 算法使用信息增益选择划分属性,信息增益越大,纯度提升越大,但偏好可取值多的属性;C4.5 算法采用信息增益率(信息增益 ÷ 自身熵)来选择,以改进 ID3 的不足;CART 算法则通过基尼指数衡量数据集纯度,基尼指数越小,数据集纯度越高,以此选择划分属性。
  2. 问题:决策树为何需要剪枝?预剪枝和后剪枝有何区别?
    答案:决策树过拟合风险很大,理论上可完全分开数据,剪枝是为了避免过拟合。预剪枝是边建立决策树边进行剪枝,更实用,可通过限制深度等方式实现;后剪枝是建立完决策树后进行剪枝,以最终损失(自身的 GINI 系数值 +α× 叶子节点数量)为衡量标准,α 大小影响过拟合和结果好坏。
  3. 问题:在决策树中,如何处理连续值属性?
    答案:处理连续值属性采用贪婪算法,首先对连续值进行排序,然后确定可能的分界点进行二分,这一过程实质是 “离散化”。例如对于 Taxable Income 的连续值,排序后可找到多个分界点,将其分割为不同的区间。
http://www.lryc.cn/news/625591.html

相关文章:

  • Leetcode 深度优先搜索 (7)
  • Python爬虫第二课:爬取HTML静态网页之《某某小说》 小说章节和内容完整版
  • 【LeetCode】3655. 区间乘法查询后的异或 II (差分/商分 + 根号算法)
  • Mybatis执行SQL流程(四)之MyBatis中JDK动态代理
  • 【HTML】3D动态凯旋门
  • Leetcode 343. 整数拆分 动态规划
  • C++入门自学Day14-- Stack和Queue的自实现(适配器)
  • 神经网络中的那些关键设计:从输入输出到参数更新
  • 面试题储备-MQ篇 3-说说你对Kafka的理解
  • 图论\dp 两题
  • 设计模式笔记_行为型_命令模式
  • 【React】事件绑定和组件基础使用
  • 从线性回归到神经网络到自注意力机制 —— 激活函数与参数的演进
  • java基础(十二)redis 日志机制以及常见问题
  • 2025年12大AI测试自动化工具
  • 多模态大模型应用落地:从图文生成到音视频交互的技术选型与实践
  • 【模块系列】STM32W25Q64
  • TDengine IDMP 运维指南(4. 使用 Docker 部署)
  • 第六天~提取Arxml中CAN物理通道信息CANChannel--Physical Channel
  • 5. Dataloader 自定义数据集制作
  • C语言基础:(十八)C语言内存函数
  • java17学习笔记-Deprecate the Applet API for Removal
  • 算法——质数筛法
  • yolov5s.onnx转rk模型以及相关使用详细教程
  • 假设检验的原理
  • python的社区互助养老系统
  • word如何转换为pdf
  • MFC中使用EXCEL的方法之一
  • ios使用saveVideoToPhotosAlbum 保存视频失败提示 invalid video
  • 基于单片机的智能声控窗帘