决策树的优化-剪枝和随机森林

1. 剪枝 (Pruning)

1.1 为什么需要剪枝?

决策树在训练时,如果任由其生长,可能会为了拟合训练数据中的每一个细节(包括噪声)而变得非常复杂。这样的树在训练集上表现完美,但在未见过的测试集上往往表现很差,也就是过拟合

例子

沿用之前的打球数据集(天气与打球的关系),假如我们添加了一个特征"今天是否是我的幸运日",而这个特征在训练集中纯属巧合地与打球结果相关,决策树可能会用它来划分,导致模型在真实数据上失效。

剪枝就是通过删除树中那些对预测能力贡献不大、主要拟合了噪声或个别样本的枝叶,来简化模型,提高泛化能力。

1.2 剪枝的类型

主要分为预剪枝后剪枝

预剪枝 (Pre-pruning)

在决策树生长过程中,提前停止分裂。

  • 方法:设定一个阈值,比如信息增益小于某个值、节点包含的样本数少于某个数、树达到一定深度等,就停止分裂,将该节点直接作为叶节点,其类别为多数类。

  • 优点:效率高,边建树边剪枝。

  • 缺点:可能过早停止,导致欠拟合;阈值难以把握。

后剪枝 (Post-pruning)

先让树充分生长(甚至过拟合),然后自底向上对非叶节点进行考察,判断将其替换为叶节点是否能提升泛化性能。

  • 常用方法代价复杂度剪枝 (Cost Complexity Pruning)错误率降低剪枝 (Reduced Error Pruning)

  • 步骤

    1. 生成一棵完全生长的树。

    2. 从底向上,尝试将某个子树替换为一个叶节点(叶节点的类别取该子树中样本最多的类别)。

    3. 用验证集评估替换前后的误差:如果替换后误差不增大(或下降),则进行剪枝,否则保留原树。

  • 优点:更可靠,通常比预剪枝效果好。

  • 缺点:需要额外的验证集,计算开销大。

1.3 直观理解

想象一棵长满枝叶的树,每个枝叶代表一个决策规则。剪枝就像园艺师修剪掉那些"无用"或"有害"的枝条,让树的主干更清晰,生命力更强(泛化能力更好)。


2. 随机森林 (Random Forest)

随机森林是一种集成学习方法,它通过构建多棵决策树并将它们的预测结果进行投票(分类)或平均(回归)来获得最终输出。

2.1 核心思想

  • 集成学习:多个弱学习器组合成一个强学习器。如果每棵树都有些许差异,它们集体决策会比单棵树更稳定、准确。

  • Bagging (Bootstrap Aggregating) :对原始训练集进行有放回采样,生成多个不同的子训练集,每棵树在不同的子集上训练。

  • 随机特征选择 :在每个节点分裂时,不是从所有特征中选最优,而是随机选择一部分特征(通常是 sqrt(总特征数) 或 log2(总特征数)),然后从中选最优特征分裂。这增加了树之间的多样性。

2.2 构建过程

  1. 假设原始训练集有 N 个样本,M 个特征。

  2. 对于每一棵树(共 T 棵):

    • 从原始训练集中有放回地抽取 N 个样本,形成一个自助样本集 (bootstrap sample)。未被抽到的样本(约1/3)称为袋外数据 (OOB),可用于评估模型。

    • 在构建树的每个节点时,随机选择 m 个特征(m << M),然后根据信息增益等准则从这 m 个特征中选择最佳分裂特征。

    • 每棵树充分生长,通常不进行剪枝

  3. 预测时,分类问题采用多数投票,回归问题采用平均值。

2.3 为什么随机森林效果好?

  • 降低方差:单棵决策树对数据变化敏感(高方差)。通过 Bagging 和随机特征选择,多棵树的平均可以显著降低方差,同时保持较低的偏差。

  • 防止过拟合:由于每棵树只看到部分样本和部分特征,它们不会过度拟合训练数据中的噪声。即使个别树过拟合,投票机制也能抵消其影响。

  • 自带特征重要性评估:利用 OOB 数据或记录特征在树分裂中带来的纯度提升总和,可以评估每个特征的重要性。

2.4 剪枝 vs 随机森林

  • 剪枝是对单棵树的"减法"操作,旨在简化模型。

  • 随机森林是对多棵树的"加法"操作,通过组合来平衡偏差和方差。通常,随机森林中的树都保持完全生长(不剪枝),因为其方差已通过平均被控制,而完全生长的树偏差较低,组合后性能更好。

  • 在某些场景下,对随机森林中的每棵树进行适度剪枝可能会进一步提升效率,但多数实践表明让树充分生长即可。


3. 总结

方法 目标 手段 适用场景
剪枝 防止单棵树过拟合 简化树结构(预剪枝/后剪枝) 需要单一可解释模型,或作为决策树训练的必须步骤
随机森林 提高预测精度和稳定性 构建多棵随机树,集成投票 追求高准确率,能接受模型复杂度增加(黑箱)
相关推荐
船厂电气自动化ai大模型3 分钟前
AI大模型与数学 第75课 基、维度、向量空间坐标
数据结构·线性代数·算法·机器学习·推荐算法
找方案11 小时前
AI视频生成对决:Sora vs 可灵 vs Veo,谁能定义未来
人工智能·机器学习·音视频
面朝大海,春不暖,花不开18 小时前
Buat New Trenches, Kalian Bisa Baca Panduan Meta Ini
人工智能·机器学习
VL——MOESR19 小时前
【具身智能】Cosmos Policy论文阅读随笔
论文阅读·人工智能·机器学习·具身智能·cosmospolicy
haon112220 小时前
树模型在信贷风控怎么用——从决策树到 XGBoost
大数据·人工智能·算法·决策树·机器学习·数据挖掘
阳明山水21 小时前
从相关到因果:预测科学的因果转向与可识别性挑战
人工智能·深度学习·算法·机器学习·架构
宣宣猪的小花园.21 小时前
【嵌入式】故障与降级:看门狗、保护机制和工程可靠性的底线
开发语言·人工智能·嵌入式硬件·机器学习
pjj1985421 小时前
深度学习-训练,评估与数据增强
人工智能·深度学习·机器学习
满怀冰雪21 小时前
25-迁移学习入门:加载预训练模型并微调
人工智能·python·机器学习·迁移学习·paddle
派大_星1 天前
PyTorch CNN图片分类与数据增强实践
人工智能·深度学习·机器学习