4. 决策树剪枝

学习目标:

1.知道什么是剪枝

2.理解剪枝的作用

3.知道常用剪枝方法

4.了解不同剪枝方法的优缺点

1. 剪枝

1.1 为什么要剪枝

决策树剪枝是一种防止决策树过拟合 的一种正则化方法 ,提高其泛化能力;

(剪枝是使得树的模型更简单,可理解为一种正则化的方法,类似L1、L2正则化,严格意义上剪枝更偏向于L1正则化,因为L1可以使权重归0,L2只能无线趋向于0;)

1.2 剪枝

把子树的节点全部删掉,使用叶子节点 来替换;

把叶子节点、子节点删掉,用更大的叶子节点(子树) 替换 叶子节点

1.3 剪枝方法

1. 预剪枝 :指在决策树生成过程中,对每个节点在划分前先进行估计,若当前节点的划分不能带来决策树泛化性能提升,则停止划分并将当前节点标记为叶节点;
2. 后剪枝 :是先从训练集生成一棵完整的决策树,然后自底向上地对非叶节点进行考察,若将该节点对应的子树替换为叶节点能带来决策树泛化性能提升,则将该子树替换为叶节点。

预剪枝 是预先凭经验做处理,后剪枝是当这棵决策树完全长成之后在处理;后剪枝更准确,但更消耗资源,因为已经训练完了;预剪枝虽然更节约资源但考虑的并不完全,不能完整的考虑到每一层即预剪枝可能会把当前节点的子集规避掉了,万一当前节点没有得到显著提升,但子集得到了提升的情况被预剪枝直接规避掉了;预剪枝是每到一个节点先判断,只判断当前值,分了以后好不好,好就分、不好就不分;后剪枝是先生成所有,再由下往上逐层进行判断)

1.4 剪枝技术对比

预剪枝优点 :使决策树很多分支都没展开,即模型简单 ,所以不单降低了过拟合风险,还显著减少了决策树的训练、测试时间开销;缺点 :有些分支的当前划分虽不能提升泛化性能,但后续划分却有可能导致性能的显著提高;预剪機决策树也带来了欠拟合的风险;预剪枝的好处只有一个:节约资源;
后剪枝优点
:比预剪枝保留了更多的分支。一般情况下,后剪枝决策树的欠拟合风险很小,泛化性能往往优于预剪枝(因为他把整棵树生成了,逐层来做判断);缺点 :后剪枝先生成,后剪枝。自底向上地对树中所有非叶子节点进行逐一考察,训练时间开销比未剪枝的决策树和预剪枝的决策树都要大得多;后剪枝唯一的弊端:资源开销大

总结:预剪枝节约资源,能避免过拟合,但可能存在欠拟合;后剪枝资源开销大,能避免欠拟合,也会降低过拟合风险;

相关推荐
KJ_BioMed9 小时前
从PDB到高亲和力分子:De novo生成式计算化学Pipeline剖析
算法·生物医药·生物科研·科研干货·化合物设计
一个王同学10 小时前
从零到一 | CV转多模态大模型 | week17 | LLM 推理优化 & vLLM 详解
人工智能·深度学习·算法·机器学习·计算机视觉·vllm
旖-旎11 小时前
《LeetCode 53 最大子数组和 || LeetCode 918 环形子数组的最大和》
c++·算法·leetcode·动态规划
变量未定义~11 小时前
单调栈+倍增思想 皇家守卫【算法赛】、单调队列 附近最小
算法
QN1幻化引擎11 小时前
给 AI 做一次「意识体检」——基于 QN1 幻化引擎的灵鉴意识识别框架与 DalinX V5 实测
大数据·数据结构·人工智能·算法·架构
拂拉氏12 小时前
【知识讲解】 AVL树从基本成员的介绍到核心接口的实现(插入、判断、删除等等)
数据结构·算法·avl树
可靠的仙人掌12 小时前
SAC(Soft Actor-Critic)算法底座
开发语言·算法·php
c2385612 小时前
《动态规划:从“傻傻穷举”到“过目不忘”的修仙之路》
c++·算法·动态规划
海石14 小时前
单调栈复健,顺便,牺牲一下吧,空间复杂度!一切献给AC
算法·leetcode
海石14 小时前
JS击败94%,Hard题想不到动态规划,那就用数组和栈试试
算法·leetcode