决策树8.19

决策树算法概述

  • 介绍了三种决策树算法:ID3、C4.5、CART。
    • ID3算法:通过信息增益评估特征选择,信息增益越大,特征划分效果越好。
    • C4.5算法:引入信息增益率(信息增益除以自身熵),缓解ID3对稀疏矩阵的偏好问题。
    • CART算法:基于基尼系数评估特征,基尼系数越小,纯度越高,适用于连续值和分类问题。

连续值处理

  • 连续值可通过设定阈值转换为分类问题(如大于/小于某值),类似逻辑回归的思想。
  • 示例:成绩阈值设为60分,将回归问题转换为分类问题(及格/不及格)。

决策树剪枝策略

  • 预剪枝:边构建树边剪枝,通过限制深度、叶子节点数、信息增益量等防止过拟合。
  • 后剪枝:先完整构建树,再通过损失函数(如基尼系数+叶子节点数×α)剪枝,α为可调参数,控制剪枝强度。

过拟合与泛化能力

  • 决策树易过拟合,需通过剪枝平衡模型复杂度。
  • 泛化能力指模型适应新数据的能力,决策树泛化能力较弱,需结合业务场景调整。

代码实现与参数

  • 使用基尼系数或信息熵作为分裂标准。
  • 特征选择策略:best(全局最优切分点)或random(随机子集最优切分点)。

讨论与答疑

  • 解释了稀疏矩阵下ID3算法的局限性及C4.5的改进。
  • 强调α(剪枝参数)需根据实际数据调整,通常取适中值以平衡过拟合与准确率。

随机森林与决策树铺垫

  • 讨论随机森林中寻找最佳切分点的重要性,强调若使用相同数据集和切分点会导致决策树完全相同,失去集成学习意义。
  • 关键参数包括:最大特征数(参考特征数量)、最大深度(预剪枝策略一致)。

泰坦尼克号数据集预测

  • 数据集内容:乘客ID、年龄、性别、存活标签(1为幸存,0为死亡)。
  • 数据预处理:
    • 删除无关列(如姓名、票号)及缺失值过多的列(如船舱号)。
    • 填充年龄缺失值(均值填充),删除港口缺失行(仅2条)。
    • 分类变量(如性别、港口)转换为数值型(如性别:0/1,港口:0/1/2)。

模型训练与评估

  • 数据切分:训练集70%、测试集30%,分离特征与标签。
  • 决策树分类器:
    • 初始准确率73.4%,十折交叉验证略高(因数据重复使用导致虚高)。
    • 网格搜索法优化超参数(最大深度、切分策略、最小样本数等),最优参数组合:
      • 最大深度=6、信息增益切分、最小混乱度下降=0、最小叶子样本数=5。
    • 最终模型准确率82%,存在过拟合(训练集91% vs 测试集82%)。
复制代码
## **关键概念与注意事项**

* **过拟合处理**:通过预剪枝(限制深度)或后剪枝调整。
* **网格搜索法**:替代多重循环,高效遍历超参数组合。
* **鲁棒性**:Python因封装函数多、调用便捷,适合快速开发。
* **离散特征处理**:稀疏特征(如姓名)需删除或转换,避免干扰模型。
复制代码
## **代码实现要点**

* 使用`pandas`处理数据,`sklearn`调用决策树分类器。
* 绘图展示深度与准确率关系,验证过拟合现象。
* 强调特征工程重要性(如性别、年龄对存活率的影响)。

总结:

文档围绕决策树算法 展开,介绍了 ID3、C4.5、CART 三种算法,ID3 用信息增益 选划分属性,却偏好可取值多的属性;C4.5 采用信息增益率 (信息增益 ÷ 自身熵)改进;CART 以基尼指数衡量数据集纯度。还涉及连续值处理(用贪婪算法离散化)、剪枝策略(预剪枝和后剪枝,预剪枝边建边剪,后剪枝基于损失函数等衡量)、代码实现参数及课堂练习。

相关推荐
B612 little star king几秒前
力扣29. 两数相除题解
java·算法·leetcode
野犬寒鸦2 分钟前
力扣hot100:环形链表(快慢指针法)(141)
java·数据结构·算法·leetcode·面试·职场和发展
时光追逐者6 分钟前
C# 哈希查找算法实操
算法·c#·哈希算法
君名余曰正则19 分钟前
【竞赛系列】机器学习实操项目08——全球城市计算AI挑战赛(数据可视化分析)
人工智能·机器学习·信息可视化
Jasmine_llq30 分钟前
《P3825 [NOI2017] 游戏》
算法·游戏·枚举法·2-sat 算法·tarjan 算法·邻接表存储
Miraitowa_cheems34 分钟前
LeetCode算法日记 - Day 38: 二叉树的锯齿形层序遍历、二叉树最大宽度
java·linux·运维·算法·leetcode·链表·职场和发展
F_D_Z34 分钟前
【PyTorch】单对象分割
人工智能·pytorch·python·深度学习·机器学习
wangzy198234 分钟前
图形基础算法:如何将点与带曲线边的多边形位置关系算法做稳定
算法
艾醒1 小时前
探索大语言模型(LLM):Ollama快速安装部署及使用(含Linux环境下离线安装)
人工智能·深度学习·算法
艾醒1 小时前
探索大语言模型(LLM):Open-WebUI的安装
人工智能·算法·全栈