决策树

什么是决策树

决策树是一种用于分类或者回归的决策模型,因为其模型是树形结构,因此称为决策树。本质上决策树是if-then规则的集合。

如何构建决策树(学习过程)

构建决策树的算法有很多,影响比较大的有ID3,C4.5, CART 等。
这里我们首先介绍其算法的思想框架。以分类任务为例:
(1) 属性选择:遍历属性集选择一个属性,使得训练集得到一个最好的划分
(2) 新建分支:建立一个子节点,对应划分后的一个子集,以及更新的属性集(移除被选择属性)。
(3) 递归:对子节点的子集和属性集重复(1)(2)操作,继续划分,直到不能划分()。

上述步骤简单介绍了构建决策树的框架。但是还有一个问题没有解决:什么是最好的划分?
直观来看,既然是分类,那就是分类效果好的就是好的划分。但是如何衡量划分后分类效果好呢?实际上如果划分后,如果每一个子集基本上上都属于某一类的话,这个划分比较好。极端情况下,每个子集只包含某一类样本,此时分类树实际已经完成。因此这里暗含的指标就是每一个子集中的样本都比较纯,基本上属于某一类。而信息熵恰好可以用来描述一个子集的纯度。如果子集只有一类样本,则信息熵低,也就是不确定性非常低。如果子集中各类的样本数量都差不多,则信息熵比较高,也就是不确定性比较高。

在ID3算法中,最好的划分就是有最大的信息增益(划分前信息熵-划分后信息熵)。因为划分前的信息熵对于各种划分都是一样的,因此最好的划分应该使得划分后信息熵最低。如何求所有子集的总信息熵,在ID3中是加权求和,这个权重等于该子集占总样本数的比例。
但是这里有一个情况:不同的属性,其取值个数不一样,而取值比较多的属性,其划分的子集相对都比较纯。极端情况下,集合的每个样本都被划分成一个子集。这样的话,分类已经完成,算法就结束了。这显然容易过拟合了。(以信息增益作为划分训练集的标准,倾向于选择属性值比较多的属性。)

在C4.5算法中,提出用信息增益比来代替信息增益,实际等于某属性的信息增益除以该属性的值的集合的信息熵。(如果直接除以类别数,数值变化太大,倾向于选择属性值比较少的属性)。

决策树的缺点:
决策树非线性拟合能力非常强,很容易过拟合。因此有必要控制模型复杂度,进行正则化,实际就是剪枝。

剪枝(正则化)

一般过于复杂的决策树会导致过拟合,因此有必要进行剪枝操作,也就是控制模型复杂度。可以通过在原损失函数上加正则项来实现。该正则项一般为叶子节点的数量。根据正则项系数是否确定可以将剪枝方法分为两类:第一类就是直接利用固定的正则项系数进行剪枝。第二类利用正则项系数不固定,比如CART的剪枝算法。

第一类剪枝算法比较容易理解:

对决策树的所有内部节点,递归进行剪枝对比。也就是说对比剪枝和不剪枝时,目标损失函数值的变化。这里目标损失函数值等于树的所有叶节点样本集合熵的加权和再加上模型复杂度,也就是叶节点的个数。或者是比较其在独立验证集上的预测误差。

第二类剪枝算法相对复杂:

一般思路是,需要遍历所有可能的正则项系数,得到每个正则项系数所对应的最优子树,然后比较所有的这些子树在验证集上的预测误差。该计算量非常大,并且正则项系数可能有无限个取值。然而给定一颗树,某个分支的剪与不剪完全取决于正则项系数和该分支(和局部相关,和全局无关),根据每个局部分支都可以计算得到该分支是否该被剪去的临界值 α t \alpha_t αt。将其排序得到 0 < α 0 ≤ α 1 ≤ . . . ≤ α n < + ∞ 0<\alpha_0\leq\alpha_1\leq...\leq\alpha_n<+\infty 0<α0α1...αn<+。显然当 α \alpha α正则项系数足够小或者等于零的时候,所有分支都不该被剪枝。当正则项系数 α 0 ≤ α < α 1 \alpha_0\leq\alpha<\alpha_1 α0α<α1时, α 0 \alpha_0 α0所对应的分支该被剪枝,得到树 T 0 T_0 T0。当正则项系数 α 1 ≤ α < α 2 \alpha_1\leq\alpha<\alpha_2 α1α<α2时, α 1 \alpha_1 α1所对应的分支该被剪枝,得到树 T 1 T_1 T1。这样可以得到 n + 1 n+1 n+1颗树, T 0 , T 1 , . . . , T n T_0,T_1, ..., T_n T0T1,...,Tn。然后在独立验证集上验证其性能,选择性能最优者。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值