目录
如果训练集中存在噪音点,模型在学习的过程总会将噪音与标签的关系也学习进去,这样就会造成模型的过拟合化,也就是模型在训练集的分类效果很好,在未知数据上处理效果不好。
如何解决?——采用剪枝的方法。
一般存在“预剪枝”和“后剪枝”两种策略。
预剪枝
预剪枝即为在决策树生成过程中,对当前节点的划分结果进行评价,如果该划分不能带来决策树泛化能力(即处理未见过示例的能力)的提升,则停止划分,将当前结点标记为叶节点;
后剪枝
先生成一颗完整的决策树,然后自底向上的对非叶节点进行评价,如果剪掉该枝可以使得泛化性能提升,则将该子树替换为叶子节点。预先剪枝可能会过早的终止决策树的生长,后剪枝一般能够产生更好的效果。但后剪枝在子树被剪掉后,决策树生长的一部分计算就被浪费了。
这里简单介绍一个剪枝算法,首先我们要明确,剪枝的目的是为了减小过拟合带来的不良影响,降低决策树模型的复杂度,但是同时也要保证其对于训练数据有较好的分类效果。因此,定义一个损失函数,如下:
其中,为参数,C(T)表示模型对于训练数据的预测误差。|T|表示叶子节点的个数,可用于表示模型的复杂度。可以看出,参数控制着模型复杂度和对训练数据拟合程度两者之间的影响。较大的促使我们选择一个较简单的树,而较小的则偏向于对训练数据有更好的拟合效果。
因此可以利用上面的损失函数进行剪枝操作,这样得到的决策树既考虑到对训练数据的拟合,又增强了泛化能力。
其他一些剪枝算法借助验证集实现,有的算法通过设置信息赠益的阈值来作为剪枝判断标准,具体的算法过程可以参考相关文献。