剪枝处理
决策树剪枝的基本策略有“预剪枝”和“后剪枝”。
预剪枝,是指在决策树生成过程中,对每个节点在划分前先进行估计,若当前的节点划分不能带来决策树泛化的提升,则停止划分并将当前节点标记为叶子节点。
后剪枝,是指先从训练数据集中生成一课完整的决策树,然后自底向上对非叶子节点进行考察,若将该节点对应的子树替换为叶子结点能够带来决策树泛化能力的提升,则将该节点替换为叶子节点。
预剪枝
在某个节点的预剪枝的估计建立在已经确定最优划分属性的前提之上,要不要以该属性对当前节点进行划分,还得先计算泛化能力是否有提高。
在预剪枝中,泛化能力的计算依赖于验证数据集。验证精度的计算是将验证数据集输入决策树模型进行判别,取正例样本数量与验证集样本数量的比值(百分比)。划分前验证精度由上一步计算给出。泛化能力的提高与否,要对比划分前后验证集的大小。
预剪枝基于“贪心”本质禁止这些分支的展开,给预剪枝决策树带来欠拟合的风险。
后剪枝
将验证集输入到决策树算法,计算出剪枝前的验证精度。然后,找到最底下的非叶子结点,(模拟)将其领先的分支去除,取其中数量最大的分类作为该节点的判别标记。然后计算剪枝后的验证精度。通过对比剪枝前后的验证精度,来确定是否需要进行剪枝。
例子:
我们拿脐部作为节点进行说明,脐部的好瓜有{4,5,8}共3个,坏瓜有{9,11,12,13}共4个,准确率为3/7,大概为42.9%。
分枝后我们有凹陷,稍凹,平坦三个属性。我们认为凹陷与稍凹是好的,平坦是坏的。凹陷有{4,5,13}共3个,其中2个判断正确。稍凹有{8,9}共2个,1个判断正确。平坦有{11,12}共2个,2个判断正确。故最终准确率为5/7,大概为71.4%,大于42.9%,故该节点进行分枝操作。
剪枝处理总结;
后剪枝决策树通常比预剪枝决策树保留更多的分支,一般情形下,后剪枝决策树的欠拟合风险小,泛化能力往往优于预剪枝。但后剪枝决策树训练开销比预剪枝大得多。