机器学习算法-决策树的剪枝

本文摘录自《统计学习方法》-李航,第5.4结-决策树的剪枝

  • 剪枝的定义:将已生成的树进行简化的过程称为剪枝。
  • 剪枝的目的:决策树往往对训练数据的分类很准确,但是对未知的测试数据的分类却没有那么准确,即出现过拟合现象。
  • 决策树的剪枝往往通过极小化决策树整体的损失函数(loss function)或代价函数(cost function)来实现。设树T 的结点个数为|T |,t是T的叶结点,该叶结点上有 Nt 个样本点,其中k类的样本点有 Ntk 个,k=1,2,…,K, Ht(T) 为叶结点t上的经验熵, α0 为参数,
  • 则决策树损失的函数可以定义为:
    Cα(T)=t=1|T|NtHt(T)+α|T|
  • 其中经验熵为:
    Ht(T)=kNtkNtlogNtkNt
  • 在损失函数中,将 Cα(T) 的第一项记为 C(T) ,这时有
    Cα(T)=C(T)+α|T|

    C(T) 表示模型对训练数据的预测误差,即模型和训练数据的拟合程度, |T| 表示模型复杂度,参数 α0 控制两者之间的影响。
  • 剪枝,就是当 α 确定时,选择损失函数最小的模型,即损失函数最小的子树。可以看出,决策树生成只考虑了通过提高信息增益对训练数据进行更好的拟合。而决策树剪枝通过优化损失函数还考虑了减小模型复杂度。决策树生成学习局部的模型,而决策树剪枝学习整体的模型。

这里的经验熵反应了一个叶结点中的分类结果的混乱程度,经验熵越大,说明该叶结点所对应的分类结果越混乱,也就是说分类结果中包含了较多的类别,表明该分支的分类效果较差。所以,损失函数越大,说明模型的分类效果越差。决策树的剪枝通常分为两种,即预剪枝、后剪枝。预剪枝是在决策树生成过程中,对树进行剪枝,提前结束树的分支生长。后剪枝是在决策树生长完成之后,对树进行剪枝,得到简化版的决策树。

下面的算法,是后剪枝的实现步骤

输入:生成算法产生的整个树 T ,参数α
输出:修剪后的子树Tα
1. 计算每个结点的经验熵.
2. 递归地从树的叶结点向上回缩 .
  设一组叶结点回缩到父结点之前与之后的整体树分别为 TB TA ,其对应的损失函数值分别是 Cα(TB) Cα(TA) ,如果 Cα(TA)Cα(TB) ,即如果进行剪枝,损失函数变小,就进行剪枝,将父结点变为新的叶结点 .
3. 返回(2),直至不能继续为止,得到损失函数最小的子树 TA .

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值