CART算法

本文详细介绍了CART算法在分类树中的应用,包括特征选择采用基尼指数、CART生成算法的步骤以及分类树的剪枝策略。通过递归地选择基尼指数最小的特征进行数据分割,并通过调整α值进行剪枝,防止过拟合,从而得到最优子树。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

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

正文

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

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

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

特征选择

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

最优二值切分点

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

基尼指数

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

Gini(p)=k=1kpk(1pk)=1k=1kp2kGini(p)=∑k=1kpk(1−pk)=1−∑k=1kpk2

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

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

CkCkDD中属于第kk类的样本子集,KK是类的个数

如果样本集合DD根据特征AA是否取某一可能值aa被分割成D1D1D2D2两部分,即

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

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

基尼指数Gini(D)Gini(D)表示集合DD的不确定性,基尼指数Gini(D,A)Gini(D,A)表示经A=aA=a分割后集合DD的不确定性. 基尼指数越大,集合的不确定性也越大
CART生成算法

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

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

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

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

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

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

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

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

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

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

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

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

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

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

假设有一棵树T0T0,对T0T0中每一内部结点tt, 计算

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

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

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

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

参考资料

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值