决策树之剪枝

    本文主要参考李航老师的《统计学习方法》一书,如有不妥之处,欢迎指出。

    决策树生成算法递归地产生决策树,直到不能继续下去为止,这样产生的树往往对训练数据的分类很准确,但对为止的测试数据的分类却没有那么准确,即出现过拟合现象。过拟合的原因在与学习时过多地考虑如何提高对训练数据的正确分类,从而构建出过于复杂的决策树,解决这个问题的方法是考虑决策树的复杂度,对已生成的决策树进行简化。

    对决策树学习中将已生成的树进行简化的过程称为剪枝(pruning).具体地,剪枝从已生成的树上裁掉一些子树或叶结点,并将其根节点或父节点作为新的叶节点从而简化分类树模型。

    这里主要介绍一种简单的决策树学习的剪枝算法。

    决策树的剪枝往往通过极小化决策树整体的损失函数(loss function)或代价函数(cost function)来实现,设树T的叶结点个数为|T|,t是树T的叶结点,该叶结点有Nt个样本,其中k类的样本点有Ntk个,k=1,2,...,K,Ht(T)为叶结点t上的经验上,α ≥0为参数,则决策树学习的损失函数可以定义为:


    其中经验熵为:


    在损失函数中,将第一项记作


    这时有


    在上式中,C(T)表示模型对训练数据的预测鱼叉,即模型与训练数据的相似度,|T|表示模型复杂度,参数α ≥0控制两者之间的影响。较大的α 促使选择较简单的模型,较小的α 促使选择较复杂的模型。α =0意味着只考虑模型与训练数据的拟合程度,不考虑模型的复杂度。

    剪枝,就是当α 确定时,选择损失函数最小的模型,即损失函数最小的子树。当α 值确定时,子树越大,往往与训练数据的拟合越好,但是模型的复杂度越高;相反,子树越小,模型的复杂度就越低。但是往往与训练数据的拟合不好。损失函数正好表示了对两个的平衡。

    可以看出,决策树生成值考虑了通过提高信息增益(或信息增益比)对虚拟蓝数据进行更好的拟合。而决策树剪枝通过优化算是函数还考虑了减小模型复杂度。决策树生成学习局部的模型,而决策树剪枝学习整体的模型。

    树的剪枝算法:

    输入:生成算法产生的整个树T,参数α ;

    输出:修剪后的子树Tα

    (1)计算每个结点的经验熵

    (2)递归地从树的叶结点向上回缩。

    设一组叶结点回缩到期父节点之前与之后的整体树分别为TB与TA,其对应的损失函数值分别为Cα (TB)与Cα (TA),如果:


则进行剪枝,即将父结点为新的叶节点

    (3)返回(2),直至不能继续为止,得到损失函数最小的子树Tα .

决策树之剪枝_第1张图片

在算法的第2步只需考虑两个树的损失函数的差,其计算可以在局部进行,所以决策树的剪枝算法可以由一种动态规划的算法实现。

你可能感兴趣的:(机器学习算法,决策树,剪枝)