【十七】机器学习之路——决策树剪枝(3)
来源:互联网 发布:淘宝企业店铺需要资料 编辑:程序博客网 时间:2024/06/07 14:03
[本文内容参考周志华《机器学习》]
前两篇博客分别介绍了决策树的概念【十五】机器学习之路——决策树(1)和决策树的三种算法【十六】机器学习之路——决策树算法(2),今天讲一下决策树的剪枝。
我们种树的时候给树剪枝是为了树长的更加美观,而给决策树剪枝是为了解决决策树中”过拟合”的问题。决策树学习中,为了尽可能正确的分类样本数据,节点划分过程将不断重复,有时候会造成分支过多,这时就可能因为训练样本”学的太好了”,导致过拟合的情况。因此这个时候可以通过主动去掉一些分支来降低过拟合的风险。举一个简单的例子:
上图中红色的点代表”慢速”,蓝色的点代表”快速”,具体细节不用纠结,我们需要利用决策树方式将图中的点进行分类,左图和右图对比发现,左图中出现了”过拟合”的情况,有一些长条和多出来的部分虽然更好的拟合了蓝色和红色的点,但是明显不是我们想要的结果,反而右图更符合我们的预期。因此咱们就需要通过剪枝,将左图中多出来的部分消灭掉。
决策树的剪枝分为两部分:
预剪枝(prepruning)
后剪枝(post-pruning)
预剪枝
预剪枝是指在决策树生成过程中,对每个节点划分前进行估计,若当前节点的划分不能带来决策树泛化(generalize)性能提升,则停止划分并将当前节点标记为叶节点。
提升泛化性能,其实就是提升准确率的问题。我们将数据集分为训练集、验证集(关于训练集、验证集、测试集的划分方法请参考本人之前的博客机器学习之路——训练集、测试集及如何划分)。在每个节点划分前,如果将这个节点作为叶节点停止划分,通过验证集代入求分类准确率
- 预剪枝优点:
预剪枝减少了决策树中一些不必要的分支,降低了”过拟合”的风险,同时显著减少了决策树训练的时间和测试时间开销。
- 预剪枝缺点:
有些分支虽然不能提升泛化性能,甚至有可能导致泛化性能暂时下降,但在其基础上进行的后续划分有可能会使决策树的性能提升,因此,预剪枝基于”贪心”(好就继续分支,不好就剪枝)的本质,可能会使决策树出现”欠拟合”的风险。
后剪枝
后剪枝则是当我们构建好一个决策树后,自底而上地对非叶节点进行考察,如果将该节点替换为叶节点能提升决策树的泛化性能,则将该子树替换为叶节点。泛化性能的计算方法同预剪枝里的介绍。
- 后剪枝优点:
后剪枝决策树通常比预剪枝保留了更多的分支,欠拟合的风险较小,泛化性能往往优于预剪枝决策树。
- 后剪枝缺点:
后剪枝由于是在决策树生成之后进行的,其训练时间考校比未剪枝的决策树和预剪枝的决策树要大。
- 【十七】机器学习之路——决策树剪枝(3)
- 机器学习基础(五十一)—— 决策树的剪枝
- 机器学习(十七)——决策树, 推荐系统进阶
- 机器学习笔记(九)——决策树的生成与剪枝
- 【机器学习】决策树(下)——CART算法及剪枝处理
- 机器学习-决策树/CART剪枝
- 机器学习:对决策树剪枝
- 【十五】机器学习之路——决策树(1)
- 【机器学习系列之六】决策树中的特征选择及树的剪枝()
- 机器学习笔记(XII)决策树(II)剪枝处理
- 机器学习—决策树
- 机器学习算法-决策树的剪枝
- 机器学习3——决策树总结
- 《机器学习》(周志华版)——决策树
- 机器学习(1)——决策树
- 机器学习实战—决策树(二)
- 【十六】机器学习之路——决策树算法(2)
- 【十八】机器学习之路——决策树Python实现(4)
- 正则表达式
- VS Code 插件 主题 快捷键
- 数据库(表结构)设计技巧及注意事项
- c++之list容器简述--(boolan)
- Linux学习之基础知识——软件的管理与安装
- 【十七】机器学习之路——决策树剪枝(3)
- 利用AJAX JAVA 通过Echarts实现豆瓣电影TOP250的数据可视化
- C 使用libcurl与json-c方法
- RecyclerView 瀑布流 点击按钮添加或删除条目
- 使用Docker分分钟启动常用应用和镜像下载慢或者下载不下来的问题
- maven优化依赖常用命令
- RandomAccess
- React / RN组件的生命周期
- darwin之n秒内无流判断(timeoutTask)