CART(分类回归树)分类算法原理

本文介绍了CART(分类回归树)算法的核心原理,重点讲解了如何利用基尼指数选择最优特征进行数据划分。通过一个实例展示了如何计算不同特征的基尼指数,并选择最小基尼指数的属性作为节点分类依据。最后,探讨了剪枝策略,以防止过拟合,提高决策树的泛化能力。

目的

生成一颗决策树,输入X(各种特征条件)输出Y(该样本分类结果)。

一、分类树选择特征的依赖——基尼指数

  • 基尼指数——总体内包含的类别越杂乱,基尼指数就越大

在CART算法中, 基尼不纯度表示一个随机选中的样本在子集中被分错的可能性。

基尼不纯度 = ∑i=1K(\sum_{i=1}^K(i=1K(样本iii被选中的概率 ∗* 它被分错的概率)

(当一个节点中所有样本都是一个类时,基尼不纯度为零。)

假设y的可能取值有K个,令pkp_kpk是样本取值为k的概率,
则基尼指数可以通过如下公式计算:

Gini(p)=∑i=1Kpi(1−pi)=1−∑i=1Kpi2Gini(p)=\sum_{i=1}^Kp_i(1-p_i)=1-\sum_{i=1}^K{p_i}^2Gini(p)=i=1Kpi(1pi)=1i=1Kpi2
在选择根节点属性时,计算每一种属性分类后的基尼指数GiniGiniGini,选择GiniGiniGini最小的那种属性作为该节点的分类依据。

二、例子

头发身高体重性别
60
65
70
55
50

要对上表的数据构建一颗决策树,它的特征集合A={头发、身高、体重}

1.当选择{头发}分类时,对应的样本数如下表:

12
11
Total23

G长=1−(12)2−(12)2=0.5G_长=1-(\frac{1}{2}){^2} - (\frac{1}{2}){^2} = 0.5G=1212212=0.5
G短=1−(13)2−(23)2=0.444G_短={1-}(\frac{1}{3}){^2} - (\frac{2}{3}){^2} = 0.444G=1312322=0.444
G{头发}=25∗G长+35∗G短=0.466G_{\{头发\}} = \frac{2}{5}*G_长 + \frac{3}{5}*G_短= 0.466G{}=52G+53G=0.466

(两种值的加权值为该属性的基尼系数)


2.当选择{身高}分类时,有三种值,对应三种分法,

(1)按照中和非中分类如下表:
非中
12
11
Total23

G中=1−(12)2−(12)2=0.5G_中={1-}(\frac{1}{2}){^2} - (\frac{1}{2}){^2} = 0.5G=1212212=0.5
G非中=1−(13)2−(23)2=0.444G_{非中}={1-}(\frac{1}{3}){^2} - (\frac{2}{3}){^2} = 0.444G=1312322=0.444
G{身高−中}=25∗G中+35∗G非中=0.466G_{\{身高-中\}} = \frac{2}{5}*G_中 + \frac{3}{5}*G_{非中}= 0.466G{}=52G+53G=0.466

(两种值的加权值为该属性的基尼系数)

(2)按照高和非高分类如下表:
非高
21
02
Total23

G高=1−(22)2−(02)2=0G_高={1-}(\frac{2}{2}){^2} - (\frac{0}{2}){^2} = 0G=1222202=0
G非高=1−(13)2−(23)2=0.444G_{非高}={1-}(\frac{1}{3}){^2} -( \frac{2}{3}){^2} = 0.444G=1312322=0.444
G{身高−高}=25∗G高+35∗G非高=0.266G_{\{身高-高\}} = \frac{2}{5}*G_高 + \frac{3}{5}*G_{非高}= 0.266G{}=52G+53G=0.266

(两种值的加权值为该属性的基尼系数)

(3)按照矮和非矮分类如下表:
非矮
03
11
Total14

G矮=1−(01)2−(11)2=0G_矮={1-}(\frac{0}{1}){^2} - (\frac{1}{1}){^2} = 0G=1102112=0
G非矮=1−(34)2−(14)2=0.375G_{非矮}={1-}(\frac{3}{4}){^2} - (\frac{1}{4}){^2} = 0.375G=1432412=0.375
G{身高−矮}=15∗G矮+45∗G非矮=0.3G_{\{身高-矮\}} = \frac{1}{5}*G_矮 + \frac{4}{5}*G_{非矮}= 0.3G{}=51G+54G=0.3

(两种值的加权值为该属性的基尼系数)


3.当选择{体重}分类时,由于是连续值,从小到大排列:

性别
体重5055606570
分界点1
<=52.5>52.5
12
02
Total14
(1)对于分界点1

G<=52.5=1−(11)2−(01)2=0G_{<=52.5}={1-}(\frac{1}{1}){^2} - (\frac{0}{1}){^2} = 0G<=52.5=1112102=0
G>52.5=1−(24)2−(24)2=0.5G_{>52.5}={1-}(\frac{2}{4}){^2} - (\frac{2}{4}){^2} = 0.5G>52.5=1422422=0.5
G{体重−分界点1}=15∗G<=52.5+45∗G>52.5=0.4G_{\{体重-分界点1\}} = \frac{1}{5}*G_{<=52.5}+ \frac{4}{5}*G_{>52.5}= 0.4G{1}=51G<=52.5+54G>52.5=0.4

(两种值的加权值为该属性的基尼系数)


性别
体重5055606570
分界点2
<=62.5>62.5
12
20
Total32
(2)对于分界点2

G<=62.5=1−(13)2−(23)2=0.444G_{<=62.5}={1-}(\frac{1}{3}){^2} - (\frac{2}{3}){^2} = 0.444G<=62.5=1312322=0.444
G>62.5=1−(22)2−(02)2=0G_{>62.5}={1-}(\frac{2}{2}){^2} - (\frac{0}{2}){^2} = 0G>62.5=1222202=0
G{体重−分界点2}=35∗G<=62.5+25∗G>62.5=0.266G_{\{体重-分界点2\}} = \frac{3}{5}*G_{<=62.5}+ \frac{2}{5}*G_{>62.5}= 0.266G{2}=53G<=62.5+52G>62.5=0.266

(两种值的加权值为该属性的基尼系数)


4.比较以上各个分类方法基尼指数

GiniGiniGini最小的属性为:
G{身高−高}=0.266G_{\{身高-高\}} = 0.266G{}=0.266
G{体重−分界点2}=0.266G_{\{体重-分界点2\}}=0.266G{2}=0.266
当有基尼指数相同的属性时,选择第一次出现的,
那么根节点就是身高,分为高和非高。

非高
身高=?
男女2:0
男女1:2

5.左分支都是男,不用再分类;现在右分支的数据如下表

头发体重性别
60
55
50

身高的属性已经用了,剩下两种属性,分别计算基尼指数:

(1)以{头发}分类
01
11
Total12

G长=1−(01)2−(11)2=0G_长={1-}(\frac{0}{1}){^2} - (\frac{1}{1}){^2} = 0G=1102112=0
G短=1−(12)2−(12)2=0.5G_{短}={1-}(\frac{1}{2}){^2} -( \frac{1}{2}){^2} = 0.5G=1212212=0.5
G{身高−高}=13∗G高+23∗G非高=0.333G_{\{身高-高\}} = \frac{1}{3}*G_高 + \frac{2}{3}*G_{非高}= 0.333G{}=31G+32G=0.333

(两种值的加权值为该属性的基尼系数)

(2)以{体重}分类
性别
体重505560
分界点1
<=52.5>52.5
10
02
Total12

G<=52.5=1−(11)2−(01)2=0G_{<=52.5}={1-}(\frac{1}{1}){^2} - (\frac{0}{1}){^2} = 0G<=52.5=1112102=0
G>52.5=1−(02)2−(22)2=0G_{>52.5}={1-}(\frac{0}{2}){^2} - (\frac{2}{2}){^2} = 0G>52.5=1202222=0
G{体重−分界点1}=13∗G<=52.5+23∗G>52.5=0G_{\{体重-分界点1\}} = \frac{1}{3}*G_{<=52.5}+ \frac{2}{3}*G_{>52.5}= 0G{1}=31G<=52.5+32G>52.5=0

(两种值的加权值为该属性的基尼系数)


6.选择GiniGiniGini最小的

GiniGiniGini最小的属性为:
G{体重−分界点1}=0G_{\{体重-分界点1\}}=0G{1}=0
那么此节点选体重,分界点为52.5。

非高
<=52.5
>52.5
身高=?
体重=?

现在每一个叶子节点性别都确定了,不需要再分类
一颗简单的CART树就完成了


三、总结

CART根据基尼系数选择分类属性,进行二叉树分类,不断递归这个过程,直到
(1) 当前结点包含的样本全属于同一类别,无需划分;
(2) 当前属性集为空,或是所有样本在所有属性上取值相同,无法划分;


四、扩展——剪枝

剪枝的目的:训练时会尽可能多得生成枝子,往往对训练集分类效果很好,但在验证集分类误差大。为防止过拟合,提高决策树的泛化性,需要修剪一些分支。

剪枝过程:首先将样本分为训练集和验证集。

1)预剪枝
预剪枝要对划分前后,验证集精度进行估计,如精度提高则进行划分。
2)后剪枝
后剪枝先从训练集生成一棵完整决策树,再依次对每个叶枝剪除前后,验证集精度进行评估,如精度提高则剪枝。

后剪枝决策树通常比预剪枝决策树保留了更多的分支。
一般情形下后剪枝决策树的欠拟合风险很小,泛化性能往往优于预剪枝决策树。
但后剪枝过程是在生成完全决策树之后进行的
并且要白底向上地对树中的所有非叶结点进行逐一考察,
因此其训练时间开销比未剪枝决策树和预剪枝决策树都要大得多。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值