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

决策树学习总结

一、决策树主要算法

  1. ID3 算法
    • 核心依据是信息增益,信息增益越大,使用该属性划分获得的 “纯度提升” 越大,故以此选择划分属性。
    • 存在局限性,信息增益准则对可取值数目较多的属性有所偏好,例如在某些情况下可能会将 “编号” 作为最优划分。
  2. C4.5 算法
    • 采用信息增益率来选择划分属性,信息增益率为信息增益除以该属性自身的熵,一定程度上弥补了 ID3 算法的不足。
    • 信息增益率:信息增益/自身熵
  3. CART 算法
    • 以基尼指数作为划分依据,基尼指数 Gini (D) 反映了从数据集 D 中随机抽取两个样本,其类别标记不一致的概率。
    • 数据集的纯度与基尼指数成反比,即 p 越大,Gini (D) 越小,数据集 D 的纯度越高。

二、特殊情况处理

对于连续值,可采用贪婪算法进行处理,具体步骤如下:

  1. 先对连续值进行排序。
  2. 若进行 “二分”,可得到多个分界点,通过选择合适的分界点将连续值进行离散化,从而应用于决策树的划分。

三、剪枝策略

  1. 剪枝原因:决策树过拟合风险很大,理论上可以完全分离开数据,通过剪枝可降低过拟合风险。
  2. 预剪枝:边建立决策树边进行剪枝,更具实用性。可通过限制深度、叶子节点个数、叶子节点样本数、信息增益量等方式实现。
  3. 后剪枝:建立完决策树后进行剪枝操作。衡量标准为最终损失 = 自身的 GINI 系数值 +α× 叶子节点数量,其中 α 的大小影响剪枝效果:α 越大,越不易过拟合,但结果可能欠佳;α 越小,更注重结果好坏,过拟合可能较难控制。

四、决策树代码实现相关参数

DecisionTreeClassifier()中,主要参数包括:

  • criterion:可选择 gini(基尼系数)或者 entropy(信息熵)。
  • splitter:可选择 best(在所有特征中找最好的切分点)或者 random(在部分特征中找切分点)。
  • max_features:可设置为 None(所有)、log2、sqrt、N 等。
  • max_depth:为 int 或 None,默认 None,用于设置决策树的最大深度,深度越大越容易过拟合,推荐深度在 5-20 之间。

五、练习

今天的课堂练习,使用决策树对泰坦尼克号幸存者进行预测

通过本次学习,对决策树的主要算法、特殊情况处理、剪枝策略、代码实现参数及实践应用有了较为全面的认识,为后续进一步深入学习和应用决策树奠定了基础。

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

相关文章:

  • 在 IntelliJ IDEA 中修改 Git Commit 描述
  • Java秋招:高并发查询优化
  • 【学习】Linux 内核中的 cgroup freezer 子系统
  • 基于SpringBoot的高校心理教育辅导系统
  • 【python实用小脚本-190】Python一键删除PDF任意页:输入页码秒出干净文件——再也不用在线裁剪排队
  • Android Cordova 开发 - Cordova 嵌入 Android
  • 如何免费给视频加字幕
  • 【论文阅读】SIMBA: single-cell embedding along with features(1)
  • 当qtcpserver类对象释放时,该类下面的多个qtcpsocket连接会释放吗
  • 论文阅读系列(一)Qwen-Image Technical Report
  • IATF 16949认证是什么?
  • GaussianLSS
  • Java 并发同步工具类详解
  • WordPress 从删除文章后(清空回收站)保存被删除文章的链接到txt
  • 24.早期目标检测
  • Nacos-7--扩展一下:0-RTT和1-RTT怎么理解?
  • 【unitrix数间混合计算】3.2 非零标记trait(non_zero.rs)
  • JVM垃圾回收(GC)深度解析:原理、调优与问题排查
  • libvaapi,libva-utils源码获取并编译测试
  • 深入理解AQS:并发编程的基石
  • django生成迁移文件,执行生成到数据库
  • sfc_os!SfcValidateDLL函数分析之SfcGetValidationData
  • Android音频学习(十三)——音量配置文件分析
  • Python数据分析:DataFrame,reindex,重建索引。有时候整型变浮点型,有时候又不变?
  • FPGA 在情绪识别领域的护理应用(一)
  • 第二十六天:static、const、#define的用法和区别
  • Java:Assert与 Return
  • ZKmall开源商城跨境物流解决方案:让全球配送从复杂到可控的实战之路
  • 深入理解 MySQL 主从同步
  • 【弦乐教程】弦乐家族与音源解析:从乐器到音色的全面认识