CART算法

前言

本文只涉及分类树,而不涉及回归树,本文大部分内容均来自于李航博士的《统计学习方法》,在此基础上增加一些个人理解

正文

分类树假设决策树是一棵二叉树
分类树其实与决策树差不多,不同之处在于特征选择以及树的剪枝

决策树利用信息增益选择最优特征,分类树利用基尼指数选择最优特征

决策树的剪枝是在所生成的决策树递归地进行剪枝,分类树利用 α α 的不同取值范围对分类树进行剪枝生成一系列子树,从子树中选取最优解

特征选择

分类树用基尼指数选择最优特征,同时决定该特征的最优二值切分点

最优二值切分点

假设一个训练数据集为 D D ,特征为 A A ,最优二值切分点就是找到一个特征值 Ai A i ,使得当 A=Ai A = A i 时,数据集 D D 能够很好的归类

基尼指数

分类问题中,假设有 K K 个类,样本点属于第 k k 类的概率为 pk p k 则概率分布的基尼指数定义为

Gini(p)=k=1kpk(1pk)=1k=1kp2k G i n i ( p ) = ∑ k = 1 k p k ( 1 − p k ) = 1 − ∑ k = 1 k p k 2

注:
k=1kpk=1 ∑ k = 1 k p k = 1

对于给定的样本集合 D D ,其基尼指数为
Gini(D)=1k=1k(|ck||D|)2 G i n i ( D ) = 1 − ∑ k = 1 k ( | c k | | D | ) 2

Ck C k D D 中属于第 k k 类的样本子集, K K 是类的个数

如果样本集合 D D 根据特征 A A 是否取某一可能值 a a 被分割成 D1 D 1 D2 D 2 两部分,即

D1={(x,y)D|A(x)=a},  D2=DD1 D 1 = { ( x , y ) ∈ D | A ( x ) = a } ,     D 2 = D − D 1

则在特征 A A 的条件下,集合 D D 的基尼指数定义为
Gini(D,A)=|D1||D|Gini(D1)+|D2||D|Gini(D2) G i n i ( D , A ) = | D 1 | | D | G i n i ( D 1 ) + | D 2 | | D | G i n i ( D 2 )

基尼指数 Gini(D) G i n i ( D ) 表示集合 D D 的不确定性,基尼指数 Gini(D,A) G i n i ( D , A ) 表示经 A=a A = a 分割后集合 D D 的不确定性. 基尼指数越大,集合的不确定性也越大

CART生成算法

从根节点开始,递归地对每个结点进行一下操作

  1. 对于当前集合 D D ,计算现有特征对该数据的基尼指数

    注:
    要计算所有特征的所有可能取值对该数据的基尼指数

  2. 选择基尼指数最小的特征及其对应的切分点作为最优特征与最优切分点. 依据最优特征及最优切分点,从现结点生成两个子结点,将训练数据集依特征分配到两个子结点当中去

  3. 对两个子结点递归地调用1,2;直至满足停止条件
分类树的剪枝

分类树利用 α α 的不同取值范围对分类树进行剪枝生成一系列子树,从子树中选取最优解

注:
α α 的值是根据计算得来的,而不是随机设定的区域
这里写图片描述

从整体数 T0 T 0 开始剪枝,对 T0 T 0 的内部任意结点 t t ,以 t t 为单结点的树的损失函数为

Cα(t)=C(t)+α C α ( t ) = C ( t ) + α

t t 为根节点的子树 Tt T t 的损失函数是
Cα=C(Tt)+α|Tt| C α = C ( T t ) + α | T t |

α=0 α = 0 α α 很小时,有不等式
Cα(Tt)<Cα(t) C α ( T t ) < C α ( t )

α α 增大时,在某一 α α 处有
Cα(Tt)=Cα(t) C α ( T t ) = C α ( t )

α α 继续增大时,有
Cα(Tt)>Cα(t) C α ( T t ) > C α ( t )

这时,就可以进行剪枝操作

假设有一棵树 T0 T 0 ,对 T0 T 0 中每一内部结点 t t , 计算

g(t)=C(t)C(Tt)|Tt|1 g ( t ) = C ( t ) − C ( T t ) | T t | − 1

它表示剪枝后整体损失函数减少的程度. 在 T0 T 0 中减去 g(t) g ( t ) 最小的 Tt T t ,得到的子树作为 T1 T 1 ,同时将最小的 g(t) g ( t ) 设为 α1 α 1 . T1 T 1 为区间 [α1,α2) [ α 1 , α 2 ) 的最优子树
对于子树 T1 T 1 ,减去 g(t) g ( t ) 最小的 Tt1 T t 1 ,得到的子树作为 T2 T 2 ,同时将最小的 g(t) g ( t ) 设为 α2 α 2 T2 T 2 为区间 [α2,α3) [ α 2 , α 3 ) 的的最优子树
... . . .

经过上面的操作我们能得到一个子树集合 {T1,T2,...Tn} { T 1 , T 2 , . . . T n } ,即其对应的 α α 值,这样就可以根据交叉验证选取最优子树 Tα T α

注:
α α 的值增大时,为了得到更好的模型,模型的复杂度就会降低(复杂度降低就意味着剪枝),这样从剪枝后的子树集合中选择最好的模型就可以解决过度拟合问题

参考资料

[1]李航.决策树.统计学习方法.2012

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值