统计学习方法——决策树(二)

本文深入探讨了CART算法在决策树中的应用,包括CART生成过程,采用基尼指数最小化准则选择特征和切分点,以及CART剪枝的后剪枝策略,通过交叉验证法选择最优子树。
摘要由CSDN通过智能技术生成

决策树

前面介绍了决策树的一些知识,这里我们再来看一个CART模型。

CART算法

CART算法同样由两部分组成:决策树生成(生成的决策树要尽可能大),决策树剪枝(后剪枝)。其使用的特征选择标准是:基尼指数最小化准则

CART生成
  • 最小二乘回归树生成算法

    • 输入:训练集 D D D
    • 输出:回归树 f ( x ) f\left( x \right) f(x)
    • 过程
      • 选择最优切分变量 j j j和切分点 s s s,求解
        min ⁡ j , s [ min ⁡ c 1 ∑ x i ∈ R 1 ( j , s ) ( y i − c 1 ) 2 + min ⁡ c 2 ∑ x i ∈ R 2 ( j , s ) ( y i − c 2 ) 2 ] \mathop {\min }\limits_{j,s} \left[ {\mathop {\min }\limits_{{c_1}} \sum\limits_{{x_i} \in {R_1}\left( {j,s} \right)} {{{\left( {{y_i} - {c_1}} \right)}^2}} + \mathop {\min }\limits_{{c_2}} \sum\limits_{{x_i} \in {R_2}\left( {j,s} \right)} {{{\left( {{y_i} - {c_2}} \right)}^2}} } \right] j,sminc1minxiR1(j,s)(yic1)2+c2minxiR2(j,s)(yic2)2
        遍历变量 j j j,对固定的切分变量 j j j扫描切分点 s s s,找到最小的 ( j , s ) \left(j,s\right) (j,s)
      • 用选定的 ( j , s ) \left(j,s\right) (j,s)划分区域并决定相应的输出值:
        R 1 ( j , s ) = { x ∣ x ( j ) ≤ s } , R 2 ( j , s ) = { x ∣ x ( j ) > s } {R_1}\left( {j,s} \right) = \left\{ {x\left| {{x^{\left( j \right)}} \le s} \right.} \right\},\quad {R_2}\left( {j,s} \right) = \left\{ {x\left| {{x^{\left( j \right)}} > s} \right.} \right\} R1(j,s)={xx(j)s},R2(j,s)={xx(j)>s}
        c ^ m = 1 N m ∑ x i ∈ R m ( j , s ) y i x ∈ R m m = 1 , 2 {{\hat c}_m} = \frac{1}{{{N_m}}}\sum\limits_{{x_i} \in {R_m}\left( {j,s} \right)} {{y_i}} \quad x \in {R_m}\quad m = 1,2 c^m=Nm1xiRm(j,s)yixRmm=1,2
      • 继续对两个子区域进行划分,知道满足条件
      • 将输入空间划分为 M M M个区域 R 1 , R 2 , . . . , R M R_1,R_2,...,R_M R1,R2,...,RM,生成决策树:
        f ( x ) = ∑ m = 1 M c ^ m I ( x ∈ R m ) f\left( x \right) = \sum\limits_{m = 1}^M {{{\hat c}_m}} I\left( {x \in {R_m}} \right) f(x)=m=1Mc^mI(xRm)
  • CART生成

    • 输入:训练集 D D D,停止计算的条件
    • 输出:CART决策树
    • 流程
      • 设节点训练集为 D D D,计算现有特征的基尼指数。(对每个属性的每个取值按照“是”“否”分割成两部分,计算基尼指数)
      • 在所有可能的特征 A A A及它们可能的切分点 a a a中,选择基尼指数最小的特征以及分割点生成两个子节点。
      • 对两个子节点递归调用上面的步骤直到满足停止条件。
      • 生成CART决策树。
CART剪枝(后剪枝)

整个过程包括两个部分,通过剪枝生成一个子树序列,再通过交叉验证法在独立的验证数据集上选择最优子树。

  • 输入:生成的决策树 T 0 T_0 T0
  • 输出:最优决策树 T α T_{\alpha} Tα
  • 过程:
    • k = 0 k=0 k=0 T = T 0 T=T_0 T=T0
    • α = + ∞ \alpha = + \infty α=+
    • 自下而上地对各个结点 t t t计算 C ( T t ) C\left( {{T_t}} \right) C(Tt) ∣ T t ∣ \left| {{T_t}} \right| Tt以及 g ( t ) = C ( t ) − C ( T t ) ∣ T t ∣ − 1 g\left( t \right) = \frac{{C\left( t \right) - C\left( {{T_t}} \right)}}{{\left| {{T_t}} \right| - 1}} g(t)=Tt1C(t)C(Tt) α = min ⁡ ( α , g ( t ) ) \alpha = \min \left( {\alpha ,g\left( t \right)} \right) α=min(α,g(t))
      其中 T t T_t Tt为以 t t t为根节点的子树, C ( T t ) C\left( {{T_t}} \right) C(Tt)是对训练集的预测误差, ∣ T t ∣ {\left| {{T_t}} \right|} Tt T t T_t Tt的叶节点个数。
    • 自上向下访问内部节点 t t t,如果 g ( t ) = α g\left( t \right) = \alpha g(t)=α,进行剪枝,并对叶节点 t t t以表决法划分,得到 T T T
    • k = k + 1 k=k+1 k=k+1 α k = α \alpha_k=\alpha αk=α T k = T T_k=T Tk=T
    • 如果 T T T不是由根节点单独构成的树,则继续自上而下进行剪枝
    • 采用交叉验证法在子树序列 T 0 , T 1 , . . . , T n T_0,T_1,...,T_n T0,T1,...,Tn中选出最优子树 T α T_{\alpha} Tα
参考文献

《统计学习方法》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值