(资料图)
一、介绍
决策树中一个重要的问题就是容易过拟合,因为在学习时侧重对训练集的正确分类,构造出一棵较为复杂的树。一种解决方法就是降低决策树的复杂度,即剪枝,去除一些不必要的分支。剪枝主要分为预剪枝和后剪枝两种,其中预剪枝是在构建树的分支时,考虑是否建立该分支。后剪枝,是在树建立完成后从叶子节点往上,考虑每个分支是否应该存在。
二、预剪枝
简单来说就是考虑是否对一个特征进行划分,所以只要考虑划分之前和划分之后带来的影响即可,例如使用一个验证集对划分和不划分进行测试,使用错误率较低或精度较高的那种策略即可。
修改后的构建树代码
验证集采用测试集中的2000个样本,最后测试发现并没有带来精度的提升。反而如果不在if_feature_split函数中加上错误率的判断,导致精度下降至百分之70几……
至于为什么加上这个判断?
因为预剪枝只考虑划分在当前带来的影响,忽略了在之后带来的影响。可能会造成欠拟合,所以,当不划分时在验证集上的错误率大于0.5时,即使不划分在验证集上表现比划分还要好,我们依然去划分。