统计学习方法——决策树

决策树是一种基本的分类与回归方法。

   一、决策树模型

决策树可以转换成一个if-then规则的集合,也可以看作是定义在特征空间划分的类的条件概率分布(特征为变量,类为概率)。

CART与ID3、ID4.5的区别:CART假设决策树是二叉树,特征取值为“是”或“否”。

 

二,决策树的生成算法

2.1、ID3、ID4.5算法

ID3和C4.5

输入:训练集D,特征集A,阀值μ

输出:决策树T

  1. 如果D中的所有实例,都属于同一个类Ck,那么置T为单节点树,并将Ck作为该节点的类,返回T
  2. 如果A为空,置T为单节点树,将D中实例数最大的类Ck作为该节点的类,返回T
  3. )否则,计算信息增益(信息增益比),选择信息增益最大(信息增益比最大)的特征Ag。
  4. 如果Ag的信息增益(信息增益比)小于阈值μ,置T为单节点树,将D中实例数最大的类Ck作为该节点的类,返回T
  5. 否则,对Ag的每一可能值ai,依Ag=ai将D分割为子集若干非空Di,将Di中实例树最大的类作为标记,构建子节点,由节点及其子节点构成树T,返回T;
  6. 对节点i,以Di训练集合,以A-{Ag}为特征集,递归调用(1)~(5),得到字数Ti,返回Ti。

 

2.2、CART分类决策树

输入:训练数据集D,停止计算的条件;

输出:CART决策树。

根据训练数据集,从根节点开始,递归地对每个节点进行以下操作,构建二叉决策树:

  1. 设节点地训练数据集为D,计算现有特征对该数据集的基尼指数,此时,对每一个特征A,对其可能去地每个值A,根据样本点对A=a地测试为“是”或“否”将D分割成D1和D2两部分,利用特征下地基尼指数计算A=a时地基尼指数。
  2. 在所有可能的特征A以及他们所有可能的切分点a中,选择基尼指数最小的特征及其对应的切分点作为最优特征与最优切分点。以最优特征与最有切分点,从现节点生成两个字节点,将训练数据集依特征分配到两个字节点中去,
  3. 对两个子节点递归地调用1,2.直至满足停止条件;
  4. 生成CART决策树。

2.3、CART回归决策树

输入:训练数据集D;

输出:回归树f(x)。

在训练数据集所在地输入空间中,递归地将每个区域划分为两个子区域并决定每个子区域上的输出值,构建二叉决策树;

 

三、剪枝

3.1、决策树的剪枝的原理

决策树的剪枝往往通过极小化决策树整体的损失函数或代价函数来实现。

  • 损失函数:Cα=模型拟合程度+模型复杂度=权重*信息熵+权重*叶节点

  • C_{\alpha }(T)=C(T)+\alpha |T|=\sum_{t=1}^{|T|}N_{t}H_{t}+\alpha |T|

  • 我们将一颗充分生长的树称为T0,我们希望减少树的大小来防止过拟化,但又担心去掉一些节点后预测的误差会增大,那么如何达到这两个变量之间的平衡则是问题的关键,因此我们用一个变量α 来平衡

3.11、树的剪枝算法(给定α

目的:减去Cα(损失函数)大的叶节点

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

输出;修建后的子树Tα

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

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

设一组叶节点回缩到其父节点之前与之后的整体树分别为Tb(叶节点)与Ta(父节点),其对应的损失函数值分别是Cα(Tb)与Cα(Ta),如果Cα(Ta)父≤叶Cα(Tb),则进行剪枝,即将父节点变为新的叶节点。

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

 

四、CART剪枝

4.1、CART剪枝原理(α未给定

用递归的方法对树进行剪枝

  • 用递归的方法对树进行剪枝,将α从小增大,0=α0<α1<...<αn<+∞,产生一系列的区间[αi,αi+1),i=0,1...,n;剪枝得到的子树序列对应这区间α∈[αi,αi+1),i=0,1,...,n的最优子树序列{T0,T1,...,Tn}(虽然α无限但子树有限的),序列中的子树时嵌套的。

  • Tn 是最后剩下的那个根节点。(这里的子树生成是根据前一个子树Ti ,剪掉某一个内部节点,生成Ti+1)然后对这样的子树序列分别用测试集进行交叉验证,找到最优的那个子树作为我们的决策树。

  • 最优子树的解释:因为Cα(T)=C(T)+α|T|,,且CART算法中,α的取值前提时单节点树的损失=根节点树的损失,所以在α∈[αi,αi+1)中,当α变大时,单节点树的损失<根节点树的损失。所以剪枝后的单节点树为最优。

4.2、CART剪枝算法(未给定α

输入:CART算法生成的决策树T0
输出:最优决策树Tα
(1)设k=0,T=T0
(2)设α=+∞
(3)自下而上地对各个内部结点t计算C(Tt),|Tt|以及:g(t)=(单节点树的损失-根节点树的损失)/(叶节点-1)

g(t)=\frac{C(t)-C(T_{t})))}{|T_{t}-1|}

α=min(α,g(t))


这里,Tt 表示t为根结点的子树,C(Tt) 是对训练数据的预测误差,|Tt| 是Tt 的叶结点个数。
(4) 自上而下地访问内部节点t,如果有g(t)=α,进行剪枝,并对叶结点t以多数表决法决定其类,得到树T
(5)设k=k+1,αk=α,Tk=T .
(6)如果T 不是由根结点构成的树,则回到步骤(4) 。
(7)采用交叉验证法在子树序列T0,T1,...,Tn 中选取最优子树Tα

 

 

 

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值