当前位置: 首页 > 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.dtcms.com/a/339250.html

相关文章:

  • CMake进阶: CMake Modules---简化CMake配置的利器
  • C# NX二次开发:操作按钮控件Button和标签控件Label详解
  • 机器学习之决策树:从原理到实战(附泰坦尼克号预测任务)
  • STM32学习笔记15-SPI通信软件控制
  • Ansible 大项目管理实践笔记:并行任务、角色管理与负载均衡架构部署
  • Effective C++ 条款51:编写new和delete时需固守常规
  • Pandas 入门到实践:核心数据结构与基础操作全解析(Day1 学习笔记)
  • 电源、电流及功率实测
  • Shader开发(十五)创建四边形
  • 【工作笔记】VMware安装 - 安装程序检测到主机启用了Hyper-V或Device/Credential Guard……提示解决方法
  • 在CentOS系统中查询已删除但仍占用磁盘空间的文件
  • 深入解析:Unity、Unreal Engine与Godot引擎中的Uniform变量管理
  • 【CV 图像分割】①——目标分割介绍
  • 网络编程day4
  • 牛客面经 - 2025/8/19
  • C++高频知识点(二十八)
  • 数据库-MYSQL配置下载
  • 前端性能优化实战手册:从网络到运行时,一套可复制落地的清单
  • 基于提示词工程和MCP构建垂直Agent应用
  • Go语言中的优雅并发控制:通道信号量模式详解
  • JS 中的 this
  • AI-调查研究-55-机器人 百年进化史:从Unimate到人形智能体的技术跃迁
  • Navicat 使用超详细教程:从下载到实战案例
  • Vue.prototype 的作用
  • AJAX (一)
  • 【深度学习-pytorch】mnist数字识别
  • Java 大视界 -- Java 大数据机器学习模型在自然语言处理中的多语言翻译与文化适应性优化
  • go.uber.org/zap 日志库高性能写入
  • 结合BI多维度异常分析(日期-> 商家/渠道->日期(商家/渠道))
  • 常见BI工具